/** * Customize default theme styling by overriding CSS variables: * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css */ /** * Colors * * Each colors have exact same color scale system with 3 levels of solid * colors with different brightness, and 1 soft color. * * - `XXX-1`: The most solid color used mainly for colored text. It must * satisfy the contrast ratio against when used on top of `XXX-soft`. * * - `XXX-2`: The color used mainly for hover state of the button. * * - `XXX-3`: The color for solid background, such as bg color of the button. * It must satisfy the contrast ratio with pure white (#ffffff) text on * top of it. * * - `XXX-soft`: The color used for subtle background such as custom container * or badges. It must satisfy the contrast ratio when putting `XXX-1` colors * on top of it. * * The soft color must be semi transparent alpha channel. This is crucial * because it allows adding multiple "soft" colors on top of each other * to create a accent, such as when having inline code block inside * custom containers. * * - `default`: The color used purely for subtle indication without any * special meanings attched to it such as bg color for menu hover state. * * - `brand`: Used for primary brand colors, such as link text, button with * brand theme, etc. * * - `tip`: Used to indicate useful information. The default theme uses the * brand color for this by default. * * - `warning`: Used to indicate warning to the users. Used in custom * container, badges, etc. * * - `danger`: Used to show error, or dangerous message to the users. Used * in custom container, badges, etc. * -------------------------------------------------------------------------- */ @import url(./font.scss); :root { --vp-c-default-1: var(--vp-c-gray-1); --vp-c-default-2: var(--vp-c-gray-2); --vp-c-default-3: var(--vp-c-gray-3); --vp-c-default-soft: var(--vp-c-gray-soft); --vp-c-brand-1: var(--vp-c-indigo-1); --vp-c-brand-2: var(--vp-c-indigo-2); --vp-c-brand-3: var(--vp-c-indigo-3); --vp-c-brand-soft: var(--vp-c-indigo-soft); --vp-c-tip-1: var(--vp-c-brand-1); --vp-c-tip-2: var(--vp-c-brand-2); --vp-c-tip-3: var(--vp-c-brand-3); --vp-c-tip-soft: var(--vp-c-brand-soft); --vp-c-warning-1: var(--vp-c-yellow-1); --vp-c-warning-2: var(--vp-c-yellow-2); --vp-c-warning-3: var(--vp-c-yellow-3); --vp-c-warning-soft: var(--vp-c-yellow-soft); --vp-c-danger-1: var(--vp-c-red-1); --vp-c-danger-2: var(--vp-c-red-2); --vp-c-danger-3: var(--vp-c-red-3); --vp-c-danger-soft: var(--vp-c-red-soft); --vp-font-family-base: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Helvetica, Arial, sans-serif; --vp-font-family-mono: "Sauce Code Pro", "Source Code Pro", "Courier New", monospace; --vp-c-text-strong: rgb(63 86 99); --vp-c-text-em: rgb(91, 4, 17); } .dark { --vp-c-text-strong: rgb(138, 183, 209); --vp-c-text-em: rgb(187, 121, 131); } body { font-size: 16px; } /** * Component: Button * -------------------------------------------------------------------------- */ :root { --vp-button-brand-border: transparent; --vp-button-brand-text: var(--vp-c-white); --vp-button-brand-bg: var(--vp-c-brand-3); --vp-button-brand-hover-border: transparent; --vp-button-brand-hover-text: var(--vp-c-white); --vp-button-brand-hover-bg: var(--vp-c-brand-2); --vp-button-brand-active-border: transparent; --vp-button-brand-active-text: var(--vp-c-white); --vp-button-brand-active-bg: var(--vp-c-brand-1); } /** * Component: Home * -------------------------------------------------------------------------- */ :root { --vp-home-hero-name-color: transparent; --vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #bd34fe 30%, #41d1ff ); --vp-home-hero-image-background-image: linear-gradient( -45deg, #bd34fe 50%, #47caff 50% ); --vp-home-hero-image-filter: blur(44px); } @media (min-width: 640px) { :root { --vp-home-hero-image-filter: blur(56px); } } @media (min-width: 960px) { :root { --vp-home-hero-image-filter: blur(68px); } } /** * Component: Custom Block * -------------------------------------------------------------------------- */ :root { --vp-custom-block-tip-border: transparent; --vp-custom-block-tip-text: var(--vp-c-text-1); --vp-custom-block-tip-bg: var(--vp-c-brand-soft); --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft); } /** * Component: Algolia * -------------------------------------------------------------------------- */ .DocSearch { --docsearch-primary-color: var(--vp-c-brand-1) !important; } .vp-doc { p img, p video { margin: 0 auto; align-self: center; } blockquote > p { font-size: 16px; } .custom-block { font-size: 16px; } strong, b { color: var(--vp-c-text-strong); font-weight: bold; } em, i { color: var(--vp-c-text-em); } svg { font-family: --vp-font-family-mono; } mjx-container { display: inline-block; margin: auto 1px -4px; } sup { vertical-align: top; position: relative; top: -0.5em; } // @TODO 回头撤销对 code 的字体设置,因为 CharisSIL 不是等宽 code { font-family: "SauceCodePro Nerd Font Mono", "CharisSIL", "DejaVu Sans Mono", "Courier New", monospace; } span.pho { border-radius: 4px; padding: 1px 4px; background-color: var(--vp-code-bg); transition: color 0.25s, background-color 0.5s; font-family: "CharisSIL", "DejaVu Sans Mono", "Courier New", monospace; font-size: var(--vp-code-font-size); // font-size: 100%; color: var(--vp-code-color); &.alt { &::before, &::after { content: "/"; display: inline-block; width: 0.5em; } } } } audio { padding-left: 1em; height: 1.8em; margin-top: -0.2em; } video, img { width: 95%; } span.not-display { display: none; } .two-column ol, .two-column ul { column-count: 2; column-gap: 2em; } .carousel { swiper-container { width: 100%; height: 100%; } swiper-container::part(button-prev), swiper-container::part(button-next) { background-color: rgba(255, 255, 255, 0.6); padding: 0.5rem; border-radius: 4px; transform: scale(0.8); } swiper-container::part(button-prev) { left: 0; margin-left: -6px; border-top-left-radius: 0; border-bottom-left-radius: 0; } swiper-container::part(button-next) { right: 0; margin-right: -6px; border-top-right-radius: 0; border-bottom-right-radius: 0; } swiper-slide img { display: block; width: 100%; height: 100%; object-fit: cover; } .carousel-inner { swiper-slide { align-self: center; } } .swiper-thumb { padding: 10px 0; swiper-slide { width: 25%; height: 100%; opacity: 0.4; cursor: pointer; } .swiper-slide-thumb-active { opacity: 1; } } }