/* ============================================ Kubeflow Trainer Documentation Aligned with Kubeflow SDK visual language ============================================ */ /* ============================================ Color Palette ============================================ */ body { --kf-blue: var(--color-brand-primary, #2b6cb0); --kf-blue-light: #4299e1; --kf-blue-dark: #2c5282; --kf-heading: var(--color-foreground-primary, #1a202c); --kf-text: var(--color-foreground-secondary, #2d3748); --kf-text-light: var(--color-foreground-muted, #4a5568); --kf-bg-subtle: var(--color-background-secondary, #f7fafc); --kf-border: var(--color-background-border, #e2e8f0); --kf-accent: #81e6d9; } /* ============================================ TOP NAVIGATION BAR ============================================ */ .announcement { background: var(--color-background-primary, #fff) !important; border-bottom: 1px solid var(--color-background-border, #e2e8f0) !important; padding: 0 !important; position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; z-index: 100 !important; } .page { padding-top: 52px !important; } .sidebar-sticky { top: 52px !important; } .toc-sticky { top: 52px !important; } .mobile-header { top: 52px !important; } .announcement-content { max-width: none !important; padding: 0 !important; } .top-nav { display: flex; align-items: center; justify-content: space-between; max-width: 1400px; margin: 0 auto; padding: 0.6rem 1.5rem; } .top-nav-brand { display: flex; align-items: center; gap: 0.5rem; text-decoration: none !important; color: var(--color-foreground-primary, #1a202c) !important; font-weight: 600; font-size: 1.1rem; } .top-nav-brand:hover { color: var(--color-brand-primary, #4299e1) !important; } .top-nav-logo { height: 28px; width: auto; } .top-nav-links { display: flex; gap: 0.5rem; } .top-nav-links a { color: var(--color-foreground-secondary, #2d3748) !important; text-decoration: none !important; padding: 0.4rem 0.75rem; border-radius: 4px; font-size: 0.9rem; transition: all 0.15s ease; } .top-nav-links a:hover { color: var(--color-brand-primary, #4299e1) !important; background: var(--color-background-hover, rgba(0, 0, 0, 0.04)); } @media (max-width: 768px) { .top-nav-links { display: none; } .top-nav { justify-content: center; } } /* Hide logo from sidebar since it's in the navbar */ .sidebar-brand { display: none !important; } /* ============================================ HEADINGS ============================================ */ h1, h2, h3, h4, h5, h6 { font-weight: 600; } h1 { font-size: 2rem; border-bottom: 2px solid var(--kf-blue-light); padding-bottom: 0.5rem; } h2 { font-size: 1.4rem; margin-top: 1rem; border-bottom: 1px solid var(--kf-border); padding-bottom: 0.3rem; } h3 { font-size: 1.15rem; } /* ============================================ LINKS ============================================ */ a { color: var(--kf-blue); } a:visited { color: var(--kf-blue); } a:hover { color: var(--kf-blue-dark); } /* ============================================ TEXT ============================================ */ p, li, dd, dt { line-height: 1.7; } li::marker { color: var(--kf-blue); } /* ============================================ SIDEBAR ============================================ */ .sidebar-tree a, .sidebar-tree .reference, .sidebar-drawer a, .toctree-l1 > a, .toctree-l2 > a, .toctree-l3 > a, .caption-text { color: var(--color-sidebar-link-text, var(--color-foreground-primary)) !important; transition: color 0.15s; } .sidebar-tree a:hover, .sidebar-tree .reference:hover { color: var(--color-sidebar-link-text--top-level, var(--kf-blue)) !important; } .sidebar-tree .current > .reference, .sidebar-tree .current-page > .reference { color: var(--color-brand-primary, var(--kf-blue)) !important; font-weight: 600; } .sidebar-tree .caption { color: var(--color-sidebar-caption-text, var(--color-foreground-muted)) !important; font-weight: 600; text-transform: uppercase; font-size: 0.75rem; letter-spacing: 0.5px; } .sidebar-tree .reference { padding: 0.35rem 0.75rem; } .sidebar-tree ul ul { margin-left: 0.625rem; } .sidebar-tree .toctree-l1 > a, .sidebar-tree .toctree-l1 > .reference { font-weight: 600; } .sidebar-tree .toctree-l2 > a, .sidebar-tree .toctree-l2 > .reference, .sidebar-tree .toctree-l3 > a, .sidebar-tree .toctree-l3 > .reference { font-weight: 400; font-size: 0.9rem; } /* Sidebar: make it stick while scrolling */ @media (min-width: 67em) { .sidebar-drawer { position: sticky; top: 0; height: 100vh; overflow-y: auto; } } .sidebar-sticky { display: flex; flex-direction: column; height: calc(100vh - 52px); overflow: hidden; } .sidebar-search-container { flex-shrink: 0; } .sidebar-scroll { flex: 1; overflow-y: auto; } /* ============================================ CODE BLOCKS - Dark VS Code style ============================================ */ pre { border-radius: 8px; border: none; background: #1e1e1e !important; padding: 1rem !important; } pre code { color: #d4d4d4 !important; background: transparent !important; } .highlight { background: #1e1e1e !important; border-radius: 8px; } .highlight pre { color: #d4d4d4 !important; } .highlight span { color: #d4d4d4; } .highlight-bash .highlight span, .highlight-shell .highlight span, .highlight-console .highlight span { color: #d4d4d4 !important; } .highlight .k, .highlight .kn, .highlight .kd { color: #569cd6 !important; } .highlight .n, .highlight .nn { color: #d4d4d4 !important; } .highlight .s, .highlight .s1, .highlight .s2 { color: #ce9178 !important; } .highlight .c, .highlight .c1, .highlight .cm { color: #6a9955 !important; } .highlight .o { color: #d4d4d4 !important; } .highlight .p { color: #d4d4d4 !important; } .highlight .mi, .highlight .mf { color: #b5cea8 !important; } .highlight .nb, .highlight .bp { color: #4ec9b0 !important; } .highlight .nf, .highlight .fm { color: #dcdcaa !important; } .highlight .nc { color: #4ec9b0 !important; } .highlight .ow { color: #569cd6 !important; } .highlight .gp { color: #6a9955 !important; } .highlight .w { color: #d4d4d4 !important; } /* Inline code */ code { color: var(--color-foreground-primary, var(--kf-heading)); background: var(--color-background-secondary, var(--kf-bg-subtle)); padding: 0.15em 0.4em; border-radius: 3px; font-size: 0.9em; } /* Copy button */ button.copybtn { opacity: 0.6; transition: opacity 0.2s; } button.copybtn:hover { opacity: 1; } /* ============================================ CARDS (homepage + sphinx-design) ============================================ */ .doc-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; margin: 2rem 0; } a.doc-card, .sd-card { border: 1px solid var(--kf-border) !important; border-radius: 8px !important; padding: 1.5rem; background-color: var(--kf-bg-subtle); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04); transition: all 0.2s ease; } a.doc-card { text-decoration: none; display: block; } a.doc-card:hover, .sd-card:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); border-color: var(--kf-blue-light) !important; transform: translateY(-2px); text-decoration: none; } a.doc-card strong, .sd-card .sd-card-title { font-size: 1.1rem; font-weight: 600; color: var(--kf-heading); display: block; margin-bottom: 0.5rem; } a.doc-card p, .sd-card .sd-card-body p { margin: 0; color: var(--kf-text-light); font-size: 0.95rem; line-height: 1.5; } /* ============================================ TABLES ============================================ */ table { border-radius: 6px; overflow: hidden; border: 1px solid var(--kf-border); } table.docutils { border-collapse: collapse; margin: 1rem 0; } table.docutils th, th { background: var(--color-background-secondary, var(--kf-bg-subtle)); color: var(--color-foreground-primary, var(--kf-heading)); font-weight: 600; padding: 0.5rem; } table.docutils td { padding: 0.5rem; border: 1px solid var(--color-background-border, var(--kf-border)); color: var(--color-foreground-primary, var(--kf-heading)); } /* ============================================ ADMONITIONS ============================================ */ .admonition { border-radius: 6px; border: none; border-left: 3px solid var(--kf-blue); } .admonition.tip { background: rgba(129, 230, 217, 0.15); border-left-color: var(--kf-accent); } .admonition.note { background: rgba(66, 153, 225, 0.1); } .admonition.warning { background: rgba(251, 211, 141, 0.2); border-left-color: #f6ad55; } /* ============================================ HR / DIVIDERS ============================================ */ hr { border: none; height: 1px; background: var(--kf-border); margin: 2rem 0; } /* ============================================ MERMAID DIAGRAMS ============================================ */ .mermaid { text-align: center; margin: 1.5rem 0; padding: 1.5rem 1rem; border: 1px solid var(--kf-border); border-radius: 8px; overflow-x: auto; } @media (prefers-color-scheme: dark) { body:not([data-theme="light"]) .mermaid svg { filter: invert(0.85) hue-rotate(180deg); } } body[data-theme="dark"] .mermaid svg { filter: invert(0.85) hue-rotate(180deg); } /* ============================================ LANDING PAGE ============================================ */ article > section > p:first-of-type { font-size: 1.2rem; color: var(--kf-text); } /* ============================================ CONTENT WIDTH ============================================ */ @media (min-width: 67em) { .content { width: 54em; padding: 0 2em; } body.sidebar-collapsed .content { width: 70em; max-width: 100%; } } /* ============================================ SIDEBAR TOGGLE (YouTube-style collapse) ============================================ */ @media (min-width: 67em) { .sidebar-drawer { transition: width 0.25s cubic-bezier(0.4, 0, 0.2, 1), min-width 0.25s cubic-bezier(0.4, 0, 0.2, 1); } body.sidebar-collapsed .sidebar-drawer { width: 0 !important; min-width: 0 !important; } .sidebar-toggle-btn { position: fixed; top: 56px; left: 0.65rem; z-index: 99; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: 50%; cursor: pointer; color: var(--kf-text-light); padding: 0; line-height: 1; transition: background 0.15s, color 0.15s; } .sidebar-toggle-btn:hover { color: var(--kf-heading); background: rgba(128, 128, 128, 0.15); } .sidebar-toggle-btn:active { background: rgba(128, 128, 128, 0.25); } } @media (max-width: 66.99em) { .sidebar-toggle-btn { display: none !important; } } /* ============================================ LANDING PAGE — Full-width homepage ============================================ */ /* Hide sidebar, ToC, and header chrome on the landing page */ body:has(.landing-page) .sidebar-drawer, body:has(.landing-page) .toc-drawer, body:has(.landing-page) .sidebar-toggle-btn, body:has(.landing-page) .page-info { display: none !important; } body:has(.landing-page) .page { display: block !important; padding-top: 52px !important; } body:has(.landing-page) .main { margin-left: 0 !important; width: 100% !important; max-width: 100% !important; } body:has(.landing-page) .content { max-width: 100% !important; width: 100% !important; padding: 0 !important; margin: 0 !important; } body:has(.landing-page) article { max-width: 100% !important; padding: 0 !important; } body:has(.landing-page) article > section { max-width: 100%; padding: 0; } body:has(.landing-page) h1 { border-bottom: none !important; } body:has(.landing-page) .bottom-of-page { display: none !important; } body:has(.landing-page) .content-icon-container, body:has(.landing-page) .theme-toggle-container, body:has(.landing-page) .theme-toggle-content, body:has(.landing-page) .theme-toggle, body:has(.landing-page) .related-pages, body:has(.landing-page) .nav-overlay-icon, body:has(.landing-page) .sidebar-toggle { display: none !important; } body:has(.landing-page) .article-container { max-width: 100% !important; width: 100% !important; padding: 0 !important; margin: 0 !important; } /* Font import — DM Sans for headings, Source Sans 3 for body */ @import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=Source+Sans+3:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap'); .landing-page { --lp-blue: #5a9cf5; --lp-blue-deep: #1a3a6b; --lp-blue-glow: #5a9cf5; --lp-navy: #0c1b33; --lp-surface: #1a1c24; --lp-surface-alt: #1a1c24; --lp-text: #e2e8f0; --lp-text-muted: #94a3b8; --lp-border: #2a2d38; --lp-radius: 12px; font-family: 'Source Sans 3', 'Segoe UI', sans-serif; color: var(--lp-text); line-height: 1.6; background: #1a1c24; } .landing-page .section-title { font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: 2rem; text-align: center; margin-bottom: 0.75rem; color: var(--lp-text); border: none !important; padding-bottom: 0 !important; } .landing-page .section-desc { text-align: center; max-width: 720px; margin: 0 auto 2.5rem; color: var(--lp-text-muted); font-size: 1.1rem; line-height: 1.75; } /* ---- HERO ---- */ .hero { position: relative; background: linear-gradient(145deg, var(--lp-navy) 0%, #162a50 50%, #1a3a6b 100%); padding: 6rem 2rem 5rem; text-align: center; overflow: hidden; } .hero-bg-pattern { position: absolute; inset: 0; background: radial-gradient(circle at 20% 80%, rgba(90, 156, 245, 0.08) 0%, transparent 50%), radial-gradient(circle at 80% 20%, rgba(90, 156, 245, 0.06) 0%, transparent 50%); pointer-events: none; } .hero::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: repeating-linear-gradient( 45deg, transparent, transparent 40px, rgba(255,255,255,0.01) 40px, rgba(255,255,255,0.01) 80px ); pointer-events: none; } .hero-content { position: relative; z-index: 1; max-width: 800px; margin: 0 auto; } .hero-badge { display: inline-block; padding: 0.35rem 1rem; border: 1px solid rgba(255,255,255,0.15); border-radius: 100px; font-size: 0.8rem; font-weight: 500; color: rgba(255,255,255,0.7); letter-spacing: 0.5px; margin-bottom: 1.5rem; backdrop-filter: blur(4px); background: rgba(255,255,255,0.05); } body:has(.landing-page) img.hidden { display: none !important; } .hero-logo { width: 200px; height: auto; margin: 1.5rem 0 2rem; filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.3)); } .hero-title { font-family: 'DM Sans', sans-serif; font-size: clamp(2.5rem, 6vw, 4rem); font-weight: 700; color: #ffffff !important; margin: 0 0 1rem; letter-spacing: -0.5px; line-height: 1.1; border: none !important; padding: 0 !important; } .hero-tagline { font-size: clamp(1.1rem, 2.5vw, 1.35rem); color: rgba(255,255,255,0.75); max-width: 600px; margin: 0 auto 2rem; line-height: 1.6; } .hero-actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; margin-bottom: 1.5rem; } .btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1.75rem; border-radius: 8px; font-size: 1rem; font-weight: 600; font-family: 'DM Sans', sans-serif; text-decoration: none !important; transition: all 0.2s ease; cursor: pointer; } .btn-primary { background: var(--lp-blue); color: #fff !important; box-shadow: 0 2px 12px rgba(61, 123, 229, 0.35); } .btn-primary:hover { background: var(--lp-blue-glow); box-shadow: 0 4px 20px rgba(61, 123, 229, 0.45); transform: translateY(-1px); color: #fff !important; } .btn-secondary { background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.9) !important; border: 1px solid rgba(255,255,255,0.15); backdrop-filter: blur(4px); } .btn-secondary:hover { background: rgba(255,255,255,0.14); color: #fff !important; transform: translateY(-1px); } .hero-sub { font-size: 0.9rem; color: rgba(255,255,255,0.45); } /* ---- STATS BAR ---- */ .stats-bar { display: flex; justify-content: center; align-items: center; gap: 2rem; padding: 2rem; background: var(--lp-surface); border-bottom: 1px solid var(--lp-border); flex-wrap: wrap; } .stat { display: flex; flex-direction: column; align-items: center; gap: 0.25rem; padding: 0.5rem 1.5rem; } .stat-value { font-family: 'DM Sans', sans-serif; font-size: 1.75rem; font-weight: 700; color: var(--lp-blue); } .stat-label { font-size: 0.85rem; color: var(--lp-text-muted); font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; } .stat-divider { width: 1px; height: 32px; background: var(--lp-border); } @media (max-width: 640px) { .stat-divider { display: none; } .stats-bar { gap: 0.5rem; } .stat { padding: 0.5rem 1rem; } } /* ---- WHAT IS ---- */ .what-is { padding: 4rem 2rem 2rem; max-width: 900px; margin: 0 auto; } /* ---- FEATURES GRID ---- */ .features { padding: 3rem 2rem 4rem; background: var(--lp-surface-alt); border-top: 1px solid var(--lp-border); border-bottom: 1px solid var(--lp-border); } .features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; max-width: 1100px; margin: 0 auto; } .feature-card { background: var(--lp-surface); border: 1px solid var(--lp-border); border-radius: var(--lp-radius); padding: 1.75rem; transition: all 0.25s ease; } .feature-card:hover { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(0,0,0,0.06); border-color: var(--lp-blue); } body[data-theme="dark"] .feature-card:hover { box-shadow: 0 8px 24px rgba(0,0,0,0.25); } .feature-icon { width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; background: rgba(61, 123, 229, 0.08); border-radius: 10px; margin-bottom: 1rem; } body[data-theme="dark"] .feature-icon { background: rgba(90, 156, 245, 0.12); } .feature-card h3 { font-family: 'DM Sans', sans-serif; font-size: 1.15rem; font-weight: 600; margin: 0 0 0.5rem; color: var(--lp-text); } .feature-card p { color: var(--lp-text-muted); font-size: 0.95rem; line-height: 1.65; margin: 0; } @media (max-width: 900px) { .features-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 600px) { .features-grid { grid-template-columns: 1fr; } } /* ---- FRAMEWORKS ---- */ .frameworks { padding: 3.5rem 2rem; max-width: 900px; margin: 0 auto; } .framework-grid { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; } .framework-chip { padding: 0.55rem 1.25rem; border: 1px solid var(--lp-border); border-radius: 100px; font-family: 'JetBrains Mono', monospace; font-size: 0.88rem; font-weight: 500; color: var(--lp-text); background: var(--lp-surface); transition: all 0.2s ease; cursor: default; } .framework-chip:hover { border-color: var(--lp-blue); color: var(--lp-blue); background: rgba(61, 123, 229, 0.05); } /* ---- DOC NAV (Quick Links from home.rst) ---- */ .doc-nav { padding: 4rem 2rem; max-width: 1100px; margin: 0 auto; } .landing-page .doc-cards { margin: 0; } .landing-page a.doc-card { background: var(--lp-surface); border-color: var(--lp-border) !important; } .landing-page a.doc-card strong { color: var(--lp-text); } .landing-page a.doc-card p { color: var(--lp-text-muted); } .landing-page a.doc-card:hover { border-color: var(--lp-blue) !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); } /* ---- QUICKSTART CODE ---- */ .quickstart { padding: 3rem 2rem 4rem; background: var(--lp-surface-alt); border-top: 1px solid var(--lp-border); border-bottom: 1px solid var(--lp-border); } .code-block-wrapper { position: relative; max-width: 680px; margin: 1.5rem auto; border-radius: var(--lp-radius); overflow: hidden; box-shadow: 0 4px 24px rgba(0,0,0,0.12); } .code-lang { background: #2d2d2d; color: #858585; padding: 0.5rem 1rem; font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 1px; border-bottom: 1px solid #3a3a3a; } .landing-code { background: #1e1e1e !important; color: #d4d4d4 !important; padding: 1.25rem 1.5rem !important; margin: 0 !important; border-radius: 0 !important; font-family: 'JetBrains Mono', monospace !important; font-size: 0.9rem !important; line-height: 1.7 !important; overflow-x: auto; } .landing-code .hl-kw { color: #569cd6; } .landing-code .hl-fn { color: #9cdcfe; } .landing-code .hl-num { color: #b5cea8; } .landing-code .hl-str { color: #ce9178; } .landing-code .hl-cm { color: #6a9955; } .quickstart-note { text-align: center; color: var(--lp-text-muted); font-size: 0.95rem; margin-top: 1.25rem; } .quickstart-note a { color: var(--lp-blue) !important; text-decoration: none; font-weight: 600; } .quickstart-note a:hover { text-decoration: underline; } /* ---- COMMUNITY ---- */ .community { padding: 4rem 2rem; max-width: 1000px; margin: 0 auto; } .community-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1.25rem; } .community-card { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; padding: 1.75rem 1rem; border: 1px solid var(--lp-border); border-radius: var(--lp-radius); background: var(--lp-surface); text-decoration: none !important; text-align: center; transition: all 0.2s ease; color: var(--lp-text-muted); } .community-card:hover { border-color: var(--lp-blue); transform: translateY(-2px); box-shadow: 0 4px 16px rgba(0,0,0,0.06); } body[data-theme="dark"] .community-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.25); } .community-card svg { color: var(--lp-blue); } .comm-icon { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 10px; background: rgba(61, 123, 229, 0.08); font-size: 1.3rem; } body[data-theme="dark"] .comm-icon { background: rgba(90, 156, 245, 0.12); } .comm-github::before { content: "\2B50"; } .comm-slack::before { content: "\1F4AC"; } .comm-cncf::before { content: "\1F310"; } .comm-mail::before { content: "\2709"; } .comm-cal::before { content: "\1F4C5"; } .comm-youtube::before { content: "\25B6"; } .comm-calendar::before { content: "\1F5D3"; } .comm-ical::before { content: "\1F4C6"; } .comm-blog::before { content: "\1F4D6"; } .community-card strong { color: var(--lp-text); font-family: 'DM Sans', sans-serif; font-size: 1.05rem; } .community-card span { font-size: 0.85rem; color: var(--lp-text-muted); } @media (max-width: 768px) { .community-links { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 480px) { .community-links { grid-template-columns: 1fr; } } /* ---- FOOTER ---- */ .landing-footer { background: var(--lp-navy); padding: 2rem; text-align: center; } .footer-inner p { color: rgba(255,255,255,0.6); font-size: 0.9rem; margin: 0.25rem 0; } .footer-inner a { color: var(--lp-blue-glow) !important; text-decoration: none; } .footer-inner a:hover { text-decoration: underline; } .footer-copy { font-size: 0.8rem !important; color: rgba(255,255,255,0.35) !important; margin-top: 0.5rem !important; } /* ---- ENTRANCE ANIMATIONS ---- */ @keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .hero-badge { animation: fadeUp 0.6s ease both; } .hero-title { animation: fadeUp 0.6s 0.1s ease both; } .hero-tagline { animation: fadeUp 0.6s 0.2s ease both; } .hero-actions { animation: fadeUp 0.6s 0.3s ease both; } .hero-sub { animation: fadeUp 0.6s 0.4s ease both; } /* JS fallback for browsers without :has() */ body.is-landing .sidebar-drawer, body.is-landing .toc-drawer, body.is-landing .sidebar-toggle-btn, body.is-landing .page-info { display: none !important; } body.is-landing .page { display: block !important; padding-top: 52px !important; } body.is-landing .main { margin-left: 0 !important; width: 100% !important; max-width: 100% !important; } body.is-landing .content { max-width: 100% !important; width: 100% !important; padding: 0 !important; margin: 0 !important; } body.is-landing article { max-width: 100% !important; padding: 0 !important; } body.is-landing .article-container { max-width: 100% !important; width: 100% !important; padding: 0 !important; margin: 0 !important; } body.is-landing .bottom-of-page { display: none !important; } body.is-landing .content-icon-container, body.is-landing .theme-toggle-container, body.is-landing .theme-toggle-content, body.is-landing .theme-toggle, body.is-landing .related-pages, body.is-landing .nav-overlay-icon, body.is-landing .sidebar-toggle { display: none !important; } /* Scroll-triggered entrance animations */ .animate-on-scroll { opacity: 0; transform: translateY(16px); transition: opacity 0.5s ease, transform 0.5s ease; } .animate-on-scroll.visible { opacity: 1; transform: translateY(0); } .feature-card:nth-child(2).animate-on-scroll { transition-delay: 0.05s; } .feature-card:nth-child(3).animate-on-scroll { transition-delay: 0.1s; } .feature-card:nth-child(4).animate-on-scroll { transition-delay: 0.15s; } .feature-card:nth-child(5).animate-on-scroll { transition-delay: 0.2s; } .feature-card:nth-child(6).animate-on-scroll { transition-delay: 0.25s; } .stat:nth-child(3).animate-on-scroll { transition-delay: 0.05s; } .stat:nth-child(5).animate-on-scroll { transition-delay: 0.1s; } .stat:nth-child(7).animate-on-scroll { transition-delay: 0.15s; } .community-card:nth-child(2).animate-on-scroll { transition-delay: 0.05s; } .community-card:nth-child(3).animate-on-scroll { transition-delay: 0.1s; } .community-card:nth-child(4).animate-on-scroll { transition-delay: 0.15s; } /* ============================================ READTHEDOCS ADDONS OVERRIDES ============================================ */ /* Force-disable link preview tooltips and dotted underlines */ div[data-linkpreview-href], readthedocs-linkpreviews { display: none !important; } a.link-preview { border-bottom: none !important; } /* EthicalAds: horizontal text ad at page bottom via footer block */ .ethical-ads-footer { margin: 2rem 0 0; padding: 0.75rem 1rem; width: 100%; max-width: none; border-top: 1px solid var(--color-foreground-border, #4a5568); font-size: 0.85rem; text-align: center; }