diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss deleted file mode 100644 index 678249df..00000000 --- a/assets/scss/_styles_project.scss +++ /dev/null @@ -1,653 +0,0 @@ -@import "./_variables_project.scss"; - -body { - line-height: 1.7em; -} - -.award { - width: 250px; - transform: rotate(0deg) translate(0,-50pt); - align: left; -} - -.td-navbar .navbar-brand svg { - transform: scale(1.5); - margin-right: 1.5rem; -} - -.td-navbar .navbar-brand .text-uppercase { - text-transform: none !important; - // font-weight: normal !important; -} - -.navbar-brand > .text-uppercase { - font-weight: 700; -} - -.td-content { - max-width: 60rem; -} - -.btn { - border-radius: 0.2rem; - - &-lg { - border-radius: 0.4rem; - } - - &-sm { - border-radius: 0.2rem; - } -} - -.btn-outline-light:hover { - background-color: #f1f1f6; - border-color: #f1f1f6; -} - -.youtube-video-wrapper { - display: block; - position: relative; - padding-bottom: 56.25%; - height: 0; - overflow: hidden; - width: 100%; - background: #000; - margin: 3rem 0; - - iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 100; - background: transparent; - } - - img { - object-fit: cover; - display: block; - left: 0; - bottom: 0; - margin: 0 auto; - max-width: 100%; - width: 100%; - position: absolute; - right: 0; - top: 0; - border: none; - height: auto; - cursor: pointer; - -webkit-transition: 0.4s all; - -moz-transition: 0.4s all; - transition: 0.4s all; - } - - &:hover img { - -webkit-filter: brightness(75%); - } - - .play { - height: 72px; - width: 72px; - left: 50%; - top: 50%; - margin-left: -36px; - margin-top: -36px; - position: absolute; - background: url("../images/play.png") no-repeat; - z-index: 1; - cursor: pointer; - } - - .comment { - left: 50%; - top: 50%; - transform: translate(-50%, 50px); - position: absolute; - z-index: 1; - cursor: pointer; - color: white; - } -} - -.ideal-image-slider { - max-width: 60rem; - margin: 2rem 0; -} - -.slider.small { - max-width: 30rem; -} - -.print-only .noprint, -.noprint .print-only { - display: none; -} - -pre { - max-width: 100%; -} - - -@media print { - html, - body { - font-size: 10pt; - min-width: 0 !important; - } - - .noprint { - display: none; - } - - .td-main main { - max-width: 100% !important; - flex: 1 1 0; - } - - .td-content { - max-width: 100%; - // columns: 2; - column-gap: 4rem; - font-size: 1rem; - - p, ul, ol, .alert { - line-height: 1.7em; - font-size: 1em; - } - - > h1, - > h2, - > h3, - > p, - > ul, - > ol, - > .alert, - > .highlight, - > .lead, - > dl dd, - > pre, - .footnotes, - > blockquote { - // column-span: all; - max-width: 100%; - } - - li { - margin-bottom: 0 !important; - } - - h2 { - font-size: 1.6em; - column-span: all; - // page-break-before: always; - } - h3 { - font-size: 1.3em; - } - - .print-figures { - counter-reset: step-figure; - margin: 1rem 0; - display: grid; - grid-template-columns: 1fr 1fr; - gap: 0.5rem; - } - - figure, .card { - // display: block; - position: relative; - // width: calc(50% - 0.25rem - 2px); - vertical-align: top; - margin: 0; - padding: 0 !important; - border: 1px solid black; - border-radius: 2mm; - overflow: hidden; - - break-inside: avoid; - counter-increment: step-figure; - figcaption, .card-body { - position: relative; - margin: 0; - padding: 0.2rem 0.5rem !important; - border-top: inherit; - } - } - - // .card { - // padding: 0 !important; - // border: 1px solid black; - // border-radius: 2mm; - // break-inside: avoid; - // overflow: hidden; - // - // .card-body { - // - // } - // } - - .section-index, - // "Last changed" row - > .text-muted:last-child { - display: none; - } - - // Uncomment this to print without figures and images - // .card, .print-figures, img { - // display: none; - // } - - .alert { - border-width: 2px; - break-inside: avoid; - } - - > table { - margin: 1rem auto; - break-inside: avoid; - - td, thead th { - border: 1px solid black; - padding: 0.25rem 0.75rem; - } - } - } -} - -@media screen { - .print-only { - display: none; - } -} - -#td-cover-block-0 { - background-position: center; -} - -.container { - figure { - img { - max-width: 100%; - } - } -} - -.homepage-container { - font-size: 13pt; -} - -.lead { - font-weight: 500; -} - -.donations { - background: white; - color: #212730; - border: 1px solid #ddd; - border-radius: 4px; - padding: 1rem 2rem; - display: inline-block; - margin: 1rem auto; -} - -.accordion .card-header { - cursor: pointer; - transition: background 0.1s; - - &:hover { - background-color: #fff; - } -} - -.alert.alert-info, -.alert.alert-warning, -.alert.alert-success { - border: 0; - border-radius: 4px; - font-size: 1rem; - - .alert-heading { - font-size: 1.2rem; - } - - @media print { - border-width: 2px; - border-style: solid; - } -} - -.alert.alert-info { - background: #e1f5fe; - border-color: #1e88e5; - - .alert-heading { - color: #1e88e5; - } -} - -.alert.alert-warning { - background: #ffe7e4; - border-color: #ed6a5a; - - .alert-heading { - color: #ed6a5a; - } -} - -.alert.alert-success { - background: #ccefc6; - border-color: #199f67; - - .alert-heading { - color: #199f67; - } -} - - -.alert > ul:last-child, -.alert > p:last-child { - margin-bottom: 0; -} - -.nav-item.dropdown .dropdown-menu { - margin-top: -1px; -} - -.nav-item.dropdown:hover .dropdown-menu { - display: block; -} - -.dropdown-item { - padding-left: 1rem; - - &:active, - &.active { - background: none; - font-weight: bold; - } -} - -.td-content, -.content { - blockquote { - padding: 0.5rem 1.5rem; - margin-left: 1rem; - border-left: 4px solid #ddd; - color: #777; - } -} - -.td-sidebar-nav { - padding: 1rem; - font-family: "Open Sans"; - - ul { - list-style: none; - padding: 0; - margin: 0; - - ul ul { - padding-left: 1.5rem; - } - - li { - margin-bottom: 2px; - } - } - - & > ul > li { - margin-bottom: 1rem; - - & > a { - font-weight: 700; - text-transform: uppercase; - } - } - - a { - display: block; - color: inherit; - border-radius: 3px; - padding: 0.25rem 0.75rem; - - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - - &:hover { - color: inherit; - background: #f6f6f6; - } - - &.current-page { - font-weight: 700; - color: $link-color; - } - } -} - -@media (min-width: 768px) { - - .td-page-meta { - top: 4rem; - position: sticky; - } - .td-sidebar-nav { - // max-height: calc(100vh - 64px); - max-height: none; - overflow: initial; - } - - .td-sidebar__inner { - height: auto; - min-height: calc(100vh - 128px); - } - - .td-docs .td-main { - display: flex; - - .td-sidebar { - max-width: 20rem; - min-width: 15rem; - flex: 1 1 0; - margin-right: 2rem; - } - - .td-toc { - order:2; - .td-toc { - top: 4rem; - position: sticky; - border-left: solid; - border-left-width: 1pt; - border-left-color: rgb(222, 226, 230); - max-width: 20rem; - min-width: 12rem; - flex: 1 1 0; - margin-left: 2rem; - padding: 1rem; - line-height: 1.2; - - #TableOfContents a { - color: inherit; - &:hover { - color: #72A1E5; - } - } - - li ul { - margin-bottom: 0.5em; - } - - li li { - margin-left: 1.5em; - font-size: 0.9em; - list-style: inherit; - display: list-item; - } - li ul { - list-style: decimal; - } - } - } - - > main { - flex: 4 4 0; - } - } -} - -.feature-icon { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - font-size: 200px; - opacity: 0.06; - pointer-events: none; -} - -.feature-cell { - display: flex; - flex-direction: column; -} - -address { - padding-left: 2rem; - font-size: 1.1em; - line-height: 1.5em; - font-weight: 100; -} - -footer { - background: $primary; - color: white; - font-size: 0.8rem; - min-height: 0; - flex: 0 0 auto; - padding: 1rem 0; -} - -.footer-copyright { - line-height: 1.5em; -} - - -.print-qr-link { - border: 1px solid black; - background: white; - - display: none; - @media print { - display: flex; - } - align-items: center; - overflow: hidden; - padding: 1mm; - padding-left: 4mm; - - img { - width: 3cm; - flex: 0 0 auto; - } - - p { - flex: 1 1 0; - margin: 0; - padding: 0; - font-size: 11pt; - overflow: hidden; - word-wrap: break-word; - } - - a { - color: inherit; - display: block; - text-decoration: inherit; - font-weight: bold; - font-family: $font-family-monospace; - white-space: wrap; - letter-spacing: -0.5pt; - } -} - -@page { - size: A4 portrait; - margin: 0.6in; -} - -.td-default main section.device-types-row { - background: #F8F8F8; - padding: 0; -} - -.device-type-cell { - text-align: center; - padding-block: 4rem; - display: flex; - flex-direction: column; - - .label { - order: -2; - height: 40px; - align-self: center; - display: flex; - justify-content: center; - align-items: center; - padding: 0 1.5rem; - border-radius: 1000px; - margin-bottom: 1rem; - background: #EEE; - text-transform: uppercase; - letter-spacing: 0.7pt; - font-weight: 700; - font-size: 80%; - } - - h4 { - order: -1; - } - - &.light { - background: #FFF; - } - - img { - margin-block: 1rem; - width: 70%; - height: 200px; - object-fit: contain; - align-self: center; - } - - h4 > span { - display: block; - font-size: 120%; - opacity: 0.5; - margin-top: 0.2rem; - } - - &.construction { - .label { - background: #ffd600; - } - img { - opacity: 0.3; - } - } - - &.recommended { - .label { - background: #0029a7; - color: white; - } - } - - ul { - text-align: left; - // align-self: center; - } -} diff --git a/assets/scss/baseline.scss b/assets/scss/baseline.scss new file mode 100644 index 00000000..0dc378a9 --- /dev/null +++ b/assets/scss/baseline.scss @@ -0,0 +1,194 @@ +* { + box-sizing: border-box; +} + +html, body { + line-height: 1.7; + font-family: $font-family-base; + font-size: 12pt; + padding: 0; + margin: 0; +} + +.content-grid { + --padding-inline: 1rem; + --content-max-width: 140ch; + + display: grid; + grid-template-columns: + [full-width-start] #{"minmax(var(--padding-inline), 1fr)"} + [content-start] + #{"repeat(12, [col-start] calc(min(100% - (var(--padding-inline) * 2), var(--content-max-width)) / 12 - var(--padding-inline)) [col-end] var(--padding-inline) )"} + [content-end] + #{"minmax(var(--padding-inline), 1fr) [full-width-end]"}; +} + +.content-grid > :not(.full-width), +.full-width > :not(.full-width) { + grid-column: content; +} + +.content-grid > .full-width { + grid-column: full-width; +} + +.content-grid .content-grid { + display: grid; + grid-template-columns: inherit; +} + +a { + text-decoration: none; + + &, &:visited { + color: $link-color; + } + + &:hover { + color: lighten($link-color, 20%); + } +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 500; + line-height: 1.2em; + + &:first-child { + margin-block-start: 0; + } +} + +h1 { + font-size: 2.3rem; +} + +h2 { + font-size: 1.9rem; +} + +h3 { + font-size: 1.5rem; +} + +h4, h5, h6 { + font-weight: 700; +} +h4 { + font-size: 1.3rem; +} + +h5 { + font-size: 1.15rem; +} + +h6 { + font-size: 1rem; +} + +section { + padding-block: 4rem; + min-width: 0; +} + +figure { + text-align: center; + > a > img { + max-width: 100%; + } +} + +section.arrow { + position: relative; +} + +section.arrow::after { + --width: 60px; + --height: 45px; + + left: 50%; + margin-left: #{"calc(-1 * var(--width))"}; + bottom: #{"calc(-1 * var(--height))"}; + border-style: solid; + border-width: var(--height) var(--width) 0; + border-color: $gray transparent transparent transparent; + z-index: 3; + position: absolute; + content: ""; +} + +.docs { + .docs-footer { + font-size: $font-size-small; + } +} + +pre { + max-width: 100%; +} + +blockquote { + padding: 0.5rem 1.5rem; + margin-left: 1rem; + border-left: 4px solid #ddd; + color: #777; +} + +table { + border-collapse: collapse; + margin-block: 2rem; +} + +td, th { + padding: 0.25rem 0.5rem; + border: 1px solid $grayish; + border-width: 1px 0; + vertical-align: top; +} + +th { + text-align: left; + border-width: 2px 0; +} +tr:last-child td { + border-bottom-width: 2px; +} + +.table-wide { + overflow: auto; + + table { + width: 100%; + min-width: 60ch; + } +} + +.breadcrumb { + list-style: none; + display: flex; + flex-wrap: wrap; + padding: 0; + font-size: $font-size-small; + + li { + display: inline-block; + + &.active { + font-weight: 500; + } + + &:not(:last-child)::after { + display: inline-block; + content: '/'; + scale: 1.2; + opacity: 0.5; + margin-inline: 0.5rem; + } + } +} + +address { + padding-left: 2rem; + font-size: 1.1em; + line-height: 1.5em; + font-weight: 100; +} diff --git a/assets/scss/features.scss b/assets/scss/features.scss new file mode 100644 index 00000000..a6319369 --- /dev/null +++ b/assets/scss/features.scss @@ -0,0 +1,467 @@ +// Big intro text in a page or article + +.lead { + font-weight: 500; + font-size: 1.15rem; +} + +// Donations IBAN box + +.donations { + background: white; + color: #212730; + border: 1px solid #ddd; + border-radius: 4px; + padding: 1rem 2rem; + display: inline-block; + margin: 1rem auto; +} + +// Feature boxes + +.feature-cell { + display: flex; + flex-direction: column; + position: relative; + + .button { + margin-top: auto; + align-self: flex-start; + } + + h3 { + margin-block: 0; + } + + .inline-svg { + position: absolute; + left: 50%; + top: 50%; + translate: -50% -50%; + width: 60%; + height: auto; + opacity: 0.06; + pointer-events: none; + } +} + +// Buttons + +.button { + background: rgba(0, 0, 0, 0.02); + box-shadow: rgba(0, 0, 0, 0.2) 0 5px; + border: 1px solid rgba(0, 0, 0, 0.1); + color: $gray; + + &, &:visited { + color: $primary; + } + + &:hover { + background: white; + color: $gray; + } + + .dark &, .darkish &, .stage & { + background: rgba(255, 255, 255, 0.7); + box-shadow: rgba(0, 0, 0, 0.6) 0 5px; + &, &:visited, &:hover { + color: $primary; + } + + &:hover { + background: white; + } + } + + text-decoration: none; + padding: 0.4em 1.25em 0.3em; + border-radius: 0.25rem; + transition: all 0.25s ease-out; + font-weight: 500; + + &:hover { + transform: translateY(-3px); + } +} + +.action-buttons { + display: flex; + gap: 1em; +} + + +// Alerts + +.alert { + border: 0; + border-radius: 0.25rem; + font-size: 1rem; + padding: 1rem; + margin-block: 1rem; + + .alert-heading { + margin: 0; + margin-block-end: 0.5rem; + font-size: 1.15rem; + font-weight: 500; + } + + @media print { + border-width: 2px; + border-style: solid; + } +} + +.alert-info { + background: #e1f5fe; + border-color: #1e88e5; + + .alert-heading { + color: #1e88e5; + } +} + +.alert-warning { + background: #ffe7e4; + border-color: #ed6a5a; + + .alert-heading { + color: #ed6a5a; + } +} + +.alert-success { + background: #ccefc6; + border-color: #199f67; + + .alert-heading { + color: #199f67; + } +} + +.alert > ul:last-child, +.alert > p:last-child { + margin-bottom: 0; +} + +// Image slider + +.ideal-image-slider { + max-width: 60rem; + margin: 2rem 0; +} + +.slider.small { + max-width: 30rem; +} + +// Youtube video embed + +.youtube-video-wrapper { + display: block; + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + width: 100%; + background: #000; + margin: 1rem 0; + + iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; + background: transparent; + } + + img { + object-fit: cover; + display: block; + left: 0; + bottom: 0; + margin: 0 auto; + max-width: 100%; + width: 100%; + position: absolute; + right: 0; + top: 0; + border: none; + height: auto; + cursor: pointer; + -webkit-transition: 0.4s all; + -moz-transition: 0.4s all; + transition: 0.4s all; + } + + &:hover img { + -webkit-filter: brightness(75%); + } + + .play { + height: 72px; + width: 72px; + left: 50%; + top: 50%; + margin-left: -36px; + margin-top: -36px; + position: absolute; + background: url("../images/play.png") no-repeat; + z-index: 1; + cursor: pointer; + } + + .comment { + left: 50%; + top: 50%; + transform: translate(-50%, 50px); + position: absolute; + z-index: 1; + cursor: pointer; + color: white; + text-align: center; + } +} + +// Main stage on home page + +.stage { + position: relative; + overflow: clip; + + &::before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + background: $gray; + z-index: -1; + } + &::after { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + background: url('/featured-background.jpg'); + background-position: center; + background-size: cover; + z-index: -1; + + animation: stage-scroll-effect linear; + animation-timeline: view(); + animation-range: exit -60px; + } + + height: 50vh; + position: relative; + margin: 0; + + display: flex !important; + flex-direction: column; + align-items: center; + justify-content: center; + color: white; + gap: 1em; + + > h2 { + font-size: #{"min(4.5vw, 4rem)"}; + font-weight: 300; + margin: 0; + } + + > p { + font-weight: 500; + margin: 0; + font-size: 1.2rem; + } + + // Special banderole on the stage + .banderole { + display: block; + position: absolute; + left: 0; + top: 0; + z-index: 100; + width: 25ch; + padding: 0; + + > img { + width: 100%; + margin: 0; + } + } +} + +@keyframes stage-scroll-effect { + from {} + to {opacity: 0; scale: 1.2; translate: 0 20%;} +} + +// Special device variants page + +.device-types-row { + background: #F8F8F8; + padding: 0; +} + +.device-type-cell { + text-align: center; + padding-block: 4rem; + display: flex; + flex-direction: column; + + .label { + order: -2; + height: 40px; + align-self: center; + display: flex; + justify-content: center; + align-items: center; + padding: 0 1.5rem; + border-radius: 1000px; + margin-bottom: 1rem; + background: #EEE; + text-transform: uppercase; + letter-spacing: 0.7pt; + font-weight: 700; + font-size: 80%; + } + + h4 { + order: -1; + } + + &.light { + background: #FFF; + } + + img { + margin-block: 1rem; + width: 70%; + height: 200px; + object-fit: contain; + align-self: center; + } + + h4 > span { + display: block; + font-size: 120%; + opacity: 0.5; + margin-top: 0.2rem; + } + + &.construction { + .label { + background: #ffd600; + } + img { + opacity: 0.3; + } + } + + &.recommended { + .label { + background: #0029a7; + color: white; + } + } + + ul { + text-align: left; + // align-self: center; + } + + .button { + margin-top: auto; + align-self: center; + } +} + +// Resistors + +.resistor { + font-size: $font-size-small; + text-align: center; + svg { + display: block; + margin: 0 auto 0.5rem; + } +} + +// Buttons on bottom of blog entry to move around + +.blog-pager { + margin-block-start: 4rem; + font-size: 0.8rem; + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; +} + +// Blog entry list + +ul.blog-posts, +ul.section-index { + list-style: none; + padding: 0; + + display: grid; + grid-template-columns: 1fr; + gap: 2rem; + + > li { + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 0.25rem; + padding: 1rem; + min-width: 0; + overflow: hidden; + + .date { + font-size: 1rem; + font-weight: 700; + } + + h5 { + font-size: 1.2rem; + font-weight: bold; + margin-block-start: 0; + margin-block-end: 0; + } + } +} +@media ($media-desktop) { + + ul.blog-posts, + ul.section-index { + grid-template-columns: 1fr; + } + +} + +ul.blog-posts > li > h5 > a { + color: inherit; +} + +// Icons + +.inline-svg { + display: inline-block; + height: 1rem; + aspect-ratio: 1; + translate: 0 15%; + + svg { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + } +} diff --git a/assets/scss/layout.scss b/assets/scss/layout.scss new file mode 100644 index 00000000..03b91e6b --- /dev/null +++ b/assets/scss/layout.scss @@ -0,0 +1,349 @@ +#header { + background: $gray; + color: white; + display: flex; + align-items: center; + height: 60px; + padding: 0 16px; + position: sticky; + top: 0; + z-index: 10000; + + .site-title { + color: inherit; + white-space: nowrap; + text-decoration: none; + font-weight: 500; + font-size: 1.3rem; + // text-transform: uppercase; + } + + .site-icon { + margin-right: 1rem; + display: block; + padding: 0; + + svg { + width: 50px; + height: 50px; + margin: 0; + display: block; + align-self: center; + } + } + + nav.menu { + margin-inline-start: auto; + display: flex; + align-self: stretch; + align-items: stretch; + + > ul { + list-style: none; + display: flex; + align-items: stretch; + padding: 0; + margin: 0; + + > li { + position: relative; + display: flex; + align-items: stretch; + + > a, span { + font-weight: 500; + align-self: stretch; + display: flex; + align-items: center; + padding: 0 1rem; + text-decoration: none; + color: inherit; + font-weight: 500; + font-size: 1.15rem; + cursor: pointer; + } + + > ul { + display: none; + position: absolute; + right: 0; + top: 100%; + background: $grayish; + margin: 0; + padding: 0.5rem 0; + + > li { + display: block; + white-space: nowrap; + + > a, > span { + color: inherit; + display: block; + text-decoration: none; + padding: 0.25rem 2rem 0.25rem 1rem; + + &:hover, &:focus-within { + background: rgba(255, 255, 255, 0.1); + } + } + } + } + + &:focus-within, &:hover { + > ul { + display: block; + } + + > a, span { + background: $grayish; + } + } + } + } + } +} + +nav.sidebar { + padding: 1rem; + font-family: "Open Sans"; + + ul { + list-style: none; + padding: 0; + margin: 0; + + ul ul { + padding-left: 1.5rem; + } + + li { + margin-bottom: 2px; + } + } + + & > ul > li { + margin-bottom: 1rem; + + & > a { + font-weight: 700; + text-transform: uppercase; + } + } + + a { + display: block; + color: inherit; + border-radius: 0.25rem; + padding: 0.25rem 0.75rem; + + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + text-decoration: none; + + &:hover { + color: inherit; + background: #f6f6f6; + } + + &.current-page { + font-weight: 700; + color: $link-color; + } + } +} + +aside.toc { + padding: 1rem; + + h6 { + margin: 0; + font-weight: 700; + text-transform: uppercase; + padding: 0.25rem 0.75rem; + line-height: inherit; + } + + ul { + padding-left: 3ch; + // margin: 0; + list-style: decimal; + } + + ul ul { + padding-left: 0; + list-style: decimal; + margin-bottom: 0.5em; + } + + li li { + margin-left: 1.5em; + font-size: 0.9em; + list-style: inherit; + display: list-item; + } +} + +footer { + background: $primary; + color: white; + font-size: $font-size-small; + min-height: 0; + flex: 0 0 auto; + padding: 1rem 0; +} + +.footer-copyright { + line-height: 1.5em; +} + +#mobile-sidebar-toggle { + display: none; +} + +@media ($media-mobile) { + #header { + position: relative; + min-width: 0; + + > nav.menu > ul { + flex-wrap: wrap-reverse; + > li { + position: initial; + + > a, > span { + font-size: $font-size-small; + white-space: nowrap; + } + + > ul { + position: absolute; + top: 100%; + left: 0; + right: 0; + bottom: initial; + } + } + } + } + + .site-title { + display: none; + } + + #header nav.menu > ul > li:first-child { + display: none; + } + + .docs { + aside.sidebar { + transition: all 0.5s; + overflow: auto; + position: absolute; + width: 100%; + background: white; + display: none; + + height: #{"calc(100vh - 100px)"}; + box-shadow: 0 10px 10px -5px rgba(0, 0, 0, 0.1); + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + } + + aside.toc { + padding: 1rem; + h6 { + margin: 0; + } + } + + > main { + padding: 1rem; + } + + .mobile-sidebar-toggle-label { + background: $secondary; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding: 0 1rem; + height: 40px; + display: flex; + align-items: center; + + .inline-svg { + margin-right: 0.5rem; + height: 24px; + } + + > :last-child { display: none; } + } + + #mobile-sidebar-toggle:checked ~ { + .mobile-sidebar-toggle-label { + > :last-child { display: initial; } + > :first-child { display: none; } + } + + aside.sidebar { + display: block; + } + } + } + + ul.blog-posts { + grid-template-columns: 1fr; + } +} + +@media ($media-desktop) { + .mobile-sidebar-toggle-label { + display: none; + } + + .docs { + display: grid; + grid-column: full-width; + grid-template-columns: 20rem 1fr 20rem; + grid-template-areas: "left center right"; + gap: 2rem; + position: relative; + + aside.sidebar { + grid-area: left; + } + + aside.toc { + grid-area: right; + } + + > main { + max-width: 100ch; + min-width: 0x; + padding-bottom: 4rem; + } + } + + + .columns-2 { + > :nth-child(2n + 1) { grid-column: col-start 1 / col-end 6; } + > :nth-child(2n + 2) { grid-column: col-start 7 / col-end 12; } + } + + .columns-3 { + > :nth-child(3n + 1) { grid-column: col-start 1 / col-end 4; } + > :nth-child(3n + 2) { grid-column: col-start 5 / col-end 8; } + > :nth-child(3n + 3) { grid-column: col-start 9 / col-end 12; } + } +} + +section.dark { + background: $gray; + color: white; +} + +section.darkish { + background: $grayish; + color: white; +} + +.content-grid > section.narrow { + grid-column: col-start 3 / col-end 10; +} diff --git a/assets/scss/main.scss b/assets/scss/main.scss new file mode 100644 index 00000000..c3a2c3d6 --- /dev/null +++ b/assets/scss/main.scss @@ -0,0 +1,9 @@ +// @import "../vendor/Font-Awesome/scss/fontawesome.scss"; +// @import "../vendor/Font-Awesome/scss/solid.scss"; +// @import "../vendor/Font-Awesome/scss/brands.scss"; +// +@import "variables.scss"; +@import "baseline.scss"; +@import "layout.scss"; +@import "features.scss"; +@import "print.scss"; diff --git a/assets/scss/print.scss b/assets/scss/print.scss new file mode 100644 index 00000000..e28ba051 --- /dev/null +++ b/assets/scss/print.scss @@ -0,0 +1,180 @@ +@page { + size: A4 portrait; + margin: 0.6in; +} + +@media screen { + .print-only { + display: none; + } +} + +.print-only .noprint, +.noprint .print-only { + display: none; +} + + +@media print { + html, + body { + font-size: 10pt; + min-width: 0 !important; + } + + .noprint { + display: none; + } + + .td-main main { + max-width: 100% !important; + flex: 1 1 0; + } + + .td-content { + max-width: 100%; + // columns: 2; + column-gap: 4rem; + font-size: 1rem; + + p, ul, ol, .alert { + line-height: 1.7em; + font-size: 1em; + } + + > h1, + > h2, + > h3, + > p, + > ul, + > ol, + > .alert, + > .highlight, + > .lead, + > dl dd, + > pre, + .footnotes, + > blockquote { + // column-span: all; + max-width: 100%; + } + + li { + margin-bottom: 0 !important; + } + + h2 { + font-size: 1.6em; + column-span: all; + // page-break-before: always; + } + h3 { + font-size: 1.3em; + } + + .print-figures { + counter-reset: step-figure; + margin: 1rem 0; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.5rem; + } + + figure, .card { + // display: block; + position: relative; + // width: calc(50% - 0.25rem - 2px); + vertical-align: top; + margin: 0; + padding: 0 !important; + border: 1px solid black; + border-radius: 2mm; + overflow: hidden; + + break-inside: avoid; + counter-increment: step-figure; + figcaption, .card-body { + position: relative; + margin: 0; + padding: 0.2rem 0.5rem !important; + border-top: inherit; + } + } + + // .card { + // padding: 0 !important; + // border: 1px solid black; + // border-radius: 2mm; + // break-inside: avoid; + // overflow: hidden; + // + // .card-body { + // + // } + // } + + .section-index, + // "Last changed" row + > .text-muted:last-child { + display: none; + } + + // Uncomment this to print without figures and images + // .card, .print-figures, img { + // display: none; + // } + + .alert { + border-width: 2px; + break-inside: avoid; + } + + > table { + margin: 1rem auto; + break-inside: avoid; + + td, thead th { + border: 1px solid black; + padding: 0.25rem 0.75rem; + } + } + } +} + +.print-qr-link { + border: 1px solid black; + background: white; + + display: none; + @media print { + display: flex; + } + align-items: center; + overflow: hidden; + padding: 1mm; + padding-left: 4mm; + + img { + width: 3cm; + flex: 0 0 auto; + } + + p { + flex: 1 1 0; + margin: 0; + padding: 0; + font-size: 11pt; + overflow: hidden; + word-wrap: break-word; + } + + a { + color: inherit; + display: block; + text-decoration: inherit; + font-weight: bold; + font-family: $font-family-monospace; + white-space: wrap; + letter-spacing: -0.5pt; + } +} diff --git a/assets/scss/rtl/_main.scss b/assets/scss/rtl/_main.scss deleted file mode 100644 index 4391c470..00000000 --- a/assets/scss/rtl/_main.scss +++ /dev/null @@ -1 +0,0 @@ -// Empty file to disable docsy's RTL styles which pull in a lot of remote resources. diff --git a/assets/scss/_variables_project.scss b/assets/scss/variables.scss similarity index 77% rename from assets/scss/_variables_project.scss rename to assets/scss/variables.scss index ff9ee783..8ecb3ff9 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/variables.scss @@ -1,28 +1,22 @@ -/* - -Add styles or override variables from the theme here. - -*/ - - $primary: #212730; $primary-light: #3e4a5d; $secondary: #f1f1f6; - -// $td-sidebar-bg-color: #e9f1ff; -// $td-sidebar-border-color: #d4e4ff; -$td-sidebar-bg-color: #FFFFFF; +$gray: rgb(33, 39, 48); +$grayish: #403f4c; $td-sidebar-border-color: #d4e4ff; -$link-color: #3489DD; - -$td-enable-google-fonts: false; +$link-color: #1565C0; -$font-family-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +$font-family-sans-serif: "Open Sans", Roboto, sans-serif; +$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default; +$font-family-base: $font-family-sans-serif !default; -// $font-size-base: 1.2rem; +$font-size-small: 0.85rem; +$font-size-base: 1rem; -$enable-rounded: false; +$desktop-size: 1024px; +$media-mobile: screen and (max-width: ($desktop-size - 1px)); +$media-desktop: screen and (min-width: $desktop-size); // Source: https://google-webfonts-helper.herokuapp.com/fonts/open-sans?subsets=latin diff --git a/config.toml b/config.toml index 2432e58e..102ae861 100644 --- a/config.toml +++ b/config.toml @@ -1,14 +1,7 @@ baseURL = "/" title = "Goldydocs" - enableRobotsTXT = true - -# Hugo allows theme composition (and inheritance). The precedence is from left to right. -theme = ["github.com/google/docsy"] - timeout = 500000 # uh oh - -# Will give values to .Lastmod etc. enableGitInfo = true # Language settings @@ -143,8 +136,6 @@ github_branch = "main" [params.ui] # Enable to show the side bar menu in its compact state. sidebar_menu_compact = false -# Set to true to disable breadcrumb navigation. -breadcrumb_disable = false # Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled) sidebar_search_disable = false # Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top nav bar diff --git a/content/_index.de.html b/content/_index.de.html index ccc09302..5adabdc8 100644 --- a/content/_index.de.html +++ b/content/_index.de.html @@ -10,176 +10,82 @@ byline: "Erstellt August 2020" --- -{{< blocks/cover title="OpenBikeSensor" image_anchor="top" height="400" >}}
-Open Innovation, Open Source, Open Data, Open Science
-Der OpenBikeSensor ist ein offenes System zur
+Wir sind eine Gruppe von aktiven Alltagsradler:innen und möchten Radfahren sicherer und populärer machen. Überall!
-Uns geht es jedoch nicht nur um die Technik. Ergänzend entwickeln wir gemeinsam mit zivilgesellschaftlichen Organisationen und Kommunen regionale Aktionen, Kampagnen und Verkehrskonzepte. Wir gestalten Gesellschaft und leisten so einen Beitrag für mehr Lebensqualität in den Städten und auf dem Land. +Wie oft passiert es uns, dass uns ein Auto beinahe vom Sattel holt? Was wir alle kennen, überprüfen wir nun wissenschaftlich. Dazu haben wir einen Sensor entwickelt, der den Abstand misst und Überholmanöver Geodaten zuordnet. Wo ist es sicher? Wo nicht? Welche Uhrzeit? Welche Strecken? Der Sensor soll helfen, das zu erkennen und zu belegen.
+ +Unser Ziel ist, Schwachstellen und Verbesserungspotenzial in der Verkehrsinfrastruktur aufzuzeigen und diese in Kooperation mit Stadtplaner:innen zu beheben. Zudem wollen wir die gesellschaftliche Wirkung von Kampagnen wie beispielsweise #AnderthalbMeter (in Städten) messen. Um statistisch verlässliche Open Data zu erhalten, ist es wichtig, dass möglichst viele Alltagsradler:innen mit unseren Sensoren offene Daten erfassen. Mit den von allen gesammelten Daten wiederum lassen sich individuelle Auswertungen vornehmen; von Initiativen, Kommunen und von Euch (Open Citizen Science).
-Zentrales Hilfsmittel und Namensgeber des OpenBikeSensors ist unser Überholabstandsmesser, ein kleines technisches Gerät am Fahrrad. Während der Fahrt misst es den Abstand nach links und rechts (minus Lenkerbreite) und zeichnet die Fahrt via GPS auf. Überholmanöver kann die:der Radler:in per Taste am Lenker bestätigen. Nicht aufgezeichnet werden Fahrzeug- oder Personendaten der Überholenden. Uns geht es hauptsächlich um die Seitenabstände zu anderen Verkehrsteilnehmer:innen.
-{{% md %}} +Wir wünschen uns, dass unser Sensor von vielen genutzt und weiterentwickelt wird. Die }}">Anleitung zum Selberbauen und Montieren ist für alle als Open Source verfügbar – hier auf unserer Website und quelloffen via GitHub. Wir entwickeln für die offenen Daten zudem }}">Visualisierungskonzepte (inklusive Visualisierungssoftware) und werten die Ergebnisse gemeinsam mit Forschungspartner:innen aus.
-Es gibt viele Arten, wie Du das OpenCitizenScience-Projekt OpenBikeSensor unterstützen kannst, auch wenn Du nicht selbst aktiv werden möchtest. +Uns geht es jedoch nicht nur um die Technik. Ergänzend entwickeln wir gemeinsam mit zivilgesellschaftlichen Organisationen und Kommunen regionale Aktionen, Kampagnen und Verkehrskonzepte. Wir gestalten Gesellschaft und leisten so einen Beitrag für mehr Lebensqualität in den Städten und auf dem Land.
-### Weitersagen heißt Unterstützen - -Erzähle Freund:innen, Verwandten, Kolleg:innen und Geschäftspartner:innen von uns. - -Folge uns via Twitter @OpenBikeSensor und werde Teil unserer Twitterei. - -### Spenden – jeder Beitrag zählt - -Die Arbeit rund um den OpenBikeSensor ist sehr zeitaufwändig und kostspielig. -Der [OpenBikeSensor e. V.]({{< relref "verein" >}}) nimmt gern Spenden -entgegen, die in die Arbeit der Community fließen und künftige Projekte -unterstützen. - -Bis 200 € reicht der Kontoauszug, um Spenden steuerlich absetzen zu können. -Dafür unbedingt den Verwendungszweck so ausfüllen - --IBAN: DE40 4306 0967 1294 8595 00 (GLS) -Kontoinhaber: OpenBikeSensor e. V. -Verwendungszweck: Spende OpenBikeSensor -- -Hier ein paar Beispiele, was wir mit Euren Spenden alles erreichen können: - -- Wir kaufen mit Mengenrabatt und reduzierten Versandkosten neue Hardware und Bauteile ein. Diese bringen wir Euch dann zu Workshops mit, welche wir veranstalten. -- Wir stellen Bausätze zusammen, damit Interessierte keine 6-8 Wochen auf Teile aus China warten müssen, sondern zügig loslegen können. -- Wir bauen Geräte, die wir für Aktionszeiträume an Engagierte ausleihen. Die Koordination übernehmen unsere Regio-Teams. -- Unsere Entwickler:innen können Hardware für Verbesserungen und Erweiterungen bestellen, ohne das Geld selbst vorschießen zu müssen. -- Wir finanzieren die IT-Infrastruktur für Ko-Kreation und Kollaboration unseres Netzwerks. - -Die Ausgaben des Vereins werden transparent gegenüber der Community kommuniziert und mit allen abgestimmt. Mehr dazu findest Du -auf den Unterseiten [des Vereins]({{< relref "verein" >}}). - -{{% /md %}} -
Es wäre toll, wenn schon bald viele mitmachen, und wir so zusammen Bewegung in die Sache bringen.
+Klingt interessant? }}">Hier kannst Du Teil der Community werden.
+1 | Alternative A "Rotes Modul" Buck-Boost Modul for LiPo, 3.3V (Spannungsregler). Eines der verlinkten Module reicht. | - Derzeit ist kein zuverlässiger Händler für dieses Modul bekannt. Module mit Beschriftung `A1731i` auf dem sechsbeinigen Bauteil **funktionieren NICHT**. + Derzeit ist kein zuverlässiger Händler für dieses Modul bekannt. Module mit Beschriftung `A1731i` auf dem sechsbeinigen Bauteil **funktionieren NICHT**. |
amazon.de
- google Suche + google Suche |
||
+IBAN: DE40 4306 0967 1294 8595 00 (GLS) +Kontoinhaber: OpenBikeSensor e. V. +Verwendungszweck: Spende OpenBikeSensor ++ +Hier ein paar Beispiele, was wir mit Euren Spenden alles erreichen können: + +- Wir kaufen mit Mengenrabatt und reduzierten Versandkosten neue Hardware und Bauteile ein. Diese bringen wir Euch dann zu Workshops mit, welche wir veranstalten. +- Wir stellen Bausätze zusammen, damit Interessierte keine 6-8 Wochen auf Teile aus China warten müssen, sondern zügig loslegen können. +- Wir bauen Geräte, die wir für Aktionszeiträume an Engagierte ausleihen. Die Koordination übernehmen unsere Regio-Teams. +- Unsere Entwickler:innen können Hardware für Verbesserungen und Erweiterungen bestellen, ohne das Geld selbst vorschießen zu müssen. +- Wir finanzieren die IT-Infrastruktur für Ko-Kreation und Kollaboration unseres Netzwerks. + +Die Ausgaben des Vereins werden transparent gegenüber der Community kommuniziert und mit allen abgestimmt. +
{{ .Summary }}
+ {{ T "ui_read_more"}} ++
- + {{ partial "fa.html" "arrow-left" }} Zurück zur FAQ
-