Spaces:
Sleeping
Sleeping
@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; | |
} | |