| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| /** |
| * Any CSS included here will be global. The classic template |
| * bundles Infima by default. Infima is a CSS framework designed to |
| * work well for content-centric websites. |
| */ |
| |
| /* You can override the default Infima variables here. */ |
| @font-face { |
| font-family: 'Roboto'; |
| src: url('../fonts/Roboto-Regular.woff2') format('woff2'), |
| url('../fonts/Roboto-Regular.woff') format('woff'); |
| font-weight: 400; |
| font-style: normal; |
| } |
| |
| @font-face { |
| font-family: 'Roboto'; |
| src: url('../fonts/Roboto-Bold.woff2') format('woff2'), |
| url('../fonts/Roboto-Bold.woff') format('woff'); |
| font-weight: 700; |
| font-style: bold; |
| } |
| |
| /* Hiding ugly linkout icons */ |
| ul.dropdown__menu svg { |
| display: none; |
| } |
| |
| /* Consistent dropdown styling for navbar */ |
| .navbar__item.dropdown .dropdown__menu { |
| background-color: white; |
| border: 1px solid rgba(0, 0, 0, 0.1); |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); |
| } |
| |
| .navbar__item.dropdown .dropdown__link { |
| color: #1c1e21 !important; |
| background-color: transparent !important; |
| border-radius: 0 !important; |
| padding: 0.5rem 1rem !important; |
| display: block !important; |
| } |
| |
| .navbar__item.dropdown .dropdown__link:hover { |
| background-color: #f5f5f5 !important; |
| color: #1c1e21 !important; |
| text-decoration: none !important; |
| } |
| |
| /* Style active doc links in dropdowns with primary color instead of blue box */ |
| .navbar__item.dropdown .dropdown__link--active { |
| background-color: transparent !important; |
| color: var(--ifm-color-primary) !important; |
| font-weight: 600; |
| } |
| |
| .navbar__item.dropdown .dropdown__link--active:hover { |
| background-color: #f5f5f5 !important; |
| } |
| |
| /* Active section indicator — full-height underline */ |
| .navbar { |
| padding-top: 0 !important; |
| padding-bottom: 0 !important; |
| } |
| |
| @media (min-width: 997px) { |
| .navbar__item.dropdown:has(> .navbar__link) { |
| display: flex; |
| height: 100%; |
| align-items: center; |
| padding-bottom: 0 !important; |
| } |
| } |
| |
| .navbar__item.dropdown:has(> .navbar__link.active) { |
| box-shadow: inset 0 -2px 0 var(--ifm-color-primary); |
| } |
| |
| /* Dark mode support */ |
| [data-theme='dark'] .navbar__item.dropdown .dropdown__menu { |
| background-color: #242526; |
| border: 1px solid rgba(255, 255, 255, 0.1); |
| } |
| |
| [data-theme='dark'] .navbar__item.dropdown .dropdown__link { |
| color: #f5f6f7 !important; |
| } |
| |
| [data-theme='dark'] .navbar__item.dropdown .dropdown__link:hover { |
| background-color: #3a3b3c !important; |
| color: #f5f6f7 !important; |
| } |
| |
| [data-theme='dark'] .navbar__item.dropdown .dropdown__link--active { |
| color: #f5f6f7 !important; |
| } |
| |
| [data-theme='dark'] .navbar__item.dropdown .dropdown__link--active:hover { |
| background-color: #3a3b3c !important; |
| } |
| |
| :root { |
| --ifm-color-primary: #20a7c9; |
| --ifm-color-primary-dark: #1985a0; |
| --ifm-color-primary-darker: #t; |
| --ifm-color-primary-darkest: #ffffff; |
| --ifm-color-primary-light: #79cade; |
| --ifm-color-primary-lighter: #a5dbe9; |
| --ifm-color-primary-lightest: #d2edf4; |
| --ifm-font-base-color: #484848; |
| --ifm-font-base-color-inverse: #ffffff; |
| --ifm-code-font-size: 95%; |
| --ifm-menu-link-padding-vertical: 12px; |
| --doc-sidebar-width: 350px !important; |
| --ifm-font-family-base: Roboto; |
| --ifm-footer-background-color: #173036; |
| --ifm-footer-color: #87939a; |
| --ifm-off-section-background: #fbfbfb; |
| --ifm-border-color: #ededed; |
| --ifm-primary-text: #484848; |
| --ifm-secondary-text: #5f5f5f; |
| --ifm-code-padding-vertical: 3px; |
| --ifm-code-padding-horizontal: 5px; |
| } |
| |
| /* Database logo images in intro/README */ |
| .database-logo { |
| object-fit: contain; |
| } |
| |
| [data-theme='dark'] { |
| --ifm-color-primary: #25c2a0; |
| --ifm-color-primary-dark: #21af90; |
| --ifm-color-primary-darker: #1fa588; |
| --ifm-color-primary-darkest: #1a8870; |
| --ifm-color-primary-light: #29d5b0; |
| --ifm-color-primary-lighter: #32d8b4; |
| --ifm-color-primary-lightest: #4fddbf; |
| --ifm-font-base-color: #bbb5ac; |
| --ifm-border-color: #797063; |
| } |
| |
| /* Custom "resources" admonition for additional resources/links */ |
| .alert--resources { |
| --ifm-alert-background-color: #f8f9fa; |
| --ifm-alert-border-color: #6c757d; |
| --ifm-alert-foreground-color: #495057; |
| background-color: var(--ifm-alert-background-color); |
| border-left: 5px solid var(--ifm-alert-border-color); |
| } |
| |
| .alert--resources .admonition-heading h5 { |
| color: var(--ifm-alert-foreground-color); |
| } |
| |
| .alert--resources .admonition-icon svg { |
| fill: var(--ifm-alert-foreground-color); |
| stroke: var(--ifm-alert-foreground-color); |
| } |
| |
| /* Resources admonition - dark mode */ |
| [data-theme='dark'] .alert--resources { |
| --ifm-alert-background-color: #2d3748; |
| --ifm-alert-border-color: #718096; |
| --ifm-alert-foreground-color: #e2e8f0; |
| } |
| |
| /* Style links within resources admonition */ |
| .alert--resources a { |
| color: var(--ifm-link-color); |
| text-decoration: none; |
| } |
| |
| .alert--resources a:hover { |
| text-decoration: underline; |
| } |
| |
| [data-theme='dark'] .alert--resources a { |
| color: var(--ifm-color-primary-light); |
| } |
| |
| /* Fix Ant Design Collapse arrow visibility in dark mode */ |
| [data-theme='dark'] .ant-collapse-expand-icon { |
| color: var(--ifm-font-base-color); |
| } |
| |
| [data-theme='dark'] .ant-collapse-header { |
| color: var(--ifm-font-base-color); |
| } |
| |
| /* Hide the non-functional "Send API Request" button and Response block in API docs */ |
| /* The interactive API testing doesn't work due to CORS restrictions */ |
| .openapi-explorer__request-btn { |
| display: none !important; |
| } |
| |
| .openapi-explorer__response-container { |
| display: none !important; |
| } |
| |
| /* API Method Badge Colors - Swagger-style color coding */ |
| /* These override Infima badge classes used by docusaurus-openapi-docs */ |
| |
| /* GET - Blue (badge--primary) */ |
| .openapi__method-endpoint .badge--primary { |
| background-color: #61affe !important; |
| border-color: #61affe !important; |
| } |
| |
| /* POST - Green (badge--success) */ |
| .openapi__method-endpoint .badge--success { |
| background-color: #49cc90 !important; |
| border-color: #49cc90 !important; |
| } |
| |
| /* PUT - Info/Cyan -> Orange (badge--info) */ |
| .openapi__method-endpoint .badge--info { |
| background-color: #fca130 !important; |
| border-color: #fca130 !important; |
| } |
| |
| /* PATCH - Warning/Yellow -> Teal (badge--warning) */ |
| .openapi__method-endpoint .badge--warning { |
| background-color: #50e3c2 !important; |
| border-color: #50e3c2 !important; |
| color: #1b1b1d !important; |
| } |
| |
| /* DELETE - Red (badge--danger) */ |
| .openapi__method-endpoint .badge--danger { |
| background-color: #f93e3e !important; |
| border-color: #f93e3e !important; |
| } |
| |
| /* Sidebar method badges - colored dots before endpoint names */ |
| /* The method classes (get, post, etc.) are on the <li> (menu__list-item), |
| so we target the <a> (menu__link) inside using descendant selector */ |
| .menu__list-item.api-method > .menu__link::before { |
| content: ''; |
| display: inline-block; |
| width: 8px; |
| height: 8px; |
| border-radius: 50%; |
| margin-right: 8px; |
| flex-shrink: 0; |
| } |
| |
| .menu__list-item.get.api-method > .menu__link::before { |
| background-color: #61affe; |
| } |
| |
| .menu__list-item.post.api-method > .menu__link::before { |
| background-color: #49cc90; |
| } |
| |
| .menu__list-item.put.api-method > .menu__link::before { |
| background-color: #fca130; |
| } |
| |
| .menu__list-item.patch.api-method > .menu__link::before { |
| background-color: #50e3c2; |
| } |
| |
| .menu__list-item.delete.api-method > .menu__link::before { |
| background-color: #f93e3e; |
| } |
| |
| /* ============================================ |
| Component Example Isolation |
| Prevents Docusaurus/Infima styles from bleeding into Superset components |
| ============================================ */ |
| |
| /* Reset link styles inside component examples */ |
| .storybook-example a { |
| color: inherit; |
| text-decoration: none; |
| font-weight: inherit; |
| line-height: inherit; |
| vertical-align: inherit; |
| } |
| |
| .storybook-example a:hover { |
| color: inherit; |
| text-decoration: none; |
| } |
| |
| /* Reset list styles */ |
| .storybook-example ul, |
| .storybook-example ol { |
| margin: 0; |
| padding: 0; |
| list-style: none; |
| } |
| |
| /* Override Infima's .markdown li + li margin */ |
| .storybook-example li + li, |
| .markdown .storybook-example li + li { |
| margin-top: 0; |
| } |
| |
| /* Reset heading styles */ |
| .storybook-example h1, |
| .storybook-example h2, |
| .storybook-example h3, |
| .storybook-example h4, |
| .storybook-example h5, |
| .storybook-example h6 { |
| margin: 0; |
| font-size: inherit; |
| font-weight: inherit; |
| } |
| |
| /* Reset paragraph margins */ |
| .storybook-example p { |
| margin: 0; |
| } |
| |
| /* Reset table margins - Infima applies margin-bottom via --ifm-spacing-vertical */ |
| .storybook-example table { |
| margin: 0; |
| display: table; |
| } |
| |
| /* Ensure Ant Design components render correctly */ |
| .storybook-example .ant-breadcrumb { |
| line-height: 1.5715; |
| } |
| |
| .storybook-example .ant-breadcrumb a { |
| color: rgba(0, 0, 0, 0.45); |
| } |
| |
| .storybook-example .ant-breadcrumb a:hover { |
| color: rgba(0, 0, 0, 0.85); |
| } |
| |
| /* ============================================ |
| Ant Design Popup/Portal Isolation |
| These components render outside .storybook-example via portals |
| ============================================ */ |
| |
| /* DatePicker, TimePicker dropdown panels - reset Infima table styles |
| Using doubled selectors for higher specificity than Infima's defaults */ |
| .ant-picker-dropdown.ant-picker-dropdown table, |
| .ant-picker-dropdown.ant-picker-dropdown thead, |
| .ant-picker-dropdown.ant-picker-dropdown tbody, |
| .ant-picker-dropdown.ant-picker-dropdown tr, |
| .ant-picker-dropdown.ant-picker-dropdown th, |
| .ant-picker-dropdown.ant-picker-dropdown td { |
| border: none; |
| background: none; |
| background-color: transparent; |
| } |
| |
| .ant-picker-dropdown.ant-picker-dropdown table { |
| border-collapse: separate; |
| border-spacing: 0; |
| width: 100%; |
| display: table; |
| } |
| |
| /* Override Infima's zebra striping with higher specificity */ |
| .ant-picker-dropdown.ant-picker-dropdown tr:nth-child(2n), |
| .ant-picker-dropdown.ant-picker-dropdown tbody tr:nth-child(2n) { |
| background: none; |
| background-color: transparent; |
| } |
| |
| .ant-picker-dropdown.ant-picker-dropdown th, |
| .ant-picker-dropdown.ant-picker-dropdown td { |
| padding: 0; |
| } |
| |
| /* Select, Dropdown, Popover portals */ |
| .ant-select-dropdown.ant-select-dropdown table, |
| .ant-select-dropdown.ant-select-dropdown thead, |
| .ant-select-dropdown.ant-select-dropdown tbody, |
| .ant-select-dropdown.ant-select-dropdown tr, |
| .ant-select-dropdown.ant-select-dropdown th, |
| .ant-select-dropdown.ant-select-dropdown td, |
| .ant-dropdown.ant-dropdown table, |
| .ant-dropdown.ant-dropdown thead, |
| .ant-dropdown.ant-dropdown tbody, |
| .ant-dropdown.ant-dropdown tr, |
| .ant-dropdown.ant-dropdown th, |
| .ant-dropdown.ant-dropdown td, |
| .ant-popover.ant-popover table, |
| .ant-popover.ant-popover thead, |
| .ant-popover.ant-popover tbody, |
| .ant-popover.ant-popover tr, |
| .ant-popover.ant-popover th, |
| .ant-popover.ant-popover td { |
| border: none; |
| background: none; |
| background-color: transparent; |
| } |
| |
| .ant-select-dropdown.ant-select-dropdown tr:nth-child(2n), |
| .ant-dropdown.ant-dropdown tr:nth-child(2n), |
| .ant-popover.ant-popover tr:nth-child(2n) { |
| background: none; |
| background-color: transparent; |
| } |
| |
| /* Modal portals */ |
| .ant-modal.ant-modal table, |
| .ant-modal.ant-modal thead, |
| .ant-modal.ant-modal tbody, |
| .ant-modal.ant-modal tr, |
| .ant-modal.ant-modal th, |
| .ant-modal.ant-modal td { |
| border: none; |
| background: none; |
| background-color: transparent; |
| } |
| |
| .ant-modal.ant-modal tr:nth-child(2n) { |
| background: none; |
| background-color: transparent; |
| } |
| |
| /* ============================================ |
| Live Code Editor Height Limits |
| Prevents tall code blocks from dominating the page |
| ============================================ */ |
| |
| /* Limit the code editor height and make it scrollable */ |
| /* Target multiple possible class names used by Docusaurus/react-live */ |
| .playgroundEditor, |
| [class*="playgroundEditor"], |
| .live-editor, |
| [class*="liveEditor"] { |
| max-height: 350px !important; |
| overflow: auto !important; |
| } |
| |
| /* The actual textarea/code area inside the editor */ |
| .playgroundEditor textarea, |
| .playgroundEditor pre, |
| [class*="playgroundEditor"] textarea, |
| [class*="playgroundEditor"] pre { |
| max-height: 350px !important; |
| overflow: auto !important; |
| } |
| |
| /* Also limit the preview area for consistency */ |
| .playgroundPreview, |
| [class*="playgroundPreview"] { |
| max-height: 400px; |
| overflow: auto; |
| } |
| |
| /* Hide sidebar items with sidebar_class_name: hidden in frontmatter */ |
| .menu__list-item.hidden { |
| display: none; |
| } |