@use 'animate.css'; // Modules. @use 'transitions'; @use 'lists'; @tailwind base; @tailwind components; @tailwind utilities; @font-face { font-family: Enchant; src: url("~/assets/fonts/enchant/enchant.woff") format('woff'), url("~/assets/fonts/enchant/enchant.woff2") format('woff2') } // CSS Variables. :root { --animate-duration: 1s; --animate-delay: 0.75s; --animate-repeat: 1; } @-moz-document url-prefix() { html { min-height: 128px; scrollbar-width: thin; scrollbar-color: rgb(255 255 255 / 15%) rgb(0 0 0 / 20%); &.light { scrollbar-color: rgb(0 0 0 / 15%) rgb(255 255 255 / 20%); } } } // The HTML page. html { height: 100dvh; font-size: 14px; ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { border-radius: 8px; background-color: rgb(0 0 0 / 20%); } ::-webkit-scrollbar-thumb { border-radius: 8px; background-color: rgb(255 255 255 / 15%); } &.light { ::-webkit-scrollbar-track { background-color: rgb(255 255 255 / 15%); } ::-webkit-scrollbar-thumb { border-radius: 8px; background-color: rgb(0 0 0 / 30%); } } } // The body element. body { display: flex; flex-direction: column; position: sticky; background-color: rgb(6 25 28); background-image: url('~/assets/images/textures/sky.png'); background-attachment: fixed; background-blend-mode: multiply; background-size: cover; background-repeat: no-repeat; image-rendering: pixelated; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: white; height: 100%; } @layer base { h1, h2, h3, h4, h5, h6, .text-h1, .text-h2, .text-h3, .text-h4, .text-h5, .text-h6 { @apply font-serif; font-weight: bold; } h1, .text-h1 { font-size: 2.5rem; } h2, .text-h2 { font-size: 2rem; } h3, .text-h3 { font-size: 1.75rem; } h4, .text-h4 { font-size: 1.5rem; } h5, .text-h5 { font-size: 1.25rem; } h6, .text-h6 { font-size: 1rem; } small { font-size: 0.75rem; } a { @apply no-underline transition-all; color: cornflowerblue; &:hover { color: royalblue; } } center { text-align: center; margin: auto; } :not(nav) > ul { list-style-type: disc; padding-left: 1.5em; } :is(section, article, aside).page { :is(div, p):not(:last-child) { @apply mb-4; } :is(h1, h2, h3, h4, h5, h6) { a { @apply text-inherit no-underline transition-all; &:hover { color: indianred; } } &:not(:last-child) { @apply mb-2; } } :is(ul, ol):not(:last-child) { @apply mb-4; } :where(p, li) { code { &:hover { background-color: rgb(138 71 245 / 20%); } padding: 0.25em; border-radius: 0.5em; cursor: pointer; background-color: rgb(83 35 162 / 10%); transition: 0.3s ease; } } img { @apply max-w-full max-h-[400px]; } blockquote { padding: 0.75em 1em; border-left: 0.25em solid rgb(153 153 255 / 60%); border-top-right-radius: 0.5em; border-bottom-right-radius: 0.5em; background-color: rgb(153 153 255 / 10%); transition: 0.3s ease; &:hover { border-left-color: rgb(153 153 255 / 100%); background-color: rgb(153 153 255 / 15%); } :last-child { margin-bottom: 0; } } pre { font-size: 14px; padding: 1em; border-radius: 0.5em; background-color: rgb(83 35 162 / 5%); position: relative; overflow-x: auto; code { counter-reset: step; counter-increment: step 0; scroll-padding: 0.5em; .line::before { content: counter(step); counter-increment: step; display: inline-block; text-align: right; color: rgb(238 246 250 / 40%); width: 1rem; margin-right: 1.5rem; } } } } } // Entry point (Vue mount). #ender-app { flex: 1 0 auto; image-rendering: auto; } // Helper classes that don't exist in Bootstrap. .overlay { grid-area: 1 / 1; } .pass-through { pointer-events: none; > * { pointer-events: auto; } } ruby { ruby-position: under; ruby { ruby-position: over; } } rt { ruby-align: space-around; } .font-small { font-size: 14px; } // Query-overridable classes. .dimensions { width: 100%; min-height: 100%; } @layer utilities { .accent-background { background-color: rgb(0 0 0 / 50%); } .accent-overlay-background { background-color: rgb(0 0 0 / 90%); } .accent-text { color: white; } .accent-text-shadow { text-shadow: black 2px 3px 4px; } .drop-shadow, .accent-drop-shadow { filter: drop-shadow(1px 2px 3px black); } .link-dark { @apply text-inherit no-underline transition-all; color: cornflowerblue; &:hover { color: royalblue; } } .accent-fade { background: linear-gradient( to top, black, rgb(0 0 0 / 50%) 75%, transparent ); } .fade-mask { mask-image: linear-gradient(to bottom, transparent, black 3%, black 97%, transparent); } } .dialog { display: grid; min-width: 240px; max-width: 640px; background-color: rgb(25 20 40 / 95%); box-shadow: rgb(81 75 89 / 50%) 7px 7px 2em; border-radius: 16px !important; > div.background { background-image: url('~/assets/images/textures/aero.png'); background-attachment: scroll; background-repeat: no-repeat; background-size: cover; background-blend-mode: lighten; width: 100%; height: 100%; opacity: 0.2; box-shadow: azure 0 0 20rem; filter: blur(5px); } > div.content > img.icon-badge { position: fixed; margin-top: -20px; margin-left: -20px; transform: rotate(-25deg); width: 60px; height: 60px; } } .accent-gradient { background: radial-gradient( circle at left, rgb(255 255 255 / 80%), rgb(255 255 255 / 75%), rgb(255 255 255 / 0%) ); } .post { scroll-snap-type: y mandatory; scroll-snap-stop: normal; &::after { content: ''; scroll-snap-align: start; } &-box { border-color: rgb(153 153 255 / 60%); background-color: rgb(45 7 110 / 10%); &:hover { border-color: rgb(153 153 255 / 100%); background-color: rgb(45 7 110 / 30%); } } &-pocket { background-color: rgb(153 153 255 / 10%); border-left-color: rgb(153 153 255 / 60%); border-top-color: rgb(153 153 255 / 60%); } &-tag { background-color: rgb(153 153 255 / 10%); border-color: rgb(153 153 255 / 60%); } } :where(html.light) { body { color: black; } .accent-background { background-color: rgb(255 255 255 / 90%); } .accent-overlay-background { background-color: rgb(255 255 255 / 90%); } .accent-drop-shadow { filter: drop-shadow(1px 2px 3px white); } a { @apply no-underline transition-all; color: royalblue; &:hover { color: darkblue; } } .accent-text { color: black; } .accent-gradient { background: radial-gradient( circle at left, rgb(0 0 0 / 95%), rgb(0 0 0 / 80%), transparent ); } .accent-text-shadow { text-shadow: white 1px 2px 3px; } .accent-fade { background: linear-gradient( to top, white, rgb(255 255 255 / 50%) 75%, transparent ); } .post { &-box { border-color: rgb(123 123 255 / 1000%); background-color: rgb(45 7 110 / 20%); &:hover { border-color: rgb(123 123 255 / 80%); background-color: rgb(45 7 110 / 10%); } } &-pocket { background-color: rgb(123 123 255 / 10%); border-left-color: rgb(123 123 255 / 80%); border-top-color: rgb(123 123 255 / 80%); } &-tag { background-color: rgb(123 123 255 / 10%); border-color: rgb(123 123 255 / 80%); } } } // Dynamic classes. @screen lm { .dimensions { width: 100% !important; min-height: 100% !important; } } @screen sm { html { font-size: 16px; } #ender-app { height: 100dvh; scrollbar-gutter: stable; } .dimensions { width: 90%; min-height: fit-content; max-height: 90%; } .animate__animated-sm { animation-duration: var(--animate-duration); animation-fill-mode: both; } .animate__delay-1-5s { animation-delay: calc(var(--animate-delay) * 1.5); } } @screen md { html { font-size: 18px; } } @screen lg { html { font-size: 20px; } .dimensions { width: 75%; } } @screen xl { .dimensions { width: 60%; } } @screen 2xl { .dimensions { width: 50%; } }