/* tame reveal.js */ section { min-height: 100vh; width: 100vw; padding: 0 !important; } * { line-height: inherit; } /* config */ :root { --primary: #f8f281; --primary-dark: #928c1b; --secondary: #bbd6ec; --secondary-dark: #3f5d75; --secondary-light: #eaf2f9; --margin: 0.1; } /* basic layout */ :root { --square: 100vw; @media screen and (min-aspect-ratio: 1/1) { --square: 50vw; } @media screen and (min-aspect-ratio: 2/1) { --square: 100vh; } } body { font-size: calc(0.035 * var(--square)); .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, white 0%, white var(--square), var(--secondary) var(--square), var(--secondary) var(--square)); @media screen and (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, white 0%, white var(--square), var(--secondary) var(--square), var(--secondary) 100%); } @media screen and (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, white 0%, white var(--square), var(--secondary) var(--square), var(--secondary) 100%); @media screen and (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), white calc((100% - var(--square)) / 2), 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-wide-content { background: white; grid-template-rows: min-content auto; grid-template-columns: var(--square); grid-template-areas: "content" " . "; @media screen and (min-aspect-ratio: 1/1) { grid-template-rows: auto var(--square) auto; grid-template-columns: calc(2 * var(--square)); grid-template-areas: " . " "content" " . "; } @media screen and (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), white calc((100% - 2 * var(--square)) / 2), white calc(100% - (100% - 2 * var(--square)) / 2), var(--secondary) calc(100% - (100% - 2 * var(--square)) / 2), var(--secondary) 100%); } } .layout-content { background: white; grid-area: content; position: relative; &.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: 15vw; height: 15vw; background-image: url(../../images/logo-fachschaft.png); background-repeat: no-repeat; background-size: contain; } } } .layout-preview { grid-area: preview; display: flex; 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 screen and (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 screen and (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: white; } .layout-column-two { grid-area: column2; 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 screen and (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; } 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); } :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: 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 { content: attr(data-category) ' ' attr(data-task); } .layout-content-only h2[data-category=Aufgabe]::after, .layout-wide-content h2[data-category=Aufgabe]::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 screen and (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)); } } img { width: auto; max-width: 100%; } table { 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); text-indent: -.55em; padding-bottom: .8em; &::before { content: '»'; color: var(--secondary-dark); } cite::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); } } // TODOs section>h1, section>h2, section>h3, section>p, section>ul { background: var(--primary) } /* * 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 { z-index: 1; } p a, li a, h2 a, td 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%; } } /* * Code Listings * ============= */ pre.small-text { font-size: 80%; } pre.scroll-one-half { max-height: calc(.5 * var(--square)); overflow: auto !important; }