Files
better-auth/docs/app/globals.css
Bereket Engida 35e9f9f6e4 docs: landing improvements (#9169)
Co-authored-by: Taesu <bytaesu@gmail.com>
2026-04-18 23:04:27 -07:00

955 lines
22 KiB
CSS

/* spell-checker:disable */
@import "tailwindcss";
@import "fumadocs-ui/css/black.css";
@import "fumadocs-ui/css/preset.css";
@source "../components/**/*.{ts,tsx}";
@source "../node_modules/fumadocs-ui/dist/**/*.js";
/* biome-ignore lint/correctness/noInvalidPositionAtImportRule: <explanation> */
@import "tw-animate-css";
@custom-variant dark (&:is(.dark *));
@layer utilities {
.bg-noise-pattern {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 700 700'%3E%3Cdefs%3E%3Cfilter id='nnnoise-filter' x='-20%25' y='-20%25' width='140%25' height='140%25' filterUnits='objectBoundingBox' primitiveUnits='userSpaceOnUse' color-interpolation-filters='linearRGB'%3E%3CfeTurbulence type='turbulence' baseFrequency='0.167' numOctaves='4' seed='15' stitchTiles='stitch' x='0%25' y='0%25' width='100%25' height='100%25' result='turbulence'%3E%3C/feTurbulence%3E%3CfeSpecularLighting surfaceScale='15' specularConstant='0.4' specularExponent='20' lighting-color='%23fff' x='0%25' y='0%25' width='100%25' height='100%25' in='turbulence' result='specularLighting'%3E%3CfeDistantLight azimuth='3' elevation='100'%3E%3C/feDistantLight%3E%3C/feSpecularLighting%3E%3C/filter%3E%3C/defs%3E%3Crect width='700' height='700' fill='currentColor'%3E%3C/rect%3E%3Crect width='700' height='700' fill='currentColor' filter='url(%23nnnoise-filter)' opacity='0.3'%3E%3C/rect%3E%3C/svg%3E");
background-size: cover;
background-position: center;
}
.bg-grid-black\/\[0\.02\] {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32' fill='none' stroke='rgb(0 0 0 / 0.02)'%3e%3cpath d='m0 .5h32m-32 32v-32'/%3e%3c/svg%3e");
}
.bg-grid-white\/\[0\.02\] {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32' fill='none' stroke='rgb(255 255 255 / 0.02)'%3e%3cpath d='m0 .5h32m-32 32v-32'/%3e%3c/svg%3e");
}
.animate-fade-in {
animation: fadeIn 0.3s ease-out forwards;
}
}
@keyframes logo-snap-left {
from {
transform: translateX(-12px) rotate(-5deg);
}
to {
transform: translateX(0) rotate(0);
}
}
@keyframes logo-snap-right {
from {
transform: translateX(12px) rotate(5deg);
}
to {
transform: translateX(0) rotate(0);
}
}
@keyframes logo-container-reveal {
from {
opacity: 0;
}
to {
opacity: 0.4;
}
}
.animate-logo-snap-left {
animation: logo-snap-left 0.6s cubic-bezier(0.22, 1, 0.36, 1) 0.3s both;
}
.animate-logo-snap-right {
animation: logo-snap-right 0.6s cubic-bezier(0.22, 1, 0.36, 1) 0.3s both;
}
.animate-logo-reveal {
opacity: 0;
animation: logo-container-reveal 0.4s ease-out 0.3s forwards;
}
@keyframes blink {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0;
}
}
.animate-blink {
animation: blink 1s step-end infinite;
}
@property --sparkle-angle {
syntax: "<angle>";
initial-value: 0deg;
inherits: false;
}
@property --sparkle-angle-2 {
syntax: "<angle>";
initial-value: 180deg;
inherits: false;
}
@property --sparkle-opacity {
syntax: "<number>";
initial-value: 0.3;
inherits: false;
}
@keyframes border-sparkle {
0% {
--sparkle-angle: 0deg;
--sparkle-opacity: 0.15;
}
25% {
--sparkle-opacity: 0.35;
}
50% {
--sparkle-opacity: 0.1;
}
75% {
--sparkle-opacity: 0.3;
}
100% {
--sparkle-angle: 360deg;
--sparkle-opacity: 0.15;
}
}
@keyframes border-sparkle-2 {
0% {
--sparkle-angle-2: 180deg;
}
100% {
--sparkle-angle-2: -180deg;
}
}
.animate-border-sparkle {
animation:
border-sparkle 8s ease-in-out infinite,
border-sparkle-2 12s ease-in-out infinite;
}
@keyframes flowDot {
from {
transform: translateX(-4px) translateY(-50%);
}
to {
transform: translateX(20px) translateY(-50%);
}
}
@keyframes sparkle-down {
0% {
top: 0%;
opacity: 0;
}
5% {
opacity: 1;
}
60% {
opacity: 0.6;
}
100% {
top: 80%;
opacity: 0;
}
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translate3d(0, 8px, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
@keyframes icon-bounce {
0% {
transform: translateY(0);
}
40% {
transform: translateY(-4px);
}
70% {
transform: translateY(1px);
}
100% {
transform: translateY(0);
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes float {
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-3px);
}
}
@keyframes slideInFromLeft {
from {
opacity: 0;
transform: translateX(-10px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes shimmer {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
.animate-shimmer {
animation: shimmer 3s ease-in-out infinite;
}
/* NPM download card - animated gradient border on hover */
.npm-download-card {
border: 1px solid rgba(255, 255, 255, 0.06);
position: relative;
}
.npm-download-card::before {
content: "";
position: absolute;
inset: 0;
border: 1px solid transparent;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.08),
rgba(130, 200, 160, 0.12),
rgba(255, 255, 255, 0.08),
transparent
)
border-box;
mask:
linear-gradient(#fff 0 0) padding-box,
linear-gradient(#fff 0 0);
mask-composite: exclude;
-webkit-mask:
linear-gradient(#fff 0 0) padding-box,
linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
opacity: 0;
transition: opacity 0.5s ease;
background-size: 200% 100%;
animation: border-shimmer 3s linear infinite;
pointer-events: none;
}
.npm-download-card:hover::before {
opacity: 1;
}
.npm-download-card:hover {
border-color: rgba(255, 255, 255, 0.04);
box-shadow: 0 0 30px rgba(130, 200, 160, 0.03);
}
@keyframes border-shimmer {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}
@keyframes scroll-features {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-50%);
}
}
.animate-scroll-features {
animation: scroll-features 8s linear infinite;
}
@keyframes marquee {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
.animate-marquee {
animation: marquee 15s linear infinite;
}
@keyframes marquee-reverse {
0% {
transform: translateX(-50%);
}
100% {
transform: translateX(0);
}
}
@keyframes logo-marquee {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
.animate-logo-marquee {
animation: logo-marquee 30s linear infinite;
}
@keyframes vertical-marquee {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-50%);
}
}
.animate-vertical-marquee {
animation: vertical-marquee 20s linear infinite;
}
@keyframes vertical-marquee-reverse {
0% {
transform: translateY(-50%);
}
100% {
transform: translateY(0);
}
}
@keyframes hrtl-scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
@keyframes hrtl-scroll-reverse {
0% {
transform: translateX(-50%);
}
100% {
transform: translateX(0);
}
}
.animate-hrtl-scroll {
animation: hrtl-scroll var(--animation-duration, 60s) linear infinite;
}
.animate-hrtl-scroll-reverse {
animation: hrtl-scroll-reverse var(--animation-duration, 60s) linear infinite;
}
/* Hide scrollbars during animations */
.no-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
scrollbar-color: transparent transparent;
}
.no-scrollbar::-webkit-scrollbar {
display: none;
}
/* Stable animation container */
.animate-stable {
contain: layout style paint;
transform: translateZ(0);
}
:root {
--background: oklch(1 0 0);
--foreground: oklch(0.147 0.004 49.25);
--card: oklch(1 0 0);
--card-foreground: oklch(0.147 0.004 49.25);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.147 0.004 49.25);
--primary: oklch(0.216 0.006 56.043);
--primary-foreground: oklch(0.985 0.001 106.423);
--secondary: oklch(0.97 0.001 106.424);
--secondary-foreground: oklch(0.216 0.006 56.043);
--muted: oklch(0.97 0.001 106.424);
--muted-foreground: oklch(0.553 0.013 58.071);
--accent: oklch(0.97 0.001 106.424);
--accent-foreground: oklch(0.216 0.006 56.043);
--destructive: oklch(0.577 0.245 27.325);
--destructive-foreground: oklch(0.577 0.245 27.325);
--border: oklch(0.923 0.003 48.717);
--input: oklch(0.923 0.003 48.717);
--ring: oklch(0.709 0.01 56.259);
--chart-1: oklch(0.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--sidebar: oklch(0.985 0.001 106.423);
--sidebar-foreground: oklch(0.147 0.004 49.25);
--sidebar-primary: oklch(0.216 0.006 56.043);
--sidebar-primary-foreground: oklch(0.985 0.001 106.423);
--sidebar-accent: oklch(0.97 0.001 106.424);
--sidebar-accent-foreground: oklch(0.216 0.006 56.043);
--sidebar-border: oklch(0.923 0.003 48.717);
--sidebar-ring: oklch(0.709 0.01 56.259);
--scrollbar-thumb: var(--border);
--scrollbar-thumb-hover: var(--ring);
--scrollbar-track: transparent;
--radius: 0.2rem;
--landing-topbar-height: 48px;
--fd-nav-height: 56px;
--fd-banner-height: 0px;
--fd-tocnav-height: 0px;
--font-sans: Geist, sans-serif;
--font-serif: Georgia, serif;
--font-mono: Geist Mono, monospace;
--shadow-2xs: 0px 1px 2px 0px hsl(0 0% 0% / 0.09);
--shadow-xs: 0px 1px 2px 0px hsl(0 0% 0% / 0.09);
--shadow-sm:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 1px 2px -1px hsl(0 0% 0% / 0.18);
--shadow:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 1px 2px -1px hsl(0 0% 0% / 0.18);
--shadow-md:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 2px 4px -1px hsl(0 0% 0% / 0.18);
--shadow-lg:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 4px 6px -1px hsl(0 0% 0% / 0.18);
--shadow-xl:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 8px 10px -1px hsl(0 0% 0% / 0.18);
--shadow-2xl: 0px 1px 2px 0px hsl(0 0% 0% / 0.45);
--tracking-normal: 0em;
--spacing: 0.25rem;
}
@media (min-width: 64rem) {
:root {
--landing-topbar-height: 44px;
}
}
.dark {
--background: hsl(0 0% 0%);
--foreground: oklch(0.985 0.001 106.423);
--card: oklch(0.147 0.004 49.25);
--card-foreground: oklch(0.985 0.001 106.423);
--popover: oklch(0.147 0.004 49.25);
--popover-foreground: oklch(0.985 0.001 106.423);
--primary: oklch(0.985 0.001 106.423);
--primary-foreground: oklch(0.216 0.006 56.043);
--secondary: oklch(0.268 0.007 34.298);
--secondary-foreground: oklch(0.985 0.001 106.423);
--muted: oklch(0.268 0.007 34.298);
--muted-foreground: oklch(0.709 0.01 56.259);
--accent: oklch(0.268 0.007 34.298);
--accent-foreground: oklch(0.985 0.001 106.423);
--destructive: oklch(0.396 0.141 25.723);
--destructive-foreground: oklch(0.637 0.237 25.331);
--border: oklch(0.268 0.007 34.298);
--input: oklch(0.268 0.007 34.298);
--ring: oklch(0.553 0.013 58.071);
--chart-1: oklch(0.488 0.243 264.376);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.216 0.006 56.043);
--sidebar-foreground: oklch(0.985 0.001 106.423);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.985 0.001 106.423);
--sidebar-accent: oklch(0.268 0.007 34.298);
--sidebar-accent-foreground: oklch(0.985 0.001 106.423);
--sidebar-border: oklch(0.268 0.007 34.298);
--sidebar-ring: oklch(0.553 0.013 58.071);
--scrollbar-thumb: var(--border);
--scrollbar-thumb-hover: var(--ring);
--scrollbar-track: transparent;
--shadow-2xs: 0px 1px 2px 0px hsl(0 0% 0% / 0.09);
--shadow-xs: 0px 1px 2px 0px hsl(0 0% 0% / 0.09);
--shadow-sm:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 1px 2px -1px hsl(0 0% 0% / 0.18);
--shadow:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 1px 2px -1px hsl(0 0% 0% / 0.18);
--shadow-md:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 2px 4px -1px hsl(0 0% 0% / 0.18);
--shadow-lg:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 4px 6px -1px hsl(0 0% 0% / 0.18);
--shadow-xl:
0px 1px 2px 0px hsl(0 0% 0% / 0.18), 0px 8px 10px -1px hsl(0 0% 0% / 0.18);
--shadow-2xl: 0px 1px 2px 0px hsl(0 0% 0% / 0.45);
}
@theme inline {
--breakpoint-navbar: 64rem;
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-destructive-foreground: var(--destructive-foreground);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--shadow-2xs: var(--shadow-2xs);
--shadow-xs: var(--shadow-xs);
--shadow-sm: var(--shadow-sm);
--shadow: var(--shadow);
--shadow-md: var(--shadow-md);
--shadow-lg: var(--shadow-lg);
--shadow-xl: var(--shadow-xl);
--shadow-2xl: var(--shadow-2xl);
--animate-accordion-down: accordion-down 0.2s ease-out;
--animate-accordion-up: accordion-up 0.2s ease-out;
@keyframes accordion-down {
from {
height: 0;
}
to {
height: var(--radix-accordion-content-height);
}
}
@keyframes accordion-up {
from {
height: var(--radix-accordion-content-height);
}
to {
height: 0;
}
}
}
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply overflow-x-hidden;
max-width: 100vw;
}
body {
@apply overscroll-none bg-background text-foreground selection:bg-foreground selection:text-background;
}
}
html {
scroll-behavior: auto;
scroll-padding-top: calc(
var(--fd-nav-height, 56px) +
var(--fd-banner-height, 0px) +
var(--fd-tocnav-height, 0px) +
24px
);
}
html:not([data-anchor-scrolling]) {
scroll-behavior: smooth;
}
/* Global custom scrollbars */
* {
scrollbar-width: thin;
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}
::-webkit-scrollbar {
width: 12px;
height: 12px;
}
::-webkit-scrollbar-track {
background: var(--scrollbar-track);
}
::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb);
border-radius: 9999px;
border: 3px solid transparent;
background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover {
background-color: var(--scrollbar-thumb-hover);
}
::-webkit-scrollbar-corner {
background: transparent;
}
@utility no-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
&::-webkit-scrollbar {
display: none;
}
}
@utility bg-grid {
background-image:
linear-gradient(currentColor 1px, transparent 1px),
linear-gradient(90deg, currentColor 1px, transparent 1px);
background-size: 32px 32px;
}
@utility bg-grid-small {
background-image:
linear-gradient(currentColor 1px, transparent 1px),
linear-gradient(90deg, currentColor 1px, transparent 1px);
background-size: 8px 8px;
}
@utility bg-dot {
background-image: radial-gradient(
circle at 50% 50%,
currentColor 1.6px,
transparent 1.6px
);
background-size: 16px 16px;
}
.prose code:not(pre code),
.prose a {
overflow-wrap: anywhere;
}
/* Docs layout: narrow sidebar, wide content */
.docs-layout {
--fd-sidebar-width: 0px;
--fd-toc-width: 0px;
--fd-layout-width: 100vw;
--fd-layout-offset: 0px;
--fd-page-width: 900px;
--fd-banner-height: var(--landing-topbar-height);
--landing-left-pane-width: min(22vw, 300px);
--staggered-nav-cta-width: 128px;
padding-top: var(--landing-topbar-height);
}
@media (min-width: 64rem) {
.docs-layout {
--fd-layout-width: min(
calc(100vw - var(--landing-left-pane-width)),
1200px
);
padding-inline-start: var(--landing-left-pane-width);
}
.docs-layout::before {
content: "";
position: fixed;
inset-block-start: 0;
height: var(--landing-topbar-height);
inset-inline-start: calc(var(--landing-left-pane-width) - 1px);
width: 1px;
background: var(--color-border);
opacity: 0.55;
transition:
inset-inline-start 280ms ease-out,
opacity 220ms ease-out;
pointer-events: none;
z-index: 100;
}
}
@media (min-width: 80rem) {
.docs-layout {
--fd-toc-width: 280px;
}
.docs-layout #nd-toc {
padding-inline-start: 2rem;
padding-top: 4rem;
padding-bottom: 4rem;
}
}
/* Hide scrollbar in AI Chat panel */
.ai-chat-messages {
scrollbar-width: none;
&::-webkit-scrollbar {
display: none;
}
}
/* Prevent scroll-chaining and hide scrollbars in TOC areas */
.docs-layout #nd-toc > div {
overscroll-behavior-y: contain;
scrollbar-width: none;
}
.docs-layout [data-toc-popover],
.docs-layout [data-toc-popover] * {
scrollbar-width: none;
&::-webkit-scrollbar {
display: none;
}
}
/* Blog layout: matches docs pattern with narrow left pane + TOC sidebar */
.blog-layout {
padding-top: var(--landing-topbar-height);
}
@media (min-width: 64rem) {
.blog-layout {
margin-inline-start: var(--landing-left-pane-width);
}
.blog-layout::before {
content: "";
position: fixed;
inset-block-start: 0;
height: var(--landing-topbar-height);
inset-inline-start: calc(var(--landing-left-pane-width) - 1px);
width: 1px;
background: var(--color-border);
opacity: 0.55;
pointer-events: none;
z-index: 100;
}
}
/* Hide fumadocs default sidebar nav title row (empty link when nav.title is not set) */
.docs-layout #nd-sidebar > div:first-child > .flex:first-child {
display: none;
}
/* Docs footer nav (prev/next) — sharp, minimal, monospaced */
.docs-layout #nd-page article > div.\@container {
gap: 0;
border-top: 1px dashed
color-mix(in oklch, var(--color-foreground) 8%, transparent);
padding-top: 0;
padding-bottom: 2rem;
margin-top: 3rem;
}
.docs-layout #nd-page article > div.\@container > a {
border-radius: 0;
border: none;
border-bottom: 1px dashed
color-mix(in oklch, var(--color-foreground) 8%, transparent);
padding: 1.25rem 1.5rem;
font-family: var(--font-mono);
background: transparent;
transition: all 200ms ease;
position: relative;
}
.docs-layout #nd-page article > div.\@container > a:first-child {
border-right: 1px dashed
color-mix(in oklch, var(--color-foreground) 8%, transparent);
}
.docs-layout #nd-page article > div.\@container > a:hover {
background: color-mix(in oklch, var(--color-foreground) 3%, transparent);
border-color: color-mix(in oklch, var(--color-foreground) 15%, transparent);
border-style: solid;
}
.docs-layout #nd-page article > div.\@container > a div {
gap: 0.5rem;
font-weight: 400;
}
.docs-layout #nd-page article > div.\@container > a div p {
font-size: 12px;
letter-spacing: 0.02em;
}
.docs-layout #nd-page article > div.\@container > a div svg {
width: 12px;
height: 12px;
opacity: 0.45;
transition: opacity 200ms ease;
}
.docs-layout #nd-page article > div.\@container > a:hover div svg {
opacity: 0.8;
}
.docs-layout #nd-page article > div.\@container > a > p {
font-size: 11px;
opacity: 0.5;
font-family: var(--font-sans);
letter-spacing: 0;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
appearance: none;
display: hidden;
}
/* Code blocks — flat near-black, sharp edges, no gradients */
.dark .shiki {
background-color: #050505 !important;
border-color: rgba(255, 255, 255, 0.06);
border-radius: 0 !important;
}
/* Tab/card wrappers containing code blocks */
.dark .bg-fd-card:has(.shiki),
.dark [data-slot="tabs"]:has(.shiki),
.dark div:has(> [role="tablist"]):has(.shiki) {
background-color: #050505 !important;
border-color: rgba(255, 255, 255, 0.06);
border-radius: 0 !important;
}
/* Override when keepBackground is enabled */
.dark .bg-\(--shiki-dark-bg\),
.dark [class*="bg-(--shiki-dark-bg)"] {
background-color: #050505 !important;
}
/* Code block title bar / tab list — flat, no gradient */
.dark figure.shiki > div:first-child,
.dark [role="tablist"]:has(+ [role="tabpanel"] .shiki),
.dark [role="tablist"]:has(+ div .shiki) {
background: transparent;
border-color: rgba(255, 255, 255, 0.06);
border-radius: 0 !important;
}
/* Tab content panel background */
.dark [role="tabpanel"]:has(.shiki) {
background-color: #050505 !important;
border-radius: 0 !important;
}
/* Code block inside tabs — match parent, no extra border/shadow */
.dark [role="tabpanel"] .shiki {
background-color: #050505 !important;
border: none;
box-shadow: none;
border-radius: 0 !important;
}
/* Code block content viewport — force near-black in dark mode */
.dark .fd-scroll-container,
.dark figure.shiki .fd-scroll-container,
.dark figure:has(.shiki) > div:last-child {
background-color: #050505 !important;
}
/* Code block figure bg-fd-secondary / bg-fd-card wrappers */
.dark figure.shiki,
.dark figure:has(pre) {
background-color: #050505 !important;
border-color: rgba(255, 255, 255, 0.06);
}
/* All code block figures — sharp corners (both themes) */
figure:has(.shiki),
figure.shiki,
[data-slot="tabs"]:has(.shiki),
.bg-fd-card:has(.shiki) {
border-radius: 0 !important;
overflow: hidden;
}
figure.shiki > div:first-child,
[role="tablist"]:has(+ [role="tabpanel"] .shiki),
[role="tablist"]:has(+ div .shiki) {
border-radius: 0 !important;
}
[role="tabpanel"]:has(.shiki),
[role="tabpanel"] .shiki {
border-radius: 0 !important;
}
/* Hide TOC scroll indicator dot */
.docs-layout #nd-toc
div.absolute.size-1.bg-fd-primary.rounded-full.transition-transform,
.docs-layout
[data-toc-popover]
div.absolute.size-1.bg-fd-primary.rounded-full.transition-transform {
display: none !important;
}
/* Respect prefers-reduced-motion for accessibility (WCAG 2.3.3) */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}