/* This file is part of OpenCV project. It is subject to the license terms in the LICENSE file found in the top-level directory of this distribution and at http://opencv.org/license.html. Copyright (C) 2026, BigVision LLC, all rights reserved. Third party copyrights are property of their respective owners. */ :root, html[data-theme="light"], html[data-theme="dark"] { --pst-font-family-base: "Inter", "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --pst-font-family-heading: var(--pst-font-family-base); --pst-font-family-monospace: "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace; --pst-font-size-base: 16px; } html { font-size: 16px; } body, .bd-main { font-family: var(--pst-font-family-base); } h1 { font-size: 2.25rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.02em; } h2 { font-size: 1.5rem; font-weight: 600; line-height: 1.3; letter-spacing: -0.01em; margin-top: 2rem; } h3 { font-size: 1.125rem; font-weight: 600; line-height: 1.4; } .bd-content p, .bd-content li { line-height: 1.6; } .bd-content ol > li { margin-bottom: 1.1rem; padding-left: 0.25rem; } .bd-content ol ol { list-style-type: lower-alpha; } .bd-content ol ol ol { list-style-type: lower-roman; } .bd-content ol > li > p:first-child > strong:first-child::after { content: ":"; } .bd-content .toctree-wrapper > ul { list-style: disc; padding-left: 1.5rem; } .bd-content .toctree-wrapper li { list-style: disc; margin: 0.4rem 0; } .bd-content .toctree-wrapper { margin: 0.5rem 0 1.5rem; } .ocv-landing { max-width: 720px; } .ocv-landing h2:first-child { margin-top: 1rem; } .ocv-landing p { margin: 0.25rem 0 0.5rem; } html[data-theme="light"] { --pst-color-link: #0969da; --pst-color-link-hover: #0550ae; --opencv-accent: #003a6b; } html[data-theme="dark"] { --opencv-accent: #a4c9ff; } .bd-content a { text-decoration: none; color: #0969da; } html[data-theme="dark"] .bd-article-container a { color: #539bf5 !important; } .bd-content a:hover { text-decoration: underline; text-underline-offset: 0.22em; text-decoration-thickness: 1px; color: #0550ae; } /* Hover keeps the SAME #0969da — no separate hover-blue shade in dark * mode (per "no hover blue, everything at rest"). */ html[data-theme="dark"] .bd-article-container a:hover, html[data-theme="dark"] .bd-article-container a.reference:hover, html[data-theme="dark"] .bd-article-container a.reference.internal:hover, html[data-theme="dark"] .bd-article-container a.reference.external:hover, html[data-theme="dark"] .bd-article-container .toctree-wrapper a:hover, html[data-theme="dark"] .bd-article-container li > a:hover { color: #0969da !important; } .bd-content a > code, .bd-content code > a { color: inherit; } .bd-content a.opencv-enum-link, .bd-content code.opencv-enum-sig > a, .bd-content .opencv-enum-clickable a, .bd-content .opencv-enum-clickable a span, .bd-content code > a.opencv-include-link { color: var(--pst-color-link, #0969da) !important; text-decoration: none; border-radius: 2px; } .bd-content a.opencv-enum-link:hover, .bd-content code.opencv-enum-sig > a:hover, .bd-content .opencv-enum-clickable a:hover, .bd-content code > a.opencv-include-link:hover { color: var(--pst-color-link-hover, #0550ae) !important; text-decoration: none; /* blue only — no underline on hover */ } html[data-theme="dark"] .bd-content a.opencv-enum-link, html[data-theme="dark"] .bd-content code.opencv-enum-sig > a, html[data-theme="dark"] .bd-content .opencv-enum-clickable a, html[data-theme="dark"] .bd-content .opencv-enum-clickable a span, html[data-theme="dark"] .bd-content code > a.opencv-include-link { color: #539bf5 !important; } html[data-theme="dark"] .bd-content a.opencv-enum-link:hover, html[data-theme="dark"] .bd-content code.opencv-enum-sig > a:hover, html[data-theme="dark"] .bd-content .opencv-enum-clickable a:hover, html[data-theme="dark"] .bd-content code > a.opencv-include-link:hover { color: #6cb6ff !important; } html:not([data-theme="dark"]) .bd-content #typedef-documentation a { color: var(--pst-color-link, #0969da) !important; } html:not([data-theme="dark"]) .bd-content #function-documentation a { color: var(--pst-color-link, #0969da) !important; } .opencv-meta-table, .opencv-meta-table .pst-scrollable-table-container { margin: 0 !important; padding: 0 !important; } .opencv-meta-table table { margin-bottom: 0 !important; } .opencv-meta-table + p, .opencv-meta-table + ul, .opencv-meta-table + ol, div.opencv-meta-table + p, div.opencv-meta-table + ul, div.opencv-meta-table + ol { margin-top: 1.5rem !important; } .opencv-meta-table .pst-scrollable-table-container, .opencv-meta-table table, table.opencv-meta-table { width: auto !important; max-width: fit-content; margin-right: auto; margin-left: 0; border: 1px solid var(--pst-color-border); border-radius: 0.5rem; border-collapse: separate !important; border-spacing: 0 !important; overflow: hidden; } .opencv-meta-table table th, .opencv-meta-table table td, table.opencv-meta-table th, table.opencv-meta-table td { padding: 0.45rem 1rem; font-size: 0.92rem; border-bottom: 1px solid var(--pst-color-border); border-right: 1px solid var(--pst-color-border); vertical-align: middle; text-align: left !important; } .opencv-meta-table table td:first-child, table.opencv-meta-table td:first-child { background: rgba(0, 0, 0, 0.06); color: var(--pst-color-on-surface); font-weight: 600; white-space: nowrap; } .opencv-meta-table table tr:last-child td, table.opencv-meta-table tr:last-child td { border-bottom: none; } .opencv-meta-table table td:last-child, table.opencv-meta-table td:last-child { border-right: none; } .opencv-meta-table table thead, table.opencv-meta-table thead { display: none; } .opencv-meta-table td hr.cv-rowdiv { margin: 4px -1rem; border: none; border-top: 1px solid var(--pst-color-border); opacity: 1; } html[data-theme="dark"] .opencv-meta-table table, html[data-theme="dark"] table.opencv-meta-table { border: 1px solid #444c56 !important; border-radius: 0.5rem !important; overflow: hidden !important; border-collapse: separate !important; border-spacing: 0 !important; } html[data-theme="dark"] .opencv-meta-table table th, html[data-theme="dark"] .opencv-meta-table table td, html[data-theme="dark"] table.opencv-meta-table th, html[data-theme="dark"] table.opencv-meta-table td { border-bottom: 1px solid #444c56 !important; border-right: 1px solid #444c56 !important; color: #cdd9e5 !important; background-color: #22272e !important; } html[data-theme="dark"] .opencv-meta-table table td:first-child, html[data-theme="dark"] table.opencv-meta-table td:first-child { background: #2d333b !important; font-weight: 600 !important; color: #cdd9e5 !important; } html[data-theme="dark"] .opencv-meta-table table tr:last-child td, html[data-theme="dark"] table.opencv-meta-table tr:last-child td { border-bottom: none !important; } html[data-theme="dark"] .opencv-meta-table table td:last-child, html[data-theme="dark"] table.opencv-meta-table td:last-child { border-right: none !important; } .bd-content figure figcaption, .bd-content figure figcaption p, .bd-content figure figcaption .caption-text { font-weight: 700 !important; font-style: normal !important; } .bd-content figure, .bd-content p img, .bd-content li img { margin-top: 1rem; margin-bottom: 1rem; } .bd-content figure { margin-left: auto; margin-right: auto; text-align: center; } .bd-content p:has(> img:only-child) { text-align: center; } .bd-content p > img { display: inline-block; } .opencv-youtube { position: relative; width: 100%; max-width: 720px; margin: 1.5rem auto; aspect-ratio: 16 / 9; border-radius: 0.5rem; overflow: hidden; box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12); } .opencv-youtube iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; } .bd-content table { border-collapse: collapse !important; width: 100%; margin-bottom: 1rem; border: 1px solid var(--pst-color-border) !important; } .bd-content table th { border: 1px solid var(--pst-color-border) !important; padding: 0.65rem 1rem !important; background: var(--pst-color-surface) !important; font-size: 0.8rem !important; text-transform: uppercase !important; letter-spacing: 0.07em !important; color: var(--pst-color-muted) !important; font-weight: 600 !important; } .bd-content table td { border: 1px solid var(--pst-color-border) !important; padding: 0.65rem 1rem !important; vertical-align: middle !important; } .bd-content table tbody tr:hover td { background: var(--pst-color-surface) !important; } .bd-header { border-bottom: 1px solid var(--pst-color-border); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } .bd-header .navbar { min-height: 3.25rem; padding-top: 0.25rem; padding-bottom: 0.25rem; } .bd-header .navbar-header-items__start { gap: 15px; align-items: center; padding-left: 3rem; } /* OpenCV SVG logo: scale the vector to the official proportions. */ .bd-header img.logo__image { height: 46px; width: auto; max-width: 50px; object-fit: contain; vertical-align: middle; } .navbar-brand .logo__title { font-weight: 600; font-size: 1.45rem; color: inherit; } /* "OpenCV" wordmark + "Open Source Computer Vision" subtitle stacked in a column to the right of the SVG mark (see _templates/navbar-logo.html). */ .navbar-brand.logo .logo__textwrap { display: flex; flex-direction: column; justify-content: center; line-height: 1.1; } .navbar-brand.logo .logo__textwrap .logo__title { margin: 0; } .navbar-brand.logo .logo__subtitle { margin: 0; font-size: 0.72rem; font-weight: 400; color: var(--pst-color-text-muted); white-space: nowrap; } .version-badge { display: inline-block; padding: 0.1rem 0.5rem; margin-left: 0.25rem; font-size: 0.72rem; font-weight: 600; color: var(--pst-color-text-muted); background: var(--pst-color-surface); border: 1px solid var(--pst-color-border); border-radius: 0.35rem; line-height: 1.4; white-space: nowrap; letter-spacing: 0.04em; } .bd-header .navbar-nav { gap: 0.25rem; } .bd-header .navbar-nav > li > a { font-size: 0.78rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.06em; color: var(--pst-color-text-muted); padding: 0.4rem 0.75rem !important; border-radius: 0.35rem; transition: color 120ms ease, background 120ms ease; } .bd-header .navbar-nav > li > a:hover { color: var(--opencv-accent); background: var(--pst-color-surface); text-decoration: none; } .bd-header .navbar-nav > li > a.active, .bd-header .navbar-nav > li > a.current { color: var(--opencv-accent); font-weight: 600; } .bd-header .navbar-persistent--mobile, .bd-header .navbar-persistent--container, .bd-header button.theme-switch-button, .bd-header .navbar-icon-links a.nav-link { color: var(--pst-color-text-muted); } .bd-header button.theme-switch-button:hover, .bd-header .navbar-icon-links a.nav-link:hover { color: var(--opencv-accent); } /* --- Version switcher dropdown (navbar) -------------------------------- * * Sits in the `navbar_start` slot right after `navbar-logo`. The custom * template `_templates/opencv-version-switcher.html` renders a plain * `