Spaces:
Running
Running
@import "tailwindcss"; | |
/* shadcn theme tokens */ | |
:root { | |
--background: 0 0% 100%; | |
--foreground: 222.2 84% 4.9%; | |
--card: 0 0% 100%; | |
--card-foreground: 222.2 84% 4.9%; | |
--popover: 0 0% 100%; | |
--popover-foreground: 222.2 84% 4.9%; | |
/* Brand: Orangish Red */ | |
--primary: 14 90% 50%; | |
--primary-foreground: 0 0% 98%; | |
--secondary: 210 40% 96.1%; | |
--secondary-foreground: 222.2 47.4% 11.2%; | |
--muted: 210 40% 96.1%; | |
--muted-foreground: 215.4 16.3% 46.9%; | |
--accent: 14 95% 90%; | |
--accent-foreground: 14 90% 20%; | |
--destructive: 0 84.2% 60.2%; | |
--destructive-foreground: 210 40% 98%; | |
--border: 214.3 31.8% 91.4%; | |
--input: 214.3 31.8% 91.4%; | |
--ring: 14 90% 45%; | |
--radius: 0.75rem; | |
--chart-1: 12 76% 61%; | |
--chart-2: 173 58% 39%; | |
--chart-3: 197 37% 24%; | |
--chart-4: 43 74% 66%; | |
--chart-5: 27 87% 67%; | |
} | |
.dark { | |
--background: 240 10% 3.9%; | |
--foreground: 0 0% 98%; | |
--card: 240 10% 3.9%; | |
--card-foreground: 0 0% 98%; | |
--popover: 240 10% 3.9%; | |
--popover-foreground: 0 0% 98%; | |
/* Brand in dark mode */ | |
--primary: 14 87% 60%; | |
--primary-foreground: 240 10% 3.9%; | |
--secondary: 240 3.7% 15.9%; | |
--secondary-foreground: 0 0% 98%; | |
--muted: 240 3.7% 15.9%; | |
--muted-foreground: 240 5% 64.9%; | |
--accent: 14 40% 20%; | |
--accent-foreground: 0 0% 98%; | |
--destructive: 0 62.8% 30.6%; | |
--destructive-foreground: 0 85.7% 97.3%; | |
--border: 240 3.7% 15.9%; | |
--input: 240 3.7% 15.9%; | |
--ring: 14 87% 55%; | |
} | |
@media (prefers-color-scheme: dark) { | |
:root:not(.light) { | |
--background: 240 10% 3.9%; | |
--foreground: 0 0% 98%; | |
--card: 240 10% 3.9%; | |
--card-foreground: 0 0% 98%; | |
--popover: 240 10% 3.9%; | |
--popover-foreground: 0 0% 98%; | |
/* Brand in dark mode */ | |
--primary: 14 87% 60%; | |
--primary-foreground: 240 10% 3.9%; | |
--secondary: 240 3.7% 15.9%; | |
--secondary-foreground: 0 0% 98%; | |
--muted: 240 3.7% 15.9%; | |
--muted-foreground: 240 5% 64.9%; | |
--accent: 14 40% 20%; | |
--accent-foreground: 0 0% 98%; | |
--destructive: 0 62.8% 30.6%; | |
--destructive-foreground: 0 85.7% 97.3%; | |
--border: 240 3.7% 15.9%; | |
--input: 240 3.7% 15.9%; | |
--ring: 14 87% 55%; | |
} | |
} | |
@theme inline { | |
--color-background: hsl(var(--background)); | |
--color-foreground: hsl(var(--foreground)); | |
--color-card: hsl(var(--card)); | |
--color-card-foreground: hsl(var(--card-foreground)); | |
--color-popover: hsl(var(--popover)); | |
--color-popover-foreground: hsl(var(--popover-foreground)); | |
--color-primary: hsl(var(--primary)); | |
--color-primary-foreground: hsl(var(--primary-foreground)); | |
--color-secondary: hsl(var(--secondary)); | |
--color-secondary-foreground: hsl(var(--secondary-foreground)); | |
--color-muted: hsl(var(--muted)); | |
--color-muted-foreground: hsl(var(--muted-foreground)); | |
--color-accent: hsl(var(--accent)); | |
--color-accent-foreground: hsl(var(--accent-foreground)); | |
--color-destructive: hsl(var(--destructive)); | |
--color-destructive-foreground: hsl(var(--destructive-foreground)); | |
--color-border: hsl(var(--border)); | |
--color-input: hsl(var(--input)); | |
--color-ring: hsl(var(--ring)); | |
--font-sans: var(--font-geist-sans); | |
--font-mono: var(--font-geist-mono); | |
} | |
body { | |
background: hsl(var(--background)); | |
color: hsl(var(--foreground)); | |
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"; | |
} | |
/* Custom scrollbar styling */ | |
.scrollbar-thin::-webkit-scrollbar { | |
width: 6px; | |
height: 6px; | |
} | |
.scrollbar-thin::-webkit-scrollbar-track { | |
background: hsl(var(--background) / 0.1); | |
border-radius: 3px; | |
} | |
.scrollbar-thin::-webkit-scrollbar-thumb { | |
background: hsl(var(--muted-foreground) / 0.3); | |
border-radius: 3px; | |
} | |
.scrollbar-thin::-webkit-scrollbar-thumb:hover { | |
background: hsl(var(--muted-foreground) / 0.5); | |
} | |
/* Firefox */ | |
.scrollbar-thin { | |
scrollbar-width: thin; | |
scrollbar-color: hsl(var(--muted-foreground) / 0.3) hsl(var(--background) / 0.1); | |
} | |
/* Nano Banana Editor - node visuals */ | |
.nb-node { | |
background: hsl(var(--card) / 0.9); | |
border: 1px solid hsl(var(--border) / 0.6); | |
box-shadow: 0 10px 30px rgba(0,0,0,0.35); | |
border-radius: var(--radius); | |
backdrop-filter: blur(6px); | |
/* Prevent blurring on zoom */ | |
image-rendering: -webkit-optimize-contrast; | |
image-rendering: crisp-edges; | |
transform: translateZ(0); | |
will-change: transform; | |
-webkit-font-smoothing: antialiased; | |
-moz-osx-font-smoothing: grayscale; | |
backface-visibility: hidden; | |
perspective: 1000px; | |
} | |
/* Prevent text selection on node elements except inputs */ | |
.nb-node * { | |
user-select: none; | |
-webkit-user-select: none; | |
} | |
.nb-node input, | |
.nb-node textarea, | |
.nb-node select { | |
user-select: text; | |
-webkit-user-select: text; | |
} | |
.nb-node .nb-header { | |
background: linear-gradient(to bottom, hsl(var(--muted) / 0.35), hsl(var(--muted) / 0.08)); | |
} | |
.nb-port { | |
width: 20px; | |
height: 20px; | |
border-radius: 9999px; | |
border: 3px solid rgba(255,255,255,0.6); | |
background: hsl(var(--popover)); | |
cursor: crosshair; | |
transition: transform 0.15s ease, background 0.15s ease, box-shadow 0.15s ease; | |
position: relative; | |
user-select: none; | |
-webkit-user-select: none; | |
} | |
.nb-port:hover { | |
transform: scale(1.25); | |
background: hsl(var(--accent)); | |
box-shadow: 0 0 12px hsl(var(--ring) / 0.4); | |
} | |
.nb-port.out { | |
border-color: hsl(var(--primary)); | |
} | |
.nb-port.out:hover { | |
background: hsl(var(--primary)); | |
box-shadow: 0 0 16px hsl(var(--primary) / 0.6); | |
} | |
.nb-port.in { | |
border-color: #34d399; | |
} | |
.nb-port.in:hover { | |
background: #34d399; | |
box-shadow: 0 0 16px rgba(52,211,153,0.6); | |
} | |
.nb-line { | |
stroke: #7c7c7c; | |
stroke-width: 2.5; | |
} | |
.nb-line.active { stroke: #8b5cf6; } | |
/* Canvas grid */ | |
.nb-canvas { | |
background-color: hsl(var(--background)); | |
background-image: | |
radial-gradient(circle at 1px 1px, hsl(var(--muted-foreground) / 0.18) 1px, transparent 0), | |
radial-gradient(circle at 1px 1px, hsl(var(--muted-foreground) / 0.09) 1px, transparent 0); | |
background-size: 20px 20px, 100px 100px; | |
} | |
/* Ensure crisp text and images at all zoom levels */ | |
.nb-node * { | |
text-rendering: optimizeLegibility; | |
shape-rendering: crispEdges; | |
} | |
.nb-node img { | |
image-rendering: auto; /* Keep images smooth */ | |
image-rendering: -webkit-optimize-contrast; | |
} | |
.nb-node input, | |
.nb-node select, | |
.nb-node textarea, | |
.nb-node button { | |
transform: translateZ(0); | |
-webkit-font-smoothing: subpixel-antialiased; | |
font-smoothing: subpixel-antialiased; | |
} | |
/* Force GPU acceleration for transforms */ | |
.nb-canvas > div { | |
transform-style: preserve-3d; | |
-webkit-transform-style: preserve-3d; | |
} | |
/* Prevent blur on scaled elements */ | |
@media screen and (-webkit-min-device-pixel-ratio: 0) { | |
.nb-node { | |
-webkit-backface-visibility: hidden; | |
-webkit-transform: translateZ(0) scale(1.0, 1.0); | |
} | |
} | |