/*
 * 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.
 */

/* ─── Google Fonts ─────────────────────────────────────────────────── */
/* Fonts are loaded via <link> in _templates/layout.html using the
   print→all swap pattern so they don't block first paint. The system
   font stack in --comet-font / --comet-mono is the fallback while the
   web fonts are still loading. */

/* ─── Shared tokens ────────────────────────────────────────────────── */
:root {
  /* Brand orange — SINGLE SOURCE OF TRUTH.
     --comet-accent-rgb holds the raw channels so every translucent tint
     (fills, focus rings, link underlines, glows) is composed with
     rgba(var(--comet-accent-rgb), <alpha>) instead of re-typing the hex.
     Change the brand color here and every orange on the site follows. */
  --comet-accent-rgb:  232, 101, 10;
  --comet-accent:      rgb(var(--comet-accent-rgb));   /* brand orange — buttons, backgrounds, large headings */
  --comet-accent-lite: #f07830;                        /* hover variant */
  --comet-accent-text: #a84808;                        /* AA-passing variant for small text on light bg (~5.9:1) — default */
  --comet-accent-dim:       rgba(var(--comet-accent-rgb), 0.10);  /* translucent fill */
  --comet-accent-underline: rgba(var(--comet-accent-rgb), 0.30);  /* link underline rest state */
  --comet-accent-ring:      rgba(var(--comet-accent-rgb), 0.18);  /* focus ring */
  --comet-accent-tint:      rgba(var(--comet-accent-rgb), 0.05);  /* faint hover wash */
  --comet-accent-glow:      rgba(var(--comet-accent-rgb), 0.08);  /* card hover shadow */

  /* Surfaces that aren't covered by PST's palette. */
  --comet-figure-bg:   #ffffff;   /* charts/diagrams assume a white canvas */

  --comet-radius:      6px;
  --comet-font:        'Inter', system-ui, -apple-system, sans-serif;
  --comet-mono:        'JetBrains Mono', 'Fira Code', monospace;
  --comet-sidebar-w:   280px;

  /* ── Code & terminal palette ──────────────────────────────────────
     Code blocks and the hero terminal use a DARK background in BOTH the
     light and dark site themes, so their syntax colors must read well on
     near-black regardless of mode. We define them once here and share
     them between the Pygments-rendered blocks (.highlight) and the
     hand-built hero terminal (.comet-terminal) so the two never drift.
     Every color below clears WCAG AA (≥ 4.5:1) on --comet-code-bg. */
  --comet-code-bg:       #0e0e0e;   /* code block surface */
  --comet-code-fg:       #e2e8f0;   /* default text + any untyped token */
  --comet-code-keyword:  #c792ea;   /* keywords, storage, declarations */
  --comet-code-string:   #c3e88d;   /* string + char literals */
  --comet-code-comment:  #8a98a5;   /* comments — was #546e7a (too dim) */
  --comet-code-func:     #82aaff;   /* function / builtin names */
  --comet-code-number:   #f78c6c;   /* numeric literals */
  --comet-code-operator: #89ddff;   /* operators, punctuation accents */
  --comet-code-class:    #ffcb6b;   /* class / type names */
  --comet-code-meta:     #9fb0c3;   /* console prompt, output, traceback */
  --comet-code-prompt:   #f07830;   /* terminal "$" / "scala>" prompt */

  /* Hero terminal chrome — a faintly blue near-black so the framed
     "terminal app" reads as distinct from inline code blocks. */
  --comet-terminal-bg:     #0d0f12;
  --comet-terminal-bar:    #15181c;
  --comet-terminal-border: #1f242b;
}

/* In dark mode the lighter orange has plenty of contrast on near-black,
   so use it as the text variant instead of the darkened light-mode one. */
html[data-theme="dark"] {
  --comet-accent-text: #f07830;                       /* 5.1:1 on #0a0a0a */
  --comet-surface-sunken: #0e0e0e;                    /* alternating-section bg, dark mode only */

  /* In dark mode the page background is near-black (#0a0a0a), so the
     default code surface (#0e0e0e) sits almost flush with the page and
     the terminal "disappears." Lift it to a brighter shade here so the
     code block reads as a raised surface — classic dark-mode elevation.
     The token also feeds the hero terminal so the lift is consistent. */
  --comet-code-bg:     #1c1c1c;                       /* raised code surface */
  --comet-terminal-bg: #1c1c1c;
}

/* ─── PST overrides — LIGHT ────────────────────────────────────────── */
html[data-theme="light"] {
  --pst-color-primary:            #e8650a;
  --pst-color-secondary:          #e8650a;
  --pst-color-background:         #ffffff;
  --pst-color-on-background:      #fafafa;
  --pst-color-surface:            #f5f5f6;
  --pst-color-on-surface:         #1a1a1a;
  --pst-color-text-base:          #333333;
  --pst-color-text-muted:         #666666;
  --pst-color-border:             #e2e2e6;
  --pst-color-border-muted:       #ebebee;
  --pst-color-heading:            #111111;
  --pst-color-inline-code:        #a84808;
  --pst-color-inline-code-links:  #a84808;
  --pst-color-link:               #a84808;
  --pst-color-link-hover:         #f07830;
  --pst-font-family-base:         var(--comet-font);
  --pst-font-family-monospace:    var(--comet-mono);
  --pst-font-size-base:           0.95rem;
  --pst-content-max-width:        100%;
}

/* ─── PST overrides — DARK ─────────────────────────────────────────── */
html[data-theme="dark"] {
  --pst-color-primary:            #e8650a;
  --pst-color-secondary:          #f07830;
  --pst-color-background:         #0a0a0a;
  --pst-color-on-background:      #0f0f0f;
  --pst-color-surface:            #141414;
  --pst-color-on-surface:         #f0f0f0;
  --pst-color-text-base:          #c8c8c8;
  --pst-color-text-muted:         #888888;
  --pst-color-border:             #282828;
  --pst-color-border-muted:       #1e1e1e;
  --pst-color-heading:            #f0f0f0;
  --pst-color-inline-code:        #f07830;
  --pst-color-inline-code-links:  #f07830;
  --pst-color-link:               #e8650a;
  --pst-color-link-hover:         #f07830;
  --pst-color-shadow:             rgba(0, 0, 0, 0.5);
  --pst-color-table:              #c8c8c8;
  --pst-color-table-inner-border: #282828;
  --pst-color-table-outer-border: #282828;
  --pst-color-table-heading-bg:   #141414;
  --pst-font-family-base:         var(--comet-font);
  --pst-font-family-monospace:    var(--comet-mono);
  --pst-font-size-base:           0.95rem;
  --pst-content-max-width:        100%;
}

/* ─── Global base ──────────────────────────────────────────────────── */
body {
  font-family: var(--comet-font) !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ─── TOP NAVBAR ───────────────────────────────────────────────────── */
.bd-header.navbar,
header.bd-header {
  min-height: 56px !important;
  padding: 0 24px !important;
  box-shadow: none !important;
  border-bottom: 1px solid var(--pst-color-border) !important;
}

html[data-theme="dark"] .bd-header.navbar {
  background: rgba(10, 10, 10, 0.96) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

html[data-theme="light"] .bd-header.navbar {
  background: rgba(255, 255, 255, 0.96) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.bd-header__inner.bd-page-width {
  padding: 0 !important;
  max-width: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
}

/* Logo */
.navbar-brand.logo {
  padding: 0 !important;
  margin-right: 0 !important;
}

.bd-header .navbar-brand img.logo__image {
  height: 38px !important;
  width: auto !important;
  margin-right: 0 !important;
  vertical-align: middle;
}

/* ── Navbar center: nav links centered ── */
.col-lg-3.navbar-header-items__start {
  flex: 0 0 auto !important;
  width: auto !important;
}

.col-lg-9.navbar-header-items {
  flex: 1 !important;
  display: flex !important;
  justify-content: center !important;
}

.navbar-header-items__center {
  display: flex !important;
  justify-content: center !important;
  flex: 1 !important;
}

.navbar-header-items__end {
  display: flex !important;
  align-items: center !important;
  gap: 4px !important;
  margin-left: auto !important;
}

/* Top nav links */
.bd-navbar-elements.navbar-nav {
  justify-content: center !important;
  gap: 4px !important;
}

.bd-navbar-elements.navbar-nav .nav-item .nav-link {
  font-size: 14px !important;
  font-weight: 500 !important;
  padding: 6px 16px !important;
  border-radius: 0 !important;
  color: var(--pst-color-text-muted) !important;
  transition: color 140ms ease !important;
  border: none !important;
  border-bottom: 2px solid transparent !important;
  background: transparent !important;
  position: relative !important;
}

.bd-navbar-elements.navbar-nav .nav-item .nav-link:hover {
  color: var(--pst-color-on-surface) !important;
  background: transparent !important;
}

/* Active tab: orange underline — only .active (single tab), not .current (matches ancestors too) */
.bd-navbar-elements.navbar-nav .nav-item.active > .nav-link,
.bd-navbar-elements.navbar-nav .nav-item .nav-link[aria-current="page"] {
  color: var(--pst-color-on-surface) !important;
  background: transparent !important;
  border-bottom-color: var(--comet-accent) !important;
  font-weight: 600 !important;
}

/* ── Hide search from navbar — it lives in the sidebar now ── */
.navbar-persistent--container,
.navbar-item:has(.search-button-field),
.navbar-persistent--mobile {
  display: none !important;
}

/* Theme switcher & icon buttons */
.pst-navbar-icon,
.theme-switch-button {
  padding: 5px 8px !important;
  border-radius: 5px !important;
  color: var(--pst-color-text-muted) !important;
  transition: color 120ms ease, background 120ms ease !important;
  border: none !important;
  background: transparent !important;
  box-shadow: none !important;
}

.pst-navbar-icon:hover,
.theme-switch-button:hover {
  color: var(--pst-color-on-surface) !important;
  background: var(--pst-color-surface) !important;
}

/* ─── SIDEBAR ──────────────────────────────────────────────────────── */
.bd-sidebar-primary.bd-sidebar {
  width: var(--comet-sidebar-w) !important;
  flex: 0 0 var(--comet-sidebar-w) !important;
  border-right: 1px solid var(--pst-color-border) !important;
  box-shadow: none !important;
  padding-top: 0 !important;
}

html[data-theme="dark"] .bd-sidebar-primary.bd-sidebar {
  background: #0d0d0d !important;
}

html[data-theme="light"] .bd-sidebar-primary.bd-sidebar {
  background: #fafafa !important;
}

/* ── Sidebar search field — pill style matching screenshot ── */
.sidebar-primary-items__start {
  padding: 0 !important;
}

.bd-sidebar .bd-search,
.sidebar-primary__section .bd-search {
  padding: 14px 14px !important;
  border-bottom: 1px solid var(--pst-color-border) !important;
  margin: 0 !important;
  position: relative !important;
  display: flex !important;
  align-items: center !important;
}

/* The pill container — make the whole form the pill */
.bd-sidebar form.bd-search {
  border-radius: 24px !important;
  border: 1px solid var(--pst-color-border) !important;
  background: var(--pst-color-surface) !important;
  padding: 0 14px !important;
  margin: 12px 14px !important;
  height: 38px !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  transition: border-color 140ms ease !important;
}

html[data-theme="dark"] .bd-sidebar form.bd-search {
  background: #1a1a1a !important;
  border-color: #2e2e2e !important;
}

.bd-sidebar form.bd-search:focus-within {
  border-color: var(--comet-accent) !important;
  outline: none !important;
  box-shadow: 0 0 0 3px var(--comet-accent-ring) !important;
}

/* Kill default browser/Bootstrap focus rings on the form + input */
.bd-sidebar form.bd-search,
.bd-sidebar form.bd-search:focus,
.bd-sidebar form.bd-search *:focus,
.bd-sidebar form.bd-search *:focus-visible {
  outline: none !important;
}

/* Icon */
.bd-sidebar .bd-search i.fa-magnifying-glass,
.bd-sidebar .bd-search .fa-search {
  color: var(--pst-color-text-muted) !important;
  font-size: 13px !important;
  flex-shrink: 0 !important;
}

/* Input — no border, transparent, fills space */
.bd-sidebar .bd-search .form-control,
.sidebar-primary__section input[type="search"] {
  font-family: var(--comet-font) !important;
  font-size: 13.5px !important;
  border: none !important;
  background: transparent !important;
  color: var(--pst-color-on-surface) !important;
  padding: 0 !important;
  box-shadow: none !important;
  flex: 1 !important;
  min-width: 0 !important;
  outline: none !important;
}

.bd-sidebar .bd-search .form-control:focus {
  box-shadow: none !important;
  outline: none !important;
}

.bd-sidebar .bd-search .form-control::placeholder {
  color: var(--pst-color-text-muted) !important;
}

/* ⌘K shortcut badge */
.bd-sidebar .bd-search .search-button__kbd-shortcut {
  display: flex !important;
  align-items: center !important;
  gap: 2px !important;
  flex-shrink: 0 !important;
}

.bd-sidebar .bd-search .search-button__kbd-shortcut kbd {
  font-family: var(--comet-font) !important;
  font-size: 11px !important;
  padding: 1px 5px !important;
  border-radius: 4px !important;
  border: 1px solid var(--pst-color-border) !important;
  color: var(--pst-color-text-muted) !important;
  background: transparent !important;
  line-height: 1.5 !important;
}

/* Show ⌘ on Mac; hide "Ctrl+" text visually — use CSS content swap */
.bd-sidebar .kbd-shortcut__modifier {
  font-size: 11px !important;
}

/* ── Sidebar nav section captions (group labels) — hidden since INDEX removed ── */
.bd-links .caption,
.bd-toc-item > p.caption {
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--pst-color-text-muted) !important;
  padding: 18px 16px 6px !important;
  margin: 0 !important;
}

.bd-toc-item:first-child > p.caption {
  padding-top: 12px !important;
}

/* Per-version caption groups nested inside a version's own accordion on
   every User Guide page (see user_guide_sidebar_html in conf.py). They sit
   inside a <details>, which the top-level "User Guide" caption never does,
   so this selector reaches only them. Indent to align under that version's
   link, de-emphasize relative to the top-level caption, and add the same
   hairline-divider treatment already used above for the version groups
   under "Older Versions" — makes the IA snap visually instead of relying
   on a 1px font-size delta alone. */
.bd-links details > p.caption {
  padding-left: 32px !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  margin-top: 14px !important;
  padding-top: 14px !important;
  border-top: 1px solid var(--pst-color-border-muted) !important;
}

.bd-links details > p.caption:first-child {
  margin-top: 4px !important;
  padding-top: 4px !important;
  border-top: none !important;
}

/* ── Nav items ── */
.bd-links ul {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

.bd-links li a.reference {
  display: block !important;
  font-size: 14px !important;
  font-weight: 400 !important;
  padding: 10px 16px 10px 20px !important;
  border-left: 2px solid transparent !important;
  color: var(--pst-color-text-muted) !important;
  text-decoration: none !important;
  transition: color 120ms ease, background 120ms ease, border-color 120ms ease !important;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.5 !important;
}

/* Spacing between sibling nav items — adds vertical rhythm */
.bd-links li + li {
  margin-top: 2px !important;
}

/* Bigger gap above each top-level section */
.bd-links .toctree-l1 {
  margin-top: 16px !important;
}

.bd-links .toctree-l1:first-child {
  margin-top: 8px !important;
}

/* Within a current section, give the version groups (l2 with children)
   a hairline divider above + breathing room — makes the IA snap visually */
.bd-links .toctree-l1.current > ul > .toctree-l2:has(> ul) {
  margin-top: 14px !important;
  padding-top: 14px !important;
  border-top: 1px solid var(--pst-color-border-muted) !important;
}

.bd-links .toctree-l1.current > ul > .toctree-l2:has(> ul):first-child {
  margin-top: 4px !important;
  padding-top: 4px !important;
  border-top: none !important;
}

/* Leaf l2 items (no children) just get a small gap, no rule */
.bd-links .toctree-l1.current > ul > .toctree-l2:not(:has(> ul)) {
  margin-top: 6px !important;
}

.bd-links .toctree-l1.current > ul > .toctree-l2:not(:has(> ul)):first-child {
  margin-top: 4px !important;
}

/* Sub-items (the actual page links) sit closer together for a tight cluster */
.bd-links .toctree-l3 + .toctree-l3 {
  margin-top: 0 !important;
}

.bd-links li a.reference:hover {
  color: var(--pst-color-on-surface) !important;
  background: var(--pst-color-surface) !important;
  border-left-color: var(--pst-color-border) !important;
}

/* ── Section-scoped sidebar ─────────────────────────────────────────── */
/* Section scoping is now handled at the template level by docs-sidebar.html
   (generate_toctree_html with startdepth=1 picks the section's own toctree
   as the root). No CSS hiding needed — the rendered tree already contains
   only the current section's contents. The full tree stays stable as the
   user clicks around within a section; only the .current highlight moves. */

/* L1 items (the section's direct children — e.g. 0.16.x, Dev Snapshot,
   Older Versions inside User Guide) carry slightly stronger weight when
   they're containers, to read as group headers. */
.bd-links:not(.comet-filtering) .toctree-l1:has(> ul) > a.reference {
  font-weight: 500 !important;
  color: var(--pst-color-on-surface) !important;
  font-size: 14px !important;
  padding-top: 8px !important;
  padding-bottom: 8px !important;
}

.bd-links:not(.comet-filtering) .toctree-l1:not(:has(> ul)) > a.reference {
  font-weight: 400 !important;
  color: var(--pst-color-text-muted) !important;
  font-size: 14px !important;
  padding-top: 8px !important;
  padding-bottom: 8px !important;
}

/* ── Collapse: hide children of sections that are not explicitly expanded ── */
/* Visibility is now controlled by the .comet-expanded class (toggled via JS button) */
.bd-links .toctree-l1:not(.comet-expanded) > ul,
.bd-links .toctree-l2:not(.comet-expanded) > ul,
.bd-links .toctree-l3:not(.comet-expanded) > ul,
.bd-links .toctree-l4:not(.comet-expanded) > ul {
  display: none !important;
}

/* ── In-sidebar search filter ───────────────────────────────────────── */
.bd-links.comet-filtering li.comet-filter-hidden {
  display: none !important;
}

/* While filtering, force-expand any section that contains a match,
   overriding the collapsed-by-default rule above */
.bd-links.comet-filtering .toctree-l1.comet-filter-expanded > ul,
.bd-links.comet-filtering .toctree-l2.comet-filter-expanded > ul {
  display: block !important;
}

/* Sync the toggle arrow to the expanded state during filtering */
.bd-links.comet-filtering li.comet-filter-expanded > .comet-toggle::before {
  transform: rotate(90deg) !important;
  background-color: var(--comet-accent) !important;
}

/* Highlighted matching characters */
.bd-links mark.comet-hl {
  background: var(--comet-accent-dim) !important;
  color: var(--comet-accent-lite) !important;
  padding: 0 1px !important;
  border-radius: 2px !important;
  font-weight: 700 !important;
}

html[data-theme="light"] .bd-links mark.comet-hl {
  color: var(--comet-accent-text) !important;
}

/* ── Toggle button — real <button> injected via JS ── */
.bd-links li {
  position: relative !important;
}

.bd-links li > a.reference {
  padding-right: 36px !important;
}

.bd-links .comet-toggle {
  position: absolute !important;
  right: 6px !important;
  top: 4px !important;
  width: 24px !important;
  height: 24px !important;
  border: none !important;
  background: transparent !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  border-radius: 4px !important;
  z-index: 5 !important;
  transition: background 120ms ease !important;
}

.bd-links .comet-toggle::before {
  content: '' !important;
  width: 14px !important;
  height: 14px !important;
  background-color: var(--pst-color-text-muted) !important;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E") !important;
  -webkit-mask-repeat: no-repeat !important;
  mask-repeat: no-repeat !important;
  -webkit-mask-size: contain !important;
  mask-size: contain !important;
  transition: transform 220ms ease, background-color 140ms ease !important;
}

.bd-links .comet-toggle[aria-expanded="true"]::before {
  transform: rotate(90deg) !important;
  background-color: var(--comet-accent) !important;
}

.bd-links .comet-toggle:hover {
  background: var(--pst-color-surface) !important;
}

.bd-links .comet-toggle:hover::before {
  background-color: var(--pst-color-on-surface) !important;
}

.bd-links .comet-toggle[aria-expanded="true"]:hover::before {
  background-color: var(--comet-accent-lite) !important;
}

/* Adjust button top for l1 items (which have larger padding) */
.bd-links .toctree-l1 > .comet-toggle {
  top: 6px !important;
}

/* ── Top-level nav items act as section headers — bold ── */
.bd-links .toctree-l1 > a.reference {
  font-size: 13px !important;
  font-weight: 700 !important;
  color: var(--pst-color-on-surface) !important;
  padding-top: 8px !important;
  padding-bottom: 8px !important;
  letter-spacing: 0.01em !important;
}

/* ── Active state: ONLY the exact current page (innermost li.current) ── */
/* pydata_sphinx_theme sets class="current" on the <a> of BOTH the active page
   AND its ancestor sections. :not(:has(li.current)) targets only the deepest
   li.current — the one with no nested li.current inside it. */
.bd-links li.current:not(:has(li.current)) > a.current.reference {
  color: var(--comet-accent-lite) !important;
  background: var(--comet-accent-dim) !important;
  border-left-color: var(--comet-accent) !important;
  font-weight: 600 !important;
}

html[data-theme="light"] .bd-links li.current:not(:has(li.current)) > a.current.reference {
  color: var(--comet-accent-text) !important;
}

/* Ancestor li.current items (parents of the active page) — strip highlight */
.bd-links li.current:has(li.current) > a.current.reference {
  background: transparent !important;
  border-left-color: transparent !important;
  color: var(--pst-color-text-muted) !important;
  font-weight: 400 !important;
}

/* Restore bold + on-surface color for l1 section headers that are ancestors */
.bd-links .toctree-l1.current:has(li.current) > a.current.reference {
  color: var(--pst-color-on-surface) !important;
  font-weight: 700 !important;
}

/* Nested level 2 */
.bd-links .toctree-l2 a.reference {
  padding-left: 32px !important;
  font-size: 13.5px !important;
  font-weight: 400 !important;
}

/* Nested level 3 */
.bd-links .toctree-l3 a.reference {
  padding-left: 44px !important;
  font-size: 13px !important;
  font-weight: 400 !important;
}

/* Mobile sidebar nav header */
.sidebar-header-items {
  border-bottom: 1px solid var(--pst-color-border) !important;
  padding: 8px 0 !important;
}

/* ─── LAYOUT GRID ──────────────────────────────────────────────────── */
/* Secondary sidebar (right-side in-page TOC) is now enabled.
   It auto-hides via JS on pages with fewer than 3 H2s (see layout.html). */
.bd-sidebar-secondary {
  border-left: 1px solid var(--pst-color-border) !important;
  padding: 28px 24px !important;
  width: 240px !important;
  flex: 0 0 240px !important;
  background: transparent !important;
}

/* Hide the right TOC when there are no anchors to navigate.
   We use visibility: hidden (not display: none) so the empty TOC's
   column still occupies its 240px of grid space — that keeps the
   article's left edge in the SAME horizontal position whether the
   TOC is rendered or not. Without this, the grid collapses on
   TOC-less pages and the article shifts right to fill the gap. */
.bd-sidebar-secondary.comet-toc-empty {
  visibility: hidden !important;
}

.bd-main {
  grid-template-columns: minmax(0, 1fr) !important;
}

.bd-container__inner.bd-page-width {
  max-width: none !important;
  padding: 0 !important;
}

/* ── Right-side TOC styling ───────────────────────────────────────── */
.bd-sidebar-secondary .page-toc,
.bd-sidebar-secondary .toc-h2,
.bd-sidebar-secondary .onthispage,
.bd-sidebar-secondary .page-toc__title {
  font-family: var(--comet-font) !important;
}

.bd-sidebar-secondary .page-toc__title,
.bd-sidebar-secondary p.onthispage {
  font-size: 11px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
  color: var(--pst-color-text-muted) !important;
  margin: 0 0 12px 0 !important;
  padding: 0 !important;
}

.bd-sidebar-secondary nav.bd-toc {
  padding: 0 !important;
}

.bd-sidebar-secondary ul.visible {
  list-style: none !important;
  padding-left: 0 !important;
  margin: 0 !important;
  border-left: 1px solid var(--pst-color-border) !important;
}

.bd-sidebar-secondary nav.bd-toc ul,
.bd-sidebar-secondary .page-toc ul {
  list-style: none !important;
  padding-left: 12px !important;
  margin: 0 !important;
}

.bd-sidebar-secondary nav.bd-toc > ul,
.bd-sidebar-secondary .page-toc > ul {
  padding-left: 0 !important;
  border-left: 1px solid var(--pst-color-border) !important;
}

.bd-sidebar-secondary nav.bd-toc a.reference,
.bd-sidebar-secondary .page-toc a.reference {
  display: block !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  line-height: 1.45 !important;
  padding: 6px 12px !important;
  margin-left: -1px !important;
  color: var(--pst-color-text-muted) !important;
  text-decoration: none !important;
  border-left: 2px solid transparent !important;
  transition: color 120ms ease, border-color 120ms ease !important;
}

.bd-sidebar-secondary nav.bd-toc a.reference:hover,
.bd-sidebar-secondary .page-toc a.reference:hover {
  color: var(--pst-color-on-surface) !important;
}

/* Active section in TOC — orange accent */
.bd-sidebar-secondary nav.bd-toc a.reference.active,
.bd-sidebar-secondary .page-toc a.reference.active,
.bd-sidebar-secondary nav.bd-toc li.active > a.reference,
.bd-sidebar-secondary .page-toc li.active > a.reference {
  color: var(--comet-accent-text) !important;
  border-left-color: var(--comet-accent) !important;
  font-weight: 600 !important;
}

/* Nested TOC entries (h3 under h2) — slight indent */
.bd-sidebar-secondary ul ul a.reference {
  padding-left: 28px !important;
  font-size: 12.5px !important;
}

/* Hide on narrow viewports (sidebar already takes the width) */
@media (max-width: 1200px) {
  .bd-sidebar-secondary { display: none !important; }
}

/* ─── CONTENT ──────────────────────────────────────────────────────── */
.bd-content { padding: 0 !important; }

.bd-article-container {
  max-width: 860px !important;
  padding: 44px 60px 88px !important;
  margin: 0 !important;
  /* Anchor to the left edge of the grid cell so the article's left
     position stays stable whether or not the right-side TOC is rendered.
     Without justify-self:start, pydata's grid centers the container in
     its cell — which shifts the content right on TOC-less pages. */
  justify-self: start !important;
}

article.bd-article {
  font-family: var(--comet-font) !important;
}

/* Headings */
article h1 {
  font-size: 2.1rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.2 !important;
  margin-top: 0 !important;
  margin-bottom: 0.5rem !important;
  color: var(--pst-color-heading) !important;
}

article h2 {
  font-size: 1.35rem !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  margin-top: 2.6rem !important;
  margin-bottom: 0.75rem !important;
  padding-bottom: 0 !important;
  border-bottom: none !important;
  color: var(--pst-color-heading) !important;
}

article h3 {
  font-size: 1.05rem !important;
  font-weight: 600 !important;
  margin-top: 1.8rem !important;
  margin-bottom: 0.5rem !important;
  color: var(--pst-color-heading) !important;
}

article h4 {
  font-size: 0.95rem !important;
  font-weight: 600 !important;
  color: var(--pst-color-text-base) !important;
}

/* Anchor links */
a.headerlink {
  opacity: 0 !important;
  transition: opacity 120ms ease !important;
  font-size: 0.75em !important;
  margin-left: 4px !important;
  color: var(--comet-accent-text) !important;
}
*:hover > a.headerlink { opacity: 0.45 !important; }
a.headerlink:hover { opacity: 1 !important; }

article p, article li {
  color: var(--pst-color-text-base) !important;
  line-height: 1.75 !important;
}

/* Content links */
article a.reference.external,
article a.reference.internal {
  color: var(--comet-accent-text) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--comet-accent-underline) !important;
  transition: border-color 120ms ease !important;
}

article a.reference:hover {
  border-bottom-color: var(--comet-accent) !important;
}

/* ─── INLINE CODE ──────────────────────────────────────────────────── */
code.literal,
p code, li code, td code, th code {
  font-family: var(--comet-mono) !important;
  font-size: 13px !important;
  padding: 1px 5px !important;
  border-radius: 4px !important;
  border: 1px solid var(--pst-color-border) !important;
  color: var(--pst-color-inline-code) !important;
}

html[data-theme="dark"] code.literal,
html[data-theme="dark"] p code,
html[data-theme="dark"] li code,
html[data-theme="dark"] td code {
  background: #111111 !important;
}

html[data-theme="light"] code.literal,
html[data-theme="light"] p code,
html[data-theme="light"] li code,
html[data-theme="light"] td code {
  background: #f5f5f6 !important;
}

/* ─── CODE BLOCKS ──────────────────────────────────────────────────── */
/* Pydata wraps every code block in TWO containers — an outer
   <div class="highlight-LANG"> and an inner <div class="highlight">. Both
   selectors are listed here so a code block gets the rounded dark frame
   whether only one wrapper is present (rare) or both are nested (default).
   The dark background is set on the wrappers so any sub-pixel gap between
   wrapper edge and the <pre> inside it reads as part of the same surface
   (no visible light strip above/below the code). */
div.highlight,
div[class*="highlight-"] {
  border-radius: var(--comet-radius) !important;
  border: 1px solid var(--pst-color-border) !important;
  overflow: hidden !important;
  background: var(--comet-code-bg) !important;
  margin: 18px 0 !important;
  padding: 0 !important;
}

/* When the wrappers nest (the common case), the inner div.highlight must
   sit flush inside the outer frame — no margin (otherwise its top/bottom
   margin pushes the <pre> away from the outer border, creating the
   thin light bands users were seeing) and no redundant border. */
div[class*="highlight-"] > div.highlight {
  margin: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
}

div.highlight pre,
div[class*="highlight-"] pre {
  font-family: var(--comet-mono) !important;
  font-size: 13.5px !important;
  line-height: 1.7 !important;
  padding: 20px 22px !important;
  margin: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: var(--comet-code-bg) !important;
  color: var(--comet-code-fg) !important;
}

/* Code blocks always use a dark background (both light and dark site
   themes), so they need a dark-friendly syntax palette regardless of mode.
   Pydata ships theme-scoped Pygments rules — html[data-theme="light"]
   .highlight .TOKEN — whose specificity (0-3-1) beats our plain
   div.highlight .TOKEN selectors, and in light mode those rules set DARK
   text that's invisible on our dark background. We use !important here to
   win that battle uniformly.

   The base-span rule is the safety net: it paints EVERY token we don't
   explicitly theme below (names, punctuation, console output, Rust types,
   etc.) in the readable default foreground, so nothing can ever fall back
   to an invisible light-theme color. The named rules then layer specific
   hues on top of that floor. */
div.highlight pre span,
div[class*="highlight-"] pre span {
  color: var(--comet-code-fg) !important;
}

/* Keywords: keyword, k.namespace, k.declaration, k.constant, k.pseudo,
   k.reserved, k.type (Rust/Go primitive types). */
div.highlight .k,  div.highlight .kn, div.highlight .kd,
div.highlight .kc, div.highlight .kp, div.highlight .kr,
div.highlight .kt  { color: var(--comet-code-keyword) !important; }

/* Strings: string + all subtypes (single, double, char, doc, escape …). */
div.highlight .s,   div.highlight .s1,  div.highlight .s2,
div.highlight .sb,  div.highlight .sc,  div.highlight .sd,
div.highlight .se,  div.highlight .sh,  div.highlight .si,
div.highlight .sx,  div.highlight .sr,  div.highlight .ss,
div.highlight .dl   { color: var(--comet-code-string) !important; }

/* Comments: comment + subtypes (line, multiline, preproc, special). */
div.highlight .c,  div.highlight .c1, div.highlight .cm,
div.highlight .cp, div.highlight .cs, div.highlight .ch,
div.highlight .cpf { color: var(--comet-code-comment) !important; font-style: italic; }

/* Function + builtin names. */
div.highlight .nf, div.highlight .nb,
div.highlight .fm  { color: var(--comet-code-func) !important; }

/* Numbers: int, float, hex, oct, bin, long, imaginary. */
div.highlight .m,  div.highlight .mi, div.highlight .mf,
div.highlight .mh, div.highlight .mo, div.highlight .mb,
div.highlight .il  { color: var(--comet-code-number) !important; }

/* Operators + punctuation. */
div.highlight .o,  div.highlight .ow { color: var(--comet-code-operator) !important; }

/* Class / type / namespace names. */
div.highlight .nc, div.highlight .nn,
div.highlight .no  { color: var(--comet-code-class) !important; }

/* Console prompt (scala>, >>>, $) and program output/traceback. */
div.highlight .gp, div.highlight .go,
div.highlight .gt  { color: var(--comet-code-meta) !important; }

button.copybtn {
  background: rgba(255,255,255,0.07) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  border-radius: 4px !important;
  color: #666 !important;
  font-family: var(--comet-font) !important;
  font-size: 11px !important;
  padding: 3px 8px !important;
  transition: color 120ms, background 120ms !important;
}
button.copybtn:hover {
  color: #e2e8f0 !important;
  background: rgba(255,255,255,0.13) !important;
}

/* ─── TABLES ───────────────────────────────────────────────────────── */
table.docutils {
  font-size: 14px !important;
  border-collapse: collapse !important;
  width: 100% !important;
  margin: 18px 0 !important;
  border-radius: var(--comet-radius) !important;
  overflow: hidden !important;
  border: 1px solid var(--pst-color-border) !important;
}

table.docutils th {
  font-size: 12px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  padding: 11px 15px !important;
  border-bottom: 1px solid var(--pst-color-border) !important;
  color: var(--pst-color-text-muted) !important;
  white-space: normal !important;
}

html[data-theme="dark"]  table.docutils th { background: #111111 !important; }
html[data-theme="light"] table.docutils th { background: #f5f5f6 !important; }

table.docutils td {
  padding: 11px 15px !important;
  border-bottom: 1px solid var(--pst-color-border) !important;
  color: var(--pst-color-text-base) !important;
  white-space: normal !important;
}

table.docutils tr:last-child td { border-bottom: none !important; }

html[data-theme="dark"]  table.docutils tbody tr:nth-of-type(odd) { background: rgba(255,255,255,0.02) !important; }
html[data-theme="light"] table.docutils tbody tr:nth-of-type(odd) { background: rgba(0,0,0,0.02) !important; }

/* ─── ADMONITIONS ──────────────────────────────────────────────────── */
div.admonition {
  border-radius: var(--comet-radius) !important;
  border: 1px solid !important;
  padding: 14px 18px !important;
  margin: 22px 0 !important;
  font-size: 14px !important;
  box-shadow: none !important;
}

div.admonition p.admonition-title {
  font-size: 11.5px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
  margin-bottom: 6px !important;
  /* Reserve room for the icon (which pydata positions absolutely at left:0
     via a ::before pseudo-element). Without this padding the icon overlaps
     the first letters of the title. */
  padding: 0 0 0 26px !important;
  background: none !important;
  border: none !important;
  position: relative !important;
}

div.note    { background: rgba(59,130,246,0.06) !important;  border-color: rgba(59,130,246,0.25) !important; }
div.note    p.admonition-title { color: #3b82f6 !important; }
div.warning { background: rgba(234,179,8,0.06) !important;   border-color: rgba(234,179,8,0.25) !important; }
div.warning p.admonition-title { color: #ca8a04 !important; }
div.tip     { background: rgba(34,197,94,0.06) !important;   border-color: rgba(34,197,94,0.25) !important; }
div.tip     p.admonition-title { color: #16a34a !important; }
div.important,
div.caution {
  background: rgba(var(--comet-accent-rgb),0.06) !important;
  border-color: rgba(var(--comet-accent-rgb),0.28) !important;
}
div.important p.admonition-title,
div.caution   p.admonition-title { color: var(--comet-accent-text) !important; }

/* ─── PREV / NEXT NAV ──────────────────────────────────────────────── */
footer.prev-next-footer {
  border-top: 1px solid var(--pst-color-border) !important;
  margin-top: 52px !important;
  padding-top: 26px !important;
  box-shadow: none !important;
}

.prev-next-area a {
  border: 1px solid var(--pst-color-border) !important;
  border-radius: var(--comet-radius) !important;
  padding: 13px 18px !important;
  box-shadow: none !important;
  text-decoration: none !important;
  transition: border-color 120ms ease !important;
}

.prev-next-area a:hover {
  border-color: var(--comet-accent) !important;
  background: rgba(var(--comet-accent-rgb),0.05) !important;
}

.prev-next-subtitle {
  font-size: 11px !important;
  text-transform: uppercase !important;
  letter-spacing: 0.07em !important;
  color: var(--pst-color-text-muted) !important;
}

.prev-next-title {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: var(--pst-color-on-surface) !important;
}

/* ─── FOOTER ───────────────────────────────────────────────────────── */
/* Used across every doc page. Job: be quiet, surface 5-6 useful links,
   satisfy ASF legal requirements. Not a place to repeat marketing copy. */

.bd-footer-content { display: none !important; }

footer.comet-footer {
  font-family: var(--comet-font) !important;
  border-top: 1px solid var(--pst-color-border-muted);
  background: transparent;
  color: var(--pst-color-text-muted);
}

.comet-footer__inner {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 80px;
  align-items: start;
  max-width: 1100px;
  margin: 0 auto;
  padding: 56px 56px 40px;
}

/* Brand: just the logo, clickable, no tagline */
.comet-footer__brand {
  display: inline-block;
  text-decoration: none;
  flex-shrink: 0;
  opacity: 0.85;
  transition: opacity 120ms ease;
}

.comet-footer__brand:hover { opacity: 1; }

.comet-footer__logo {
  height: 42px;
  width: auto;
  display: block;
  object-fit: contain;
  max-width: 180px;
}

/* Link columns: two of them, generous gap, monospaced rhythm */
.comet-footer__links {
  display: grid;
  grid-template-columns: repeat(2, minmax(180px, 1fr));
  gap: 48px;
  justify-content: end;
  justify-self: end;
}

.comet-footer__col {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.comet-footer__col-title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--pst-color-on-surface);
  margin: 0 0 6px 0;
}

.comet-footer__col a {
  font-size: 14px;
  color: var(--pst-color-text-muted);
  text-decoration: none;
  transition: color 120ms ease;
  padding: 2px 0;
  width: max-content;
}

.comet-footer__col a:hover { color: var(--comet-accent-text); }

/* Legal bar: hairline divider, two quiet lines, plenty of breathing room */
.comet-footer__legal {
  max-width: 1100px;
  margin: 0 auto;
  padding: 22px 56px 28px;
  border-top: 1px solid var(--pst-color-border-muted);
}

.comet-footer__legal p {
  font-size: 12px;
  line-height: 1.6;
  color: var(--pst-color-text-muted);
  margin: 0 0 6px 0;
}

.comet-footer__legal p:last-child {
  margin-bottom: 0;
}

.comet-footer__legal a {
  color: var(--pst-color-text-muted);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 120ms ease, color 120ms ease;
}

.comet-footer__legal a:hover {
  color: var(--comet-accent-text);
  border-bottom-color: var(--comet-accent);
}

.comet-footer__trademark {
  opacity: 0.7;
}

@media (max-width: 768px) {
  .comet-footer__inner {
    grid-template-columns: 1fr;
    gap: 36px;
    padding: 40px 24px 28px;
  }
  .comet-footer__links {
    justify-self: start;
    grid-template-columns: repeat(2, 1fr);
    gap: 28px;
  }
  .comet-footer__legal { padding: 18px 24px 24px; }
}

/* ─── BACK TO TOP ──────────────────────────────────────────────────── */
#pst-back-to-top {
  border-radius: 20px !important;
  font-size: 12.5px !important;
  font-family: var(--comet-font) !important;
  background: var(--pst-color-surface) !important;
  border: 1px solid var(--pst-color-border) !important;
  color: var(--pst-color-text-muted) !important;
  box-shadow: none !important;
  transition: color 120ms, border-color 120ms !important;
}

#pst-back-to-top:hover {
  color: var(--pst-color-on-surface) !important;
  border-color: var(--comet-accent) !important;
}

/* ─── BREADCRUMB ───────────────────────────────────────────────────── */
.bd-breadcrumbs {
  font-size: 13px !important;
  color: var(--pst-color-text-muted) !important;
  padding: 12px 0 0 !important;
}
.bd-breadcrumbs a {
  color: var(--pst-color-text-muted) !important;
  text-decoration: none !important;
}
.bd-breadcrumbs a:hover { color: var(--comet-accent-text) !important; }

/* Hide the home icon — the Comet logo in the navbar already does this job */
.bd-breadcrumbs .breadcrumb-home {
  display: none !important;
}

/* Hide the first non-home breadcrumb item (the section index page).
   The section is already shown as the active orange tab in the top nav,
   so repeating it here is just noise. */
.bd-breadcrumbs .breadcrumb-home + .breadcrumb-item {
  display: none !important;
}

/* When there's no home icon (some pages), still hide the first item */
.bd-breadcrumbs > .breadcrumb-item:first-child:not(.active):not(.breadcrumb-home) {
  display: none !important;
}

/* ─── IMAGES ───────────────────────────────────────────────────────── */
article img {
  border-radius: var(--comet-radius) !important;
  max-width: 100% !important;
}
html[data-theme="dark"] article img { opacity: 0.92 !important; }

/* ─── SCROLLBAR ────────────────────────────────────────────────────── */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
html[data-theme="dark"]  ::-webkit-scrollbar-thumb { background: #303030; border-radius: 3px; }
html[data-theme="light"] ::-webkit-scrollbar-thumb { background: #d0d0d0; border-radius: 3px; }

/* ─── RESPONSIVE ───────────────────────────────────────────────────── */
@media (min-width: 720px) {
  @supports (position: -webkit-sticky) or (position: sticky) {
    .bd-links { max-height: calc(100vh - 8rem); }
  }
}

@media (max-width: 960px) {
  .bd-article-container { padding: 28px 32px 64px !important; }
}

/* ─── LANDING PAGE ─────────────────────────────────────────────────── */
/* Sphinx puts a body class of `bd-page-{pagename}` so we can target only
   the homepage. The hero/cards/etc. take over the full canvas there;
   every other page keeps the article-container constraints. */

body:has(.comet-hero) .bd-article-container {
  max-width: 100% !important;
  padding: 0 !important;
}

body:has(.comet-hero) article.bd-article {
  padding: 0 !important;
}

/* Landing page: hide chrome that doesn't belong on a marketing page.
   The H1 stays (now lives inside the hero as the project's brand statement)
   so we no longer hide it. */
body:has(.comet-hero) .bd-breadcrumbs,
body:has(.comet-hero) footer.prev-next-footer,
body:has(.comet-hero) .prev-next-area {
  display: none !important;
}

/* Hero H1 — the project brand statement, prominent at the top of the hero */
body:has(.comet-hero) .comet-hero__inner h1 {
  font-family: var(--comet-font) !important;
  font-size: clamp(2.6rem, 5vw, 4rem) !important;
  font-weight: 700 !important;
  line-height: 1.05 !important;
  letter-spacing: -0.035em !important;
  margin: 0 0 18px 0 !important;
  padding: 0 !important;
  border: none !important;
  color: var(--pst-color-heading) !important;
  text-align: center;
}

.comet-hero__tagline {
  font-family: var(--comet-font) !important;
  font-size: clamp(1.25rem, 2.5vw, 1.7rem) !important;
  font-weight: 500 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.3 !important;
  color: var(--comet-accent) !important;
  margin: 0 0 22px 0 !important;
  text-align: center;
}

body:has(.comet-hero) .bd-main {
  grid-template-columns: minmax(0, 1fr) !important;
}

/* Each landing section is full-bleed, with its own internal max-width */
.comet-hero,
.comet-install,
.comet-perf,
.comet-cards,
.comet-arch,
.comet-foot-cta {
  width: 100%;
  display: block;
}

.comet-hero__inner,
.comet-install__inner,
.comet-perf__inner,
.comet-cards__inner,
.comet-arch__inner,
.comet-foot-cta__inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 32px;
}

/* ── Hero ─────────────────────────────────────────────────────────── */
.comet-hero {
  padding: 88px 0 72px;
  border-bottom: 1px solid var(--pst-color-border-muted);
  background:
    radial-gradient(circle at 80% -20%, rgba(var(--comet-accent-rgb),0.08), transparent 55%),
    radial-gradient(circle at 10% 110%, rgba(var(--comet-accent-rgb),0.05), transparent 50%);
}

/* Terminal-style hero variant — centered layout with terminal block centerpiece */
.comet-hero--terminal {
  padding: 80px 0 80px;
  text-align: center;
}

.comet-hero--terminal .comet-hero__inner {
  text-align: center;
  max-width: 1080px;
}

.comet-hero--terminal .comet-hero__title {
  max-width: none;
  margin-left: auto !important;
  margin-right: auto !important;
}

.comet-hero--terminal .comet-hero__lede {
  margin-left: auto !important;
  margin-right: auto !important;
  max-width: 56ch;
}

.comet-hero--terminal .comet-hero__ctas {
  justify-content: center;
}

.comet-hero__inner {
  text-align: left;
  max-width: 980px;
}

.comet-hero__eyebrow {
  font-family: var(--comet-font);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--comet-accent-text);
  margin: 0 0 18px 0;
}

.comet-hero__title {
  font-family: var(--comet-font) !important;
  font-size: clamp(2.4rem, 4.5vw, 3.6rem) !important;
  font-weight: 700 !important;
  line-height: 1.08 !important;
  letter-spacing: -0.03em !important;
  margin: 0 0 22px 0 !important;
  color: var(--pst-color-heading) !important;
  border: none !important;
  padding: 0 !important;
  max-width: 24ch;
}

.comet-hero__title-accent {
  color: var(--comet-accent-text);
}

.comet-hero__lede {
  font-size: 1.15rem !important;
  line-height: 1.6 !important;
  color: var(--pst-color-text-base) !important;
  max-width: 60ch;
  margin: 0 0 32px 0 !important;
}

.comet-hero__ctas {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin: 0 0 24px 0;
}

.comet-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--comet-font) !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  padding: 12px 22px !important;
  border-radius: 8px !important;
  text-decoration: none !important;
  border: 1px solid transparent !important;
  transition: transform 120ms ease, background 120ms ease, border-color 120ms ease, color 120ms ease !important;
  cursor: pointer;
}

.comet-cta--primary {
  background: var(--comet-accent) !important;
  color: #ffffff !important;
}

.comet-cta--primary:hover {
  background: var(--comet-accent-lite) !important;
  transform: translateY(-1px);
}

.comet-cta--secondary {
  background: transparent !important;
  color: var(--pst-color-on-surface) !important;
  border-color: var(--pst-color-border) !important;
}

.comet-cta--secondary:hover {
  border-color: var(--comet-accent) !important;
  color: var(--comet-accent-text) !important;
}

.comet-hero__meta {
  font-size: 12.5px !important;
  color: var(--pst-color-text-muted) !important;
  margin: 0 !important;
}

/* Small caption under the hero terminal: keeps the full tuning config
   discoverable without crowding the drop-in demo. */
.comet-hero__note {
  font-size: 13px !important;
  color: var(--pst-color-text-muted) !important;
  margin: 0 0 22px 0 !important;
  text-align: center;
}

.comet-hero__note a {
  color: var(--comet-accent-text) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--comet-accent-underline) !important;
}

/* ── Install block ────────────────────────────────────────────────── */
.comet-install {
  padding: 56px 0;
  background: var(--pst-color-surface);
  border-bottom: 1px solid var(--pst-color-border-muted);
}

html[data-theme="dark"] .comet-install {
  background: var(--comet-surface-sunken);
}

.comet-install__label {
  font-family: var(--comet-font);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--pst-color-text-muted);
  margin: 0 0 14px 0;
}

.comet-install__cmd {
  font-family: var(--comet-mono) !important;
  font-size: 14px !important;
  line-height: 1.7 !important;
  background: var(--pst-color-background) !important;
  color: var(--pst-color-on-surface) !important;
  border: 1px solid var(--pst-color-border) !important;
  border-radius: 8px !important;
  padding: 22px 26px !important;
  margin: 0 0 14px 0 !important;
  overflow-x: auto !important;
  white-space: pre !important;
}

html[data-theme="dark"] .comet-install__cmd {
  background: #060606 !important;
  color: #d4d4d4 !important;
}

.comet-install__hint {
  font-size: 13.5px !important;
  color: var(--pst-color-text-muted) !important;
  margin: 0 !important;
}

.comet-install__hint a {
  color: var(--comet-accent-text) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--comet-accent-underline) !important;
}

.comet-install__hint a:hover {
  border-bottom-color: var(--comet-accent) !important;
}

/* ── Performance section ──────────────────────────────────────────── */
.comet-perf {
  padding: 80px 0;
  border-bottom: 1px solid var(--pst-color-border-muted);
}

.comet-perf__inner {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(0, 1.8fr);
  gap: 56px;
  align-items: center;
}

.comet-perf__eyebrow {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--comet-accent-text);
  margin: 0 0 14px 0;
}

.comet-perf__title {
  font-family: var(--comet-font) !important;
  font-size: 1.7rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  margin: 0 0 18px 0 !important;
  color: var(--pst-color-heading) !important;
  border: none !important;
  padding: 0 !important;
  max-width: 18ch;
}

.comet-perf__caption {
  font-size: 1.05rem !important;
  line-height: 1.6 !important;
  color: var(--pst-color-on-surface) !important;
  margin: 0 0 18px 0 !important;
  font-weight: 400 !important;
}

.comet-perf__detail {
  font-size: 14px !important;
  line-height: 1.6 !important;
  color: var(--pst-color-text-muted) !important;
  margin: 0 !important;
}

.comet-perf__detail code {
  font-family: var(--comet-mono) !important;
  font-size: 12.5px !important;
  padding: 1px 5px !important;
  border-radius: 4px !important;
  background: var(--pst-color-surface) !important;
  border: 1px solid var(--pst-color-border) !important;
  color: var(--pst-color-on-surface) !important;
}

.comet-perf__detail a {
  color: var(--comet-accent-text) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--comet-accent-underline) !important;
}

.comet-perf__chart figure {
  margin: 0 !important;
}

.comet-perf__chart img {
  width: 100% !important;
  height: auto !important;
  display: block !important;
  border-radius: 10px !important;
  border: 1px solid var(--pst-color-border) !important;
  background: var(--comet-figure-bg) !important;
  padding: 16px !important;
}

.comet-perf__chart figcaption {
  font-size: 12.5px !important;
  color: var(--pst-color-text-muted) !important;
  text-align: center !important;
  margin-top: 12px !important;
  font-style: italic !important;
}

/* ── Cards grid ───────────────────────────────────────────────────── */
.comet-cards {
  padding: 80px 0;
  background: var(--pst-color-surface);
  border-bottom: 1px solid var(--pst-color-border-muted);
}

html[data-theme="dark"] .comet-cards {
  background: var(--comet-surface-sunken);
}

.comet-cards__title {
  font-size: 1.6rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  margin: 0 0 36px 0 !important;
  border: none !important;
  padding: 0 !important;
  color: var(--pst-color-heading) !important;
}

.comet-cards__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.comet-card {
  display: flex !important;
  flex-direction: column !important;
  padding: 24px !important;
  border: 1px solid var(--pst-color-border) !important;
  border-radius: 12px !important;
  background: var(--pst-color-background) !important;
  text-decoration: none !important;
  transition: border-color 140ms ease, transform 140ms ease, box-shadow 140ms ease !important;
}

.comet-card:hover {
  border-color: var(--comet-accent) !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px var(--comet-accent-glow);
}

.comet-card__icon {
  font-size: 28px;
  margin-bottom: 16px;
  line-height: 1;
}

.comet-card__title {
  font-family: var(--comet-font) !important;
  font-size: 1.05rem !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  margin: 0 0 10px 0 !important;
  color: var(--pst-color-heading) !important;
  border: none !important;
  padding: 0 !important;
}

.comet-card__body {
  font-size: 14px !important;
  line-height: 1.55 !important;
  color: var(--pst-color-text-muted) !important;
  margin: 0 0 18px 0 !important;
  flex: 1;
}

.comet-card__cta {
  font-size: 13.5px !important;
  font-weight: 600 !important;
  color: var(--comet-accent-text) !important;
  margin: 0 !important;
  display: flex;
  align-items: center;
  gap: 4px;
}

/* ── Architecture section ─────────────────────────────────────────── */
.comet-arch {
  padding: 80px 0;
  border-bottom: 1px solid var(--pst-color-border-muted);
}

.comet-arch__inner {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: 56px;
  align-items: center;
}

.comet-arch__eyebrow {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--comet-accent-text);
  margin: 0 0 14px 0;
}

.comet-arch__title {
  font-size: 1.7rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.25 !important;
  margin: 0 0 20px 0 !important;
  color: var(--pst-color-heading) !important;
  border: none !important;
  padding: 0 !important;
  max-width: 22ch;
}

.comet-arch__body {
  font-size: 1rem !important;
  line-height: 1.65 !important;
  color: var(--pst-color-text-base) !important;
  margin: 0 0 16px 0 !important;
}

.comet-arch__links {
  font-size: 14px !important;
  margin: 22px 0 0 0 !important;
  color: var(--pst-color-text-muted) !important;
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
}

.comet-arch__links a {
  color: var(--comet-accent-text) !important;
  text-decoration: none !important;
  font-weight: 500 !important;
  border-bottom: 1px solid transparent !important;
  transition: border-color 120ms ease !important;
}

.comet-arch__links a:hover {
  border-bottom-color: var(--comet-accent) !important;
}

.comet-arch__diagram img {
  width: 100% !important;
  height: auto !important;
  border-radius: 8px !important;
  border: 1px solid var(--pst-color-border) !important;
  background: var(--comet-figure-bg);
  padding: 12px;
}

/* ── Foot CTA ─────────────────────────────────────────────────────── */
.comet-foot-cta {
  padding: 88px 0;
  text-align: center;
  background:
    radial-gradient(circle at 50% 0%, rgba(var(--comet-accent-rgb),0.06), transparent 60%);
}

.comet-foot-cta__title {
  font-size: 1.9rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  margin: 0 0 14px 0 !important;
  border: none !important;
  padding: 0 !important;
  color: var(--pst-color-heading) !important;
}

.comet-foot-cta__body {
  font-size: 1.05rem !important;
  line-height: 1.55 !important;
  color: var(--pst-color-text-muted) !important;
  margin: 0 auto 28px auto !important;
  max-width: 52ch;
}

.comet-foot-cta__inner .comet-hero__ctas {
  justify-content: center;
}

/* ── Terminal block (hero centerpiece) ────────────────────────────── */
.comet-terminal {
  margin: 36px auto 36px;
  max-width: 880px;
  border-radius: 12px;
  overflow: hidden;
  text-align: left;
  background: var(--comet-terminal-bg);
  border: 1px solid var(--comet-terminal-border);
  box-shadow:
    0 24px 60px -20px rgba(0, 0, 0, 0.35),
    0 8px 24px -8px rgba(var(--comet-accent-rgb),0.10);
}

.comet-terminal__bar {
  display: flex;
  align-items: center;
  padding: 10px 14px;
  background: var(--comet-terminal-bar);
  border-bottom: 1px solid var(--comet-terminal-border);
  position: relative;
}

.comet-terminal__dots {
  display: flex;
  gap: 7px;
}

.comet-terminal__dots i {
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #5a5a5a;
}

.comet-terminal__dots i:nth-child(1) { background: #ff5f57; }
.comet-terminal__dots i:nth-child(2) { background: #febc2e; }
.comet-terminal__dots i:nth-child(3) { background: #28c840; }

.comet-terminal__title {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--comet-mono);
  font-size: 12px;
  color: #8a8f95;
  letter-spacing: 0.02em;
}

.comet-terminal__body {
  font-family: var(--comet-mono) !important;
  font-size: 13px !important;
  line-height: 1.5 !important;
  color: var(--comet-code-fg) !important;
  padding: 22px 24px 26px !important;
  margin: 0 !important;
  background: var(--comet-terminal-bg) !important;
  border: none !important;
  border-radius: 0 !important;
  overflow-x: auto !important;
  white-space: pre !important;
  text-align: left !important;
}

/* Lines must stay inline — the <pre> already has a literal newline after
   each <span>, which provides the line break. Making them display:block
   would add a SECOND break per line, double-spacing the whole block. */
.comet-terminal__body .term-line {
  display: inline;
}

/* A blank line between sections comes from the spacer span's trailing
   newline in the <pre>; no explicit height needed. */
.comet-terminal__body .term-spacer {
  display: inline;
}

.comet-terminal__body .term-comment {
  color: var(--comet-code-comment);
  font-style: italic;
}

/* The terminal sits on a dark surface in BOTH site themes, so the prompt
   uses the fixed bright orange (--comet-code-prompt), not --comet-accent-text
   — the latter darkens to #a84808 in light mode and would lose contrast here. */
.comet-terminal__body .term-prompt {
  color: var(--comet-code-prompt);
  margin-right: 6px;
  user-select: none;
}

.comet-terminal__body .term-var {
  color: var(--comet-code-keyword);
}

.comet-terminal__body .term-str {
  color: var(--comet-code-string);
}

.comet-terminal__body .term-indent {
  padding-left: 28px;
  color: #b9bec5;
}

.comet-terminal__body .term-blink {
  display: inline-block;
  color: var(--comet-code-prompt);
  animation: term-blink 1s steps(2, end) infinite;
}

@keyframes term-blink {
  0%, 50% { opacity: 1; }
  50.01%, 100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .comet-terminal__body .term-blink { animation: none; }
}

/* ── Prose band (the official two-paragraph pitch) ────────────────── */
.comet-prose {
  padding: 64px 0;
  border-bottom: 1px solid var(--pst-color-border-muted);
}

.comet-prose__inner {
  max-width: 760px;
  margin: 0 auto;
  padding: 0 32px;
  text-align: center;
}

.comet-prose__lede {
  font-size: 1.15rem !important;
  line-height: 1.65 !important;
  color: var(--pst-color-text-base) !important;
  margin: 0 0 18px 0 !important;
}

.comet-prose__lede:last-child {
  margin-bottom: 0 !important;
}

.comet-prose__lede a {
  color: var(--comet-accent-text) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--comet-accent-underline) !important;
}

/* ── Stacked perf section (two charts, full-width) ────────────────── */
.comet-perf__inner--stacked {
  display: block;
}

.comet-perf__head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 36px;
}

.comet-perf__head .comet-perf__eyebrow {
  font-family: var(--comet-font);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--comet-accent-text);
  margin: 0 0 14px 0;
}

.comet-perf__head .comet-perf__caption {
  font-size: 1.5rem !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.3 !important;
  color: var(--pst-color-heading) !important;
  margin: 0 0 14px 0 !important;
}

.comet-perf__head .comet-perf__detail {
  font-size: 15px !important;
  line-height: 1.6 !important;
  color: var(--pst-color-text-muted) !important;
  margin: 0 !important;
}

.comet-perf__figure {
  margin: 0 0 40px 0 !important;
  background: var(--comet-figure-bg);
  border: 1px solid var(--pst-color-border);
  border-radius: 12px;
  padding: 24px;
}

.comet-perf__figure:last-child {
  margin-bottom: 0 !important;
}

.comet-perf__figure img {
  width: 100% !important;
  height: auto !important;
  display: block !important;
  border: none !important;
  background: transparent !important;
  border-radius: 0 !important;
  padding: 0 !important;
  margin: 0 auto !important;
}

.comet-perf__figure figcaption {
  font-size: 13px !important;
  color: var(--pst-color-text-muted) !important;
  text-align: center !important;
  margin-top: 14px !important;
  font-style: italic !important;
}

/* ── Feature bands (alternating colors) ───────────────────────────── */
.comet-feature {
  padding: 80px 0;
  border-bottom: 1px solid var(--pst-color-border-muted);
}

.comet-feature--alt {
  background: var(--pst-color-surface);
}

html[data-theme="dark"] .comet-feature--alt {
  background: var(--comet-surface-sunken);
}

.comet-feature__inner {
  max-width: 880px;
  margin: 0 auto;
  padding: 0 32px;
}

.comet-feature__copy {
  text-align: left;
}

.comet-feature__eyebrow {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--comet-accent-text);
  margin: 0 0 14px 0;
}

.comet-feature__title {
  font-family: var(--comet-font) !important;
  font-size: 1.7rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.25 !important;
  margin: 0 0 18px 0 !important;
  color: var(--pst-color-heading) !important;
  border: none !important;
  padding: 0 !important;
  max-width: 28ch;
}

.comet-feature__body {
  font-size: 1.02rem !important;
  line-height: 1.65 !important;
  color: var(--pst-color-text-base) !important;
  margin: 0 0 14px 0 !important;
}

.comet-feature__body:last-child {
  margin-bottom: 0 !important;
}

.comet-feature__links {
  font-size: 14px !important;
  margin: 20px 0 0 0 !important;
}

.comet-feature__links a {
  color: var(--comet-accent-text) !important;
  text-decoration: none !important;
  font-weight: 600 !important;
  border-bottom: 1px solid transparent !important;
  transition: border-color 120ms ease !important;
}

.comet-feature__links a:hover {
  border-bottom-color: var(--comet-accent) !important;
}

.comet-feature__figure {
  margin: 28px 0 0 0 !important;
  background: var(--comet-figure-bg);
  border: 1px solid var(--pst-color-border);
  border-radius: 12px;
  padding: 24px;
  text-align: center;
}

.comet-feature__figure img {
  max-width: 100% !important;
  height: auto !important;
  display: block !important;
  margin: 0 auto !important;
  border: none !important;
  background: transparent !important;
  padding: 0 !important;
  border-radius: 0 !important;
}

.comet-feature__figure figcaption {
  font-size: 13px !important;
  color: var(--pst-color-text-muted) !important;
  margin-top: 14px !important;
  font-style: italic !important;
}

/* ── Stacked architecture (two diagrams full-width) ───────────────── */
.comet-arch__inner--stacked {
  display: block;
}

.comet-arch__head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 28px;
}

.comet-arch__head:not(:first-child) {
  margin-top: 56px;
}

.comet-arch__head .comet-arch__eyebrow {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--comet-accent-text);
  margin: 0 0 14px 0;
}

.comet-arch__head .comet-arch__body {
  font-size: 1.05rem !important;
  line-height: 1.6 !important;
  color: var(--pst-color-text-base) !important;
  margin: 0 !important;
}

.comet-arch__figure {
  margin: 0 !important;
  background: var(--comet-figure-bg);
  border: 1px solid var(--pst-color-border);
  border-radius: 12px;
  padding: 24px;
  text-align: center;
}

.comet-arch__figure img {
  max-width: 100% !important;
  height: auto !important;
  display: block !important;
  margin: 0 auto !important;
  border: none !important;
  background: transparent !important;
  padding: 0 !important;
  border-radius: 0 !important;
}

.comet-arch__figure figcaption {
  font-size: 13px !important;
  color: var(--pst-color-text-muted) !important;
  margin-top: 14px !important;
  font-style: italic !important;
}

/* ── Community 3-column band ──────────────────────────────────────── */
.comet-community {
  padding: 80px 0;
  border-bottom: 1px solid var(--pst-color-border-muted);
  background: var(--pst-color-surface);
}

html[data-theme="dark"] .comet-community {
  background: var(--comet-surface-sunken);
}

.comet-community__inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 32px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
}

.comet-community__inner--two {
  max-width: 880px;
  grid-template-columns: repeat(2, 1fr);
  gap: 56px;
}

.comet-community__col {
  text-align: left;
}

.comet-community__eyebrow {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--comet-accent-text);
  margin: 0 0 14px 0;
}

.comet-community__body {
  font-size: 15px !important;
  line-height: 1.65 !important;
  color: var(--pst-color-text-base) !important;
  margin: 0 !important;
}

.comet-community__body a {
  color: var(--comet-accent-text) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--comet-accent-underline) !important;
}

/* ── Responsive collapses ─────────────────────────────────────────── */
@media (max-width: 960px) {
  .comet-hero,
  .comet-hero--terminal { padding: 56px 0 40px; }
  .comet-perf__inner,
  .comet-arch__inner { grid-template-columns: 1fr; gap: 32px; }
  .comet-cards__grid,
  .comet-community__inner { grid-template-columns: 1fr; gap: 32px; }
  .comet-install,
  .comet-perf,
  .comet-cards,
  .comet-arch,
  .comet-feature,
  .comet-prose,
  .comet-community,
  .comet-foot-cta { padding: 56px 0; }
  .comet-hero__inner,
  .comet-install__inner,
  .comet-perf__inner,
  .comet-cards__inner,
  .comet-arch__inner,
  .comet-feature__inner,
  .comet-prose__inner,
  .comet-community__inner,
  .comet-foot-cta__inner { padding: 0 22px; }
  .comet-terminal { margin: 24px auto; }
  .comet-terminal__body { font-size: 11.5px !important; padding: 16px 16px 18px !important; }
  .comet-terminal__title { display: none; }
}

/* ─── MOBILE NAVBAR (≤ 991px) ──────────────────────────────────────── */
/* PST uses its own sidebar-toggle (hamburger) button for mobile nav.
   Our `display: flex !important` on .col-lg-9 overrides Bootstrap's
   responsive hiding, so 5 nav links overflow horizontally on phones.
   Fix: hide the entire center+end column on small screens and let the
   primary-toggle button open the sidebar. */
@media (max-width: 991.98px) {
  .col-lg-9.navbar-header-items {
    display: none !important;
  }
  .bd-header.navbar,
  header.bd-header {
    padding: 0 12px !important;
  }
}

/* ─── TABLET (≤ 768px) ─────────────────────────────────────────────── */
@media (max-width: 768px) {
  /* Article: tighter side padding */
  .bd-article-container {
    padding: 24px 20px 56px !important;
  }

  /* Tables: wrap in a scrollable container */
  .bd-article-container table.docutils {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
    width: max-content;
    min-width: 100%;
  }

  /* Prevent wide pre/code blocks from breaking layout */
  .bd-article-container div.highlight pre,
  .bd-article-container div[class*="highlight-"] pre {
    overflow-x: auto;
  }

  /* Community 2-col: collapse to single column */
  .comet-community__inner--two {
    grid-template-columns: 1fr !important;
    gap: 32px !important;
  }

  /* Perf figure: smaller padding */
  .comet-perf__figure,
  .comet-arch__figure,
  .comet-feature__figure {
    padding: 16px !important;
  }
}

/* ─── SMALL MOBILE (≤ 480px) ───────────────────────────────────────── */
@media (max-width: 480px) {
  /* Article: minimal side padding */
  .bd-article-container {
    padding: 18px 14px 44px !important;
  }

  /* Hero: compact on very small screens */
  .comet-hero,
  .comet-hero--terminal {
    padding: 36px 0 24px;
  }

  /* Hero CTAs: stack vertically, full-width */
  .comet-hero__ctas {
    flex-direction: column;
    align-items: stretch;
  }
  .comet-cta {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  /* Terminal: smallest readable size */
  .comet-terminal__body {
    font-size: 10px !important;
    padding: 12px 10px 14px !important;
  }

  /* Install cmd: smaller font, allow wrapping for long lines */
  .comet-install__cmd {
    font-size: 12px !important;
    padding: 14px 14px !important;
    white-space: pre-wrap !important;
    word-break: break-all !important;
  }

  /* All inner section wrappers: minimal padding */
  .comet-hero__inner,
  .comet-install__inner,
  .comet-perf__inner,
  .comet-cards__inner,
  .comet-arch__inner,
  .comet-feature__inner,
  .comet-prose__inner,
  .comet-community__inner,
  .comet-foot-cta__inner {
    padding: 0 14px;
  }

  /* Section vertical spacing: very compact */
  .comet-install,
  .comet-perf,
  .comet-cards,
  .comet-arch,
  .comet-feature,
  .comet-prose,
  .comet-community,
  .comet-foot-cta {
    padding: 36px 0;
  }

  /* Footer: single column, tighter */
  .comet-footer__links {
    grid-template-columns: 1fr !important;
    gap: 16px !important;
  }
  .comet-footer__inner {
    padding: 32px 16px 24px !important;
  }
  .comet-footer__legal {
    padding: 14px 16px 20px !important;
  }

  /* Foot CTA: tighter padding */
  .comet-foot-cta {
    padding: 56px 0;
  }
}
