You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2023/08/22 14:08:25 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2232] RTL related clean-up

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new f821b8bb9 [OPENMEETINGS-2232] RTL related clean-up
f821b8bb9 is described below

commit f821b8bb9159e9f2d7e28893002c46cb645138ba
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Aug 22 21:08:15 2023 +0700

    [OPENMEETINGS-2232] RTL related clean-up
---
 openmeetings-web/pom.xml                           |   5 -
 openmeetings-web/src/main/front/src/chat/chat.js   |  17 +-
 .../src/main/front/src/room/quick-poll.js          |   1 +
 openmeetings-web/src/main/front/src/wb/wb-tools.js |   2 +-
 openmeetings-web/src/main/front/webpack.common.js  |   5 +-
 .../openmeetings/web/admin/AdminActionsPanel.html  |   2 +-
 .../web/admin/configurations/ConfigsPanel.html     |   2 +-
 .../openmeetings/web/admin/email/EmailPanel.html   |   4 +-
 .../openmeetings/web/admin/extra/ExtraPanel.html   |   2 +-
 .../openmeetings/web/admin/groups/GroupsPanel.html |   2 +-
 .../openmeetings/web/admin/labels/LangPanel.html   |   4 +-
 .../openmeetings/web/admin/ldaps/LdapsPanel.html   |   2 +-
 .../openmeetings/web/admin/oauth/OAuthPanel.html   |   4 +-
 .../openmeetings/web/admin/rooms/RoomsPanel.html   |  18 +--
 .../openmeetings/web/admin/users/UserForm.html     |   4 +-
 .../openmeetings/web/common/FormActionsPanel.html  |   2 +-
 .../openmeetings/web/common/HeaderPanel.html       |   1 +
 .../apache/openmeetings/web/common/MainPanel.html  |  12 +-
 .../apache/openmeetings/web/common/MainPanel.java  |   6 +-
 .../web/common/UploadableImagePanel.html           |   2 +-
 .../web/common/tree/FileTreePanel.html             |   8 +-
 .../openmeetings/web/common/tree/FolderPanel.java  |   2 +-
 .../apache/openmeetings/web/pages/BasePage.html    |   2 +-
 .../apache/openmeetings/web/pages/BasePage.java    |   4 +-
 .../web/pages/install/InstallWizard$DbStep.html    |   4 +-
 .../pages/install/InstallWizard$ParamsStep1.html   |   4 +-
 .../pages/install/InstallWizard$ParamsStep2.html   |   2 +-
 .../pages/install/InstallWizard$ParamsStep3.html   |   2 +-
 .../pages/install/InstallWizard$ParamsStep4.html   |   4 +-
 .../apache/openmeetings/web/room/RoomPanel.html    |  14 +-
 .../web/room/activities/ActivitiesPanel.html       |  10 +-
 .../openmeetings/web/room/menu/RoomMenuPanel.html  |  18 +--
 .../openmeetings/web/room/sidebar/RoomSidebar.html |  36 ++---
 .../apache/openmeetings/web/room/wb/WbPanel.html   |  14 +-
 .../web/user/calendar/CalendarPanel.html           |   2 +-
 .../apache/openmeetings/web/user/chat/Chat.html    |   8 +-
 .../web/user/dashboard/StartWidgetView.html        |  42 +++--
 .../web/user/profile/EditProfileForm.html          |   4 +-
 .../web/user/profile/InvitationsPanel.html         |   2 +-
 .../web/user/profile/MessagesContactsPanel.html    |   2 +-
 .../web/user/profile/MessagesContactsPanel.java    |  10 +-
 .../web/user/profile/UserProfilePanel.html         |   4 +-
 .../openmeetings/web/user/rooms/RoomListPanel.html |   2 +-
 openmeetings-web/src/main/webapp/css/raw-admin.css |  16 +-
 .../src/main/webapp/css/raw-calendar.css           |   1 -
 openmeetings-web/src/main/webapp/css/raw-chat.css  |  22 +--
 .../src/main/webapp/css/raw-cssemoticons.css       |   9 ++
 .../src/main/webapp/css/raw-general-rtl.css        | 176 ---------------------
 .../src/main/webapp/css/raw-general.css            | 111 +++++--------
 openmeetings-web/src/main/webapp/css/raw-menu.css  |  25 +--
 openmeetings-web/src/main/webapp/css/raw-room.css  |  56 +++----
 openmeetings-web/src/main/webapp/css/raw-tree.css  |  12 +-
 openmeetings-web/src/main/webapp/css/raw-wb.css    |  56 +++----
 pom.xml                                            |  16 +-
 54 files changed, 276 insertions(+), 521 deletions(-)

diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index cafe0bb91..dcd092161 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -115,7 +115,6 @@
 								<cssSourceFile>raw-variables.css</cssSourceFile>
 								<cssSourceFile>raw-nettest.css</cssSourceFile>
 								<cssSourceFile>raw-general.css</cssSourceFile>
-								<cssSourceFile>raw-general-rtl.css</cssSourceFile>
 								<cssSourceFile>raw-activities.css</cssSourceFile>
 								<cssSourceFile>raw-admin.css</cssSourceFile>
 								<cssSourceFile>raw-calendar.css</cssSourceFile>
@@ -489,10 +488,6 @@
 			<groupId>de.agilecoders.wicket</groupId>
 			<artifactId>wicket-bootstrap-themes</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.webjars</groupId>
-			<artifactId>font-awesome</artifactId>
-		</dependency>
 		<dependency>
 			<groupId>org.apache.commons</groupId>
 			<artifactId>commons-lang3</artifactId>
diff --git a/openmeetings-web/src/main/front/src/chat/chat.js b/openmeetings-web/src/main/front/src/chat/chat.js
index ab119b7de..fa1204583 100644
--- a/openmeetings-web/src/main/front/src/chat/chat.js
+++ b/openmeetings-web/src/main/front/src/chat/chat.js
@@ -226,15 +226,15 @@ function _addTab(id, label) {
 	tabs.find('.nav.nav-tabs').append(li);
 	const msgArea = OmUtil.tmpl('#chat-msg-area-template', id);
 	tabs.find('.tab-content').append(msgArea);
-	msgArea.append($('<div class="clear icons actions align-left">').addClass('short')
+	msgArea.append($('<div class="clear icons actions float-start">').addClass('short')
 			.append(OmUtil.tmpl('#chat-actions-short-template')));
-	msgArea.append($('<div class="clear icons actions align-left">').addClass('short-mod')
+	msgArea.append($('<div class="clear icons actions float-start">').addClass('short-mod')
 			.append(OmUtil.tmpl('#chat-actions-short-template'))
 			.append(OmUtil.tmpl('#chat-actions-accept-template')));
-	msgArea.append($('<div class="clear icons actions align-left">').addClass('full')
+	msgArea.append($('<div class="clear icons actions float-start">').addClass('full')
 			.append(OmUtil.tmpl('#chat-actions-short-template'))
 			.append(OmUtil.tmpl('#chat-actions-others-template').children().clone()));
-	msgArea.append($('<div class="clear icons actions align-left">').addClass('full-mod')
+	msgArea.append($('<div class="clear icons actions float-start">').addClass('full-mod')
 			.append(OmUtil.tmpl('#chat-actions-short-template'))
 			.append(OmUtil.tmpl('#chat-actions-others-template').children().clone())
 			.append(OmUtil.tmpl('#chat-actions-accept-template')));
@@ -317,7 +317,10 @@ function _addMessage(m) {
 				area.data('lastDate', cm.date);
 			}
 			area.append(msg);
-			msg.find('.user-row')[0].style.backgroundImage = 'url(' + (!!cm.from.img ? cm.from.img : './profile/' + cm.from.id + '?anticache=' + Date.now()) + ')';
+			msg.find('.user-row')[0].style.cssText = `
+				background-image: url(${(!!cm.from.img ? cm.from.img : './profile/' + cm.from.id + '?anticache=' + Date.now())});
+				background-position-x: ${Settings.isRtl ? 'right' : 'left'};
+			`;
 
 			msg.find('.msg').html(CSSEmoticon.emoticonize(!!cm.message ? cm.message : ""));
 			if (btm) {
@@ -509,9 +512,7 @@ $(function() {
 						}
 						break;
 					case "typing":
-						if (typeof(typingActivity) === "function") {
-							_typingActivity(m.uid, m.active);
-						}
+						_typingActivity(m.uid, m.active);
 						break;
 				}
 			}
diff --git a/openmeetings-web/src/main/front/src/room/quick-poll.js b/openmeetings-web/src/main/front/src/room/quick-poll.js
index 97de5a91b..f892e8ba4 100644
--- a/openmeetings-web/src/main/front/src/room/quick-poll.js
+++ b/openmeetings-web/src/main/front/src/room/quick-poll.js
@@ -26,6 +26,7 @@ function _update(obj) {
 		if (qv.length === 0) {
 			const wbArea = $('.room-block .wb-block');
 			qv = OmUtil.tmpl('#quick-vote-template', 'quick-vote');
+			qv.attr('class', 'end-0');
 			wbArea.append(qv);
 		}
 		const pro = qv.find('.control.pro')
diff --git a/openmeetings-web/src/main/front/src/wb/wb-tools.js b/openmeetings-web/src/main/front/src/wb/wb-tools.js
index 30e23595d..89e284348 100644
--- a/openmeetings-web/src/main/front/src/wb/wb-tools.js
+++ b/openmeetings-web/src/main/front/src/wb/wb-tools.js
@@ -274,7 +274,7 @@ module.exports = class WbTools {
 						err.text(msg);
 						StaticTMath.highlight(err);
 					});
-			}).parent().css('text-align', Settings.isRtl ? 'left' : 'right');
+			});
 			math.draggable({
 				scroll: false
 				, handle: '.ui-dialog-titlebar'
diff --git a/openmeetings-web/src/main/front/webpack.common.js b/openmeetings-web/src/main/front/webpack.common.js
index 447f67d7d..3413ae443 100644
--- a/openmeetings-web/src/main/front/webpack.common.js
+++ b/openmeetings-web/src/main/front/webpack.common.js
@@ -31,7 +31,10 @@ module.exports = {
 		'../wb/wb-area': 'DrawWbArea',
 	},
 	plugins: [
-		new CircularDependencyPlugin(),
+		new CircularDependencyPlugin({
+			exclude: /node_modules/,
+			failOnError: true,
+		}),
 	],
 	output: {
 		path: `${process.env.outDir}`,
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.html
index 9e9312e7b..5ac6d7ae0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.html
@@ -30,7 +30,7 @@
 	<div class="btn btn-outline-success btn-sm" wicket:id="btn-restore" wicket:message="title:admin.restore">
 		<i class="far fa-check-circle"></i>
 	</div>
-	<span wicket:id="newRecord"></span>
+	<span wicket:id="newRecord" class="ps-3"></span>
 	<form wicket:id="form" class="d-inline"></form>
 </wicket:extend>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
index 35e9d7a4a..3636485ce 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
@@ -45,7 +45,7 @@
 			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset>
-					<legend><wicket:message key="266" /></legend>
+					<legend class="text-end"><wicket:message key="266" /></legend>
 					<div class="formelement row">
 						<label wicket:for="type" class="form-label col-3 text-right"><wicket:message key="45" /></label>
 						<div class="col-8 p-0">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
index e9adc9924..9a6233c79 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
@@ -49,7 +49,7 @@
 			</div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset>
-					<legend><wicket:message key="admin.email.group.label" /></legend>
+					<legend class="text-end"><wicket:message key="admin.email.group.label" /></legend>
 					<div class="formelement">
 						<div>
 							<label class="col-3 text-right"><wicket:message key="996" /></label>
@@ -84,7 +84,7 @@
 							<div class="col-8 d-inline-block text-pre" wicket:id="lastError"></div>
 						</div>
 					</div>
-					<button wicket:id="reset" class="align-right ms-3"></button>
+					<button wicket:id="reset" class="float-end ms-3"></button>
 				</fieldset>
 				<div class="bottom-bumper"></div>
 			</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.html
index bfffdd7a8..ce591af7f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.html
@@ -45,7 +45,7 @@
 			<div wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset>
-					<legend><wicket:message key="admin.extra.group.label" /></legend>
+					<legend class="text-end"><wicket:message key="admin.extra.group.label" /></legend>
 					<div class="formelement row">
 						<label wicket:for="name" class="form-label col-3 text-right"><wicket:message key="165" /></label>
 						<div class="col-8 p-0">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
index 231213a8c..0eff9ebf0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
@@ -48,7 +48,7 @@
 			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset>
-					<legend><wicket:message key="161" /></legend>
+					<legend class="text-end"><wicket:message key="161" /></legend>
 					<div class="formelement row">
 						<label wicket:for="name" class="form-label col-3 text-right"><wicket:message key="165" /></label>
 						<div class="col-8 p-0">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
index 3e9bf7c69..8120e212d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
@@ -21,7 +21,7 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:extend>
-	<div wicket:id="feedback" class="feedback"></div>
+	<div wicket:id="feedback" class="feedback position-absolute top-0 end-0"></div>
 	<div class="adminPanelColumnTable label col-6">
 		<form wicket:id="langForm" class="addLanguagePanel">
 			<div class="input-group input-group-sm">
@@ -58,7 +58,7 @@
 			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset>
-					<legend><wicket:message key="353" /></legend>
+					<legend class="text-end"><wicket:message key="353" /></legend>
 					<div class="formelement row">
 						<label wicket:for="key" class="form-label col-3 text-right"><wicket:message key="165" /></label>
 						<div class="col-8 p-0">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
index 0d6bd03db..e20413eab 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
@@ -45,7 +45,7 @@
 			<div wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset>
-					<legend><wicket:message key="1107" /></legend>
+					<legend class="text-end"><wicket:message key="1107" /></legend>
 					<div class="formelement row">
 						<label wicket:for="name" class="form-label col-3 text-right"><wicket:message key="165" /></label>
 						<div class="col-8 p-0">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
index 574667334..eed58f573 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
@@ -43,7 +43,7 @@
 			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset>
-					<legend><wicket:message key="1581"/></legend>
+					<legend class="text-end"><wicket:message key="1581"/></legend>
 					<div class="formelement">
 						<label wicket:for="isEnabled" class="form-label col-3 text-right"><wicket:message key="1109"/></label>
 						<input type="checkbox" class="formcheckbox form-check-input" wicket:id="isEnabled"/>
@@ -117,7 +117,7 @@
 				</fieldset>
 				<!-- Attribute mapping -->
 				<fieldset>
-					<legend><wicket:message key="admin.oauth.user.mapping" /></legend>
+					<legend class="text-end"><wicket:message key="admin.oauth.user.mapping" /></legend>
 					<div wicket:id="mappingForm">
 						<div class="formelement row">
 							<label wicket:for="omAttr" class="form-label col-3 text-right"><wicket:message key="admin.oauth.attr.om" /></label>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
index 98d160f4b..410d2ac89 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
@@ -46,7 +46,7 @@
 			<div class="scrollcontent" id="adminForm">
 				<!-- General -->
 				<fieldset>
-					<legend><wicket:message key="lbl.general" /></legend>
+					<legend class="text-end"><wicket:message key="lbl.general" /></legend>
 					<div class="formelement row">
 						<label wicket:for="name" class="form-label col-3 text-right"><wicket:message key="165" /></label>
 						<div class="col-8 p-0">
@@ -91,7 +91,7 @@
 
 				<!-- Groups -->
 				<fieldset>
-					<legend><wicket:message key="126" /></legend>
+					<legend class="text-end"><wicket:message key="126" /></legend>
 					<div class="formelement">
 						<label wicket:for="ispublic" class="form-label col-3 text-right"><wicket:message key="190" /></label>
 						<input type="checkbox" class="formcheckbox form-check-input" wicket:id="ispublic" />
@@ -108,7 +108,7 @@
 
 				<!-- Limitations -->
 				<fieldset>
-					<legend><wicket:message key="830" /></legend>
+					<legend class="text-end"><wicket:message key="830" /></legend>
 					<div class="formelement">
 						<label wicket:for="isDemoRoom" class="form-label col-3 text-right"><wicket:message key="636" /></label>
 						<input type="checkbox" class="formcheckbox form-check-input" wicket:id="isDemoRoom" />
@@ -123,7 +123,7 @@
 
 				<!-- Rights -->
 				<fieldset>
-					<legend><wicket:message key="881" /></legend>
+					<legend class="text-end"><wicket:message key="881" /></legend>
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
@@ -174,7 +174,7 @@
 
 				<!-- Room Layout options -->
 				<fieldset>
-					<legend><wicket:message key="1443" /></legend>
+					<legend class="text-end"><wicket:message key="1443" /></legend>
 					<div class="formelement row">
 						<label wicket:for="hiddenElements" class="form-label col-3 text-right"><wicket:message key="admin.room.hidden.elements" /></label>
 						<div class="om-select2 p-0 d-inline-block col-8"><select class="input w-100" wicket:id="hiddenElements"></select></div>
@@ -191,7 +191,7 @@
 
 				<!-- Room files -->
 				<fieldset>
-					<legend><wicket:message key="245" /></legend>
+					<legend class="text-end"><wicket:message key="245" /></legend>
 					<div wicket:id="filesForm">
 						<div class="formelement row">
 							<label wicket:for="files2add" class="form-label col-3 text-right"><wicket:message key="245" /></label>
@@ -230,7 +230,7 @@
 
 				<!-- Users in this Room -->
 				<fieldset>
-					<legend><wicket:message key="407" /></legend>
+					<legend class="text-end"><wicket:message key="407" /></legend>
 					<table class="list-table small table table-striped table-hover">
 						<thead>
 							<tr>
@@ -253,7 +253,7 @@
 
 				<!-- Default moderators -->
 				<fieldset>
-					<legend><wicket:message key="816" /></legend>
+					<legend class="text-end"><wicket:message key="816" /></legend>
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
@@ -301,7 +301,7 @@
 				</fieldset>
 				<!--SIP Settings -->
 				<fieldset>
-					<legend><wicket:message key="1001" /></legend>
+					<legend class="text-end"><wicket:message key="1001" /></legend>
 					<div class="formelement row">
 						<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="1002" />
 					</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
index 969858c5e..1575077c2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
@@ -23,7 +23,7 @@
 	<div class="actions" wicket:id="buttons"></div>
 	<div class="scrollcontent" wicket:id="adminForm" id="adminForm">
 		<fieldset>
-			<legend>
+			<legend class="text-end">
 				<wicket:message key="143" />
 			</legend>
 			<div class="formelement row">
@@ -79,7 +79,7 @@
 			</div>
 		</fieldset>
 		<fieldset>
-			<legend>
+			<legend class="text-end">
 				<wicket:message key="1159" />
 			</legend>
 			<form wicket:id="comunity"></form>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.html
index ec9e5414a..766ad28fc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.html
@@ -33,6 +33,6 @@
 			<i class="fas fa-trash-alt"></i>
 		</div>
 	</div>
-	<div wicket:id="feedback" class="error adminFormsFeedbackPanel"></div>
+	<div wicket:id="feedback" class="error adminFormsFeedbackPanel end-0"></div>
 </wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
index 438628171..dcc0e5e37 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
@@ -21,6 +21,7 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
+	<span class="logo position-absolute start-0 top-0"></span>
 	<span wicket:id="appName"></span>
 </wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
index a4baf2179..4cfbf59f3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
@@ -21,17 +21,17 @@
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
 	<div wicket:id="topControls">
-		<div wicket:id="topLinks">
-			<span id="logout"><a wicket:id="logout" href="#" wicket:message="title:310"><wicket:message key="310"/></a></span>
-			<span id="reportBug"><a target="_blank" href="https://issues.apache.org/jira/browse/OPENMEETINGS" rel="noopener noreferrer"><wicket:message key="284"/></a></span>
+		<div wicket:id="topLinks" class="position-absolute top-0 end-0 mt-2 me-2">
+			<span id="logout" class="border-end"><a wicket:id="logout" href="#" wicket:message="title:310"><wicket:message key="310"/></a></span>
+			<span id="reportBug" class="border-end"><a target="_blank" href="https://issues.apache.org/jira/browse/OPENMEETINGS" rel="noopener noreferrer"><wicket:message key="284"/></a></span>
 			<span><a wicket:id="about"><wicket:message key="1549"/></a></span>
 		</div>
-		<div id="busy-indicator"><i class="fas fa-spinner fa-spin"></i></div>
+		<div id="busy-indicator" class="end-0"><i class="fas fa-spinner fa-spin"></i></div>
 		<div wicket:id="menu"></div>
 	</div>
-	<div wicket:id="dev" id="devMenu"/>
+	<div wicket:id="dev"/>
 	<div wicket:id="contents"><div wicket:id="child" class="child-panel h-100"></div></div>
-	<div wicket:id="chatPanel" class="closed"></div>
+	<div wicket:id="chatPanel" class="closed end-0 me-3"></div>
 	<div wicket:id="aboutDialog"></div>
 	<div wicket:id="userInfoDialog"></div>
 	<div wicket:id="newMessageDialog"></div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index cf848ecbe..991d263cd 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -62,6 +62,7 @@ import org.apache.openmeetings.web.util.ExtendedClientProperties;
 import org.apache.openmeetings.web.util.OmUrlFragment;
 import org.apache.openmeetings.web.util.OmUrlFragment.MenuActions;
 import org.apache.openmeetings.web.util.ProfileImageResourceReference;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
@@ -200,7 +201,10 @@ public class MainPanel extends Panel {
 			}
 		});
 		if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
-			add(new DebugBar("dev").setOutputMarkupId(true));
+			add(new DebugBar("dev")
+					.positionBottom()
+					.add(AttributeModifier.append("class", "end-0"))
+					.setOutputMarkupId(true));
 		} else {
 			add(new EmptyPanel("dev").setVisible(false));
 		}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.html
index 568fa706a..587a72d63 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.html
@@ -21,7 +21,7 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:extend>
-	<button type="button" class="btn btn-xs btn-outline-secondary remove" wicket:id="remove" wicket:message="title:80">
+	<button type="button" class="btn btn-xs btn-outline-secondary remove position-absolute top-0 end-0" wicket:id="remove" wicket:message="title:80">
 		<span aria-hidden="true">×</span>
 	</button>
 	<form wicket:id="form" class="img-upload">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
index 9bdb387e8..29ffd5fdd 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
@@ -29,7 +29,7 @@
 				wicket:message="title:705, data-btn-ok-label:54, data-btn-cancel-label:lbl.cancel, data-title:80, data-bs-content:713">
 			<span wicket:id="upload" wicket:message="title:702"></span>
 			<span wicket:id="create" wicket:message="title:703"></span>
-			<span wicket:id="refresh" class="refresh om-icon big align-left clickable" wicket:message="title:lbl.refresh"></span>
+			<span wicket:id="refresh" class="refresh om-icon big float-start clickable" wicket:message="title:lbl.refresh"></span>
 			<span wicket:id="trash"></span>
 			<div class="clear"></div>
 		</div>
@@ -39,9 +39,9 @@
 		</div>
 		<div class="footer">
 			<div wicket:id="sizes" class="sizes">
-				<span class="size" wicket:message="title:923" wicket:id="homeSize"></span>
-				<span class="size">/</span>
-				<span class="size" wicket:message="title:924" wicket:id="publicSize"></span>
+				<span class="size ps-1" wicket:message="title:923" wicket:id="homeSize"></span>
+				<span class="size ps-1">/</span>
+				<span class="size ps-1" wicket:message="title:924" wicket:id="publicSize"></span>
 			</div>
 			<div class="buttons" wicket:id="buttons">
 				<span wicket:id="download" wicket:message="title:867"></span>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
index ef0a0e8e0..6d9f5638f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
@@ -56,7 +56,7 @@ import com.googlecode.wicket.jquery.ui.interaction.droppable.IDroppableListener;
 
 public class FolderPanel extends Panel implements IDraggableListener, IDroppableListener {
 	private static final long serialVersionUID = 1L;
-	private static final String CSS_CLASS_FILE = "file ";
+	private static final String CSS_CLASS_FILE = "file ps-5 ";
 	private static final String PARAM_MOD = "mod";
 	private static final String PARAM_SHIFT = "s";
 	private static final String PARAM_CTRL = "c";
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
index 17b42b1a4..2373a10c2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
@@ -66,6 +66,6 @@
 	</div>
 	<div wicket:id="header" id="header"></div>
 	<wicket:child />
-	<div id="alert-holder" wicket:message="data-lbl-close:85" class="mx-3"/>
+	<div id="alert-holder" wicket:message="data-lbl-close:85" class="position-fixed bottom-0 end-0 mx-3"/>
 </body>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
index 7ca824dea..67ce15035 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
@@ -59,8 +59,8 @@ import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6C
 
 public abstract class BasePage extends AsyncUrlFragmentAwarePage {
 	private static final long serialVersionUID = 1L;
-	public static final String ALIGN_LEFT = "align-left ";
-	public static final String ALIGN_RIGHT = "align-right ";
+	public static final String ALIGN_LEFT = "float-start ";
+	public static final String ALIGN_RIGHT = "float-end ";
 	public static final String CUSTOM_CSS_FILTER = "customCSS";
 	private final Map<String, String> options = new HashMap<>();
 	private HeaderPanel header;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$DbStep.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$DbStep.html
index 6239b0c4d..da1fa3230 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$DbStep.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$DbStep.html
@@ -22,7 +22,7 @@
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
 	<fieldset class="" id="userData">
-		<legend><wicket:message key="install.wizard.db.step.field.title"/></legend>
+		<legend class="text-end"><wicket:message key="install.wizard.db.step.field.title"/></legend>
 		<div wicket:id="note"></div>
 		<form class="adminForm" wicket:id="form">
 			<div class="formelement">
@@ -50,7 +50,7 @@
 				<input type="text" wicket:id="password" class="col-3"/>
 			</div>
 			<div class="formelement">
-				<button class="align-right" wicket:id="check"></button>
+				<button class="float-end" wicket:id="check"></button>
 			</div>
 		</form>
 	</fieldset>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
index 7598ec1f2..dea3d87bb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
@@ -22,7 +22,7 @@
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
 	<fieldset class="" id="userData">
-		<legend><wicket:message key="install.wizard.params.step1.userdata"/></legend>
+		<legend class="text-end"><wicket:message key="install.wizard.params.step1.userdata"/></legend>
 		<div class="formelement">
 			<label wicket:for="username" class="col-3 text-right"><wicket:message key="install.wizard.params.step1.username"/></label>
 			<input wicket:id="username" wicket:message="title:install.wizard.params.step1.username.title" type="text" class="col-3"/>
@@ -41,7 +41,7 @@
 		</div>
 	</fieldset>
 	<fieldset class="" id="userGroupa">
-		<legend><wicket:message key="install.wizard.params.step1.groupdata"/></legend>
+		<legend class="text-end"><wicket:message key="install.wizard.params.step1.groupdata"/></legend>
 		<div class="formelement">
 			<label wicket:for="group" class="col-3 text-right"><wicket:message key="install.wizard.params.step1.group"/></label>
 			<input wicket:id="group" wicket:message="title:install.wizard.params.step1.group.title" type="text" class="col-3"/>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
index 2cb5ba361..88d4f164b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
@@ -22,7 +22,7 @@
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
 	<fieldset class="" id="userConf">
-		<legend><wicket:message key="install.wizard.params.step2.configuration"/></legend>
+		<legend class="text-end"><wicket:message key="install.wizard.params.step2.configuration"/></legend>
 		<div class="formelement">
 			<label wicket:for="allowFrontendRegister" class="col-3 text-right"><wicket:message key="install.wizard.params.step2.allowFrontendRegister"/></label>
 			<div class="onoffswitch">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
index ac19dd2c3..6a1816761 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
@@ -22,7 +22,7 @@
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
 	<fieldset class="" id="userConf1">
-		<legend><wicket:message key="install.wizard.params.step3.converters"/></legend>
+		<legend class="text-end"><wicket:message key="install.wizard.params.step3.converters"/></legend>
 		<div class="formelement">
 			<label wicket:for="docDpi" class="col-3 text-right"><wicket:message key="install.wizard.params.step3.docDpi"/>
 				<i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step3.docDpi.text,alt:install.wizard.params.step3.docDpi.text"></i>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
index 7fe071186..b11e2f3f4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
@@ -22,7 +22,7 @@
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
 	<fieldset class="" id="userConf2">
-		<legend><wicket:message key="install.wizard.params.step4.crypt"/></legend>
+		<legend class="text-end"><wicket:message key="install.wizard.params.step4.crypt"/></legend>
 		<div class="formelement">
 			<label wicket:for="cryptClassName" class="col-3 text-right"><wicket:message key="install.wizard.params.step4.cryptClassName"/>
 				<i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step4.cryptClassName.text,alt:install.wizard.params.step4.cryptClassName.text"></i>
@@ -31,7 +31,7 @@
 		</div>
 	</fieldset>
 	<fieldset class="" id="sip">
-		<legend><wicket:message key="install.wizard.params.step4.sip"/></legend>
+		<legend class="text-end"><wicket:message key="install.wizard.params.step4.sip"/></legend>
 		<div class="formelement">
 			<label wicket:for="sipEnable" class="col-3 text-right"><wicket:message key="install.wizard.params.step4.sipEnable"/>
 				<i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step4.sipEnable.text,alt:install.wizard.params.step4.sipEnable.text"></i>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index 707891dff..4dd3b55d1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@ -24,14 +24,14 @@
 		<div class="room-container" wicket:id="roomContainer">
 			<div class="menu" wicket:id="menu"></div>
 			<div class="sb-wb">
-				<div class="sidebar" wicket:id="sidebar"></div>
+				<div class="sidebar start-0" wicket:id="sidebar"></div>
 				<div wicket:id="wb-area" class="wb-block">
 					<div class="wb-drop-area"></div>
 					<div class="wb-area" wicket:id="whiteboard"></div>
 				</div>
 			</div>
 		</div>
-		<div class="event-details" wicket:id="event-details"></div>
+		<div class="event-details end-0" wicket:id="event-details"></div>
 		<div wicket:id="access-denied"></div>
 		<div wicket:id="room-closed"></div>
 		<div wicket:id="nickname" class="room-nickname-dialog"></div>
@@ -103,7 +103,7 @@
 			<div class="footer" wicket:message="data-on:video.mic.on,data-off:video.mic.off">
 			</div>
 		</div>
-		<div id="video-button-bar" class="buttonpane align-right">
+		<div id="video-button-bar" class="buttonpane float-end position-absolute top-0 end-0">
 			<a class="btn btn-refresh btn-outline-secondary btn-sm" href="#" wicket:message="title:lbl.refresh" role="button">
 				<i class="fas fa-sync-alt"></i>
 				<span class="sr-only"><wicket:message key="lbl.refresh"/></span>
@@ -124,10 +124,10 @@
 			<input id="muteothers-confirm-dont-show" type="checkbox"/><label for="muteothers-confirm-dont-show" class="mx-2"><wicket:message key="dont.ask.again"/></label>
 		</div>
 		<div id="clipboard-dialog" wicket:message="title:1121,data-btn-ok:54">
-			<p><span class="ui-icon ui-icon-alert align-left ms-2 mt-2 mb-3 me-0"></span><span class="text"></span></p>
+			<p><span class="ui-icon ui-icon-alert float-start ms-2 mt-2 mb-3 me-0"></span><span class="text"></span></p>
 		</div>
 		<div id="quick-vote-template">
-			<div class="close-btn btn btn-outline-secondary btn-sm"
+			<div class="close-btn btn btn-outline-secondary btn-sm float-end"
 				 wicket:message="title:85,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:832,data-bs-content:1419"
 				 data-btn-ok-class="btn btn-sm btn-danger"
 				 data-btn-ok-icon-class="fas fa-exclamation-triangle">
@@ -135,11 +135,11 @@
 			</div>
 			<div class="control pro clickable">
 				<i class="fas fa-plus-circle"></i>
-				<span class="badge bg-primary">0</span>
+				<span class="badge bg-primary end-0">0</span>
 			</div>
 			<div class="control con">
 				<i class="fas fa-times-circle"></i>
-				<span class="badge bg-primary">0</span>
+				<span class="badge bg-primary end-0">0</span>
 			</div>
 		</div>
 		<div id="sharer" wicket:message="title:730">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
index a59ec4f3d..34212e2f0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
@@ -36,17 +36,17 @@
 	</div>
 	<div class="d-none">
 		<div id="activity-stub" class="activity item clearfix">
-			<div class="btn-group align-right bg-white rounded" role="group">
-				<button class="activity-close btn btn-outline-secondary btn-small align-right" wicket:message="title:85">
+			<div class="btn-group float-end bg-white rounded" role="group">
+				<button class="activity-close btn btn-outline-secondary btn-small float-end" wicket:message="title:85">
 					<i class="fas fa-times"></i>
 				</button>
-				<button class="activity-accept btn btn-outline-secondary btn-small align-right" wicket:message="title:1360">
+				<button class="activity-accept btn btn-outline-secondary btn-small float-end" wicket:message="title:1360">
 					<i class="fas fa-check"></i>
 				</button>
-				<button class="activity-decline btn btn-outline-secondary btn-small align-right" wicket:message="title:1361">
+				<button class="activity-decline btn btn-outline-secondary btn-small float-end" wicket:message="title:1361">
 					<i class="fas fa-ban"></i>
 				</button>
-				<button class="activity-find btn btn-outline-secondary btn-small align-right" wicket:message="title:find.user">
+				<button class="activity-find btn btn-outline-secondary btn-small float-end" wicket:message="title:find.user">
 					<i class="fas fa-crosshairs"></i>
 				</button>
 			</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
index 6d91fb5bc..5cbc9c060 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
@@ -22,21 +22,21 @@
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
 	<div wicket:id="menu"></div>
-	<div class="details">
-		<span class="detail-btn btn btn-outline-secondary shared" wicket:message="data-user:692, data-text:850, data-view:848">
+	<div class="details end-0">
+		<span class="detail-btn btn btn-outline-secondary shared float-end" wicket:message="data-user:692, data-text:850, data-view:848">
 			<i class="fas fa-desktop m-0"></i>
-			<i class="fas fa-hand-holding add-on"></i>
+			<i class="fas fa-hand-holding add-on start-0 ms-2"></i>
 		</span>
-		<span wicket:id="ask" class="detail-btn btn btn-outline-secondary ask">
+		<span wicket:id="ask" class="detail-btn btn btn-outline-secondary ask float-end">
 			<i class="fas fa-hand-paper m-0"></i>
 		</span>
-		<span id="share-dlg-btn" wicket:id="share" class="detail-btn btn btn-outline-secondary share" wicket:message="title:732">
+		<span id="share-dlg-btn" wicket:id="share" class="detail-btn btn btn-outline-secondary share float-end" wicket:message="title:732">
 			<i class="fas fa-desktop m-0"></i>
 		</span>
-		<span wicket:id="roomName" class="room name"></span>
-		<span wicket:id="tag" class="room name"></span>
-		<span wicket:id="logo" class="icon"></span>
-		<span wicket:id="demo" class="text-danger room demo"></span>
+		<span wicket:id="roomName" class="room name float-end"></span>
+		<span wicket:id="tag" class="room name float-end"></span>
+		<span wicket:id="logo" class="icon float-end"></span>
+		<span wicket:id="demo" class="text-danger room demo float-end"></span>
 	</div>
 	<div wicket:id="roomInviteDialog"></div>
 	<div wicket:id="createPoll"></div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
index 330ca976a..f8ddc168a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
@@ -26,7 +26,7 @@
 			<li class="nav-item">
 				<a href="#room-sidebar-tab-users" class="nav-link active om-icon big tab user" id="room-sidebar-users-tab" data-bs-toggle="tab" role="tab" aria-controls="room-sidebar-tab-users" wicket:message="title:398">
 					<i class="fas fa-users"></i>
-					<span class="label"><wicket:message key="398"/>&nbsp;</span><span class="badge bg-info user-count"></span>
+					<span class="label"><wicket:message key="398"/>&nbsp;</span><span class="badge bg-info user-count end-0"></span>
 				</a>
 			</li>
 			<li class="nav-item" wicket:enclosure="file-tab">
@@ -35,7 +35,7 @@
 					<span class="label"><wicket:message key="245"/></span>
 				</a>
 			</li>
-			<li class="btn-dock btn btn-outline-secondary" wicket:message="data-ttl-dock:label.dock.panel,data-ttl-undock:label.undock.panel">
+			<li class="btn-dock btn btn-outline-secondary end-0" wicket:message="data-ttl-dock:label.dock.panel,data-ttl-undock:label.undock.panel">
 				<i class="fas"></i>
 				<span class="sr-only"></span>
 			</li>
@@ -43,9 +43,9 @@
 		<div class="tab-content">
 			<div id="room-sidebar-tab-users" class="tab-pane fade show active" role="tabpanel" aria-labelledby="room-sidebar-users-tab">
 				<div class="header">
-					<span class="om-icon align-left settings clickable" wicket:message="title:306"></span>
-					<span class="om-icon align-left activity cam clickable" wicket:message="data-on:camera.on,data-off:camera.off"></span>
-					<span class="om-icon align-left activity mic bumper clickable" wicket:message="data-on:microphone.on,data-off:microphone.off"></span>
+					<span class="om-icon float-start settings clickable" wicket:message="title:306"></span>
+					<span class="om-icon float-start activity cam clickable" wicket:message="data-on:camera.on,data-off:camera.off"></span>
+					<span class="om-icon float-start activity mic bumper clickable" wicket:message="data-on:microphone.on,data-off:microphone.off"></span>
 				</div>
 				<div class="user-list clear"> <!-- auto-scrollable -->
 					<div class="users"> <!-- content -->
@@ -63,8 +63,8 @@
 	<div wicket:id="settings" />
 	<div hidden="hidden">
 		<div id="user-entry-stub" class="user entry clearfix" >
-			<span class="om-icon ulist-small user-status align-right " wicket:message="data-mod:679,data-wb:678,data-user:677"></span>
-			<span class="align-right typing-activity">
+			<span class="om-icon ulist-small user-status float-end " wicket:message="data-mod:679,data-wb:678,data-user:677"></span>
+			<span class="float-end typing-activity">
 				<i class="fas fa-pen-fancy"></i>
 			</span>
 			<div class="user name"></div>
@@ -72,7 +72,7 @@
 			<div class="user actions clearfix">
 			</div>
 		</div>
-		<div id="volume-control-stub" class="om-icon dropdown dropend volume-control align-right">
+		<div id="volume-control-stub" class="om-icon dropdown dropend volume-control float-end">
 			<a class="fas volume-on" type="button" href="#" wicket:message="title:volume.label"></a>
 			<div class="dropdown-menu">
 				<div class="slider" wicket:message="title:volume.label">
@@ -80,38 +80,38 @@
 				</div>
 			</div>
 		</div>
-		<span id="user-av-restart" class="om-icon align-right restart clickable" wicket:message="title:lbl.refresh">
+		<span id="user-av-restart" class="om-icon float-end restart clickable" wicket:message="title:lbl.refresh">
 			<i class="fas fa-sync-alt"></i>
 		</span>
 		<div id="user-actions-stub">
-			<span class="om-icon align-left right camera clickable" wicket:message="data-request:ulist.right.video.request,data-revoke:ulist.right.video.revoke,data-grant:ulist.right.video.grant">
+			<span class="om-icon float-start right camera clickable" wicket:message="data-request:ulist.right.video.request,data-revoke:ulist.right.video.revoke,data-grant:ulist.right.video.grant">
 				<i class="fas"></i>
 			</span>
-			<span class="om-icon align-left right audio bumper clickable" wicket:message="data-request:ulist.right.audio.request,data-revoke:ulist.right.audio.revoke,data-grant:ulist.right.audio.grant">
+			<span class="om-icon float-start right audio bumper clickable" wicket:message="data-request:ulist.right.audio.request,data-revoke:ulist.right.audio.revoke,data-grant:ulist.right.audio.grant">
 				<i class="fas"></i>
 			</span>
-			<span class="om-icon align-left right presenter bumper clickable" wicket:message="data-request:ulist.right.presenter.request,data-revoke:ulist.right.presenter.revoke,data-grant:ulist.right.presenter.grant">
+			<span class="om-icon float-start right presenter bumper clickable" wicket:message="data-request:ulist.right.presenter.request,data-revoke:ulist.right.presenter.revoke,data-grant:ulist.right.presenter.grant">
 				<i class="fas"></i>
 			</span>
-			<span class="om-icon align-left right wb bumper clickable" wicket:message="data-request:ulist.right.wb.request,data-revoke:ulist.right.wb.revoke,data-grant:ulist.right.wb.grant">
+			<span class="om-icon float-start right wb bumper clickable" wicket:message="data-request:ulist.right.wb.request,data-revoke:ulist.right.wb.revoke,data-grant:ulist.right.wb.grant">
 				<i class="fas"></i>
 			</span>
-			<span class="om-icon align-left right screen-share bumper clickable" wicket:message="data-request:ulist.right.share.request,data-revoke:ulist.right.share.revoke,data-grant:ulist.right.share.grant">
+			<span class="om-icon float-start right screen-share bumper clickable" wicket:message="data-request:ulist.right.share.request,data-revoke:ulist.right.share.revoke,data-grant:ulist.right.share.grant">
 				<i class="fas"></i>
 			</span>
-			<span class="om-icon align-left right remote-control bumper clickable" wicket:message="data-request:ulist.right.remote.request,data-revoke:ulist.right.remote.revoke,data-grant:ulist.right.remote.grant">
+			<span class="om-icon float-start right remote-control bumper clickable" wicket:message="data-request:ulist.right.remote.request,data-revoke:ulist.right.remote.revoke,data-grant:ulist.right.remote.grant">
 				<i class="fas"></i>
 			</span>
-			<span class="om-icon align-left right moderator bumper clickable" wicket:message="data-request:ulist.right.moderator.request,data-revoke:ulist.right.moderator.revoke,data-grant:ulist.right.moderator.grant">
+			<span class="om-icon float-start right moderator bumper clickable" wicket:message="data-request:ulist.right.moderator.request,data-revoke:ulist.right.moderator.revoke,data-grant:ulist.right.moderator.grant">
 				<i class="fas"></i>
 			</span>
-			<span class="om-icon align-left kick bumper clickable"
+			<span class="om-icon float-start kick bumper clickable"
 					wicket:message="title:603,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:603,data-bs-content:605"
 					data-btn-ok-class="btn btn-sm btn-danger"
 					data-btn-ok-icon-class="fas fa-exclamation-triangle">
 				<i class="fas fa-ban text-danger"></i>
 			</span>
-			<span class="om-icon align-right private-chat clickable" wicket:message="title:1493">
+			<span class="om-icon float-end private-chat clickable" wicket:message="title:1493">
 				<i class="fas fa-edit"></i>
 			</span>
 		</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
index d09ca69d1..b3f7c0b96 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
@@ -28,7 +28,7 @@
 			</div>
 		</div>
 		<div class="wb-tab-content tab-content">
-			<button type="button" class="fullscreen btn btn-outline-secondary">
+			<button type="button" class="fullscreen btn btn-outline-secondary end-0">
 				<i class="fa-solid fa-up-right-and-down-left-from-center"></i>
 			</button>
 		</div>
@@ -37,11 +37,11 @@
 	<div hidden="hidden">
 		<div id="wb-text-style-block"></div>
 		<div id="wb-tabbar-ctrls-left">
-			<div wicket:message="title:wb.add.whiteboard" class="add clickable om-icon big"></div>
-			<div wicket:message="title:wb.pre.whiteboard" class="prev clickable om-icon big disabled"></div>
+			<div wicket:message="title:wb.add.whiteboard" class="add clickable om-icon big start-0"></div>
+			<div wicket:message="title:wb.pre.whiteboard" class="prev clickable om-icon big start-0 disabled"></div>
 		</div>
 		<div id="wb-tabbar-ctrls-right">
-			<div wicket:message="title:wb.next.whiteboard" class="next clickable om-icon big disabled"></div>
+			<div wicket:message="title:wb.next.whiteboard" class="next clickable om-icon big end-0 disabled"></div>
 		</div>
 		<ul>
 			<li id="wb-area-tab" class="nav-item">
@@ -50,7 +50,7 @@
 				</a>
 			</li>
 		</ul>
-		<button id="wb-tab-close" class="btn btn-sm btn-outline-secondary btn-no-border wb-tab-close"
+		<button id="wb-tab-close" class="btn btn-sm btn-outline-secondary btn-no-border wb-tab-close end-0"
 				wicket:message="title:85,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:832,data-bs-content:1313"
 				data-btn-ok-class="btn btn-sm btn-danger"
 				data-btn-ok-icon-class="fas fa-exclamation-triangle"
@@ -189,13 +189,13 @@
 			<div wicket:message="title:wb.tool.math.formula" class="header ui-dialog-titlebar ui-corner-all ui-widget-header ui-helper-clearfix ui-draggable-handle">
 				<span class="ui-dialog-title"><wicket:message key="wb.tool.math.formula"/></span>
 			</div>
-			<button type="button" class="ui-button ui-corner-all ui-widget ui-button-icon-only ui-dialog-titlebar-close" wicket:message="title:85">
+			<button type="button" class="ui-button ui-corner-all ui-widget ui-button-icon-only ui-dialog-titlebar-close end-0" wicket:message="title:85">
 				<span class="ui-button-icon ui-icon ui-icon-closethick"></span>
 				<span class="ui-button-icon-space"> </span>
 				<wicket:message key="85"/>
 			</button>
 			<div class="text-container"><textarea></textarea></div>
-			<div>
+			<div class="text-start">
 				<a class="latex-guide" wicket:message="href:wb.tool.math.guide.url" target="_blank"><wicket:message key="wb.tool.math.guide.lbl"/></a>
 				<button class="update-btn"><wicket:message key="lbl.update"/></button>
 			</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
index 6c37b0fb3..e1b952166 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
@@ -21,7 +21,7 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
-	<div id="calendarlistcontainer">
+	<div id="calendarlistcontainer" class="float-start">
 		<div class="cell">
 			<button wicket:id="submitCalendar"></button>
 			<button wicket:id="syncCalendarButton">Sync</button>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.html
index 9c4ac1628..c5e6f568a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.html
@@ -38,12 +38,12 @@
 	<div hidden="hidden">
 		<div id="chat-date-template" class='date-row'></div>
 		<div id="chat-msg-template" class='msg-row'>
-			<div class='user-row'>
-				<div class='from align-left'></div>
-				<span class='time align-right'></span>
+			<div class='user-row ps-5'>
+				<div class='from float-start'></div>
+				<span class='time float-end'></span>
 				<div class="clear"></div>
 			</div>
-			<div class='msg align-left'></div>
+			<div class='msg float-start'></div>
 			<div class="clear"></div>
 		</div>
 		<div id="chat-actions-short-template" class='user clickable' wicket:message="title:1167"><i class="fas fa-address-card"></i></div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
index 6fd73ad07..91036276a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
@@ -22,23 +22,31 @@
 <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
 <wicket:panel>
 	<h3><wicket:message key="widget.start.header"/></h3>
-	<div wicket:id="step1" class="clickable start_step1">
-		<span class="badge rounded-pill bg-secondary">1</span>
-		<wicket:message key="768"/>
-	</div>
-	<div wicket:id="step2" class="clickable start_step2">
-		<span class="badge rounded-pill bg-secondary">2</span>
-		<wicket:message key="771"/>
-	</div>
-	<div wicket:id="step3" class="start_step3">
-		<a wicket:id="avTest" target="_blank" rel="noopener noreferrer">
-			<span class="badge rounded-pill bg-secondary">3</span>
-			<wicket:message key="772"/>
-		</a>
-	</div>
-	<div wicket:id="step4" class="clickable start_step4">
-		<span class="badge rounded-pill bg-secondary">4</span>
-		<wicket:message key="773"/>
+	<div class="start_step">
+		<div wicket:id="step1" class="clickable">
+			<span class="badge rounded-pill bg-secondary">1</span>
+			<wicket:message key="768"/>
+		</div>
+		<div class="start_step ms-4">
+			<div wicket:id="step2" class="clickable">
+				<span class="badge rounded-pill bg-secondary">2</span>
+				<wicket:message key="771"/>
+			</div>
+			<div class="start_step ms-4">
+				<div wicket:id="step3" class="start_step3">
+					<a wicket:id="avTest" target="_blank" rel="noopener noreferrer">
+						<span class="badge rounded-pill bg-secondary">3</span>
+						<wicket:message key="772"/>
+					</a>
+				</div>
+				<div class="start_step ms-4">
+					<div wicket:id="step4" class="clickable start_step4">
+						<span class="badge rounded-pill bg-secondary">4</span>
+						<wicket:message key="773"/>
+					</div>
+				</div>
+			</div>
+		</div>
 	</div>
 	<table>
 		<tr>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.html
index 3254db6c5..8c97ae837 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.html
@@ -26,7 +26,7 @@
 		<div class="h-100 row row-cols-lg-auto m-0">
 			<div class="col-12">
 				<fieldset class="">
-					<legend class="">
+					<legend class="text-end">
 						<wicket:message key="143" />
 					</legend>
 					<button type="button" wicket:id="changePwd" id="changePwd"></button>
@@ -43,7 +43,7 @@
 			<div class="col-12">
 				<div wicket:id="img" class=""></div>
 				<fieldset class="mt-5">
-					<legend class="">
+					<legend class="text-end">
 						<wicket:message key="1159" />
 					</legend>
 					<form wicket:id="comunity"></form>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
index 2b411b9f6..a48152415 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
@@ -50,7 +50,7 @@
 			</div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset>
-					<legend><wicket:message key="profile.invitation" /></legend>
+					<legend class="text-end"><wicket:message key="profile.invitation" /></legend>
 					<div class="formelement">
 						<div class="row g-0">
 							<label class="col-6"><wicket:message key="188" /></label>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
index 5544798c0..51452ed72 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
@@ -49,7 +49,7 @@
 						<div wicket:id="folder">
 							<i class="fas fa-folder"></i>
 							<div wicket:id="name"></div>
-							<a class="delete" wicket:id="delete" wicket:message="title:1262"></a>
+							<a class="delete end-0 me-1" wicket:id="delete" wicket:message="title:1262"></a>
 						</div>
 					</div>
 				</td>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
index b2014fd64..f3c310754 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
@@ -333,7 +333,7 @@ public class MessagesContactsPanel extends UserBasePanel {
 						PrivateMessage pm = newDlg.reset(true).getModelObject();
 						pm.setTo(opm.getFrom());
 						pm.setSubject(String.format("%s %s", getString("messages.subject.re"), opm.getSubject()));
-						pm.setMessage(String.format("<br/><blockquote class=\"quote\">%s</blockquote>", opm.getMessage()));
+						pm.setMessage(String.format("<br/><blockquote class=\"border-start quote\">%s</blockquote>", opm.getMessage()));
 						newDlg.show(target);
 					}
 				}
@@ -498,9 +498,9 @@ public class MessagesContactsPanel extends UserBasePanel {
 	}
 
 	private void setDefaultFolderClass() {
-		inbox.add(AttributeModifier.replace(ATTR_CLASS, "email inbox clickable"));
-		sent.add(AttributeModifier.replace(ATTR_CLASS, "email sent clickable"));
-		trash.add(AttributeModifier.replace(ATTR_CLASS, "email trash clickable"));
+		inbox.add(AttributeModifier.replace(ATTR_CLASS, "email text-start inbox clickable"));
+		sent.add(AttributeModifier.replace(ATTR_CLASS, "email text-start sent clickable"));
+		trash.add(AttributeModifier.replace(ATTR_CLASS, "email text-start trash clickable"));
 	}
 
 	private static void selectFolder(WebMarkupContainer folder) {
@@ -508,7 +508,7 @@ public class MessagesContactsPanel extends UserBasePanel {
 	}
 
 	private void setFolderClass(ListItem<PrivateMessageFolder> folder) {
-		folder.add(AttributeModifier.replace(ATTR_CLASS, "email folder clickable"));
+		folder.add(AttributeModifier.replace(ATTR_CLASS, "email text-start folder clickable"));
 		if (folder.getModelObject().getId().equals(selectedFolderModel.getObject())) {
 			selectFolder(folder);
 		}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
index f2eba77ff..0f3aa71b6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
@@ -43,7 +43,7 @@
 			</table>
 			<div>
 				<fieldset>
-					<legend><wicket:message key="1166"/></legend>
+					<legend class="text-end"><wicket:message key="1166"/></legend>
 					<table>
 						<tr>
 							<td><wicket:message key="1162"/></td>
@@ -58,7 +58,7 @@
 			</div>
 			<div>
 				<fieldset>
-					<legend><wicket:message key="1167"/></legend>
+					<legend class="text-end"><wicket:message key="1167"/></legend>
 					<table wicket:id="address">
 						<tr>
 							<td><wicket:message key="607" /></td>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html
index b4dcd0cc7..d8c1b0ef7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html
@@ -31,7 +31,7 @@
 							wicket:id="totalUsers"></span>&nbsp;&nbsp;<button wicket:id="refresh" class="refresh btn-sm m2"></button>
 					</div>
 				</div>
-				<button wicket:id="btn" class="col-3 enter btn btn-outline-primary"><span wicket:id="label"></span></button>
+				<button wicket:id="btn" class="col-3 enter btn btn-outline-primary position-absolute top-0 end-0 m-2"><span wicket:id="label"></span></button>
 			</td>
 		</tr>
 	</table>
diff --git a/openmeetings-web/src/main/webapp/css/raw-admin.css b/openmeetings-web/src/main/webapp/css/raw-admin.css
index 745c12a6b..e29fe2994 100644
--- a/openmeetings-web/src/main/webapp/css/raw-admin.css
+++ b/openmeetings-web/src/main/webapp/css/raw-admin.css
@@ -4,10 +4,6 @@
 	display: flex;
 	height: 100%;
 }
-.adminPanel .feedback {
-	position: absolute;
-	right: 10px;
-}
 .adminNav {
 	height: var(--nav-height);
 }
@@ -29,7 +25,6 @@
 .adminPanelColumnForm {
 	display: inline-block;
 	vertical-align: top;
-	padding-left: 5px;
 	height: calc(100% - var(--buffer-size));
 	min-width: 450px;
 }
@@ -48,7 +43,6 @@
 .adminForm legend, .installer legend {
 	padding: 0.5em 1em;
 	font-style: italic;
-	text-align: right;
 }
 .adminForm .group.logo .profile img {
 	height: 16px;
@@ -61,17 +55,11 @@
 }
 .adminFormsFeedbackPanel {
 	position: fixed;
-	left:550px;
+	margin-inline-end: 50px;
 	width: 480px;
 	bottom: 16px;
 	z-index:999;
 }
-.adminForm .newItem {
-	padding-left: 25px;
-	background-image: url(images/new.png);
-	background-repeat: no-repeat;
-	background-position: 5px;
-}
 .onoffswitch {
 	display:inline-block;
 }
@@ -99,5 +87,5 @@
 	border: solid 1px #aacfe4;
 	width: 140px;
 	font-size: 12px;
-	margin-left: 2px;
+	margin-inline-start: 2px;
 }
diff --git a/openmeetings-web/src/main/webapp/css/raw-calendar.css b/openmeetings-web/src/main/webapp/css/raw-calendar.css
index a57978afe..d9f4027ba 100644
--- a/openmeetings-web/src/main/webapp/css/raw-calendar.css
+++ b/openmeetings-web/src/main/webapp/css/raw-calendar.css
@@ -19,7 +19,6 @@
 }
 #calendarlistcontainer {
 	width: 20%;
-	float: left;
 	display: inline-block;
 	overflow-y: auto;
 }
diff --git a/openmeetings-web/src/main/webapp/css/raw-chat.css b/openmeetings-web/src/main/webapp/css/raw-chat.css
index ecc9adaf9..68417de27 100644
--- a/openmeetings-web/src/main/webapp/css/raw-chat.css
+++ b/openmeetings-web/src/main/webapp/css/raw-chat.css
@@ -3,7 +3,6 @@
 	position: fixed;
 	z-index: var(--chat-zindex);
 	bottom: 0px;
-	right: 10px;
 	width: var(--chat-width);
 	height: var(--chat-height);
 }
@@ -38,7 +37,7 @@
 #chatPopup .control.block .label {
 	display: inline-block;
 	width: 70px;
-	padding-left: 5px;
+	padding-inline-start: 5px;
 }
 #chatPanel #chatPopup .control.block i::before {
 	content: "\f107";
@@ -56,30 +55,26 @@
 	background-color: var(--bs-warning);
 }
 #chat .messageArea .time {
-	margin-right: 5px;
+	margin-inline-end: 5px;
 	font-style: italic;
 	font-size: smaller;
 }
 #chat .messageArea .user-row {
 	background-size: 38px, 38px;
 	background-repeat: no-repeat;
-	padding-left: 40px;
+	padding-inline-start: 40px;
 	min-height: 40px;
 }
 #chat .messageArea .icons {
 	display: none;
 	position: absolute;
 	z-index: 1;
-	left: 50px;
+	margin-inline-start: 50px;
 }
 #chat .messageArea .icons div {
 	display: inline-block;
 	vertical-align: super;
-	margin-right: 2px;
-}
-html[dir="rtl"] #chat .messageArea .icons {
-	left: initial;
-	right: 50px;
+	margin-inline-end: 2px;
 }
 #chat .messageArea .from {
 	margin-left: 5px;
@@ -147,18 +142,13 @@ html[dir="rtl"] #chat .messageArea .icons {
 }
 /* room mode */
 .main.room #chatPanel {
+	margin: 0 !important;
 	right: 0px;
 	top: var(--room-menu-height);
 }
-html[dir="rtl"] .main.room #chatPanel {
-	right: auto !important; /* IE */
-	right: initial !important;
-	left: 0px;
-}
 .main.room #chatPanel #chat form {
 	position: absolute;
 	bottom: 0px;
-	left: 1px;
 	width: 100%;
 }
 .main.room #chatPanel.closed #chatPopup .control.block {
diff --git a/openmeetings-web/src/main/webapp/css/raw-cssemoticons.css b/openmeetings-web/src/main/webapp/css/raw-cssemoticons.css
index f693dd06f..784ab3c17 100644
--- a/openmeetings-web/src/main/webapp/css/raw-cssemoticons.css
+++ b/openmeetings-web/src/main/webapp/css/raw-cssemoticons.css
@@ -118,3 +118,12 @@ span.css-emoticon.nintendo-controller {
 	border-radius: 0;
 	background: linear-gradient(to right, #a5aabd, #74798c);
 }
+
+html[dir="rtl"] span.css-emoticon.un-transformed-emoticon
+, html[dir="rtl"] span.css-emoticon.animated-emoticon:hover
+{
+	transform: rotate(0deg) !important;
+}
+html[dir="rtl"] span.css-emoticon {
+	transform: rotate(-90deg) !important;
+}
diff --git a/openmeetings-web/src/main/webapp/css/raw-general-rtl.css b/openmeetings-web/src/main/webapp/css/raw-general-rtl.css
deleted file mode 100644
index 6461581a9..000000000
--- a/openmeetings-web/src/main/webapp/css/raw-general-rtl.css
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
-html[dir="rtl"] body {
-	text-align: right;
-}
-html[dir="rtl"] .mr-auto, .mx-auto {
-	margin-left: auto !important;
-	margin-right: initial !important;
-}
-html[dir="rtl"] .modal-header .close {
-	margin: -1rem auto -1rem -1rem;
-}
-html[dir="rtl"] #header {
-	padding-left: initial !important;
-	padding-right: 150px;
-	background-position: right center;
-}
-html[dir="rtl"] #topLinks {
-	right: initial !important;
-	left: 10px;
-}
-html[dir="rtl"] #topLinks span {
-	border-right: none !important;
-	border-left: 1px solid black;
-}
-html[dir="rtl"] #topLinks span:last-child {
-	border-left: none;
-}
-html[dir="rtl"] #busy-indicator {
-	right: initial !important;
-	left: 0 !important;
-}
-html[dir="rtl"] .start_step1
-, html[dir="rtl"] .start_step2
-, html[dir="rtl"] .start_step3
-, html[dir="rtl"] .start_step4
-{
-	padding-left: initial !important;
-	padding-right: 30px;
-	background-position: right top !important;
-}
-html[dir="rtl"] .start_step2 {
-	margin-left: initial !important;
-	margin-right: 20px !important;
-}
-html[dir="rtl"] .start_step3 {
-	margin-left: initial !important;
-	margin-right: 40px !important;
-}
-html[dir="rtl"] .start_step4 {
-	margin-left: initial !important;
-	margin-right: 60px !important;
-}
-html[dir="rtl"] .room-list .room-row button.enter {
-	left: 10px;
-	right: initial;
-}
-html[dir="rtl"] .align-left {
-	float: right;
-}
-html[dir="rtl"] .align-right {
-	float: left;
-}
-html[dir="rtl"] .room-block .menu .details {
-	right: initial !important;
-	left: 0;
-}
-html[dir="rtl"] .room-block .menu .details .icon
-, html[dir="rtl"] .room-block .menu .details .room.name
-{
-	float: left !important;
-}
-html[dir="rtl"] #activities {
-	right: 0;
-	left: initial !important;
-}
-html[dir="rtl"] #activities .control.block .label
-, html[dir="rtl"] #chatPopup .control.block .label
-{
-	padding-left: initial !important;
-	padding-right: 20px !important;
-}
-html[dir="rtl"] .btn-toolbar .btn-group
-, html[dir="rtl"] .btn-toolbar .input-group
-{
-	float: right !important;
-}
-html[dir="rtl"] #chatPanel {
-	right: initial !important;
-	left: 10px;
-}
-html[dir="rtl"] #chat .chat-btn {
-	float: left !important;
-}
-html[dir="rtl"] #chat .chat-btn:first-of-type {
-	margin-right: initial !important;
-}
-html[dir="rtl"] #chat .chat-btn:last-of-type {
-	margin-left: 10px !important;
-}
-html[dir="rtl"] #chatMessage {
-	margin-right: initial !important;
-}
-html[dir="rtl"] #chat .send {
-	right: initial !important;
-	left: 0;
-	border-top-left-radius: 0.25rem;
-	border-bottom-left-radius: 0.25rem;
-	border-top-right-radius: 0;
-	border-bottom-right-radius: 0;
-}
-html[dir="rtl"] #chat .messageArea .user-row {
-	padding-left: initial !important;
-	padding-right: 40px !important;
-	background-position-x: 100%;
-}
-@media screen and (max-width: 1280px) {
-	html[dir="rtl"] .room-block .sidebar .tab.om-icon.big {
-		padding-left: 0 !important;
-	}
-}
-html[dir="rtl"] .room-block .sidebar .user-list .user {
-	background-position: right 2px top 2px !important;
-}
-html[dir="rtl"] .room-block .sidebar .user-list .user.name {
-	margin-left: 0px 0px 0px 20px !important;
-	padding: 0px 44px 0px 0px !important;
-}
-html[dir="rtl"] .room-block .sidebar .user-list .user .ui-icon.audio-activity {
-	right: initial !important;
-	left: 3px !important;
-}
-html[dir="rtl"] .list-table th {
-	text-align: right !important;
-}
-/**** file-tree **************/
-html[dir="rtl"] .trees .om-icon.big::before {
-	left: initial;
-	right: 3px;
-}
-html[dir="rtl"] .file.om-icon
-, html[dir="rtl"] .recording.om-icon
-{
-	padding-left: initial;
-	padding-right: 34px;
-}
-/**** TODO need to be moved to wicket-jquery-ui **************/
-html[dir="rtl"] span.css-emoticon.un-transformed-emoticon
-, html[dir="rtl"] span.css-emoticon.animated-emoticon:hover
-{
-	transform: rotate(0deg) !important;
-}
-html[dir="rtl"] span.css-emoticon {
-	transform: rotate(-90deg) !important;
-}
-html[dir="rtl"] #alert-holder {
-	left: 0;
-}
-html[dir="rtl"] #room-sidebar-tabs.tabs .btn-dock {
-	right: auto;
-	left: 5px;
-}
-html[dir="rtl"] .room-block .sb-wb .sidebar .tab .badge {
-	right: auto;
-	left: 2px;
-}
-html[dir="rtl"] .room-block .sb-wb .wb-block .tabs .wb-tabbar li a .wb-tab-close {
-	position: absolute;
-	left: 0;
-	right: auto;
-}
-html[dir="rtl"] #video-settings .close {
-	margin: 0 auto 0 0;
-}
-html[dir="rtl"] .modal-header .btn-close {
-    margin: -0.5rem auto -0.5rem -0.5rem;
-}
diff --git a/openmeetings-web/src/main/webapp/css/raw-general.css b/openmeetings-web/src/main/webapp/css/raw-general.css
index e4d2da485..a46bead25 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general.css
@@ -9,7 +9,19 @@ html, body {
 	padding: 0;
 	font-family: Arial, Helvetica, sans-serif;
 	overflow-y: hidden;
+
+	--text-align-start: left;
+	--text-align-end: right;
+	--background-start: left;
+	--background-end: right;
+}
+html[dir="rtl"] {
+	--text-align-start: right;
+	--text-align-end: left;
+	--background-start: right;
+	--background-end: left;
 }
+
 .main-loader {
 	height: 100%;
 }
@@ -23,12 +35,12 @@ html, body {
 	padding-bottom: 20px;
 }
 .signin .oauth-section .provider {
-	background-position: 0 0;
+	background-position: var(--background-start) 0;
 	background-size: 24px;
 	background-repeat: no-repeat;
 	height: 24px;
 	display: inline-block;
-	padding-left: 20px;
+	padding-inline-start: 20px;
 	vertical-align: bottom;
 }
 .signin .or-seperator {
@@ -44,39 +56,38 @@ html, body {
 	z-index: 1;
 }
 .signin-forget .form-check-label {
-	padding-right: 10px;
+	padding-inline-end: 10px;
 }
 #header {
 	font-size: 28px;
 	line-height: 40px;
 	font-weight: bold;
+	padding-inline-start: 80px;
+	margin-inline-start: 20px;
+	height: var(--header-height);
+}
+#header .logo {
+	display: inline-block;
 	background-image: url(images/logo.png);
 	background-repeat: no-repeat;
-	padding-left: 80px;
-	margin-left: 20px;
 	height: var(--header-height);
+	width: 80px;
 }
 #topLinks {
-	position: absolute;
-	top: 10px;
-	right: 10px;
+	--bs-border-width: 1px;
+	--bs-border-style: solid;
+	--bs-border-color: black;
 }
-
 #topLinks span {
 	padding-right: 5px;
 	padding-left: 5px;
-	border-right: 1px solid black;
 	white-space: nowrap;
 }
 
-#topLinks span:last-child {
-	border-right: none;
-}
 #busy-indicator {
 	display: none;
 	z-index: 1000;
 	position: absolute;
-	right: 0;
 	margin: 2px;
 	font-size: 2em;
 	line-height: 1.2em;
@@ -97,7 +108,7 @@ html, body {
 	height: calc(100% - 50px);
 }
 .pagedEntityListPanel, .addLanguagePanel {
-	margin-left: 2px;
+	margin-inline-start: 2px;
 	display: inline-block;
 }
 .pagedEntityListPanel .pagination {
@@ -165,18 +176,9 @@ html, body {
 .ui-dialog {
 	box-shadow: 3px 3px 4px #000;
 }
-.start_step1, .start_step2, .start_step3, .start_step4 {
+.start_step {
 	margin: 5px 0px 5px 0px;
 }
-.start_step2 {
-	margin-left: 20px;
-}
-.start_step3 {
-	margin-left: 40px;
-}
-.start_step4 {
-	margin-left: 60px;
-}
 .widget {
 	width: 100%;
 }
@@ -192,23 +194,17 @@ html, body {
 #feeds .card .card-body, .text-pre {
 	white-space: pre;
 }
-.align-left {
-	float: left;
-}
-.align-right {
-	float: right;
-}
 .clear {
 	clear: both;
 }
 .om-icon {
 	background-repeat: no-repeat !important;
-	background-position: 0 0 !important;
+	background-position: var(--background-start) 0 !important;
 	background-size: 16px;
 	width: 18px;
 	height: 18px;
 	border: none;
-	margin-left: 2px;
+	margin-inline-start: 2px;
 	margin-top: 2px;
 	display: inline-block;
 	position: relative;
@@ -252,9 +248,12 @@ html, body {
 	padding: 0;
 }
 .private.message.body .quote {
-	border-left: 1px solid #cccccc;
-	margin-left: 10px;
-	padding-left: 10px;
+	--bs-border-width: 1px;
+	--bs-border-style: solid;
+	--bs-border-color: #cccccc;
+
+	margin-inline-start: 10px;
+	padding-inline-start: 10px;
 }
 table.messages {
 	width: 100%;
@@ -290,12 +289,8 @@ table.messages td.from, table.messages td.subject {
 	overflow-wrap: break-word;
 }
 .email {
-	background-repeat: no-repeat !important;
-	background-position: 5px 3px !important;
-	background-size: 16px 16px !important;
 	padding-top: 2px;
 	display: block;
-	text-align:left;
 }
 .email.selected {
 	border: 1px solid #cccccc;
@@ -307,12 +302,10 @@ table.messages td.from, table.messages td.subject {
 }
 .email.folder .delete {
 	position:absolute;
-	right: 2px;
 	top: 2px;
 	font-weight: normal;
 	padding: 0;
 	display: inline-block;
-	background-position: 0;
 	width: 18px;
 	height: 18px;
 }
@@ -331,14 +324,6 @@ textarea.messages.body {
 select.messages.selector {
 	width: 220px;
 }
-.info-title {
-	background-image: url(images/information.png);
-	background-repeat: no-repeat;
-	width: 16px;
-	height: 16px;
-	display: inline-block;
-	margin-left: 10px;
-}
 #messagesTable tr.selected {
 	background-color: var(--bs-light);
 }
@@ -357,16 +342,11 @@ select.messages.selector {
 .room-list .room-row button.refresh {
 	padding: 0 0.25rem;
 }
-.room-list .room-row button.enter {
-	position: absolute;
-	right: 10px;
-	top: 10px;
-}
 .select2-results .user.external, .select2-selection .user.external
 , .select2-results .user.internal, .select2-selection .user.internal {
-	padding-left: 18px;
+	padding-inline-start: 18px;
 	background-repeat: no-repeat;
-	background-position: 0px 2px;
+	background-position: var(--background-start) 2px;
 }
 .select2-results .user.external, .select2-selection .user.external {
 	background-image: url(images/user_go.png);
@@ -420,8 +400,8 @@ select.messages.selector {
 }
 .page.recording-panel .video, .page.recording-panel .info {
 	display: inline-block;
-	float: left;
-	padding-left: 20px;
+	float: inline-start;
+	padding-inline-start: 20px;
 }
 .page.recording-panel .video {
 	min-width: 400px;
@@ -474,17 +454,16 @@ select.messages.selector {
 }
 .user.info.panel legend {
 	font-style: italic;
-	text-align: right;
 }
 .user.info.panel fieldset table, .user.info.panel fieldset table textarea {
 	width: 100%;
 }
-#topControls #wicketDebugBar {
+.main-container #wicketDebugBar {
 	right: initial;
 	top: initial;
 	z-index: 2;
-	bottom: 0;
 	position: fixed;
+	margin-inline-end: 25px;
 }
 .profile {
 	position: relative;
@@ -497,9 +476,6 @@ select.messages.selector {
 	font-size: 12px;
 }
 .profile .remove {
-	position: absolute;
-	right: -10px;
-	top: 5px;
 	border: 1px solid #cccc;
 	padding: 0px 7px;
 }
@@ -548,7 +524,7 @@ select.messages.selector {
 }
 .list-table th {
 	overflow: hidden;
-	text-align: left;
+	text-align: var(--text-align-start);
 }
 .bottom-bumper {
 	height: 30px;
@@ -737,9 +713,6 @@ select.messages.selector {
 	height: calc(100% - 65px);
 }
 #alert-holder {
-	position: fixed;
-	right: 0;
-	bottom: 0;
 	z-index: calc(var(--chat-zindex) + 2);
 }
 .popover.confirmation.show {
diff --git a/openmeetings-web/src/main/webapp/css/raw-menu.css b/openmeetings-web/src/main/webapp/css/raw-menu.css
index e9d6581fa..4550aac60 100644
--- a/openmeetings-web/src/main/webapp/css/raw-menu.css
+++ b/openmeetings-web/src/main/webapp/css/raw-menu.css
@@ -4,20 +4,18 @@
 	padding-bottom: 0;
 }
 .room-block .menu .top.exit {
-	padding-left: 0;
+	padding-inline-start: 0;
 }
 .room-block .menu .details {
 	position: absolute;
 	top: 0;
-	margin-right: 5px;
-	right: 0;
+	margin-inline-end: 5px;
 	display: inline-block;
 	z-index: calc(var(--menu-zindex) + 1);
 }
 .room-block .menu .details .room {
-	float: right;
 	padding-top: 5px;
-	padding-right: 5px;
+	padding-inline-end: 5px;
 }
 .room-block .menu .details .room.name {
 	font-weight: bold;
@@ -28,15 +26,10 @@
 .room-block .menu .details .icon {
 	width: 30px;
 	height: 30px;
-	background-repeat: no-repeat;
-	background-position: 5px 5px;
-	background-size: 22px;
-	float: right;
 	padding: 0;
 }
 .room-block .menu .details .detail-btn {
 	padding: 0.1rem 0.4rem;
-	float: right;
 	position: relative;
 }
 .room-block .menu .details .detail-btn i::before {
@@ -48,7 +41,6 @@
 }
 .room-block .menu .details .detail-btn i.add-on {
 	position: absolute;
-	left: 5px;
 	color: var(--bs-warning);
 	bottom:  0;
 }
@@ -58,14 +50,3 @@
 .room-block .menu .details .icon .profile img {
 	width: 28px;
 }
-
-html[dir="rtl"] .navbar .navbar-nav.me-auto {
-	margin-right: unset !important;
-}
-html[dir="rtl"] .navbar .dropdown-menu {
-	left: initial;
-	right: 0;
-}
-html[dir="rtl"] .dropdown-menu .dropdown-item {
-	text-align: right;
-}
diff --git a/openmeetings-web/src/main/webapp/css/raw-room.css b/openmeetings-web/src/main/webapp/css/raw-room.css
index 9e3289d0f..ec0db326f 100644
--- a/openmeetings-web/src/main/webapp/css/raw-room.css
+++ b/openmeetings-web/src/main/webapp/css/raw-room.css
@@ -8,8 +8,6 @@
 	width: 300px;
 	height: 300px;
 	top: 30px;
-	right:  0;
-	left: auto;
 	z-index: 3050;
 }
 .room-block .event-details.modal .modal-dialog {
@@ -28,8 +26,6 @@
 	position: absolute;
 	height: 100%;
 	top: 0;
-	right: auto;
-	left: 0;
 }
 .room-block .sb-wb .sidebar #room-sidebar-tabs {
 	height: calc(100% - var(--activities-height));
@@ -64,10 +60,6 @@
 .room-block .sb-wb .sidebar .tab.user .label {
 	width: calc((var(--sidebar-width) - 50px) / 2 - 80px);
 }
-html[dir="rtl"] .room-block .sb-wb .sidebar {
-	right: 0;
-	left: auto;
-}
 .room-block .sb-wb .sidebar #busy-indicator {
 	margin: 8px;
 }
@@ -81,7 +73,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	border-color: #bebec3;
 }
 #room-sidebar-tab-users .header {
-	padding-left: 5px;
+	padding-inline-start: 5px;
 	height: var(--room-sidebar-header-height);
 }
 #room-sidebar-tab-users .header .om-icon {
@@ -98,11 +90,11 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 .room-block .sb-wb .sidebar .user-list .user.entry {
 	min-height: 90px;
-	padding-left: 5px;
+	padding-inline-start: 5px;
 	padding-top: 5px;
 	background-size: 80px;
 	background-repeat: no-repeat;
-	background-position: 2px 2px;
+	background-position: var(--background-start) 2px;
 	position: relative;
 }
 .room-block .sb-wb .sidebar .user-list .user.entry:hover {
@@ -120,8 +112,8 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	line-height: 18px;
 	height: 18px;
 	padding: 0;
-	padding-left: 64px;
-	margin-right: 20px;
+	padding-inline-start: 64px;
+	margin-inline-end: 20px;
 	overflow: hidden;
 }
 .room-block.narrow .sidebar .user-list .user.name {
@@ -187,7 +179,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	width: 14px;
 	height: 14px;
 	min-height: 14px;
-	margin-right: 2px;
+	margin-inline-end: 2px;
 	margin-left: unset;
 }
 .audio-activity.om-icon {
@@ -386,21 +378,21 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	width: 130px;
 }
 .sip .button-row #sip-dialer-btn-erase {
-	margin-left: 5px;
+	margin-inline-start: 5px;
 }
 .room-block .sb-wb .sidebar .tab.om-icon.big {
 	line-height: 30px;
-	padding-left: 10px;
+	padding-inline-start: 10px;
 	position: relative;
 }
 .room-block .sb-wb .sidebar .tab .badge {
 	position: absolute;
 	bottom: 0;
-	right: 2px;
+	margin-inline-end: 2px;
 }
 .room-block.narrow .sidebar .tab.om-icon.big {
-	padding-left: 6px;
-	padding-right: 0;
+	padding-inline-start: 6px;
+	padding-inline-end: 0;
 }
 .room-block .wait-moder {
 	position: fixed;
@@ -435,15 +427,12 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 .user-video .buttonpane {
 	background-color: var(--bs-white);
-	position: absolute;
-	right: 2px;
-	top: 2px
 }
 .ui-dialog.video .ui-dialog-content {
 	overflow: hidden;
 }
 .ui-dialog.video .ui-dialog-titlebar {
-	padding-left: 10px;
+	padding-inline-start: 10px;
 	border: none;
 }
 .ui-dialog.video.user-video.user-speaks {
@@ -474,11 +463,11 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 .modal.video .vid-block {
 	min-width: 300px;
-	padding-left: 305px;
+	padding-inline-start: 305px;
 }
 .modal.video .warn {
 	float: right;
-	margin-right: .3em;
+	margin-inline-end: .3em;
 }
 .modal.video .sett-container {
 	position: relative;
@@ -488,7 +477,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	padding-top: 10px;
 }
 .modal.video .sett-row.right {
-	text-align: right;
+	text-align: var(--text-align-end);
 }
 .modal.video .vid-block .video-conainer {
 	overflow: auto;
@@ -544,7 +533,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	overflow: hidden;
 }
 .room-block .room-container .user-video .header .ui-dialog-title {
-	padding-left: 5px;
+	padding-inline-start: 5px;
 }
 .room-block .room-container .user-video .video {
 	min-width: 40px;
@@ -671,7 +660,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 #quick-vote {
 	position: absolute;
-	right: 40px;
+	margin-inline-end: 40px;
 	bottom: 40px;
 	padding: 5px;
 	border: 1px solid;
@@ -688,7 +677,6 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 #quick-vote .control .badge {
 	position: absolute;
-	right: 0;
 	bottom: 0;
 	font-size: 0.5em;
 }
@@ -703,7 +691,6 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	color: var(--bs-danger);
 }
 #quick-vote .close-btn {
-	float: right;
 	padding: 0 0.4rem;
 }
 .main.room.INTERVIEW #quick-vote {
@@ -736,7 +723,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	height: 25px;
 	position: absolute;
 	top: 5px;
-	right: 5px;
+	margin-inline-end: 5px;
 }
 .video .mute-others {
 	position: absolute;
@@ -786,7 +773,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 @media screen and (max-width: 1280px) {
 	.room-block .sb-wb .sidebar .tab.om-icon.big {
-		padding-right: 0;
+		padding-inline-end: 0;
 	}
 	.room-block .sb-wb .sidebar .user-list .user.name {
 		display: none;
@@ -795,3 +782,8 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 		display: block;
 	}
 }
+
+html[dir="rtl"] .main.room #chatPanel {
+    right: initial;
+    left: 0px;
+}
diff --git a/openmeetings-web/src/main/webapp/css/raw-tree.css b/openmeetings-web/src/main/webapp/css/raw-tree.css
index 611e6ea00..5430bf369 100644
--- a/openmeetings-web/src/main/webapp/css/raw-tree.css
+++ b/openmeetings-web/src/main/webapp/css/raw-tree.css
@@ -41,9 +41,6 @@
 .file-tree .footer .sizes {
 	display: inline-block;
 }
-.file-tree .footer .sizes .size {
-	padding-left: 5px;
-}
 .file-tree .footer .buttons .other-buttons {
 	display: inline-block;
 	margin: 0 2px;
@@ -132,9 +129,6 @@
 .file-tree .trees .processing.om-icon i {
 	display: block;
 }
-.file.om-icon, .recording.om-icon {
-	padding-left: 34px;
-}
 .public.file.om-icon::before {
 	content: '\f0ac';
 }
@@ -226,3 +220,9 @@
 	content: '\f574';
 	padding: 0 7px;
 }
+
+
+html[dir="rtl"] .trees .om-icon.big::before {
+	left: initial;
+	right: 3px;
+}
diff --git a/openmeetings-web/src/main/webapp/css/raw-wb.css b/openmeetings-web/src/main/webapp/css/raw-wb.css
index f62803098..ac6f151df 100644
--- a/openmeetings-web/src/main/webapp/css/raw-wb.css
+++ b/openmeetings-web/src/main/webapp/css/raw-wb.css
@@ -6,10 +6,6 @@
 	top: 0;
 	left: calc(var(--sidebar-width) + var(--buffer-size));
 }
-html[dir="rtl"] .room-block .sb-wb .wb-block {
-	right: calc(var(--sidebar-width) + var(--buffer-size));
-	left: auto;
-}
 .room-block .sb-wb .wb-block.droppable-hover {
 	border: 0;
 }
@@ -44,14 +40,14 @@ html[dir="rtl"] .room-block .sb-wb .wb-block {
 }
 .room-block .sb-wb .wb-block .tabs .wb-tabbar li a {
 	position: relative;
-	padding-right: 25px;
+	padding-inline-end: 25px;
 }
 .wb-tab-close {
 	width: 20px;
 	height: 20px;
 	position: absolute;
 	top: 0px;
-	right: 2px;
+	margin-inline-end: 2px;
 }
 .btn-outline-secondary.btn-no-border {
 	border: none;
@@ -63,11 +59,7 @@ html[dir="rtl"] .room-block .sb-wb .wb-block {
 }
 .room-block .sb-wb .wb-block .tabs .wb-tab-content .fullscreen {
 	position: absolute;
-	right: 40px;
-}
-html[dir="rtl"] .room-block .sb-wb .wb-block .tabs .wb-tab-content .fullscreen {
-	right: initial;
-	left: 40px;
+	margin-inline-end: 40px;
 }
 .room-block .sb-wb .wb-block .tabs .wb-tab-content .tab-pane {
 	height: 100%;
@@ -85,7 +77,7 @@ html[dir="rtl"] .room-block .sb-wb .wb-block .tabs .wb-tab-content .fullscreen {
 	vertical-align: top;
 	background-size: 27px;
 	margin: 0;
-	background-position: 4px !important;
+	background-position: var(--background-start) !important;
 	position: relative;
 }
 .room-block .sb-wb .wb-block .tools .om-icon.big.stub {
@@ -94,7 +86,7 @@ html[dir="rtl"] .room-block .sb-wb .wb-block .tabs .wb-tab-content .fullscreen {
 }
 .room-block .sb-wb .wb-block .tools .dropstart .dropdown-toggle::before {
 	vertical-align: bottom;
-	margin-right: 0;
+	margin-inline-end: 0;
 }
 .room-block .sb-wb .wb-block .tools .dropdown-menu .om-icon.big {
 	float: none;
@@ -106,7 +98,7 @@ html[dir="rtl"] .room-block .sb-wb .wb-block .tabs .wb-tab-content .fullscreen {
 	border: 1px solid #6b6565;
 }
 .room-block .sb-wb .wb-block .tools .om-icon.big::before {
-	padding-left: 5px;
+	padding-inline-start: 5px;
 }
 .room-block .sb-wb .wb-block .tools .drawings .om-icon.big.stub::before
 , .room-block .sb-wb .wb-block .tools .om-icon.big.math::before
@@ -209,23 +201,17 @@ html[dir="rtl"] .room-block .sb-wb .wb-block .tabs .wb-tab-content .fullscreen {
 }
 .wb-tool-settings .ui-dialog-titlebar-close, .wb-formula .ui-dialog-titlebar-close {
 	position: absolute;
-	right: .3em;
+	margin-inline-end: .3em;
 	top: 5px;
 	width: 20px;
 	padding: 1px;
 	height: 20px;
 }
-html[dir="rtl"] .wb-tool-settings .ui-dialog-titlebar-close
-, html[dir="rtl"] .wb-formula .ui-dialog-titlebar-close
-{
-	left: .3em;
-	right: auto;
-}
 .wb-tool-settings .header, .wb-formula .header {
 	padding: 5px;
 }
 .wb-tool-settings .header .ui-dialog-title, .wb-formula .header .ui-dialog-title {
-	padding-left: 10px;
+	padding-inline-start: 10px;
 }
 .wb-tool-settings .tab.props {
 	padding: 5px 10px;
@@ -237,7 +223,7 @@ html[dir="rtl"] .wb-tool-settings .ui-dialog-titlebar-close
 }
 .wb-tool-settings .tab.props .block {
 	display: inline;
-	padding-left: 5px;
+	padding-inline-start: 5px;
 }
 .wb-tool-settings .tab.props .block.lbl {
 	width: 1em;
@@ -292,8 +278,8 @@ html[dir="rtl"] .wb-tool-settings .ui-dialog-titlebar-close
 	left: auto !important;
 }
 .wb-tabbar {
-	padding-left: 70px !important;
-	padding-right: 35px !important;
+	padding-inline-start: 70px !important;
+	padding-inline-end: 35px !important;
 	min-height: 40px;
 }
 .wb-tabbar .scroll-container {
@@ -313,13 +299,13 @@ html[dir="rtl"] .wb-tool-settings .ui-dialog-titlebar-close
 	top: 3px;
 }
 .wb-tabbar .add {
-	left: 2px;
+	margin-inline-start: 2px;
 }
 .wb-tabbar .prev {
-	left: 35px;
+	margin-inline-start: 35px;
 }
 .wb-tabbar .next {
-	right: 2px;
+	margin-inline-end: 2px;
 }
 .room-block .sb-wb .wb-block .tabs .wb-tab-content .wb-with-zoom {
 	width: calc(100% - 40px);
@@ -341,7 +327,7 @@ html[dir="rtl"] .wb-tool-settings .ui-dialog-titlebar-close
 }
 .room-block .sb-wb .wb-block .tabs .wb-tab-content .scroll-container .canvas-container {
 	margin-top: 5px;
-	margin-left: 5px;
+	margin-inline-start: 5px;
 	border: 1px solid #888888;
 	box-shadow: 5px 5px 5px #888888;
 }
@@ -361,14 +347,20 @@ html[dir="rtl"] .wb-tool-settings .ui-dialog-titlebar-close
 }
 .wb-area .wb-zoom .settings-group {
 	display: none;
-	margin-left: 2px;
+	margin-inline-start: 2px;
 }
 .wb-area .wb-zoom .doc-group {
-	margin-left: 5px;
+	margin-inline-start: 5px;
 }
 .wb-area .wb-zoom .zoom-group {
-	margin-left: 2px;
+	margin-inline-start: 2px;
 }
 #wb-rename-menu {
 	display: none;
 }
+
+
+html[dir="rtl"] .room-block .sb-wb .wb-block {
+	left: initial;
+	right: calc(var(--sidebar-width) + var(--buffer-size));
+}
diff --git a/pom.xml b/pom.xml
index 60d736767..6c114a6ed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,11 +84,10 @@
 
 		<!-- dependency versions -->
 		<junit.version>5.10.0</junit.version>
-		<wicket.version>9.14.0</wicket.version>
+		<wicket.version>9.15.0-SNAPSHOT</wicket.version>
 		<wicket-jquery-ui.version>9.12.0</wicket-jquery-ui.version>
 		<wicketstuff.version>9.14.0</wicketstuff.version>
-		<wicket-bootstrap.version>6.0.4</wicket-bootstrap.version>
-		<font-awesome.version>6.4.2</font-awesome.version>
+		<wicket-bootstrap.version>6.0.5-SNAPSHOT</wicket-bootstrap.version>
 		<spring.version>5.3.29</spring.version>
 		<tomcat.version>9.0.79</tomcat.version>
 		<ical4j.version>4.0.0-beta9</ical4j.version>
@@ -125,7 +124,7 @@
 		<logback.version>1.4.11</logback.version>
 		<jetty.version>9.4.51.v20230217</jetty.version>
 		<license.excludedScopes>test</license.excludedScopes>
-		<bcprov-jdk15on.version>1.70</bcprov-jdk15on.version>
+		<bcprov.version>1.76</bcprov.version>
 		<mockito.version>5.2.0</mockito.version>
 		<quartz.version>2.3.2</quartz.version>
 		<kurento.version>7.0.0</kurento.version>
@@ -684,8 +683,8 @@
 			</dependency>
 			<dependency>
 				<groupId>org.bouncycastle</groupId>
-				<artifactId>bcprov-jdk15on</artifactId>
-				<version>${bcprov-jdk15on.version}</version>
+				<artifactId>bcprov-jdk18on</artifactId>
+				<version>${bcprov.version}</version>
 			</dependency>
 			<dependency>
 				<groupId>org.apache.tika</groupId>
@@ -937,11 +936,6 @@
 				<artifactId>wicket-bootstrap-themes</artifactId>
 				<version>${wicket-bootstrap.version}</version>
 			</dependency>
-			<dependency>
-				<groupId>org.webjars</groupId>
-				<artifactId>font-awesome</artifactId>
-				<version>${font-awesome.version}</version>
-			</dependency>
 			<dependency>
 				<groupId>org.quartz-scheduler</groupId>
 				<artifactId>quartz</artifactId>