// Libraries. @use 'bootstrap' with ( $grid-breakpoints: ( xs: 0, sm: 601px, md: 961px, lg: 1281px, xl: 1921px, xxl: 2561px ) ); @use 'animate.css'; // Modules. @use 'transitions'; @use 'lists'; // CSS Variables. :root { --animate-duration: 1s; --animate-delay: 0.75s; --animate-repeat: 1; } // The HTML page. html { height: 100%; } // 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; font-family: Lato, sans-serif; font-size: 18px; height: 100%; } // Entry point (Vue mount). #ender-app { flex: 1 1 0; image-rendering: auto; } // Helper classes that don't exist in Bootstrap. .nobr { white-space: nowrap; } .clickable { cursor: pointer; } .overlay { grid-area: 1 / 1; } .pass-through { pointer-events: none; > * { pointer-events: auto; } } .no-decoration { text-decoration: none; color: inherit; } .text-align-center { text-align: center; } .font-small { font-size: 14px; } .grid-cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .display-sm { display: none; } .alex { font-family: Alexandria, sans-serif; font-weight: 700; } // Query-overridable classes. .background { background-color: rgb(0 0 0 / 50%); } .dimensions { width: 100%; min-height: 100%; } .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; } } %link { color: inherit; text-decoration: none; transition: 0.3s ease; } .link { @extend %link; &:hover { color: cornflowerblue; } &-hi { @extend %link; color: cornflowerblue; &:hover { color: royalblue; } &-force-dark { @extend %link; color: cornflowerblue; &:hover { color: royalblue; } } } } .radial-gradient { background: radial-gradient( circle at left, rgb(255 255 255 / 80%), rgb(255 255 255 / 75%), rgb(255 255 255 / 0%) ); } .scrollbar { min-height: 128px; scrollbar-width: thin; scrollbar-color: rgb(255 255 255 / 15%) rgb(0 0 0 / 20%); &::-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%); } } @media (prefers-color-scheme: light) { body { color: black; } .scrollbar { scrollbar-color: rgb(0 0 0 / 20%) rgb(255 255 255 / 20%); &::-webkit-scrollbar-track { background-color: rgb(255 255 255 / 20%); } &::-webkit-scrollbar-thumb { border-radius: 8px; background-color: rgb(0 0 0 / 20%); } } .background { background-color: rgb(255 255 255 / 80%); } .link { &:hover { color: royalblue; } &-hi { color: royalblue; &:hover { color: darkblue; } } } .radial-gradient { background: radial-gradient( circle at left, rgb(0 0 0 / 95%), rgb(0 0 0 / 80%), rgb(0 0 0 / 0%) ); } } .floaty { position: fixed; bottom: 0; left: 0; right: 0; width: fit-content; height: fit-content; margin: auto; } // Dynamic classes. @include bootstrap.media-breakpoint-up(sm) { #ender-app { height: 100%; } .scrollbar { scrollbar-gutter: stable; } .dimensions { width: 80%; min-height: fit-content; max-height: 90%; } .fade-mask-sm { mask-image: linear-gradient(to bottom, rgb(0 0 0 / 0%), rgb(0 0 0 / 100%) 5%, rgb(0 0 0 / 100%) 95%, rgb(0 0 0 / 0%)); } .rounded-1-sm { border-radius: 1em; } .display-sm { display: block; } .animate__animated-sm { animation-duration: var(--animate-duration); animation-fill-mode: both; } .animate__delay-1-5s { animation-delay: calc(var(--animate-delay) * 1.5); } } @include bootstrap.media-breakpoint-up(md) { /* TODO: Fill it up :) */ } @include bootstrap.media-breakpoint-up(lg) { .dimensions { width: 70%; } } @include bootstrap.media-breakpoint-up(xl) { .dimensions { width: 40%; } } @include bootstrap.media-breakpoint-up(xxl) { .dimensions { width: 30%; } }