diff --git a/css/theme/source/camptocamp.scss b/css/theme/source/camptocamp.scss new file mode 100644 index 00000000000..8c3911b10f2 --- /dev/null +++ b/css/theme/source/camptocamp.scss @@ -0,0 +1,95 @@ +/** + * Camptocamp theme for reveal.js. + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + +// Include theme-specific fonts +@import url(./fonts/inter/inter.css); + +$camptocampOrangeColor: #ff680a; +$camptocampGreyColor: #7a7f82; + +// Override theme settings (see ../template/settings.scss) +$backgroundColor: #ffffff; + +$mainColor: $camptocampGreyColor; +$headingColor: $camptocampOrangeColor; + +$mainFontSize: 42px; +$mainFont: 'Inter', Helvetica, sans-serif; +$headingFont: 'Inter', Helvetica, sans-serif; +$headingTextShadow: none; +$headingLetterSpacing: normal; +$headingTextTransform: uppercase; +$headingFontWeight: 600; +$linkColor: $camptocampOrangeColor; +$linkColorHover: lighten($linkColor, 15%); +$selectionBackgroundColor: lighten($linkColor, 25%); + +$heading1Size: 2.5em; +$heading2Size: 1.6em; +$heading3Size: 1.3em; +$heading4Size: 1.0em; + +.reveal-viewport { + .slide-background.title { + background: #000000; + } + + #logo-title { + content: url(../img/logo-title.svg); + position: fixed; + top: 2%; + left: 2%; + height: 15%; + z-index: 1; + } + + #logo-header-left { + content: url(../img/logo-header-left.svg); + position: fixed; + top: 2%; + left: 2%; + height: 5%; + z-index: 1; + } + + #logo-header-right { + content: url(../img/logo-header-right.svg); + position: fixed; + top: 2%; + right: 2%; + height: 5%; + z-index: 1; + } + + &:not(.title), + &.overview { + #logo-title { + display: none; + } + } + + &.title, + &.overview { + #logo-header-left, + #logo-header-right { + display: none; + } + } + + section.title ul:has(>li>.author) { + text-align: center; + margin: 0; + } +} + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/dist/img/logo-header-left.svg b/dist/img/logo-header-left.svg new file mode 100644 index 00000000000..4ff3e66197b --- /dev/null +++ b/dist/img/logo-header-left.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + diff --git a/dist/img/logo-header-right.svg b/dist/img/logo-header-right.svg new file mode 100644 index 00000000000..2e8392345d7 --- /dev/null +++ b/dist/img/logo-header-right.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + diff --git a/dist/img/logo-title.svg b/dist/img/logo-title.svg new file mode 100644 index 00000000000..80b53a2f843 --- /dev/null +++ b/dist/img/logo-title.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/theme/camptocamp.css b/dist/theme/camptocamp.css new file mode 100644 index 00000000000..9fddcce5c55 --- /dev/null +++ b/dist/theme/camptocamp.css @@ -0,0 +1,393 @@ +/** + * Camptocamp theme for reveal.js. + */ +@import url(./fonts/inter/inter.css); +.reveal-viewport .slide-background.title { + background: #000000; +} +.reveal-viewport #logo-title { + content: url(../img/logo-title.svg); + position: fixed; + top: 2%; + left: 2%; + height: 15%; + z-index: 1; +} +.reveal-viewport #logo-header-left { + content: url(../img/logo-header-left.svg); + position: fixed; + top: 2%; + left: 2%; + height: 5%; + z-index: 1; +} +.reveal-viewport #logo-header-right { + content: url(../img/logo-header-right.svg); + position: fixed; + top: 2%; + right: 2%; + height: 5%; + z-index: 1; +} +.reveal-viewport:not(.title) #logo-title, .reveal-viewport.overview #logo-title { + display: none; +} +.reveal-viewport.title #logo-header-left, +.reveal-viewport.title #logo-header-right, .reveal-viewport.overview #logo-header-left, +.reveal-viewport.overview #logo-header-right { + display: none; +} +.reveal-viewport section.title ul:has(> li > .author) { + text-align: center; + margin: 0; +} + +/********************************************* + * GLOBAL STYLES + *********************************************/ +:root { + --r-background-color: #ffffff; + --r-main-font: Inter, Helvetica, sans-serif; + --r-main-font-size: 42px; + --r-main-color: #7a7f82; + --r-block-margin: 20px; + --r-heading-margin: 0 0 20px 0; + --r-heading-font: Inter, Helvetica, sans-serif; + --r-heading-color: #ff680a; + --r-heading-line-height: 1.2; + --r-heading-letter-spacing: normal; + --r-heading-text-transform: uppercase; + --r-heading-text-shadow: none; + --r-heading-font-weight: 600; + --r-heading1-text-shadow: none; + --r-heading1-size: 2.5em; + --r-heading2-size: 1.6em; + --r-heading3-size: 1.3em; + --r-heading4-size: 1em; + --r-code-font: monospace; + --r-link-color: #ff680a; + --r-link-color-dark: #bd4800; + --r-link-color-hover: #ff9757; + --r-selection-background-color: #ffb78a; + --r-selection-color: #fff; + --r-overlay-element-bg-color: 240, 240, 240; + --r-overlay-element-fg-color: 0, 0, 0; +} + +.reveal-viewport { + background: #ffffff; + background-color: var(--r-background-color); +} + +.reveal { + font-family: var(--r-main-font); + font-size: var(--r-main-font-size); + font-weight: normal; + color: var(--r-main-color); +} + +.reveal ::selection { + color: var(--r-selection-color); + background: var(--r-selection-background-color); + text-shadow: none; +} + +.reveal ::-moz-selection { + color: var(--r-selection-color); + background: var(--r-selection-background-color); + text-shadow: none; +} + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; +} + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: var(--r-heading-margin); + color: var(--r-heading-color); + font-family: var(--r-heading-font); + font-weight: var(--r-heading-font-weight); + line-height: var(--r-heading-line-height); + letter-spacing: var(--r-heading-letter-spacing); + text-transform: var(--r-heading-text-transform); + text-shadow: var(--r-heading-text-shadow); + word-wrap: break-word; +} + +.reveal h1 { + font-size: var(--r-heading1-size); +} + +.reveal h2 { + font-size: var(--r-heading2-size); +} + +.reveal h3 { + font-size: var(--r-heading3-size); +} + +.reveal h4 { + font-size: var(--r-heading4-size); +} + +.reveal h1 { + text-shadow: var(--r-heading1-text-shadow); +} + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: var(--r-block-margin) 0; + line-height: 1.3; +} + +/* Remove trailing margins after titles */ +.reveal h1:last-child, +.reveal h2:last-child, +.reveal h3:last-child, +.reveal h4:last-child, +.reveal h5:last-child, +.reveal h6:last-child { + margin-bottom: 0; +} + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; +} + +.reveal strong, +.reveal b { + font-weight: bold; +} + +.reveal em { + font-style: italic; +} + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; +} + +.reveal ol { + list-style-type: decimal; +} + +.reveal ul { + list-style-type: disc; +} + +.reveal ul ul { + list-style-type: square; +} + +.reveal ul ul ul { + list-style-type: circle; +} + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; +} + +.reveal dt { + font-weight: bold; +} + +.reveal dd { + margin-left: 40px; +} + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: var(--r-block-margin) auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); +} + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; +} + +.reveal q { + font-style: italic; +} + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: var(--r-block-margin) auto; + text-align: left; + font-size: 0.55em; + font-family: var(--r-code-font); + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); +} + +.reveal code { + font-family: var(--r-code-font); + text-transform: none; + tab-size: 2; +} + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; +} + +.reveal .code-wrapper { + white-space: normal; +} + +.reveal .code-wrapper code { + white-space: pre; +} + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; +} + +.reveal table th { + font-weight: bold; +} + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; +} + +.reveal table th[align=center], +.reveal table td[align=center] { + text-align: center; +} + +.reveal table th[align=right], +.reveal table td[align=right] { + text-align: right; +} + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; +} + +.reveal sup { + vertical-align: super; + font-size: smaller; +} + +.reveal sub { + vertical-align: sub; + font-size: smaller; +} + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; +} + +.reveal small * { + vertical-align: top; +} + +.reveal img { + margin: var(--r-block-margin) 0; +} + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: var(--r-link-color); + text-decoration: none; + transition: color 0.15s ease; +} + +.reveal a:hover { + color: var(--r-link-color-hover); + text-shadow: none; + border: none; +} + +.reveal .roll span:after { + color: #fff; + background: var(--r-link-color-dark); +} + +/********************************************* + * Frame helper + *********************************************/ +.reveal .r-frame { + border: 4px solid var(--r-main-color); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); +} + +.reveal a .r-frame { + transition: all 0.15s linear; +} + +.reveal a:hover .r-frame { + border-color: var(--r-link-color); + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); +} + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: var(--r-link-color); +} + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: var(--r-link-color); +} + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: var(--r-background-color); + } +} \ No newline at end of file diff --git a/dist/theme/camptocamp.css.map b/dist/theme/camptocamp.css.map new file mode 100644 index 00000000000..cd83533ac5c --- /dev/null +++ b/dist/theme/camptocamp.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../css/theme/source/camptocamp.scss","../../css/theme/template/theme.scss","../../css/theme/template/exposer.scss","../../css/theme/template/settings.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAYQ;AA4BP;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAKA;EACC;;AAMD;AAAA;AAAA;EAEC;;;AChFH;AAAA;AAAA;ACAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADlBF;EEmCC,YHzBiB;ECRjB;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;;;AAGD;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAEZ;EACC;;;AAID;AAAA;AAAA;AAIA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;;;AAGD;AACA;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;EAGC;EAEA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;;AAEA;AAAA;EAEC;;;AAGF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EAEA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;AAAA;EAEC;;;AAGD;AAAA;EAEC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAID;AAAA;AAAA;AAIA;EACC;EACA;EACA;;;AAEA;EACC;EACA;EACA;;;AAGF;EACC;EAEC;;;AAKF;AAAA;AAAA;AAIA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAID;AAAA;AAAA;AAIA;EACC;;;AAID;AAAA;AAAA;AAIA;EACC;EACA;;;AAGD;AAAA;AAAA;AAGC;EACG;IACI","file":"camptocamp.css"} \ No newline at end of file diff --git a/dist/theme/fonts/inter/Inter-VariableFont_slnt,wght.ttf b/dist/theme/fonts/inter/Inter-VariableFont_slnt,wght.ttf new file mode 100644 index 00000000000..ec3164efa8f Binary files /dev/null and b/dist/theme/fonts/inter/Inter-VariableFont_slnt,wght.ttf differ diff --git a/dist/theme/fonts/inter/inter.css b/dist/theme/fonts/inter/inter.css new file mode 100644 index 00000000000..0624abdcc7b --- /dev/null +++ b/dist/theme/fonts/inter/inter.css @@ -0,0 +1,4 @@ +@font-face { + font-family: 'Inter'; + src: url('./Inter-VariableFont_slnt,wght.ttf') format('truetype'); +}