browser/css/aichat-sidebar.css | 16 ++++++------
browser/css/backstage.css | 24 +++++++++---------
browser/css/cool.css | 13 +++++++--
browser/css/device-mobile.css | 2 -
browser/css/jsdialogs.css | 54 ++++++++++++++++++++---------------------
browser/css/jssidebar.css | 16 ++++++------
browser/css/menubar.css | 4 +--
browser/css/notebookbar.css | 8 +++---
browser/css/spreadsheet.css | 2 -
browser/css/toolbar.css | 22 ++++++++--------
10 files changed, 84 insertions(+), 77 deletions(-)
New commits:
commit 3d7db87ee9511d52483192aad190c90612c97a45
Author: Samuel Mehrbrodt <
samuel.m...@collabora.com>
AuthorDate: Wed Apr 29 16:45:58 2026 +0200
Commit: Pedro Pinto Silva <
pedro...@collabora.com>
CommitDate: Fri May 1 13:32:16 2026 +0000
Add & use variables for spacing instead of hardcoding them
Change-Id: I9d86fbeb3301179de7db59fdd3aa07e7fb5cf681
Reviewed-on:
https://gerrit.collaboraoffice.com/c/online/+/1846
Tested-by: Jenkins CPCI <
rel...@collaboraoffice.com>
Reviewed-by: Pedro Silva <
pedro...@collabora.com>
diff --git a/browser/css/aichat-sidebar.css b/browser/css/aichat-sidebar.css
index a0e03a6e8c4f..e152b71102c8 100644
--- a/browser/css/aichat-sidebar.css
+++ b/browser/css/aichat-sidebar.css
@@ -99,7 +99,7 @@
}
#aichat-header button.ui-pushbutton {
- padding: 4px;
+ padding: var(--spacing-s);
width: 28px;
height: 28px;
border: 1px solid transparent;
@@ -136,7 +136,7 @@
display: flex !important;
grid-auto-flow: unset !important;
flex-direction: column;
- gap: 12px;
+ gap: var(--spacing-l);
scrollbar-width: var(--scrollbar-width);
scrollbar-color: var(--scrollbar-color);
user-select: text;
@@ -160,7 +160,7 @@
display: flex !important;
grid-auto-flow: unset !important;
flex-direction: column;
- gap: 12px;
+ gap: var(--spacing-l);
}
#aichat-messages-list:has(#aichat-empty-state) {
@@ -351,7 +351,7 @@
#aichat-loading-dots {
display: flex;
align-items: center;
- gap: 2px;
+ gap: var(--spacing-xs);
padding: 12px 16px;
align-self: flex-start;
background: var(--color-background-lighter);
@@ -419,7 +419,7 @@
display: flex;
align-items: center;
justify-content: center;
- gap: 4px;
+ gap: var(--spacing-s);
font-size: 11px;
font-family: var(--cool-font);
color: var(--color-text-lighter);
@@ -738,7 +738,7 @@
.aichat-approval-buttons {
display: flex;
- gap: 8px;
+ gap: var(--spacing-m);
margin-top: 2px;
}
@@ -860,7 +860,7 @@
width: 100%;
display: flex;
align-items: center;
- gap: 8px;
+ gap: var(--spacing-m);
text-align: left;
padding: 11px 14px;
border: 1px solid var(--color-border);
@@ -913,7 +913,7 @@
transition: background 0.15s ease;
display: inline-flex;
align-items: center;
- gap: 4px;
+ gap: var(--spacing-s);
}
#aichat-chips > #aichat-see-more > button.ui-pushbutton:hover {
diff --git a/browser/css/backstage.css b/browser/css/backstage.css
index 79e36bb5accb..200efcc8a634 100644
--- a/browser/css/backstage.css
+++ b/browser/css/backstage.css
@@ -43,7 +43,7 @@
color: var(--color-on-primary);
display: inline-flex;
align-items: center;
- gap: 4px;
+ gap: var(--spacing-s);
}
.backstage-header-title::before {
@@ -125,7 +125,7 @@
display: flex;
flex-direction: column;
flex: 1;
- gap: 4px;
+ gap: var(--spacing-s);
min-height: 0;
margin-bottom: 30px;
}
@@ -194,7 +194,7 @@
align-items: center;
justify-content: center;
padding: 12px 8px;
- gap: 8px;
+ gap: var(--spacing-m);
}
@@ -299,7 +299,7 @@
display: flex;
flex-direction: column;
align-items: flex-start;
- gap: 16px;
+ gap: var(--spacing-xl);
margin-top: 32px;
padding: 24px;
border: 1px dashed var(--color-border);
@@ -310,11 +310,11 @@
.backstage-templates-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
- gap: 16px;
+ gap: var(--spacing-xl);
}
.backstage-template-card {
- padding: 12px;
+ padding: var(--spacing-l);
cursor: pointer;
text-align: center;
transition: all 0.2s ease;
@@ -369,12 +369,12 @@
.backstage-template-explorer {
display: flex;
flex-direction: column;
- gap: 12px;
+ gap: var(--spacing-l);
}
.template-filter-bar {
display: flex;
- gap: 8px;
+ gap: var(--spacing-m);
flex-wrap: wrap;
}
@@ -419,7 +419,7 @@
.template-featured-row {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
- gap: 16px;
+ gap: var(--spacing-xl);
overflow-x: auto;
padding-bottom: 8px;
}
@@ -440,7 +440,7 @@
.backstage-formats-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
- gap: 12px;
+ gap: var(--spacing-l);
margin-top: 20px;
}
@@ -457,7 +457,7 @@
flex-direction: column;
justify-content: center;
align-items: center;
- gap: 8px;
+ gap: var(--spacing-m);
}
.backstage-format-card:hover {
@@ -612,7 +612,7 @@
.backstage-recent-document-text-wrapper {
display: flex;
flex-direction: column;
- gap: 4px;
+ gap: var(--spacing-s);
flex: 1;
min-width: 0;
}
diff --git a/browser/css/cool.css b/browser/css/cool.css
index 06ea6dce83fc..e00010a24ece 100644
--- a/browser/css/cool.css
+++ b/browser/css/cool.css
@@ -22,6 +22,13 @@
--border-radius: 4px; /* buttons, widgets */
--border-radius-large: 10px; /* dialog */
+ /* Spacing scale for gap/padding/margin */
+ --spacing-xs: 2px;
+ --spacing-s: 4px;
+ --spacing-m: 8px;
+ --spacing-l: 12px;
+ --spacing-xl: 16px;
+
--tooltip-font-size: 0.875rem;
--default-font-size: 0.75rem;
--overflow-group-font-size: 8.5pt; /* do not scale labels of groups */
@@ -673,7 +680,7 @@ body {
width: auto;
display: flex;
flex-direction: column;
- row-gap: 8px;
+ row-gap: var(--spacing-m);
}
.annotation-active.annotation-pop-up .cool-annotation-content-wrapper {
@@ -801,7 +808,7 @@ body {
background-color: var(--color-background-dark);
color: var(--color-main-text);
overflow-x: hidden;
- padding: 2px;
+ padding: var(--spacing-xs);
max-height: var(--annotation-input-size);
min-height: calc(var(--default-font-size) * 4);
width: 100%;
@@ -982,7 +989,7 @@ body {
display: flex;
justify-content: flex-end;
align-items: center;
- column-gap: 4px;
+ column-gap: var(--spacing-s);
cursor: pointer;
padding: 0 !important;
}
diff --git a/browser/css/device-mobile.css b/browser/css/device-mobile.css
index 99a40f18da12..7e291475b82a 100644
--- a/browser/css/device-mobile.css
+++ b/browser/css/device-mobile.css
@@ -617,7 +617,7 @@ div#fontstyletoolbox + div#style.mobile-wizard {
}
#product-name {
- margin: 2px;
+ margin: var(--spacing-xs);
font-size: 29px;
}
diff --git a/browser/css/jsdialogs.css b/browser/css/jsdialogs.css
index f315e4d02a6b..f4e5823f8088 100644
--- a/browser/css/jsdialogs.css
+++ b/browser/css/jsdialogs.css
@@ -64,7 +64,7 @@ div.ui-treeview-icon-column {
#AcceptRejectChangesDialog #RedlineViewPage.jsdialog.ui-grid-cell {
display: flex;
flex-direction: column;
- gap: 8px;
+ gap: var(--spacing-m);
}
#AcceptRejectChangesDialog #RedlineFilterPage .ui-timefield {
margin: 5px;
@@ -222,7 +222,7 @@ div#autoFillPreviewTooltip .lokdialog.ui-dialog-content.ui-widget-content {
color: var(--color-main-text);
font-size: var(--header-font-size);
line-height: var(--header-height);
- margin: 4px;
+ margin: var(--spacing-s);
}
#accessibilityCheckBox .jsdialog.ui-text {
@@ -277,13 +277,13 @@ td.jsdialog > [id^='table-box']:not(.sidebar) {
border-spacing: 0px;
width: 100%;
display: grid;
- grid-gap: 4px;
+ grid-gap: var(--spacing-s);
}
/* Special Characters dialog */
#SpecialCharactersDialog #viewgrid,
#SpecialCharactersDialog #favgrid {
- grid-gap: 4px;
+ grid-gap: var(--spacing-s);
width: fit-content;
}
@@ -653,7 +653,7 @@ body button:not(.ui-corner-all):not(.button-primary):not(.unobutton):not(.form-f
}
.ui-expander-content > .root-container.jsdialog {
- margin: 4px;
+ margin: var(--spacing-s);
}
/* Link Button*/
@@ -1444,7 +1444,7 @@ img.context-menu-icon {
top: 0;
z-index: 1;
background-color: var(--color-background-lighter);
- padding: 4px;
+ padding: var(--spacing-s);
}
.ui-combobox-search-input {
@@ -1620,8 +1620,8 @@ img.context-menu-icon {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
max-height: 40vh;
- gap: 2px;
- padding: 2px;
+ gap: var(--spacing-xs);
+ padding: var(--spacing-xs);
}
.ui-iconview.mobile-wizard {
@@ -1689,7 +1689,7 @@ img.context-menu-icon {
.autofilter.cell {
display: table-cell;
vertical-align: middle;
- padding: 2px;
+ padding: var(--spacing-xs);
}
.autofilter-container {
@@ -1739,7 +1739,7 @@ img.context-menu-icon {
/* Same size as #toggle_all.checkbutton > input */
height: 18px;
width: 18px;
- margin: 8px;
+ margin: var(--spacing-m);
border: none;
}
@@ -2052,27 +2052,27 @@ button.has-img img {
/* color picker */
.ui-color-picker {
- padding: 4px;
+ padding: var(--spacing-s);
}
.ui-color-picker-header {
display: grid;
grid-template-columns: auto 1fr;
align-items: center;
- gap: 8px;
+ gap: var(--spacing-m);
}
.ui-color-picker,
#ui-color-picker-custom,
#ui-color-picker-recent {
display: grid;
- grid-gap: 4px;
+ grid-gap: var(--spacing-s);
align-items: center;
}
.ui-color-picker-palette {
display: grid;
- grid-gap: 4px;
+ grid-gap: var(--spacing-s);
margin-top: 3px;
}
@@ -2216,7 +2216,7 @@ button.has-img img {
.snackbar #snackbar-container-progress {
align-items: center;
max-width: calc(80vw);
- row-gap: 4px;
+ row-gap: var(--spacing-s);
}
.snackbar .ui-progressbar progress {
@@ -2273,7 +2273,7 @@ button.has-img img {
}
.snackbar.jsdialog-container [id$='button'].ui-pushbutton.jsdialog {
- padding: 8px;
+ padding: var(--spacing-m);
}
#snackbar-container-progress .ui-progressbar {
@@ -2287,7 +2287,7 @@ button.has-img img {
}
#mobile-wizard.popup.snackbar [id$='button'] {
- padding: 8px;
+ padding: var(--spacing-m);
}
#mobile-wizard.popup.snackbar [id$='button'],
@@ -2445,7 +2445,7 @@ button.has-img img {
.ui-custom-textarea-cursor-layer,
.ui-custom-textarea-handle-layer,
.ui-custom-textarea-text-layer {
- padding: 4px;
+ padding: var(--spacing-s);
grid-column: 1;
grid-row: 1;
white-space: pre-wrap;
@@ -2483,7 +2483,7 @@ button.has-img img {
display: grid;
grid-auto-flow: column;
align-items: center;
- grid-column-gap: 4px;
+ grid-column-gap: var(--spacing-s);
grid-template-columns: repeat(3, 30px);
}
@@ -2601,7 +2601,7 @@ button.has-img img {
#FormulaDialog #StructPage {
display: grid;
grid-template-rows: auto 1fr;
- grid-row-gap: 4px;
+ grid-row-gap: var(--spacing-s);
}
#FormulaDialog #StructPage .ui-treeview-entry div {
background-color: transparent;
@@ -2619,7 +2619,7 @@ button.has-img img {
#FormulaDialog > [id^='dialog-vbox'] > [id^='box'] > [id^='box'] {
grid-auto-columns: max-content;
- grid-column-gap: 8px;
+ grid-column-gap: var(--spacing-m);
}
#FormulaDialog label {
@@ -2690,7 +2690,7 @@ kbd,
font-family: monospace;
font-size: .85em;
line-height: 1;
- padding: 4px;
+ padding: var(--spacing-s);
white-space: nowrap;
}
@@ -2827,7 +2827,7 @@ kbd,
/* Calc -> Insert -> Pivot Table */
#PivotTableLayout #box2 {
- grid-gap: 12px; /* make space for vertical separator */
+ grid-gap: var(--spacing-l); /* make space for vertical separator */
}
/* Modal info with 2 line message*/
@@ -2845,7 +2845,7 @@ kbd,
#DocumentPropertiesDialog #properties > .jsdialog.ui-grid > .ui-grid-cell > .ui-grid-cell {
align-items: center;
- grid-column-gap: 4px;
+ grid-column-gap: var(--spacing-s);
}
#DocumentPropertiesDialog #customprops button {
@@ -2883,7 +2883,7 @@ kbd,
#ServerAuditDialog #ServerAuditDialog-mainbox label {
display: flex;
align-items: center;
- gap: 4px;
+ gap: var(--spacing-s);
color: #000;
border-radius: 30px;
width: fit-content;
@@ -2957,7 +2957,7 @@ kbd,
/* Writer - Format - Page Style - Area - Image */
#ImageTabPage #frame1 .ui-grid-cell {
display: grid;
- grid-gap: 4px;
+ grid-gap: var(--spacing-s);
}
/* Calc - Format - Format Cells - Background - Color */
@@ -3289,7 +3289,7 @@ div [id^='themeview'].ui-iconview-entry, div [id^='themeview1col'].ui-iconview-e
height: 100%;
box-sizing: border-box;
font: inherit;
- padding: 2px;
+ padding: var(--spacing-xs);
margin: 0;
border: 1px solid var(--color-primary, #005da0);
border-radius: 2px;
diff --git a/browser/css/jssidebar.css b/browser/css/jssidebar.css
index 4e71dc5821b4..1d7e14348600 100644
--- a/browser/css/jssidebar.css
+++ b/browser/css/jssidebar.css
@@ -31,7 +31,7 @@ img.sidebar.ui-image {
}
.sidebar.ui-grid {
- row-gap: 8px;
+ row-gap: var(--spacing-m);
}
.sidebar .ui-content .unobutton {
@@ -96,7 +96,7 @@ img.sidebar.ui-image {
width: 10px;
height: 10px;
padding: 0;
- margin: 4px;
+ margin: var(--spacing-s);
}
.ui-expander-icon-right.jsdialog.sidebar .ui-overflow-group-more.unotoolbutton,
@@ -130,7 +130,7 @@ img.sidebar.ui-image {
#ParaPropertyPanel.sidebar.ui-grid #box1.sidebar.ui-grid-cell,
#NumberFormatPropertyPanel.sidebar.ui-grid #grid1 {
justify-content: space-between !important;
- row-gap: 8px;
+ row-gap: var(--spacing-m);
grid-auto-flow: revert !important;
grid-template-columns: repeat(2, auto);
}
@@ -262,7 +262,7 @@ div.sidebar.ui-grid .checkbutton.sidebar,
#ParaPropertyPanel.sidebar #box3 {
display: grid;
justify-content: start;
- row-gap: 4px;
+ row-gap: var(--spacing-s);
}
#ParaPropertyPanel .sidebar.ui-grid-cell {
@@ -279,7 +279,7 @@ div.sidebar.ui-grid .checkbutton.sidebar,
button#button2.ui-pushbutton.jsdialog.sidebar {
width: 151px;
- padding: 4px;
+ padding: var(--spacing-s);
position: relative;
left: -10px;
}
@@ -474,7 +474,7 @@ span.jsdialog.sidebar.ui-treeview-notexpandable {
.navigator-btn-wrapper {
background-color: var(--color-background-lighter);
border-radius: var(--border-radius);
- padding: 4px;
+ padding: var(--spacing-s);
box-shadow: 0px 1px 3px var(--color-box-shadow);
}
@@ -512,12 +512,12 @@ span.jsdialog.sidebar.ui-treeview-notexpandable {
font-family: var(--cool-font);
color: var(--color-main-text);
height: 54px;
- padding: 16px;
+ padding: var(--spacing-xl);
box-sizing: border-box;
}
.navigator-container .ui-treeview-placeholder {
- padding: 16px;
+ padding: var(--spacing-xl);
}
.close-navigation-wrapper {
diff --git a/browser/css/menubar.css b/browser/css/menubar.css
index 053875d0ec42..275e427725da 100644
--- a/browser/css/menubar.css
+++ b/browser/css/menubar.css
@@ -47,7 +47,7 @@
flex-direction: row;
flex-wrap: wrap;
flex: 1 1 auto;
- gap: 4px;
+ gap: var(--spacing-s);
position: relative;
}
@@ -250,7 +250,7 @@ nav.hasnotebookbar [id^='save'].saved::after {
}
.lo-menu > li > a, .lo-menu > li > a.has-submenu {
- padding: 8px;
+ padding: var(--spacing-m);
z-index: 400;
border: 1px solid transparent;
}
diff --git a/browser/css/notebookbar.css b/browser/css/notebookbar.css
index a0316562f889..c38f7501de6e 100644
--- a/browser/css/notebookbar.css
+++ b/browser/css/notebookbar.css
@@ -205,7 +205,7 @@ html[data-theme='dark'] .savemodified.unotoolbutton:not(.notebookbar) .unobutton
.hasnotebookbar .notebookbar-shortcuts-bar #Menubar > li > a {
cursor: pointer;
border: none;
- padding: 4px;
+ padding: var(--spacing-s);
}
.hasnotebookbar #shortcuts-menubar-icon {
@@ -256,7 +256,7 @@ html[data-theme='dark'] .savemodified.unotoolbutton:not(.notebookbar) .unobutton
width: max-content;
display: grid;
grid-auto-flow: row;
- grid-gap: 4px;
+ grid-gap: var(--spacing-s);
}
.notebookbar.ui-separator.vertical {
@@ -270,7 +270,7 @@ html[data-theme='dark'] .savemodified.unotoolbutton:not(.notebookbar) .unobutton
.horizontal.notebookbar {
display: grid;
grid-auto-flow: column;
- grid-gap: 4px;
+ grid-gap: var(--spacing-s);
align-items: center;
justify-items: center;
width: max-content;
@@ -392,7 +392,7 @@ label.notebookbar.ui-checkbox-label {
#table-HomeTab .unospan-uptoolbar img, #table-HomeTab .unospan-downtoolbar img {
width: 18px !important;
height: 18px !important;
- padding: 4px;
+ padding: var(--spacing-s);
}
.unotoolbutton.notebookbar.disabled:not(.unospan-shortcutstoolbox),
diff --git a/browser/css/spreadsheet.css b/browser/css/spreadsheet.css
index a40ff38b9bbe..eabcfe3d3dd3 100644
--- a/browser/css/spreadsheet.css
+++ b/browser/css/spreadsheet.css
@@ -332,7 +332,7 @@
display: grid;
grid-template-columns: 120px auto;
align-items: center;
- padding: 4px;
+ padding: var(--spacing-s);
background-color: var(--color-main-background);
border-top: 1px solid var(--color-border);
}
diff --git a/browser/css/toolbar.css b/browser/css/toolbar.css
index b08904732c2d..fc35b9ebee83 100644
--- a/browser/css/toolbar.css
+++ b/browser/css/toolbar.css
@@ -30,7 +30,7 @@
.margin-item {
display: flex;
align-items: center;
- padding: 8px;
+ padding: var(--spacing-m);
cursor: pointer;
border-radius: 3px;
border: 1px solid transparent;
@@ -74,7 +74,7 @@
.custom-margins-link {
justify-content: center;
- padding: 4px;
+ padding: var(--spacing-s);
font-size: var(--default-font-size);
}
@@ -134,7 +134,7 @@
border: 1px solid var(--color-toolbar-border);
align-items: center;
border-radius: 4px;
- padding: 4px;
+ padding: var(--spacing-s);
box-shadow: 0 2px 6px 2px rgba(60, 64, 67, .15);
}
@@ -512,7 +512,7 @@ button.leaflet-control-search-next
border-radius: var(--border-radius);
box-sizing: border-box;
position: relative;
- padding: 2px;
+ padding: var(--spacing-xs);
overflow: auto; /* child margins otherwise don't expand *this* element (parent) */
}
@@ -1387,7 +1387,7 @@ button.leaflet-control-search-next
.inserttable-grid {
box-sizing: border-box;
position: relative;
- padding: 2px;
+ padding: var(--spacing-xs);
display: block;
}
@@ -1399,7 +1399,7 @@ button.leaflet-control-search-next
.inserttable-grid .col {
height: 100%;
float: left;
- padding: 2px;
+ padding: var(--spacing-xs);
width: 20px;
border: 1px;
border-style: solid;
@@ -1417,7 +1417,7 @@ button.leaflet-control-search-next
.insertshape-grid {
box-sizing: border-box;
position: static;
- padding: 2px;
+ padding: var(--spacing-xs);
display: block;
min-width: 350px;
width: 100%;
@@ -1445,7 +1445,7 @@ button.leaflet-control-search-next
.insertshape-grid .col {
height: 30px;
- padding: 2px;
+ padding: var(--spacing-xs);
width: 30px;
border: 1px solid transparent;
}
@@ -1561,7 +1561,7 @@ menu-entry-with-icon.padding-left + menu-entry-icon.width */
#followingChipBackground,
#userListSummaryBackground {
border-radius: var(--btn-img-size); /* We expect the height to be --btn-img-size, give a bit for a border. To fully round the corners, this needs to be at least 50% of the height so --btn-img-size should do */
- padding: 2px; /* This will become the grey border around the inner elements */
+ padding: var(--spacing-xs); /* This will become the grey border around the inner elements */
display: none;
}
@@ -1681,7 +1681,7 @@ menu-entry-with-icon.padding-left + menu-entry-icon.width */
}
#follow-editor {
- padding: 8px;
+ padding: var(--spacing-m);
display: flex;
align-items: center;
}
@@ -1765,7 +1765,7 @@ menu-entry-with-icon.padding-left + menu-entry-icon.width */
display: flex;
justify-content: center;
align-items: center;
- padding: 8px;
+ padding: var(--spacing-m);
cursor: pointer;
border-radius: 3px;
border: 1px solid transparent;