Files
radicle-explorer/public/index.css
T
2026-07-15 15:41:35 +02:00

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;
}
}