fix(web): light mode profundidad + grid global + autofill fix

Cambios:
- index.css: fix de browser autofill (Chrome/Safari forzaba bg amarillo +
  texto blanco que rompia contraste). Override -webkit-text-fill-color
  + box-shadow inset para mantener tokens del DS. Esta era la causa real
  de las 'letras blancas en gris' que se veian en login.
- index.css: utility .grid-bg global (7% opacity light, 10% dark) — para
  usar como fondo cuadriculado en todos los layouts.
- PublicLayout: agrego .grid-bg layer + bg-background explicito + glow
  blobs mas intensos (25%/20% en light vs 10% antes). Light ahora
  tiene la misma profundidad visual que dark.
- ProtectedLayout: agrego .grid-bg + glow blobs sutiles en corners para
  dar profundidad al dashboard y todas las secciones internas. Resalta
  futuros componentes glass.

Tests: 136/136 verde.
This commit is contained in:
2026-04-16 11:10:06 -03:00
parent 3bc2625e21
commit 278e1cf378
3 changed files with 48 additions and 18 deletions

View File

@@ -204,6 +204,21 @@
code, pre, kbd, samp { code, pre, kbd, samp {
font-family: var(--font-mono); font-family: var(--font-mono);
} }
/* ── Browser autofill (Chrome/Safari): forzar tokens del DS ──
Sin esto, autofill aplica bg amarillo + texto blanco que se ve horrible
y rompe contraste con cualquier paleta. */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active,
textarea:-webkit-autofill,
select:-webkit-autofill {
-webkit-text-fill-color: var(--foreground) !important;
-webkit-box-shadow: 0 0 0 1000px var(--input) inset !important;
caret-color: var(--foreground) !important;
transition: background-color 5000s ease-in-out 0s;
}
} }
/* ================================================================ /* ================================================================
@@ -222,6 +237,21 @@
background-image: var(--gradient-mesh); background-image: var(--gradient-mesh);
} }
/* Grid texture overlay — usar como fondo decorativo en surfaces grandes
Light: 2.5% opacity (sutil pero visible). Dark: 5% (más presente) */
.grid-bg {
background-image:
linear-gradient(to right, currentColor 1px, transparent 1px),
linear-gradient(to bottom, currentColor 1px, transparent 1px);
background-size: 56px 56px;
color: var(--neutral-500);
opacity: 0.07;
}
.dark .grid-bg {
color: var(--neutral-400);
opacity: 0.10;
}
/* Brand glow para focus en inputs críticos */ /* Brand glow para focus en inputs críticos */
.focus-glow:focus-visible { .focus-glow:focus-visible {
box-shadow: var(--shadow-glow); box-shadow: var(--shadow-glow);

View File

@@ -8,14 +8,21 @@ interface ProtectedLayoutProps {
export function ProtectedLayout({ children }: ProtectedLayoutProps) { export function ProtectedLayout({ children }: ProtectedLayoutProps) {
return ( return (
<div className="flex h-svh overflow-hidden bg-background text-foreground"> <div className="relative flex h-svh overflow-hidden bg-background text-foreground">
{/* Grid texture — fondo cuadriculado para dar profundidad y resaltar glass */}
<div className="absolute inset-0 grid-bg pointer-events-none" />
{/* Subtle brand/violet glow accents — corners */}
<div className="absolute top-[-15%] right-[-8%] w-[500px] h-[500px] rounded-full bg-brand-500/10 dark:bg-brand-500/12 blur-[140px] pointer-events-none" />
<div className="absolute bottom-[-15%] left-[20%] w-[500px] h-[500px] rounded-full bg-violet-500/8 dark:bg-violet-500/10 blur-[140px] pointer-events-none" />
{/* Desktop sidebar */} {/* Desktop sidebar */}
<div className="hidden lg:flex lg:w-60 lg:flex-col lg:shrink-0"> <div className="relative z-10 hidden lg:flex lg:w-60 lg:flex-col lg:shrink-0 border-r border-border">
<SidebarNav /> <SidebarNav />
</div> </div>
{/* Main column */} {/* Main column */}
<div className="flex flex-1 flex-col min-w-0 overflow-hidden"> <div className="relative z-10 flex flex-1 flex-col min-w-0 overflow-hidden">
<AppHeader /> <AppHeader />
<main className="flex-1 overflow-y-auto p-6">{children}</main> <main className="flex-1 overflow-y-auto p-6">{children}</main>
</div> </div>

View File

@@ -7,23 +7,16 @@ interface PublicLayoutProps {
export function PublicLayout({ children }: PublicLayoutProps) { export function PublicLayout({ children }: PublicLayoutProps) {
return ( return (
<div className="relative min-h-svh flex items-center justify-center p-4 overflow-hidden"> <div className="relative min-h-svh flex items-center justify-center p-4 overflow-hidden bg-background">
{/* Gradient mesh background — subtle radial blobs (brand cyan + violet) */} {/* Grid texture — sutil en light, más presente en dark */}
<div className="absolute inset-0 grid-bg pointer-events-none" />
{/* Gradient mesh con radial blobs (brand cyan + violet) */}
<div className="absolute inset-0 gradient-mesh pointer-events-none" /> <div className="absolute inset-0 gradient-mesh pointer-events-none" />
{/* Subtle grid texture overlay (visible on dark, fades on light) */} {/* Brand glow accents — más intensos para que la profundidad funcione en light también */}
<div <div className="absolute top-[-20%] right-[-10%] w-[600px] h-[600px] rounded-full bg-brand-500/25 dark:bg-brand-500/20 blur-[120px] pointer-events-none" />
className="absolute inset-0 opacity-[0.015] dark:opacity-[0.04] pointer-events-none" <div className="absolute bottom-[-20%] left-[-10%] w-[600px] h-[600px] rounded-full bg-violet-500/20 dark:bg-violet-500/18 blur-[120px] pointer-events-none" />
style={{
backgroundImage:
'linear-gradient(to right, currentColor 1px, transparent 1px), linear-gradient(to bottom, currentColor 1px, transparent 1px)',
backgroundSize: '64px 64px',
}}
/>
{/* Brand glow accents (positioned blobs) */}
<div className="absolute top-[-20%] right-[-10%] w-[500px] h-[500px] rounded-full bg-brand-500/10 dark:bg-brand-500/15 blur-[120px] pointer-events-none" />
<div className="absolute bottom-[-20%] left-[-10%] w-[500px] h-[500px] rounded-full bg-violet-500/10 dark:bg-violet-500/12 blur-[120px] pointer-events-none" />
{/* Theme toggle — top-right, glass over gradient */} {/* Theme toggle — top-right, glass over gradient */}
<div className="absolute top-4 right-4 z-20"> <div className="absolute top-4 right-4 z-20">