Mark Duppenthaler
update with css
d588824
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--tab-radius: 2px;
--rounded-box: 2px;
--rounded-btn: 2px;
}
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
@layer base {
@font-face {
font-family: "Optimistic Display";
src:
url(../public/fonts/optimistic/Optimistic_Display_W_Md.woff2)
format("woff2"),
url(../public/fonts/optimistic/Optimistic_Display_W_Md.woff)
format("woff");
font-weight: 500;
}
@font-face {
font-family: "Optimistic Display";
src:
url(../public/fonts/optimistic/Optimistic_Display_W_SBd.woff2)
format("woff2"),
url(../public/fonts/optimistic/Optimistic_Display_W_SBd.woff)
format("woff");
font-weight: 600;
}
@font-face {
font-family: "Optimistic Display";
src:
url(../public/fonts/optimistic/Optimistic_Display_W_Bd.woff2)
format("woff2"),
url(../public/fonts/optimistic/Optimistic_Display_W_Bd.woff)
format("woff");
font-weight: 700;
}
@font-face {
font-family: "Optimistic Text";
src:
url(../public/fonts/optimistic/Optimistic_Text_W_Rg.woff2) format("woff2"),
url(../public/fonts/optimistic/Optimistic_Text_W_Rg.woff) format("woff");
font-weight: 400;
}
@font-face {
font-family: "Optimistic Text";
src:
url(../public/fonts/optimistic/Optimistic_Text_W_Md.woff2) format("woff2"),
url(../public/fonts/optimistic/Optimistic_Text_W_Md.woff) format("woff");
font-weight: 500;
}
@font-face {
font-family: "Optimistic Text";
src:
url(../public/fonts/optimistic/Optimistic_Text_W_Bd.woff2) format("woff2"),
url(../public/fonts/optimistic/Optimistic_Text_W_Bd.woff) format("woff");
font-weight: 700;
}
@font-face {
font-family: "Optimistic Text";
src:
url(../public/fonts/optimistic/Optimistic_Text_W_XBd.woff2)
format("woff2"),
url(../public/fonts/optimistic/Optimistic_Text_W_XBd.woff) format("woff");
font-weight: 800;
}
body {
font-family: "Optimistic Text", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #465a69;
}
/* Base (mobile) typography, overriding tailwind typography (.prose) defatuls */
/* Also review the theme in tailwind.config.js */
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: "Optimistic Display", sans-serif;
}
h4,
h5,
h6,
p {
max-width: 65ch;
}
.prose .display h1 {
@apply text-4xl font-medium leading-tight;
}
.prose .display h2 {
@apply font-medium leading-tight;
font-size: 2.5rem;
}
.prose h1 {
@apply mt-2 mb-4 text-3xl font-medium leading-tight;
letter-spacing: 0.016rem;
}
.prose h2 {
@apply my-2 text-2xl font-medium leading-tight;
letter-spacing: 0.01rem;
}
.prose h3 {
@apply my-2 text-xl font-medium leading-tight;
letter-spacing: 0.005rem;
}
.prose h4 {
@apply my-2 text-lg font-medium leading-tight;
}
.prose h5 {
@apply my-2 text-xl font-normal leading-normal;
letter-spacing: 0.005rem;
}
.prose h6 {
@apply my-2 text-base font-normal leading-normal;
}
.prose p {
@apply text-sm font-normal leading-normal;
}
.prose ol,
.prose ul {
@apply text-sm font-normal leading-normal;
padding-right: 2rem;
}
.prose a:not(.not-prose a) {
@apply inline-block no-underline my-0;
border-bottom: 1px solid #0064e0;
}
.prose a:not(.not-prose a):hover,
.prose a:not(.not-prose a):active {
color: #0064e0;
}
.prose a:not(.not-prose a):focus {
@apply rounded-sm;
outline: none;
border-color: transparent;
box-shadow:
0 0 0 1px #0064e0,
0 0 4px #0064e0;
}
a.no-style,
a.no-style:hover,
a.no-style:active,
a.no-style:focus {
color: unset;
border: none;
text-decoration: none;
}
/* Non-mobile typography */
@media screen(lg) {
.prose .display h1 {
@apply text-6xl;
}
.prose .display h2 {
@apply text-5xl;
}
.prose h1 {
@apply text-4xl;
}
.prose h2 {
@apply text-3xl;
}
.prose h3 {
@apply text-2xl;
}
.prose h4 {
@apply text-lg text-gray-800;
}
.prose h5 {
@apply text-2xl;
}
.prose h6 {
@apply text-base;
}
.prose p {
@apply text-base;
}
.prose .medium {
@apply text-sm;
}
.prose ol,
.prose ul {
@apply text-base;
padding-right: 3rem;
}
}
.dark-mode h1,
.dark-mode h2,
.dark-mode h3,
.dark-mode h4,
.dark-mode h5 {
@apply text-white;
}
.dark-mode h4,
.dark-mode h6 {
@apply text-gray-200;
}
code {
font-family: Menlo, Consolas, monospace;
}
.prose code {
@apply inline py-1 text-xs font-semibold break-all whitespace-pre-wrap;
background-color: rgba(0, 0, 0, 0.05);
}
.prose code::before,
.prose code::after {
content: none;
}
pre {
max-width: 75vw;
}
pre code {
@apply inline-block;
word-break: inherit;
}
.prose blockquote {
@apply font-normal text-gray-600 opacity-80;
}
}
/**
* Custom CSS classes
*/
.justify-start-only {
justify-content: start;
}
.prose .text-white * {
color: #fff;
}
.prose .text-white code {
background: rgba(255, 255, 255, 0.05);
}
.flex-grow-2 {
flex-grow: 2;
}
.flex-grow-3 {
flex-grow: 3;
}
.flex-grow-4 {
flex-grow: 4;
}
.flex-grow-5 {
flex-grow: 5;
}
.flex-grow-6 {
flex-grow: 6;
}
.flex-grow-7 {
flex-grow: 7;
}
.flex-grow-8 {
flex-grow: 8;
}
.flex-grow-9 {
flex-grow: 9;
}
.flex-grow-10 {
flex-grow: 10;
}
/* Custom audio player */
.audio-range input[type="range"] {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
appearance: none;
@apply w-full bg-transparent cursor-pointer;
}
.audio-range input[type="range"]::-webkit-slider-runnable-track {
@apply h-1;
}
.audio-range input[type="range"]::-moz-range-track {
@apply h-1;
}
.audio-range input[type="range"]::-webkit-slider-thumb {
appearance: none;
@apply w-1 h-1 bg-transparent;
}
.audio-range input[type="range"]::-moz-range-thumb {
border: none;
border-radius: 0;
@apply w-1 h-1 bg-transparent;
}
/* Table styles */
.data-table {
width: 100%;
border-collapse: collapse;
margin: 1rem 0;
}
.data-table th {
background-color: #f3f4f6;
padding: 0.75rem 1rem;
text-align: left;
font-weight: 600;
color: #374151;
border-bottom: 1px solid #e5e7eb;
}
.data-table td {
padding: 0.75rem 1rem;
border-bottom: 1px solid #e5e7eb;
}
.data-table tr:hover {
background-color: #f9fafb;
}
.data-table .number-cell {
text-align: right;
}
/* -------- */
/* PrismJS 1.28.0
https://raw.githubusercontent.com/PrismJS/prism-themes/master/themes/prism-vsc-dark-plus.css */
pre[class*="language-"],
code[class*="language-"] {
color: #d4d4d4;
font-size: 13px;
text-shadow: none;
font-family: Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono",
"Courier New", monospace;
direction: ltr;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::selection,
code[class*="language-"]::selection,
pre[class*="language-"] *::selection,
code[class*="language-"] *::selection {
text-shadow: none;
background: #264f78;
}
@media print {
pre[class*="language-"],
code[class*="language-"] {
text-shadow: none;
}
}
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
background: #1e1e1e;
}
:not(pre) > code[class*="language-"] {
padding: 0.1em 0.3em;
border-radius: 0.3em;
color: #db4c69;
background: #1e1e1e;
}
/*********************************************************
* Tokens
*/
.namespace {
opacity: 0.7;
}
.token.doctype .token.doctype-tag {
color: #569cd6;
}
.token.doctype .token.name {
color: #9cdcfe;
}
.token.comment,
.token.prolog {
color: #6a9955;
}
.token.punctuation,
.language-html .language-css .token.punctuation,
.language-html .language-javascript .token.punctuation {
color: #d4d4d4;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.inserted,
.token.unit {
color: #b5cea8;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.deleted {
color: #6ee6d2;
}
.language-css .token.string.url {
text-decoration: underline;
}
.token.operator,
.token.entity {
color: #d4d4d4;
}
.token.operator.arrow {
color: #569cd6;
}
.token.atrule {
color: #6ee6d2;
}
.token.atrule .token.rule {
color: #c586c0;
}
.token.atrule .token.url {
color: #9cdcfe;
}
.token.atrule .token.url .token.function {
color: #b9b4ff;
}
.token.atrule .token.url .token.punctuation {
color: #d4d4d4;
}
.token.keyword {
color: #569cd6;
}
.token.keyword.module,
.token.keyword.control-flow {
color: #c586c0;
}
.token.function,
.token.function .token.maybe-class-name {
color: #b9b4ff;
}
.token.regex {
color: #d16969;
}
.token.important {
color: #569cd6;
}
.token.italic {
font-style: italic;
}
.token.constant {
color: #9cdcfe;
}
.token.class-name,
.token.maybe-class-name {
color: #4ec9b0;
}
.token.console {
color: #9cdcfe;
}
.token.parameter {
color: #9cdcfe;
}
.token.interpolation {
color: #9cdcfe;
}
.token.punctuation.interpolation-punctuation {
color: #569cd6;
}
.token.boolean {
color: #569cd6;
}
.token.property,
.token.variable,
.token.imports .token.maybe-class-name,
.token.exports .token.maybe-class-name {
color: #9cdcfe;
}
.token.selector {
color: #d7ba7d;
}
.token.escape {
color: #d7ba7d;
}
.token.tag {
color: #fff3ad;
}
.token.tag .token.punctuation {
color: #808080;
}
.token.cdata {
color: #808080;
}
.token.attr-name {
color: #9cdcfe;
}
.token.attr-value,
.token.attr-value .token.punctuation {
color: #ffffff;
font-weight: 500;
}
.token.attr-value .token.punctuation.attr-equals {
color: #d4d4d4;
}
.token.entity {
color: #569cd6;
}
.token.namespace {
color: #4ec9b0;
}
/*********************************************************
* Language Specific
*/
pre[class*="language-javascript"],
code[class*="language-javascript"],
pre[class*="language-jsx"],
code[class*="language-jsx"],
pre[class*="language-typescript"],
code[class*="language-typescript"],
pre[class*="language-tsx"],
code[class*="language-tsx"] {
color: #9cdcfe;
}
pre[class*="language-css"],
code[class*="language-css"] {
color: #6ee6d2;
}
pre[class*="language-html"],
code[class*="language-html"] {
color: #d4d4d4;
}
.language-regex .token.anchor {
color: #b9b4ff;
}
.language-html .token.punctuation {
color: #808080;
}
/*********************************************************
* Line highlighting
*/
pre[class*="language-"] > code[class*="language-"] {
position: relative;
z-index: 1;
}
.line-highlight.line-highlight {
background: #f7ebc6;
box-shadow: inset 5px 0 0 #f7d87c;
z-index: 0;
}
/********************************************/
/*** ri-component Multitrack audio player ***/
/********************************************/
.ri-multi-track ::part(region-content) {
font-size: 10px;
text-wrap: nowrap;
color: gray;
}