/** * 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. * -------------------------------------------------------------------------- */ :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); } /** * 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, #38b6ff 30%, #5271ff ); /* --vp-home-hero-image-background-image: linear-gradient( -45deg, #5271ff 50%, #38b6ff 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; } /** * Overrides */ :root { --primary: #5271ff; --vp-nav-logo-height: 48px; } html.dark { --primary: #38b6ff; } body { font-size: 14px; } .vp-nav .title { font-size: 24px !important; } .vp-doc h1 { font-size: 24px; } .vp-doc h2 { font-size: 22px; color: var(--primary); font-weight: bold; margin-top: 15px; margin-bottom: 5px; border: none !important; line-height: 1.2; } .vp-doc h3 { font-size: 16px; } .vp-doc h4 { font-size: 14px; opacity: 0.75; } .VPSidebarItem .text { font-size: 12px; } .VPSidebarItem.level-2.is-active > .item > .indicator, .VPSidebarItem.level-3.is-active > .item > .indicator, .VPSidebarItem.level-4.is-active > .item > .indicator, .VPSidebarItem.level-5.is-active > .item > .indicator { background-color: var(--primary) !important; } .VPSidebarItem.level-0.is-active > .item .link > .text, .VPSidebarItem.level-1.is-active > .item .link > .text, .VPSidebarItem.level-2.is-active > .item .link > .text, .VPSidebarItem.level-3.is-active > .item .link > .text, .VPSidebarItem.level-4.is-active > .item .link > .text, .VPSidebarItem.level-5.is-active > .item .link > .text { color: var(--primary) !important; } .VPSidebarItem.level-0.is-link > .item > .link:hover .text, .VPSidebarItem.level-1.is-link > .item > .link:hover .text, .VPSidebarItem.level-2.is-link > .item > .link:hover .text, .VPSidebarItem.level-3.is-link > .item > .link:hover .text, .VPSidebarItem.level-4.is-link > .item > .link:hover .text, .VPSidebarItem.level-5.is-link > .item > .link:hover .text { color: var(--primary) !important; } .outline-title { font-size: 12px !important; } .outline-link { font-size: 12px !important; } /* Customization of VitePress CSS */ :root { --vp-home-hero-name-color: transparent; --vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #5271ff, #38b6ff ); } .VPButton.brand { background: linear-gradient(-45deg, #5271ff, #38b6ff) !important; } .VPButton.brand:hover { background: linear-gradient(45deg, #5271ff, #5271ff) !important; } /* .vitepress/theme/custom.css */ .image-container { display: flex; justify-content: center; align-items: center; height: 100%; /* Ensure it takes up the full height of the parent */ width: 100%; /* Ensure it takes up the full width of the parent */ } /* .vitepress/theme/custom.css */ /* Container for all icons and arrows */ .icon-container { display: flex; align-items: center; /* Align the icons and arrows vertically */ justify-content: center; /* Center the icons and arrows horizontally */ gap: 20px; /* Space between the icons and arrows */ } /* BCH icon styling */ .bch-icon { width: 64px; height: 64px; transform: rotate(-15deg); /* Rotate the BCH icon by 15 degrees to the left */ fill: currentColor; } /* Stack icon styling */ .stack-icon { width: 64px; height: 64px; fill: currentColor; } /* Apps icon styling */ .apps-icon { width: 64px; height: 64px; fill: currentColor; } /* Arrow between Stack and BCH */ .right-arrow { width: 24px; height: 24px; } /* Arrow between BCH and Apps */ .left-arrow { width: 24px; height: 24px; } /* Light / dark mode logos */ :root:not(.dark) .dark-only { display: none; } :root:is(.dark) .light-only { display: none; } /* Feature box override */ .feature-box-or { flex-direction: row !important; text-align: center !important; } .feature-box-or h2 { border: none !important; padding-top: 10px !important; margin: 0 !important; } .feature-box-or img { margin: auto !important; } /* Promo on front page */ .promo { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 20px; } .promo-text { flex: 2; /* Adjusted flex value for more text space */ min-width: 250px; /* Ensures text is responsive */ } .promo-text h1 { font-size: 2rem; /* Adjust font size as needed */ margin: 0; } .promo-text p { font-size: 1.1rem; /* Slightly larger text for better readability */ margin-top: 10px; } .promo-text .clip { background: var(--vp-home-hero-name-background); -webkit-background-clip: text; background-clip: text; color: var( --vp-home-hero-name-color ); /* Make the text color transparent to reveal background */ font-weight: bold; padding: 0 5px; } .promo-image { position: relative; /* To position the animated elements inside */ flex: 1; /* Reduce the image's width */ min-width: 150px; /* Ensures the image is smaller */ max-width: 250px; /* Set a max width for the image */ text-align: right; } .promo-image img { max-width: 100%; height: auto; position: relative; /* Image is above the animated icons */ z-index: 1; /* Ensure image is in front of the icons */ } /* X and O animation styles behind promo-image */ .animated-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; /* Ignore background interactions */ z-index: 0; /* Ensure the animated elements are behind the image */ } .xo { position: absolute; font-size: 1.5rem; } .xo-1, .xo-3 { color: var(--primary); /* X elements using --primary color */ } .xo-2, .xo-4 { color: var(--vp-c-text-1); /* O elements using --vp-c-text-1 color */ } /* Unique positions and animations for each XO element */ .xo-1 { top: 10%; left: 15%; animation: rotate-small 6s infinite linear, move-elliptical 10s infinite ease-in-out; } .xo-2 { top: 40%; left: 60%; animation: rotate-large 8s infinite linear, move-circular 12s infinite ease-in-out; } .xo-3 { top: 70%; left: 30%; animation: rotate-reverse 5s infinite linear, move-diagonal 14s infinite ease-in-out; } .xo-4 { top: 20%; left: 80%; animation: rotate-small-reverse 7s infinite linear, move-random 16s infinite ease-in-out; } /* Keyframe for self-rotation: Small */ @keyframes rotate-small { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Keyframe for self-rotation: Large */ @keyframes rotate-large { 0% { transform: rotate(0deg); } 100% { transform: rotate(720deg); } } /* Keyframe for reverse self-rotation */ @keyframes rotate-reverse { 0% { transform: rotate(0deg); } 100% { transform: rotate(-360deg); } } @keyframes rotate-small-reverse { 0% { transform: rotate(0deg); } 100% { transform: rotate(-720deg); } } /* Keyframe for elliptical movement */ @keyframes move-elliptical { 0% { transform: translate(0, 0); } 25% { transform: translate(60px, 40px); } 50% { transform: translate(120px, 0); } 75% { transform: translate(60px, -40px); } 100% { transform: translate(0, 0); } } /* Keyframe for circular movement */ @keyframes move-circular { 0% { transform: translate(0, 0); } 25% { transform: translate(50px, 50px); } 50% { transform: translate(100px, 0); } 75% { transform: translate(50px, -50px); } 100% { transform: translate(0, 0); } } /* Keyframe for diagonal movement */ @keyframes move-diagonal { 0% { transform: translate(0, 0); } 50% { transform: translate(100px, 100px); } 100% { transform: translate(0, 0); } } /* Keyframe for random, unpredictable movement */ @keyframes move-random { 0% { transform: translate(0, 0); } 20% { transform: translate(40px, -30px); } 40% { transform: translate(80px, 50px); } 60% { transform: translate(-50px, -40px); } 80% { transform: translate(30px, 70px); } 100% { transform: translate(0, 0); } } @media (max-width: 768px) { .promo { flex-direction: column; text-align: center; } .promo-image { margin-top: 20px; } }