/* fonts */ /* overpass-100normal - latin */ @font-face { font-family: 'Overpass'; font-style: normal; font-weight: 100; src: local('Overpass Thin '), local('Overpass-Thin'), url('fonts/overpass/overpass-latin-100.woff2') format('woff2'); } /* overpass-300normal - latin */ @font-face { font-family: 'Overpass'; font-style: normal; font-weight: 300; src: local('Overpass Light '), local('Overpass-Light'), url('fonts/overpass/overpass-latin-300.woff2') format('woff2'); } /* overpass-400normal - latin */ @font-face { font-family: 'Overpass'; font-style: normal; font-weight: 400; src: local('Overpass Light '), local('Overpass-Light'), url('fonts/overpass/overpass-latin-400.woff2') format('woff2'); } /* overpass-700normal - latin */ @font-face { font-family: 'Overpass'; font-style: normal; font-weight: 700; src: local('Overpass Bold '), local('Overpass-Bold'), url('fonts/overpass/overpass-latin-700.woff2') format('woff2'); } /* fira-mono-400normal - latin */ @font-face { font-family: 'Fira Mono'; font-style: normal; font-weight: 400; src: local('Fira Mono Regular '), local('Fira Mono-Regular'), url('fonts/fira-mono/fira-mono-latin-400.woff2') format('woff2'); } /* roboto-400normal - latin */ @font-face { font-family: 'Roboto'; font-style: normal; font-display: swap; font-weight: 400; src: local('Roboto Regular '), local('Roboto-Regular'), url('fonts/roboto/roboto-latin-400.woff2') format('woff2'); } /* roboto-400italic - latin */ @font-face { font-family: 'Roboto'; font-style: italic; font-display: swap; font-weight: 400; src: local('Roboto Regular italic'), local('Roboto-Regularitalic'), url('fonts/roboto/roboto-latin-400italic.woff2') format('woff2'); } /* roboto-500normal - latin */ @font-face { font-family: 'Roboto'; font-style: normal; font-display: swap; font-weight: 500; src: local('Roboto Medium '), local('Roboto-Medium'), url('fonts/roboto/roboto-latin-500.woff2') format('woff2'); } /* roboto-500italic - latin */ @font-face { font-family: 'Roboto'; font-style: italic; font-display: swap; font-weight: 500; src: local('Roboto Medium italic'), local('Roboto-Mediumitalic'), url('fonts/roboto/roboto-latin-500italic.woff2') format('woff2'); } body { --font: 'Overpass', sans-serif; /* --font: 'Roboto', 'sans-serif'; */ /* --font-mono: 'Overpass Mono', monospace; */ /* --font-mono: 'IBM Plex Mono'; */ --font-mono: 'Fira Mono'; --font-ui: var(--font-mono); --font-system: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; } /* base reset ----------------------------- */ html { font-size: 62.5%; -ms-text-size-adjust: 62.5%; -webkit-text-size-adjust: 62.5%; -ms-overflow-style: -ms-autohiding-scrollbar; box-sizing: border-box; border-collapse: collapse; } * { box-sizing: inherit; margin: 0; padding: 0; } /* links reset ---------------------------- */ a { text-decoration: none; cursor: pointer; color: inherit; } a:hover, a:active { color: var(--flash); } a:focus { outline: none } /* ----------------------------------------------- global styles NOTE – !important overrides class-definitions - some vars change inside media-queries! ----------------------------------------------- */ /* constants and calc ----------------------- - commonly used values - under normal conditions, there's no need to touch these - look confusing/cluttering at first, but they simplify life immensely ----------------------------------------------- */ :root { --nav-h: 6rem; --top-offset: 6rem; --sidebar-w: 24rem; --main-width: 80rem; --code-w: 72em; --side-nav: .8rem; --side-page: var(--side-nav); /* easings */ --in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19); --out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1); --inout-cubic: cubic-bezier(0.645, 0.045, 0.355, 1); --in-back: cubic-bezier(0.6, -0.28, 0.735, 0.045); --out-back: cubic-bezier(0.175, 0.885, 0.32, 1.275); --inout-back: cubic-bezier(0.68, -0.55, 0.265, 1.55); } /* theme vars ----------------------------- */ .theme-default { --back: #ffffff; --back-light: #fbfcfd; --prime: #ff3e00; --second: #676778; --flash: #40b3ff; --heading: var(--second); --text: #333; /* hsl(36, 3%, 62%) */ --border-w: .3rem; /* border-width */ --border-r: .4rem; /* border-radius */ } /* typo vars ------------------------------ */ .typo-default { --unit: .8rem; --code-fs: 1.3rem; --h6: 1.6rem; --h5: 1.6rem; --h4: 1.8rem; --h3: 2.4rem; --h2: 3rem; --h1: 3.2rem; --linemax: 42em; /* max line-length */ --lh: calc(4/2.2); /* base line-height */ } /* typography ----------------------------- */ body { font: 400 var(--h4)/var(--lh) var(--font); background-color: var(--back); color: var(--text); } h1, h2, h3, h4, h5, h6, blockquote { margin: 0; color: var(--heading); position: relative; } h1, h2, h3, h4, h5, h6 { font-weight: 700 } h6 { font-size: var(--h6) } h5 { font-size: var(--h5) } h4 { font-size: var(--h4) } h3 { font-size: var(--h3) } h2 { font-size: var(--h2) } h1 { font-size: var(--h1) } p, ol, ul { line-height: 1.5; margin: 0 0 1em 0; font-family: Roboto; -webkit-font-smoothing: antialiased; /* font-family: var(--font-system); */ } .b, b, strong { font-weight: 500 } tt, code, kbd, samp { font: 400 var(--code-fs)/1.7 var(--font-mono); } code { position: relative; border-radius: 0.3em; white-space: nowrap; /* border-top: .1rem solid #e5e5e9; border-left: .1rem solid #e5e5e9; */ /* color: inherit; */ color: #444; -webkit-font-smoothing: initial; } pre code { top: 0; white-space: inherit; background-color: none; } ::selection { background: var(--flash); color: white; } /* opinionated styles --------------------- */ h1, h2 { font-family: var(--font); line-height: 1.2; } li:not(.white) > h2 { color: var(--second) } blockquote { position: relative; margin: 1.6rem 0 2.4rem; padding: 2rem 2.4rem 1.8rem 2.4rem; border-radius: var(--border-r); font-family: var(--font); max-width: var(--linemax); } blockquote p { font-size: var(--h5); } blockquote :last-child { margin: 0; } /* buttons -------------------------------- */ button { font-family: inherit; font-size: inherit; background-color: transparent; border: none; color: currentColor; } button:focus { outline: 0 } button[disabled] { opacity: .55; pointer-events: none; } button > svg { position: relative; top: -.1rem; width: 2rem !important; height: 2rem !important; } /* options */ button[outline] { min-height: var(--bttn-calc-h); line-height: var(--bttn-calc-h); border: var(--bttn-outline) solid currentColor; background-color: white; color: currentColor; } /* links ------------------------------------- - idea from https://up.docs.apex.sh How can this be solved? Setup for all links is risky/tricky We need global <a>-styles and <ul>-styles inside markdown. These bleed into places, where not wanted (i.e. nav, homepage) Same with lists - see below THIS WAY IS SHITTY!! I'm too blind to see... */ .linkify a:not(.open-in-repl) { position: relative; padding: 0 0 .1rem 0; border-bottom: .1rem solid hsla(15, 100%, 50%, 0.5); /* muted --prime */ user-select: none; /* white-space: nowrap; */ color: inherit; transition: color .2s, border .2s, padding .2s; } .linkify a:not(.open-in-repl):hover { color: var(--flash); } .linkify a:not(.open-in-repl):hover { padding: 0; border-bottom: .2rem solid hsla(15, 100%, 50%, 1); } /* .linkify a:not(.open-in-repl):before { content: ''; position: absolute; width: 100%; height: .2rem; bottom: -.2rem; left: 0; white-space: nowrap; background: var(--prime); border-radius: var(--border-r); visibility: hidden; transform: scaleX(0); transform-origin: left center; transition: all .15s var(--out-cubic); z-index: -1; } .linkify a:not(.open-in-repl):hover:before { visibility: visible; transform: scaleX(1); } */ a:hover > .icon { stroke: var(--flash) } /* lists ---------------------------------- */ .listify ol, .listify ul { --list-padding: 2.9rem; list-style: none; color: currentColor; margin-left: var(--list-padding); } .listify ol > li, .listify ul > li { max-width: calc(var(--linemax) - var(--list-padding)); line-height: 1.5; margin: 0 0 0.4rem 0; } .listify ul > li:before { content: ''; position: absolute; margin-top: 1.1rem; margin-left: -1.8rem; background-color: var(--second); width: .8rem; height: 0.8rem; border-radius: 2px; opacity: 0.7; } .listify ol { list-style: decimal } /* tables --------------------------------- */ table { width: 100%; font-size: var(--h5); } td, th { text-align: left; border-bottom: 1px solid #eee; padding: 0.4rem 0.8rem 0.4rem 0; } table code, table span { white-space: pre; } /* grid ----------------------------------- */ .grid, .grid.half { display: grid; grid-gap: 2.4rem; grid-template-columns: 1fr; align-items: center; } .grid.stretch { align-items: stretch } .grid > .cols-2, .grid > .cols-3 { grid-column: span 1 } /* helper styles -------------------------- */ .flex-auto { flex: 1 0 auto } .py0 { padding-top: 0 !important; padding-bottom: 0 !important; } .legend, figcaption, .post aside { max-width: none; margin: 0 auto; padding: 1.6rem 0 0 .8rem; font: 1.2rem/1.6 var(--font-ui); } .filename { display: inline-block; padding: 1.6rem 0 0 1rem; font: var(--h6) var(--font-ui); } .box { padding: 2.4rem 3.2rem; border-radius: var(--border-r); } .open-in-repl { position: absolute; margin-top: 4rem; margin-left: -2.5rem; width: 3.6rem; height: 3.6rem; padding: .9rem; background-color: var(--back-light); border-radius: 50%; border-left: .1rem solid #c7c6c6; } /* theme colors --------------------------- */ .prime { color: var(--prime) !important } .second { color: var(--second) !important } .flash { color: var(--flash) !important } .black { color: black !important } .white { color: white !important } .back { background-color: var(--back) !important } .back-light { background-color: var(--back-light) !important } .bg-prime { background-color: var(--prime) !important } .bg-second { background-color: var(--second) !important } .bg-flash { background-color: var(--flash) !important } /* ----------------------------------------------- inputs ----------------------------------------------- */ input[type="checkbox"] { /* display: block; */ position: relative; height: 1em; width: calc(100% - 0.6em); max-width: 2em; top: -2px; border-radius: 0.5em; -webkit-appearance: none; outline: none; margin: 0 0.6em 0 0; } input[type="checkbox"]::before { content: ""; position: absolute; display: block; height: 100%; width: 100%; border-radius: 1em; top: 0px; left: 0px; background: var(--second); box-sizing: border-box; -webkit-transition: .25s ease-out; padding: 2px; box-sizing: content-box; } input[type="checkbox"]:checked::before { background: var(--prime); } input[type="checkbox"]::after { content: ""; position: absolute; display: block; height: 1em; width: 1em; top: 2px; left: 2px; border-radius: 1em; background: white; box-shadow: 0 0px 1px rgba(0,0,0,.4), 0 4px 2px rgba(0,0,0,.1); -webkit-transition: .2s ease-out; } input[type="checkbox"]:checked::after { left: calc(100% - 9px); } /* ----------------------------------------------- media-queries ----------------------------------------------- */ @media screen and (min-width: 768px) { :root { --side-page: 14vw; --top-offset: 10rem; --side-nav: 4.8rem; } } @media screen and (min-width: 840px) { .grid.half, .grid { grid-template-columns: repeat(2, 1fr) } .grid > .cols-2, .grid > .cols-3 { grid-column: span 2 } } @media screen and (min-width: 1100px) { .grid { grid-template-columns: repeat(3, 1fr) } .grid > .cols-2 { grid-column: span 2 } .grid > .cols-3 { grid-column: span 3 } }