Override CSS styling of screens
In the screen settings, you may paste CSS styles to override the default stylesheets.
CSS Reset
We ensure consistent browser styling by using the following CSS reset:
normalize.css
v8 - MIT License - github.com/necolas/normalize.css
Default stylesheet
- Day / Current View
- Week View
/* General styles */
html {
color-scheme: dark; /* dark browser & scrollbar mode */
}
body {
font-family: system-ui, sans-serif;
font-weight: normal;
background: #333333; /* Defined in screen settings */
color: #ffffff; /* Defined in screen settings */
font-size: 1.5em;
line-height: 1.4;
}
img, svg {
vertical-align: middle;
}
/* Header: Logo or Text */
header {
display: flex;
align-items: stretch;
position: sticky;
top: 0;
background: #333333; /* Defined in screen settings */
padding: 1em 1.5em;
}
.header-date {
width: 25%;
font-size: 0.75em;
opacity: 0.6;
}
.header-logo {
width: 50%;
font-weight: bold;
margin: 0;
text-align: center;
white-space: nowrap;
flex-grow: 1;
}
.header-logo h1 {
margin: 0;
}
.header-corner {
width: 25%;
text-align: right;
font-size: 14px;
opacity: 0.6;
line-height: 2;
}
.header-logo-image {
background: transparent no-repeat center center url('url/to/image'); /* automatically links to uploaded image */
background-size: contain;
width: 100%;
height: 70px;
}
/* Wrapper */
main {
margin: 1.5em;
}
/* Column grid layout */
.columns {
columns: 1;
column-gap: 4em;
column-rule: solid 8px rgba(255, 255, 255, 0.1);
}
@media only screen and (orientation : landscape) {
.columns {
columns: 2;
}
}
.row {
display: flex;
align-items: flex-start;
break-inside: avoid;
page-break-after: always;
gap: 1em;
margin: 0 0 1em;
}
/* Resources */
.suite,
.resource,
.staff {
width: 280px;
height: 60px;
display: flex;
align-items: center;
gap: 0.5em;
flex-shrink: 0;
flex-grow: 0;
box-sizing: border-box;
}
.suite,
.resource {
border-left: .3em solid transparent;
padding: 0 0 0 0.5em;
}
.staff-image,
.resource-image {
width: 2em;
height: 2em;
background-size: cover;
background-position: center;
flex-shrink: 0;
}
.resource-image {
border-radius: .2em;
}
.staff-image {
border-radius: 50%;
}
.suite-text,
.staff-text,
.resource-text {
min-width: 0;
}
.suite-text-name,
.staff-text-name,
.resource-text-name {
font-weight: 500;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.suite-text-room-number,
.staff-text-byline,
.resource-text-byline {
font-size: 0.8em;
font-style: italic;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Bookings */
.bookings {
width: 100%;
}
.booking + .booking {
border-top: 4px solid rgba(255, 255, 255, 0.1);
padding-top: .3em;
margin-top: .5em;
}
.booking-time {
display: inline-block;
font-size: 0.8em;
white-space: nowrap;
padding: .05em .4em;
border-radius: .3em;
background: rgba(255, 255, 255, 0.1);
}
/* Projects */
.project {
display: flex;
align-items: center;
}
.project-color {
width: .3em;
height: 1em;
margin-right: 0.5em;
flex-shrink: 0;
}
.project-name {
font-style: italic;
font-size: 0.8em;
}
/* Message box */
footer {
position: sticky;
bottom: 0;
background: #ff0000; /* Defined in screen settings */
z-index: 10;
}
.message {
background: #ff0000; /* Defined in screen settings */
padding: 0.7em 1.5em;
font-size: 0.95em;
line-height: 1;
}
footer p {
margin: 0;
}
/* Error information */
.text-error,
.text-offline,
.warning-icon,
.warning-offline {
display: none;
}
.reload-failed .text-error,
.connection-lost .text-offline {
display: inline;
margin: 0 0 0 .5em;
font-weight: bold;
background: #ff0000;
color: #ffffff;
border-radius: .5em;
padding: .1em .5em;
}
.reload-failed .warning-icon,
.connection-lost .warning-offline {
display: inline;
color: #ff0000;
margin: 0 0 0 .2em;
}
/* General styles */
html {
color-scheme: dark; /* dark browser & scrollbar mode */
}
body {
font-family: system-ui, sans-serif;
font-weight: normal;
background: #333333; /* Defined in screen settings */
color: #ffffff; /* Defined in screen settings */
font-size: 1.5em;
line-height: 1.4;
}
img, svg {
vertical-align: middle;
}
/* Header: Logo or Text */
header {
display: flex;
align-items: stretch;
position: sticky;
top: 0;
background: #333333; /* Defined in screen settings */
padding: 1em 1.5em;
box-sizing: border-box;
height: 120px;
z-index: 10;
}
.header-date {
width: 25%;
font-size: 0.75em;
opacity: 0.6;
}
.header-logo {
width: 50%;
font-weight: bold;
margin: 0;
text-align: center;
white-space: nowrap;
flex-grow: 1;
}
.header-logo h1 {
margin: 0;
}
.header-corner {
width: 25%;
text-align: right;
font-size: 14px;
opacity: 0.6;
line-height: 2;
}
.header-logo-image {
background: transparent no-repeat center center url('url/to/image'); /* automatically links to uploaded image */
background-size: contain;
width: 100%;
height: 70px;
}
/* Wrapper */
main {
margin: 0 1.5em 1.5em;
}
/* Table layout */
table {
width: 100%;
border-spacing: 0;
}
td {
padding: .2em;
vertical-align: top;
}
tr:nth-child(2n + 2) {
background: rgba(255, 255, 255, 0.1);
}
.row-time-header {
position: sticky;
top: 120px;
background: #333333; /* Defined in screen settings */
z-index: 10;
}
.cell-time-header {
line-height: 1;
text-align: center;
width: 12%;
padding: .3em .2em;
}
.cell-time-header-weekend {
background: rgba(255, 255, 255, 0.05);
}
.cell-time-header-today {
background: rgba(0, 125, 200, 0.5);
}
.time-header-weekday {
font-weight: bold;
}
.time-header-date {
font-size: 0.8em;
opacity: 0.6;
}
.cell-resource {
height: 3em;
border-left: 0.3em solid transparent;
padding: .2em .4em .2em .6em;
vertical-align: middle;
}
.cell-day {
padding: .2em .4em;
}
.cell-weekend {
background: rgba(255, 255, 255, 0.05);
}
.cell-holiday {
background: rgba(255, 0, 0, 0.4);
}
/* Resources */
.suite,
.resource,
.staff {
break-inside: avoid;
width: 100%;
page-break-after: always;
display: flex;
align-items: center;
gap: 0.5em;
}
.staff-image,
.resource-image {
width: 2em;
height: 2em;
background-size: cover;
background-position: center;
flex-shrink: 0;
}
.resource-image {
border-radius: .2em;
}
.staff-image {
border-radius: 50%;
}
.suite-text {
max-width: 300px;
}
.staff-text,
.resource-text {
max-width: 250px;
}
.suite-text-name,
.staff-text-name,
.resource-text-name {
font-weight: 500;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.suite-text-room-number,
.staff-text-byline,
.resource-text-byline {
font-size: 0.8em;
font-style: italic;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Bookings */
.booking + .booking {
border-top: 4px solid rgba(255, 255, 255, 0.1);
padding-top: .2em;
margin-top: .5em;
}
.booking-time {
display: inline-block;
font-size: 0.8em;
white-space: nowrap;
padding: .05em .4em;
border-radius: .3em;
background: rgba(255, 255, 255, 0.1);
}
/* Projects */
.project {
display: flex;
align-items: center;
}
.project-color {
width: .3em;
height: 1em;
margin-right: 0.5em;
flex-shrink: 0;
}
.project-name {
font-style: italic;
font-size: 0.8em;
opacity: 0.6;
}
/* Message box */
footer {
position: sticky;
bottom: 0;
background: #ff0000; /* Defined in screen settings */
z-index: 10;
}
.message {
background: #ff0000; /* Defined in screen settings */
padding: 0.7em 1.5em;
font-size: 0.95em;
line-height: 1;
}
footer p {
margin: 0;
}
/* Error information */
.text-error,
.text-offline,
.warning-icon,
.warning-offline {
display: none;
}
.reload-failed .text-error,
.connection-lost .text-offline {
display: inline;
margin: 0 0 0 .5em;
font-weight: bold;
background: #ff0000;
color: #ffffff;
border-radius: .5em;
padding: .1em .5em;
}
.reload-failed .warning-icon,
.connection-lost .warning-offline {
display: inline;
color: #ff0000;
margin: 0 0 0 .2em;
}
Your styles
The above default styling, incl. the normalize.css reset styles, are always loaded in the document body. Your custom styles will be inserted after the above stylesheet, allowing you to override any of the defaults.
The use of !important
should not be necessary.
Adjustment of the overall font size is easily done by setting a different body font size, e.g.
body {
font-size: 1.3em;
}
Default DOM / available selectors & classes
The structure of the generated screen view is as follows.
- Day / Current View
- Week View
<html>
<body>
<header>
<div class="header-date"></div>
<div class="header-logo">
<!-- if a logo / image has been set: -->
<div class="header-logo-image"></div>
<!-- otherwise: -->
<h1><!-- Title --></h1>
</div>
<div class="header-corner"></div>
</header>
<main>
<div class="columns">
<!-- for each suite / staff / resource, a row is added -->
<div class="row">
<div class="resource">
<div class="resource-name">
<div class="resource-color" style="background-color: #123456;"></div>
<span><!-- resource name --></span>
</div>
<div class="resource-room-number"></div>
</div>
<div class="resource-bookings">
<!-- each booking as a separate div -->
<div class="booking">
<div class="booking-name"></div>
<div class="project">
<div class="project-color" style="background-color: #123456;"></div>
<div class="project-name"></div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- if a message has been set: -->
<footer>
<div class="message"></div>
</footer>
</body>
</html>
<html>
<body>
<header>
<div class="header-date"></div>
<div class="header-logo">
<!-- if a logo / image has been set: -->
<div class="header-logo-image"></div>
<!-- otherwise: -->
<h1><!-- Title --></h1>
</div>
<div class="header-corner"></div>
</header>
<main>
<table>
<tr class="row-time-header">
<td><!-- empty --></td>
<td class="cell-time-header cell-time-header-today"> <!-- additionally possible class: cell-time-header-weekend -->
<span class="time-header-weekday"></span><br>
<span class="time-header-date"></span>
</td>
<td class="cell-time-header"> <!-- additionally possible class: cell-time-header-weekend -->
<span class="time-header-weekday"></span><br>
<span class="time-header-date"></span>
</td>
<td class="cell-time-header"> <!-- additionally possible class: cell-time-header-weekend -->
<span class="time-header-weekday"></span><br>
<span class="time-header-date"></span>
</td>
<td class="cell-time-header"> <!-- additionally possible class: cell-time-header-weekend -->
<span class="time-header-weekday"></span><br>
<span class="time-header-date"></span>
</td>
<td class="cell-time-header"> <!-- additionally possible class: cell-time-header-weekend -->
<span class="time-header-weekday"></span><br>
<span class="time-header-date"></span>
</td>
<td class="cell-time-header"> <!-- additionally possible class: cell-time-header-weekend -->
<span class="time-header-weekday"></span><br>
<span class="time-header-date"></span>
</td>
<td class="cell-time-header"> <!-- additionally possible class: cell-time-header-weekend -->
<span class="time-header-weekday"></span><br>
<span class="time-header-date"></span>
</td>
</tr>
<!-- for each selected suite -->
<tr class="row-resource">
<td class="cell-resource" style="border-color: #123456">
<div class="suite">
<div class="suite-text">
<div class="suite-text-name"></div>
<div class="suite-text-room-number"></div>
</div>
</div>
</td>
<td class="cell-day cell-today"> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<!-- for each booking: -->
<div class="booking">
<div class="booking-time"></div>
<div class="booking-name"></div>
<div class="project">
<div class="project-color" style="background-color: #123456;"></div>
<div class="project-name"></div>
</div>
</div>
</td>
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
</tr>
<!-- for each selected staff -->
<tr class="row-resource">
<td class="cell-resource">
<div class="staff">
<div class="staff-image" style="background-image: url('/url/to/image');"></div>
<div class="staff-text">
<div class="staff-text-name"></div>
<div class="staff-text-byline"></div>
</div>
</div>
</td>
<td class="cell-day cell-today"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
</tr>
<!-- for each selected resource -->
<tr class="row-resource">
<td class="cell-resource" style="border-color: #123456;">
<div class="resource">
<div class="resource-image" style="background-image: url('/url/to/image');"></div>
<div class="resource-text">
<div class="resource-text-name"></div>
<div class="resource-text-byline"></div>
</div>
</div>
</td>
<td class="cell-day cell-today"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
<td class="cell-day"></td> <!-- additionally possible classes: cell-weekend & cell-holiday -->
</tr>
</table>
</main>
<!-- if a message has been set: -->
<footer>
<div class="message"></div>
</footer>
</body>
</html>