Nano_Banana_Editor / app /globals.css
Reubencf's picture
Upload 38 files
f09b9f0 verified
@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);
}
}