2023-11-05 15:22:15 +01:00

942 lines
20 KiB
SCSS

/* tame reveal.js */
section {
min-height: 100vh;
width: 100vw;
padding: 0 !important;
}
* {
line-height: inherit;
}
input {
font-size: inherit;
}
/* config */
:root {
--primary: #f8f281;
--primary-dark: #928c1b;
--secondary: #bbd6ec;
--secondary-dark: #3f5d75;
--secondary-light: #eaf2f9;
--margin: 0.1;
&:lang(de) {
--opening-double-quote: '»';
--closing-double-quote: '«';
}
&:lang(en) {
--opening-double-quote: '';
--closing-double-quote: '';
}
}
/* basic layout */
:root {
--square: 100vw;
@media (min-aspect-ratio: 1/1) {
--square: 50vw;
}
@media (min-aspect-ratio: 2/1) {
--square: 100vh;
}
overflow: hidden;
}
body {
font-size: calc(0.035 * var(--square));
article {
position: relative;
}
.layout-content-and-preview,
.layout-content-only,
.layout-preview-only,
.layout-wide-content {
display: grid;
min-height: 100vh;
max-height: 100vh;
min-width: 100vw;
max-width: 100vw;
overflow: auto;
}
.layout-content-and-preview {
grid-template-rows: var(--square) auto;
grid-template-columns: auto;
grid-template-areas:
"content"
"preview";
background: linear-gradient(to bottom,
var(--background, white) 0%,
var(--background, white) var(--square),
var(--secondary) var(--square),
var(--secondary) var(--square));
@media (min-aspect-ratio: 1/1) {
grid-template-rows: auto var(--square) auto;
grid-template-columns: var(--square) auto;
grid-template-areas:
" . preview"
"content preview"
" . preview";
background: linear-gradient(to right, var(--background, white) 0%, var(--background, white) var(--square), var(--secondary) var(--square), var(--secondary) 100%);
}
@media (min-aspect-ratio: 2/1) {
grid-template-rows: var(--square);
grid-template-columns: var(--square) auto;
grid-template-areas:
"content preview";
}
}
.layout-content-only {
grid-template-rows: var(--square) auto;
grid-template-columns: var(--square);
grid-template-areas:
"content"
" . ";
background: linear-gradient(to bottom, var(--background, white) 0%, var(--background, white) var(--square), var(--secondary) var(--square), var(--secondary) 100%);
@media (min-aspect-ratio: 1/1) {
grid-template-rows: auto var(--square) auto;
grid-template-columns: auto var(--square) auto;
grid-template-areas:
". . ."
". content ."
". . .";
background: linear-gradient(to right,
var(--secondary) 0%,
var(--secondary) calc((100% - var(--square)) / 2),
var(--background, white) calc((100% - var(--square)) / 2),
var(--background, white) calc(100% - (100% - var(--square)) / 2),
var(--secondary) calc(100% - (100% - var(--square)) / 2),
var(--secondary) 100%);
}
}
.layout-preview-only {
grid-template-rows: auto;
grid-template-columns: auto;
grid-template-areas: "preview";
background: var(--secondary);
.layout-preview {
img,
img.large,
img[src$="-crop.svg"] {
max-width: calc(1.8 * var(--square));
max-height: calc(.8 * var(--square));
}
img.large
img[src$="-crop.svg"].large {
width: 100%;
}
}
}
.layout-wide-content {
background: var(--background, white);
grid-template-rows: min-content auto;
grid-template-columns: var(--square);
grid-template-areas:
"content"
" . ";
@media (min-aspect-ratio: 1/1) {
grid-template-rows: auto var(--square) auto;
grid-template-columns: calc(2 * var(--square));
grid-template-areas:
" . "
"content"
" . ";
}
@media (min-aspect-ratio: 2/1) {
grid-template-rows: auto var(--square) auto;
grid-template-columns: auto calc(2 * var(--square)) auto;
grid-template-areas:
". . ."
". content ."
". . .";
background: linear-gradient(to right,
var(--secondary) 0%,
var(--secondary) calc((100% - 2 * var(--square)) / 2),
var(--background, white) calc((100% - 2 * var(--square)) / 2),
var(--background, white) calc(100% - (100% - 2 * var(--square)) / 2),
var(--secondary) calc(100% - (100% - 2 * var(--square)) / 2),
var(--secondary) 100%);
}
}
.layout-content {
background: var(--background, white);
grid-area: content;
position: relative;
.chapter-number {
color: lightgray;
}
&.titlepage {
display: flex;
flex-direction: column;
justify-content: flex-end;
padding-bottom: calc(var(--margin) * var(--square) + 0.5 * 3em);
&::before {
content: '';
position: absolute;
top: calc(var(--margin) * var(--square));
right: calc(var(--margin) * var(--square));
width: calc(.3 * var(--square));
height: calc(.3 * var(--square));
background-image: url(../images/logo-fachschaft.jpg);
background-repeat: no-repeat;
background-size: contain;
}
}
}
.layout-preview {
grid-area: preview;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: var(--secondary);
position: relative;
figure {
display: contents;
}
img {
width: auto;
height: auto;
max-width: calc(.9 * var(--square));
max-height: calc(.9 * var(--square));
box-shadow: .2em .2em .5em 0 rgba(0, 0, 0, .3);
object-fit: cover;
margin: calc(.05 * var(--square));
background-color: white;
box-sizing: border-box;
&.thin-padding {
padding: .5em;
}
&.large {
width: 60%;
max-width: 100%;
max-height: 100%;
box-sizing: border-box;
}
&[src$="-crop.svg"] {
padding: calc(var(--margin) * var(--square));
object-fit: contain;
width: calc(0.9 * var(--square));
&.thin-padding {
padding: calc(.35 * var(--margin) * var(--square))
}
}
&[src$="-orig.svg"] {
background: white;
object-fit: contain;
}
}
figcaption {
position: absolute;
background: rgba(0,0,0,.5);
bottom: 0;
width: 100%;
text-align: center;
color: white;
padding: .5em;
box-sizing: border-box;
}
}
.layout-two-columns {
display: grid;
min-height: 100vh;
max-height: 100vh;
min-width: 100vw;
max-width: 100vw;
overflow: auto;
grid-template-rows: auto auto auto 1fr;
grid-template-columns: var(--square);
grid-template-areas:
"title"
"column1"
"column2"
".";
background: var(--secondary);
@media (min-aspect-ratio: 1/1) {
grid-template-rows: auto calc(0.18 * var(--square)) calc(0.82 * var(--square)) auto;
grid-template-columns: var(--square) var(--square);
grid-template-areas:
" . . "
" title title "
"column1 column2"
" . . ";
}
@media (min-aspect-ratio: 2/1) {
grid-template-rows: calc(0.18 * var(--square)) calc(0.82 * var(--square));
grid-template-columns: auto var(--square) var(--square) auto;
grid-template-areas:
". title title ."
". column1 column2 .";
}
.layout-title {
grid-area: title;
background: var(--secondary);
}
.layout-column-one {
grid-area: column1;
background: var(--background, white);
}
.layout-column-two {
grid-area: column2;
background: var(--background, white);
}
}
.layout-two-previews {
display: grid;
min-height: 100vh;
max-height: 100vh;
min-width: 100vw;
max-width: 100vw;
overflow: auto;
grid-template-rows: auto auto;
grid-template-columns: auto;
background: var(--secondary);
@media (min-aspect-ratio: 1/1) {
grid-template-rows: 100vh;
grid-template-columns: 50vw 50vw;
grid-template-areas:
"preview preview";
}
.layout-preview {
grid-area: auto;
}
}
}
/* content layout */
@font-face {
font-family: 'Fira Sans';
src: url('../lib/font/fira-sans/FiraSans-Regular.ttf');
font-weight: 400;
}
@font-face {
font-family: 'Fira Sans';
src: url('../lib/font/fira-sans/FiraSans-Bold.ttf');
font-weight: 700;
}
@font-face {
font-family: 'Fira Code';
src: url('../lib/font/fira-code/FiraCode-Regular.otf');
font-weight: 400;
}
@font-face {
font-family: 'Fira Code';
src: url('../lib/font/fira-code/FiraCode-Bold.otf');
font-weight: 700;
}
@font-face {
font-family: 'EB Garamond';
src: url('../lib/font/eb-garamond/EBGaramond-Regular.ttf');
font-weight: 400;
}
body {
font-family: 'Fira Sans';
margin: 0;
line-height: 1.2em;
}
.layout-content-and-preview,
.layout-content-only,
.layout-wide-content {
.layout-content {
overflow: visible;
padding: calc(var(--margin) * var(--square));
*:first-child {
margin-top: 0;
}
.layout-title {
padding: calc(0.3 * var(--margin) * var(--square)) 0;
line-height: 1.15em;
h2 {
margin: 0;
line-height: 1.15em;
}
}
ul, ol {
list-style-type: none;
padding-left: 0;
position: relative;
li::before {
content: '';
color: var(--secondary);
position: absolute;
left: calc(-0.33 * var(--margin) * var(--square));
}
ul, ol {
margin-left: calc(0.33 * var(--margin) * var(--square));
}
}
ol {
counter-reset: ol-counter;
li::before {
counter-increment: ol-counter;
content: counter(ol-counter) '.';
color: var(--secondary-dark);
left: calc(-0.36 * var(--margin) * var(--square));
}
}
pre {
margin-left: calc(-1 * var(--margin) * var(--square));
padding-left: calc(var(--margin) * var(--square));
line-height: 1.2em;
position: relative;
overflow: hidden;
&::before {
content: attr(data-sourcefile);
position: absolute;
text-align: right;
color: var(--secondary);
top: .85em;
width: 100%;
left: calc(-1 * var(--square) + 1.2 * var(--margin) * var(--square));
transform-origin: top right;
transform: rotate(-90deg);
}
code {
padding: .3em 0;
}
}
code {
font-size: 0.9em;
font-family: 'Fira Code';
}
}
}
.layout-two-columns {
.layout-title {
padding: calc(0.3 * var(--margin) * var(--square)) calc(var(--margin) * var(--square));
h2 {
line-height: 1.15em;
}
}
.layout-column-one,
.layout-column-two {
padding: calc(var(--margin) * var(--square));
padding-top: calc(var(--margin) * var(--square));
*:first-child {
margin-top: 0;
}
ul {
list-style-type: none;
padding-left: 0;
position: relative;
li::before {
content: '';
color: var(--secondary);
position: absolute;
left: calc(-0.33 * var(--margin) * var(--square));
}
ul {
margin-left: calc(0.33 * var(--margin) * var(--square));
}
}
pre {
margin: 0 calc(-1 * var(--margin) * var(--square));
line-height: 1.2em;
position: relative;
overflow: hidden;
&::before {
content: attr(data-sourcefile);
position: absolute;
text-align: right;
color: var(--secondary);
top: .85em;
width: 100%;
left: calc(-1 * var(--square) + 1.2 * var(--margin) * var(--square));
transform-origin: top right;
transform: rotate(-90deg);
}
code {
padding: .3em calc(var(--margin) * var(--square));
}
}
code {
font-size: 0.9em;
font-family: 'Fira Code';
}
}
}
.layout.layout-chapter-heading {
height: 100vh;
width: 100vw;
position: relative;
.layout-title {
position: absolute;
left: 2vw;
width: calc(100vw - 4vw);
text-align: center;
bottom: calc(38.2% - .5em);
}
}
h1 {
font-size: 300%;
max-width: var(--square);
}
.titlepage > h1 p {
margin-bottom: 0;
}
:not(.titlepage) > h1 {
position: absolute;
bottom: 0;
left: 0;
line-height: 115%;
vertical-align: bottom;
padding: 0 calc(var(--margin) * var(--square)) .5em;
}
.titlepage > h1 {
line-height: 100%;
margin-bottom: 3rem;
}
h2 {
line-height: 1.2;
}
p[data-category]::before,
h2[data-category]::before,
h3[data-category]::before {
content: attr(data-category);
font-size: .7em;
font-variant: small-caps;
text-transform: lowercase;
background: black;
color: var(--background, white);
padding: .1em .5em;
display: inline-block;
vertical-align: baseline;
letter-spacing: .1em;
position: relative;
margin-left: calc(-1 * var(--margin) * var(--square));
padding-left: calc(var(--margin) * var(--square));
margin-right: .5em;
}
h2[data-category=Aufgabe]::before,
h2[data-category=Task]::before {
content: attr(data-category) ' ' attr(data-task);
}
.layout-content-only h2[data-category=Aufgabe]::after,
.layout-content-only h2[data-category=Task]::after,
.layout-wide-content h2[data-category=Aufgabe]::after,
.layout-wide-content h2[data-category=Task]::after {
content: attr(data-task);
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
text-indent: calc(-.16 * var(--square));
font-size: calc(1.2 * var(--square));
overflow: hidden;
text-align: right;
white-space: nowrap;
direction: rtl;
word-spacing: 1000%;
opacity: .2;
@media (min-aspect-ratio: 1/1) and (max-aspect-ratio: 2/1) {
--versatz: calc((100vh - var(--square)) / 2);
top: var(--versatz);
bottom: calc(-1 * var(--versatz));
}
}
.layout-content-only h2.task-without-number::after,
.layout-content-only h2.task-without-number::after,
.layout-wide-content h2.task-without-number::after,
.layout-wide-content h2.task-without-number::after {
display: none;
}
img {
width: auto;
max-width: 100%;
}
table {
font-size: inherit;
width: calc(var(--square) - var(--margin) * var(--square));
margin-left: calc(-1 * var(--margin) * var(--square));
border-spacing: 0;
tr:nth-child(2n-1) {
background: var(--secondary);
}
tr>*:first-child {
padding-left: calc(var(--margin) * var(--square));
}
th, td {
text-align: left;
vertical-align: top;
padding: .3em;
padding-left: 0;
}
th:last-child, td:last-child {
padding-right: .1em;
}
}
.layout-content-only table {
border-spacing: 0;
margin-left: 0;
width: 100%;
box-sizing: border-box;
tr>*:first-child {
padding-left: .3rem;
padding-right: .3rem;
}
}
.box /*, blockquote*/ {
margin-left: calc(-1 * var(--margin) * var(--square));
padding: .8em .1em .1em calc(var(--margin) * var(--square));
}
.box.warning {
background: var(--primary);
}
blockquote {
color: var(--secondary-dark);
position: relative;
padding-bottom: 1.8em;
margin-left: 0;
margin-right: 0;
p:first-of-type { /* probably bungle, but works for one <p> inside <blockquote> */
display: contents;
&::after {
content: '\200a' var(--closing-double-quote);
}
}
&::before {
content: var(--opening-double-quote) '\200a';
color: var(--secondary-dark);
position: absolute;
display: inline-block;
right: 100%;
}
cite {
position: absolute;
bottom: 0.6em;
left: calc(0.4 * var(--square));
width: calc(0.4 * var(--square));
&::before {
content: ''
}
}
}
.layout-content {
figure {
margin: 0 1em 1em 0;
}
}
.bubble {
display: inline-block;
position: absolute;
margin-top: -2em;
margin-left: -3.8em;
width: 6em;
border: .1em solid var(--primary-dark);
background: var(--primary);
text-align: center;
border-radius: 1em;
&::before {
content: '';
width: 0;
height: 0;
position: absolute;
border: .5em solid transparent;
border-top-color: var(--primary-dark);
bottom: -1em;
left: calc(50% - .5em);
}
&::after {
content: '';
width: 0;
height: 0;
position: absolute;
border: .5em solid transparent;
border-top-color: var(--primary);
bottom: -0.87em;
left: calc(50% - .5em);
}
}
section>h1, section>h2, section>h3, section>p, section>ul {
background: transparent
}
/*
* Keyboard Shortcut Styling
* =========================
*/
kbd {
font-family: "Fira Code", monospace;
font-size: 65%;
display: inline-block;
border: 1px solid dimgray;
border-width: 1px 5px 5px 1px;
padding: .2rem .5rem;
}
/*
* Emoji Fonts
* ============
*/
@font-face {
font-family: 'Twemoji';
src: url('../lib/font/twemoji/TwitterColorEmoji-SVGinOT.ttf');
}
.emoji {
font-family: "Twemoji";
}
/*
* Links
* ============
*/
p, li, h2, td, figcaption, div {
a {
&:link,
&:hover,
&:active,
&:visited {
text-decoration: none;
color: var(--secondary-dark);
font-weight: bold;
position: relative;
z-index: 1;
&::before {
content: '';
position: absolute;
width: 102%;
height: 0;
background-color: var(--secondary-light);
z-index: -1;
bottom: -5%;
left: -1%;
transition: .2s height ease;
}
}
&:hover::before {
height: 110%;
}
}
}
figcaption a:not(.dark-font) {
&:link,
&:hover,
&:active,
&:visited {
color: var(--background, white);
&::before {
background-color: var(--secondary-dark);
}
}
}
/*
* Code Listings
* =============
*/
pre.small-text {
font-size: 80%;
}
pre.scroll-one-half {
max-height: calc(.5 * var(--square));
overflow: auto !important;
}
/*
* Fragments
* =========
*/
.fragment {
opacity: 0;
transition: .3s opacity ease-in-out;
}
.fragment.visible {
opacity: 1;
}
/*
* Topic List
* ==========
*/
.topic-list {
box-shadow: 0 0px 50px rgba(0, 0, 0, 0.3);
z-index: 500;
.topic-list-search {
display: block;
width: 100%;
border: none;
padding: .5rem;
margin-bottom: 1rem;
border-bottom: 1px solid var(--secondary);
text-align: center;
}
.topic-link {
font-weight: normal;
&.active-topic-link {
font-weight: bold;
}
&.not-matching-search-terms {
opacity: .2;
}
}
}
/*
* Help Menu
* ==========
*/
#help-menu-wrapper {
display: none;
max-width: 90vw;
width: 800px;
height: 80vh;
box-sizing: border-box;
padding: 2rem;
position: fixed;
left: 50%;
top: 50%;
transform: translateX(-50%) translateY(-50%);
z-index: 500;
background: var(--background, white);
box-shadow: 0 0px 50px rgba(0, 0, 0, 0.3);
opacity: 0;
transition: .2s opacity ease-in-out;
}
#help-menu-checkbox:checked ~ #help-menu-wrapper {
opacity: 1;
display: block;
}
#help-menu-checkbox {
position: fixed;
right: 150vw;
}
#help-menu-toggle {
position: fixed;
right: 1rem;
bottom: 1rem;
width: 3rem;
height: 3rem;
color: white;
background-color: rgba(0, 0, 0, .3);
transition: .1s background-color ease-in-out;
display: flex;
justify-content: center;
align-items: center;
&:hover {
background-color: rgba(0, 0, 0, .5);
}
}
/*
* Page Number
* ==============
*/
#page-number-container {
position: fixed;
right: 1rem;
top: 1rem;
width: 3rem;
height: 3rem;
color: white;
background-color: rgba(0, 0, 0, .3);
transition: .1s background-color ease-in-out;
display: flex;
justify-content: center;
align-items: center;
font-size: .7em;
}
/*
* Extra Content
* ==============
*/
.extra-content {
--background: var(--secondary-light)
}
/*
* Print
* =============
*/
@media print {
.fragment {
opacity: initial;
}
#page-number-container,
#help-menu-toggle {
display: none;
}
}