mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-14 02:50:51 +08:00
Co-authored-by: Julien Donck <donckjulien@gmail.com> Co-authored-by: Brandon Oxendine <brandon.oxendine@gmail.com>
203 lines
4.1 KiB
CSS
203 lines
4.1 KiB
CSS
* {
|
|
outline: none !important;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
:root {
|
|
--border-radius-xs: 0.0625rem;
|
|
--border-radius-sm: 0.125rem;
|
|
--border-radius-md: 0.25rem;
|
|
--border-radius-lg: 0.5rem;
|
|
--border-radius-full: 99rem;
|
|
|
|
--scrollbar-width: 0.5rem;
|
|
|
|
--button-regular-height: 2.5rem;
|
|
--button-small-height: 2rem;
|
|
--button-tiny-height: 1.5rem;
|
|
|
|
--global-header-height: 3.5rem;
|
|
--global-left-sidebar-width: 20rem;
|
|
--global-right-sidebar-width: 22.5rem;
|
|
}
|
|
|
|
html {
|
|
height: 100%;
|
|
overflow-y: scroll;
|
|
-ms-overflow-style: scrollbar;
|
|
-webkit-tap-highlight-color: transparent;
|
|
scrollbar-gutter: stable;
|
|
}
|
|
|
|
/* Repo views fill the viewport and scroll their own content region, so the
|
|
body never scrolls. Don't reserve a body scrollbar gutter there, otherwise
|
|
an empty scrollbar track is shown. */
|
|
html[data-repo-view="true"] {
|
|
overflow-y: auto;
|
|
scrollbar-gutter: auto;
|
|
}
|
|
|
|
body {
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0;
|
|
color: var(--color-text-primary);
|
|
text-align: left;
|
|
background-color: var(--color-surface-base);
|
|
scrollbar-width: thin;
|
|
scrollbar-height: thin;
|
|
scrollbar-color: var(--color-border-subtle) transparent;
|
|
overscroll-behavior: none;
|
|
}
|
|
|
|
/* Chrome/Edge/Safari scrollbar */
|
|
*::-webkit-scrollbar {
|
|
width: var(--scrollbar-width);
|
|
height: var(--scrollbar-width);
|
|
}
|
|
*::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
*::-webkit-scrollbar-thumb {
|
|
background: transparent;
|
|
border-radius: var(--border-radius-lg);
|
|
}
|
|
*::-webkit-scrollbar-corner {
|
|
background: transparent;
|
|
}
|
|
*:hover::-webkit-scrollbar-thumb,
|
|
body::-webkit-scrollbar-thumb {
|
|
background-color: var(--color-border-subtle);
|
|
}
|
|
|
|
a {
|
|
color: inherit;
|
|
text-decoration: none;
|
|
}
|
|
|
|
pre {
|
|
margin: 0;
|
|
}
|
|
|
|
.global-counter {
|
|
border-radius: var(--border-radius-sm);
|
|
background-color: var(--color-surface-mid);
|
|
color: var(--color-text-tertiary);
|
|
padding: 0 0.25rem;
|
|
display: block;
|
|
min-width: 1.25rem;
|
|
text-align: center;
|
|
}
|
|
.global-spacer {
|
|
width: 1px;
|
|
height: 100%;
|
|
background-color: var(--color-surface-mid);
|
|
}
|
|
.global-flex-item {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
align-items: center;
|
|
}
|
|
|
|
/*
|
|
Breakpoints
|
|
===========
|
|
mobile 0px - 719.98px
|
|
small desktop 720px - 1010.98px
|
|
medium desktop 1011px - 1349.98px
|
|
desktop 1350px - ∞ px
|
|
*/
|
|
|
|
@media (max-width: 719.98px) {
|
|
body {
|
|
min-width: 0;
|
|
}
|
|
.global-hide-on-mobile-down {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1010.98px) {
|
|
.global-hide-on-small-desktop-down {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1349.98px) {
|
|
.global-hide-on-medium-desktop-down {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 720px) {
|
|
.global-hide-on-small-desktop-up {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1011px) {
|
|
.global-hide-on-medium-desktop-up {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1350px) {
|
|
.global-hide-on-desktop-up {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
/* Global page transition for client-side navigation (View Transition API),
|
|
triggered from the router. The outgoing page fades out and slides up; the
|
|
incoming page fades in and slides up from below. Elements with their own
|
|
view-transition-name (e.g. the marketing sidebar dot, the header logo)
|
|
animate independently via their own transition groups. */
|
|
@keyframes vt-fade-in {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes vt-fade-out {
|
|
to {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes vt-slide-from-bottom {
|
|
from {
|
|
transform: translateY(30px);
|
|
}
|
|
}
|
|
|
|
@keyframes vt-slide-to-top {
|
|
to {
|
|
transform: translateY(-30px);
|
|
}
|
|
}
|
|
|
|
::view-transition-old(root) {
|
|
animation:
|
|
110ms cubic-bezier(0.4, 0, 1, 1) both vt-fade-out,
|
|
300ms cubic-bezier(0.4, 0, 0.2, 1) both vt-slide-to-top;
|
|
transform-origin: 50% 50%;
|
|
}
|
|
|
|
::view-transition-new(root) {
|
|
animation:
|
|
210ms cubic-bezier(0, 0, 0.2, 1) 90ms both vt-fade-in,
|
|
300ms cubic-bezier(0.4, 0, 0.2, 1) both vt-slide-from-bottom;
|
|
}
|
|
|
|
/* Don't let the transition snapshot intercept clicks mid-animation. */
|
|
::view-transition {
|
|
pointer-events: none;
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
::view-transition-old(root),
|
|
::view-transition-new(root) {
|
|
animation: none;
|
|
}
|
|
}
|