Files
Docs/docs/.vitepress/theme/custom.css
T

408 lines
13 KiB
CSS

:root {
/* BeamMP brand tokens */
--beammp-orange: #F36D24;
--beammp-orange-hover: #c7571a;
--beammp-white: #FFFFFF;
--beammp-black: #000000;
--beammp-gray: #333333;
--beammp-green: #1D9749;
--beammp-blue: #4470B6;
--beammp-neutral: #6B7280;
/* Radius scale */
--radius: 0.5rem;
--radius-lg: var(--radius);
--radius-md: calc(var(--radius) - 2px);
--radius-sm: calc(var(--radius) - 4px);
/* Semantic HSL tokens (values only) */
--background: 0 0% 100%;
--foreground: 0 0% 12%;
--card: 0 0% 100%;
--card-foreground: 0 0% 12%;
--popover: 0 0% 100%;
--popover-foreground: 0 0% 12%;
--primary: 23 90% 55%;
--primary-foreground: 0 0% 100%;
--secondary: 220 43% 49%;
--secondary-foreground: 0 0% 100%;
--muted: 0 0% 96%;
--muted-foreground: 0 0% 35%;
--accent: 139 67% 35%;
--accent-foreground: 0 0% 100%;
--destructive: 0 84% 60%;
--destructive-foreground: 0 0% 100%;
--border: 0 0% 88%;
--input: 0 0% 88%;
--ring: 23 90% 55%;
--chart-1: 23 90% 55%;
--chart-2: 217 45% 49%;
--chart-3: 139 67% 35%;
--chart-4: 32 95% 53%;
--chart-5: 262 83% 58%;
/* Mapped color aliases from requested theme object */
--color-background: hsl(var(--background));
--color-foreground: hsl(var(--foreground));
--color-card: hsl(var(--card));
--color-card-foreground: hsl(var(--card-foreground));
--color-popover: hsl(var(--popover));
--color-popover-foreground: hsl(var(--popover-foreground));
--color-primary: hsl(var(--primary));
--color-primary-foreground: hsl(var(--primary-foreground));
--color-secondary: hsl(var(--secondary));
--color-secondary-foreground: hsl(var(--secondary-foreground));
--color-muted: hsl(var(--muted));
--color-muted-foreground: hsl(var(--muted-foreground));
--color-accent: hsl(var(--accent));
--color-accent-foreground: hsl(var(--accent-foreground));
--color-destructive: hsl(var(--destructive));
--color-destructive-foreground: hsl(var(--destructive-foreground));
--color-border: hsl(var(--border));
--color-input: hsl(var(--input));
--color-ring: hsl(var(--ring));
--color-chart-1: hsl(var(--chart-1));
--color-chart-2: hsl(var(--chart-2));
--color-chart-3: hsl(var(--chart-3));
--color-chart-4: hsl(var(--chart-4));
--color-chart-5: hsl(var(--chart-5));
/* VitePress theme mapping */
--vp-c-brand-1: var(--beammp-orange);
--vp-c-brand-2: var(--beammp-orange);
--vp-c-brand-3: var(--beammp-orange-hover);
--vp-c-bg: var(--color-background);
--vp-c-bg-alt: var(--color-card);
--vp-c-bg-elv: var(--color-popover);
--vp-c-text-1: var(--color-foreground);
--vp-c-text-2: var(--color-muted-foreground);
--vp-c-text-3: hsl(0 0% 50%);
--vp-c-border: var(--color-border);
--vp-c-divider: var(--color-border);
--vp-button-brand-bg: var(--beammp-orange);
--vp-button-brand-hover-bg: var(--beammp-orange-hover);
--vp-button-brand-active-bg: var(--beammp-orange-hover);
--vp-button-brand-text: var(--beammp-white);
--vp-button-brand-border: transparent;
/* Custom block border colours (bg & title overridden by direct CSS below) */
--vp-custom-block-tip-border: var(--beammp-blue);
--vp-custom-block-warning-border: var(--beammp-orange);
--vp-custom-block-danger-border: hsl(var(--destructive));
--vp-nav-height: 64px;
}
.dark {
--beammp-neutral: #9CA3AF;
--background: 0 0% 7%;
--foreground: 0 0% 96%;
--card: 0 0% 10%;
--card-foreground: 0 0% 96%;
--popover: 0 0% 10%;
--popover-foreground: 0 0% 96%;
--muted: 0 0% 15%;
--muted-foreground: 0 0% 70%;
--border: 0 0% 22%;
--input: 0 0% 22%;
--vp-c-bg: var(--color-background);
--vp-c-bg-alt: var(--color-card);
--vp-c-bg-elv: var(--color-popover);
--vp-c-text-1: var(--color-foreground);
--vp-c-text-2: var(--color-muted-foreground);
--vp-c-border: var(--color-border);
--vp-c-divider: var(--color-border);
}
.VPButton.medium.brand,
.VPButton.brand {
border-radius: var(--radius-md);
}
.VPDoc .VPDocAside .content,
.VPDoc .VPDocOutlineDropdown,
.vp-doc div[class*='language-'] {
border-radius: var(--radius-lg);
}
/* ============================================================
Admonitions / Custom Blocks — MkDocs Material style
============================================================ */
/* Strip default VitePress padding; layout is managed per-element */
.vp-doc .custom-block {
padding: 0;
border-left-width: 4px;
border-left-style: solid;
border-radius: var(--radius-lg);
overflow: hidden;
}
/* Header band */
.vp-doc .custom-block .custom-block-title {
display: flex;
align-items: center;
gap: 0.5em;
margin: 0;
padding: 0.45rem 0.75rem;
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.05em;
text-transform: uppercase;
line-height: 1.4;
}
/* Icon via ::before mask */
.vp-doc .custom-block .custom-block-title::before {
content: '';
display: inline-block;
flex-shrink: 0;
width: 1rem;
height: 1rem;
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
-webkit-mask-position: center;
mask-position: center;
-webkit-mask-size: contain;
mask-size: contain;
}
/* Body: pad all direct children that aren't the title */
.vp-doc .custom-block > *:not(.custom-block-title) {
padding-left: 1rem;
padding-right: 1rem;
margin-top: 0;
margin-bottom: 0;
}
.vp-doc .custom-block > .custom-block-title + * {
padding-top: 0.75rem;
}
.vp-doc .custom-block > *:not(.custom-block-title):last-child {
padding-bottom: 0.75rem;
}
/* details: hide native disclosure triangle; animate chevron icon */
.vp-doc .custom-block.details > summary {
cursor: pointer;
list-style: none;
}
.vp-doc .custom-block.details > summary::-webkit-details-marker,
.vp-doc .custom-block.details > summary::marker {
display: none;
}
.vp-doc .custom-block.details > summary.custom-block-title::before {
transition: transform 0.2s ease;
}
.vp-doc .custom-block.details[open] > summary.custom-block-title::before {
transform: rotate(90deg);
}
/* ---- info (blue) ---- */
.vp-doc .custom-block.info {
border-color: var(--beammp-blue);
background-color: color-mix(in srgb, var(--beammp-blue) 5%, transparent);
}
.vp-doc .custom-block.info .custom-block-title {
background-color: color-mix(in srgb, var(--beammp-blue) 14%, transparent);
color: var(--beammp-blue);
}
.vp-doc .custom-block.info .custom-block-title::before {
background-color: var(--beammp-blue);
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 9h-2V7h2m0 10h-2v-6h2m-1-9A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2z'/%3E%3C/svg%3E");
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 9h-2V7h2m0 10h-2v-6h2m-1-9A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2z'/%3E%3C/svg%3E");
}
/* ---- tip (green) ---- */
.vp-doc .custom-block.tip {
border-color: var(--beammp-green);
background-color: color-mix(in srgb, var(--beammp-green) 5%, transparent);
}
.vp-doc .custom-block.tip .custom-block-title {
background-color: color-mix(in srgb, var(--beammp-green) 14%, transparent);
color: var(--beammp-green);
}
.vp-doc .custom-block.tip .custom-block-title::before {
background-color: var(--beammp-green);
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7z'/%3E%3C/svg%3E");
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7z'/%3E%3C/svg%3E");
}
/* ---- warning (orange) ---- */
.vp-doc .custom-block.warning {
border-color: var(--beammp-orange);
background-color: color-mix(in srgb, var(--beammp-orange) 5%, transparent);
}
.vp-doc .custom-block.warning .custom-block-title {
background-color: color-mix(in srgb, var(--beammp-orange) 14%, transparent);
color: var(--beammp-orange);
}
.vp-doc .custom-block.warning .custom-block-title::before {
background-color: var(--beammp-orange);
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 14h-2v-4h2m0 8h-2v-2h2M1 21h22L12 2L1 21z'/%3E%3C/svg%3E");
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 14h-2v-4h2m0 8h-2v-2h2M1 21h22L12 2L1 21z'/%3E%3C/svg%3E");
}
/* ---- danger (red) ---- */
.vp-doc .custom-block.danger {
border-color: hsl(var(--destructive));
background-color: color-mix(in srgb, hsl(var(--destructive)) 5%, transparent);
}
.vp-doc .custom-block.danger .custom-block-title {
background-color: color-mix(in srgb, hsl(var(--destructive)) 14%, transparent);
color: hsl(var(--destructive));
}
.vp-doc .custom-block.danger .custom-block-title::before {
background-color: hsl(var(--destructive));
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2v11h3v9l7-12h-4l4-8z'/%3E%3C/svg%3E");
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2v11h3v9l7-12h-4l4-8z'/%3E%3C/svg%3E");
}
/* ---- details (neutral, collapsible) ---- */
.vp-doc .custom-block.details {
border-color: var(--vp-c-border);
background-color: var(--vp-c-bg-alt);
}
.vp-doc .custom-block.details .custom-block-title {
background-color: var(--vp-c-bg-elv);
color: var(--vp-c-text-2);
}
.vp-doc .custom-block.details .custom-block-title::before {
background-color: var(--vp-c-text-2);
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6l-1.41-1.42z'/%3E%3C/svg%3E");
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6l-1.41-1.42z'/%3E%3C/svg%3E");
}
/* ---- note (gray) ---- */
.vp-doc .custom-block.note {
border-color: var(--beammp-neutral);
background-color: color-mix(in srgb, var(--beammp-neutral) 5%, transparent);
}
.vp-doc .custom-block.note .custom-block-title {
background-color: color-mix(in srgb, var(--beammp-neutral) 14%, transparent);
color: var(--beammp-neutral);
}
.vp-doc .custom-block.note .custom-block-title::before {
background-color: var(--beammp-neutral);
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-1 1.5L18.5 9H13V3.5zM6 20V4h5v7h7v9H6z'/%3E%3C/svg%3E");
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-1 1.5L18.5 9H13V3.5zM6 20V4h5v7h7v9H6z'/%3E%3C/svg%3E");
}
/* ---- quote (gray) ---- */
.vp-doc .custom-block.quote {
border-color: var(--beammp-neutral);
background-color: color-mix(in srgb, var(--beammp-neutral) 5%, transparent);
}
.vp-doc .custom-block.quote .custom-block-title {
background-color: color-mix(in srgb, var(--beammp-neutral) 14%, transparent);
color: var(--beammp-neutral);
}
.vp-doc .custom-block.quote .custom-block-title::before {
background-color: var(--beammp-neutral);
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z'/%3E%3C/svg%3E");
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z'/%3E%3C/svg%3E");
}
.bm-footer {
border-top: 1px solid var(--vp-c-divider);
margin-top: 2rem;
}
.bm-footer__inner {
max-width: 1152px;
margin: 0 auto;
padding: 1.25rem 1rem;
}
.bm-footer__socials {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
align-items: center;
justify-content: center;
}
.bm-footer__social-link {
color: var(--vp-c-text-2);
transition: color 0.2s ease;
}
.bm-footer__social-link:hover {
color: var(--beammp-blue);
}
.bm-footer__social-link svg {
width: 1.15rem;
height: 1.15rem;
display: block;
}
.bm-footer__divider {
color: var(--vp-c-text-3);
}
.bm-footer__patreon {
color: var(--beammp-orange);
font-size: 0.8rem;
text-decoration: none;
}
.bm-footer__patreon:hover {
text-decoration: underline;
color: var(--beammp-orange-hover);
}
.bm-footer__legal {
margin-top: 0.85rem;
display: flex;
flex-direction: column;
align-items: center;
gap: 0.35rem;
color: var(--vp-c-text-2);
font-size: 0.78rem;
}
.bm-footer__copyright {
margin: 0;
text-align: center;
}
.bm-footer__links {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: 0.45rem;
}
.bm-footer__legal-link {
color: var(--vp-c-text-2);
text-decoration: none;
}
.bm-footer__legal-link:hover {
color: var(--beammp-blue);
}