Files
consultoria-as e95f7cf684 feat: complete session — catalog, marketplace, WhatsApp, peer-to-peer, install scripts
Major features:
- Pixel-Perfect glassmorphism design (landing + POS + public catalog)
- OEM/Local catalog toggle with Nexpart taxonomy (14 groups, 108 subgroups, 558 part types)
- Marketplace B2B Phase 1 (bodegas, POs, status machine, WA+email notifications)
- Peer-to-peer inventory (multi-instance, LAN discovery)
- WhatsApp: photo→Vision AI, voice→Whisper, conversational quotations
- Smart unified search (VIN/plate/part_number/keyword auto-detect)
- Shop Supplies tab (vehicle-independent parts)
- Chatbot AI fallback chain (5 models) + response cache
- CSV inventory import tool + setup_instance.sh installer
- Tablet-responsive CSS + sidebar toggle
- Filters, export CSV, employee edit, business data save
- Quotation system (WA→POS) with auto-print on confirmation
- Live stats on landing page

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 05:35:53 +00:00

712 lines
24 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ==========================================================================
NEXUS AUTOPARTS — Design Tokens
POS System for Auto Parts Stores
Version: 1.0.0
==========================================================================
Themes:
- [data-theme="industrial"] — Industrial Robusto (Dark)
- [data-theme="modern"] — Técnico Moderno (Light)
========================================================================== */
/* --------------------------------------------------------------------------
GOOGLE FONTS IMPORTS
-------------------------------------------------------------------------- */
@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;700&family=Barlow+Condensed:wght@600;800&family=Poppins:wght@300;400;600;700&display=swap');
/* ==========================================================================
GLOBAL TOKENS — Theme-independent, shared across both themes
========================================================================== */
:root {
/* ------------------------------------------------------------------------
SEMANTIC COLORS — Status / Feedback (shared)
------------------------------------------------------------------------ */
--color-success: #22c55e;
--color-success-light: #bbf7d0;
--color-success-dark: #15803d;
--color-warning: #eab308;
--color-warning-light: #fef08a;
--color-warning-dark: #a16207;
--color-error: #ef4444;
--color-error-light: #fecaca;
--color-error-dark: #b91c1c;
/* ------------------------------------------------------------------------
NEUTRAL SCALE — Grey ramp (50900)
------------------------------------------------------------------------ */
--color-neutral-50: #fafafa;
--color-neutral-100: #f5f5f5;
--color-neutral-200: #e5e5e5;
--color-neutral-300: #d4d4d4;
--color-neutral-400: #a3a3a3;
--color-neutral-500: #737373;
--color-neutral-600: #525252;
--color-neutral-700: #404040;
--color-neutral-800: #262626;
--color-neutral-900: #171717;
/* ------------------------------------------------------------------------
SPACING — 4px base grid
------------------------------------------------------------------------ */
/* --space-N = N × 4px */
--space-1: 4px; /* 4px */
--space-2: 8px; /* 8px */
--space-3: 12px; /* 12px */
--space-4: 16px; /* 16px */
--space-5: 20px; /* 20px */
--space-6: 24px; /* 24px */
--space-7: 28px; /* 28px */
--space-8: 32px; /* 32px */
--space-9: 36px; /* 36px */
--space-10: 40px; /* 40px */
--space-11: 44px; /* 44px */
--space-12: 48px; /* 48px */
--space-14: 56px; /* 56px */
--space-16: 64px; /* 64px */
/* ------------------------------------------------------------------------
BORDER RADIUS
------------------------------------------------------------------------ */
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 12px;
--radius-xl: 20px;
--radius-full: 9999px;
/* ------------------------------------------------------------------------
TRANSITIONS
------------------------------------------------------------------------ */
--transition-fast: all 0.10s ease;
--transition-normal: all 0.20s ease;
--transition-slow: all 0.40s ease;
/* Easing functions for fine-grained control */
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
--ease-out: cubic-bezier(0, 0, 0.2, 1);
--ease-in: cubic-bezier(0.4, 0, 1, 1);
--duration-fast: 100ms;
--duration-normal: 200ms;
--duration-slow: 400ms;
/* ------------------------------------------------------------------------
Z-INDEX SCALE
------------------------------------------------------------------------ */
--z-dropdown: 1000;
--z-sticky: 1020;
--z-modal: 1050;
--z-toast: 1080;
/* ------------------------------------------------------------------------
BREAKPOINTS — Reference only (use in media queries, not calc())
sm: 640px
md: 768px
lg: 1024px
xl: 1280px
------------------------------------------------------------------------ */
}
/* ==========================================================================
THEME A — Industrial Robusto (Dark)
Usage: <html data-theme="industrial"> or <body data-theme="industrial">
Style: Industrial, robust, high-contrast amber accents, clip-path diagonals
========================================================================== */
[data-theme="industrial"] {
/* ------------------------------------------------------------------------
PRIMITIVE COLORS
------------------------------------------------------------------------ */
--color-primary: #F5A623; /* Amber gold — main brand accent */
--color-primary-hover: #e8951a; /* Darker amber on hover */
--color-primary-active: #d4850f; /* Pressed state */
--color-primary-muted: rgba(245, 166, 35, 0.15); /* Subtle tint */
--color-secondary: #333333; /* Mid-dark border / secondary bg */
--color-secondary-hover: #444444;
--color-accent: #F5A623; /* Same as primary in this theme */
/* ------------------------------------------------------------------------
BACKGROUNDS
------------------------------------------------------------------------ */
--color-bg-base: #0d0d0d; /* Page / app shell background */
--color-bg-elevated: #1a1a1a; /* Cards, panels, sidebars */
--color-bg-overlay: #252525; /* Modals, dropdowns, tooltips */
/* Surface levels (for layered UI) */
--color-surface-1: #1a1a1a; /* Lowest raised surface */
--color-surface-2: #252525; /* Mid-level surface */
--color-surface-3: #303030; /* Highest raised surface */
/* ------------------------------------------------------------------------
TEXT
------------------------------------------------------------------------ */
--color-text-primary: #FFFFFF;
--color-text-secondary: #CCCCCC;
--color-text-muted: #888888;
--color-text-disabled: #555555;
--color-text-inverse: #000000; /* Text on amber background */
--color-text-accent: #F5A623;
/* ------------------------------------------------------------------------
BORDERS
------------------------------------------------------------------------ */
--color-border: #333333;
--color-border-strong: #555555;
--color-border-accent: #F5A623;
--color-border-focus: #F5A623;
/* ------------------------------------------------------------------------
BUTTONS
------------------------------------------------------------------------ */
/* Primary button */
--btn-primary-bg: #F5A623;
--btn-primary-bg-hover: #e8951a;
--btn-primary-bg-active: #d4850f;
--btn-primary-text: #000000;
--btn-primary-border: transparent;
/* Secondary button */
--btn-secondary-bg: transparent;
--btn-secondary-bg-hover: rgba(245, 166, 35, 0.10);
--btn-secondary-text: #F5A623;
--btn-secondary-border: #F5A623;
/* Ghost / Danger */
--btn-ghost-bg: transparent;
--btn-ghost-text: #CCCCCC;
--btn-ghost-border: #333333;
--btn-danger-bg: #ef4444;
--btn-danger-text: #FFFFFF;
/* ------------------------------------------------------------------------
TYPOGRAPHY
------------------------------------------------------------------------ */
/* Font families */
--font-heading: 'Barlow Condensed', 'Arial Narrow', sans-serif;
--font-body: 'Barlow', 'Arial', sans-serif;
--font-mono: 'Courier New', 'Consolas', monospace; /* prices / SKUs */
/* Font weights */
--font-weight-light: 300; /* n/a in Barlow — falls to 400 */
--font-weight-regular: 400;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--font-weight-extrabold: 800;
/* Heading weights (Barlow Condensed) */
--heading-weight-primary: 800;
--heading-weight-secondary: 600;
/* ------------------------------------------------------------------------
SHADOWS / ELEVATION
Tinted with amber to feel cohesive with the theme
------------------------------------------------------------------------ */
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.60),
0 1px 2px rgba(0, 0, 0, 0.40);
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.60),
0 2px 4px rgba(0, 0, 0, 0.40);
--shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.70),
0 4px 6px rgba(0, 0, 0, 0.50);
--shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.80),
0 10px 10px rgba(0, 0, 0, 0.50);
/* Accent glow — use on focused/highlighted elements */
--shadow-accent: 0 0 0 3px rgba(245, 166, 35, 0.40);
--shadow-focus: 0 0 0 3px rgba(245, 166, 35, 0.50);
/* ------------------------------------------------------------------------
MISC UI
------------------------------------------------------------------------ */
--scrollbar-track: #1a1a1a;
--scrollbar-thumb: #444444;
--scrollbar-thumb-hover: #F5A623;
--overlay-backdrop: rgba(0, 0, 0, 0.75);
/* Industrial clip-path angle (use in clip-path: polygon(...) utilities) */
--clip-diagonal-angle: 6deg;
}
/* ==========================================================================
THEME B — Técnico Moderno (Light)
Usage: <html data-theme="modern"> or <body data-theme="modern">
Style: Clean, modern, Poppins typography, subtle dot-grid background
========================================================================== */
[data-theme="modern"] {
/* ------------------------------------------------------------------------
PRIMITIVE COLORS
------------------------------------------------------------------------ */
--color-primary: #FF6B35; /* Orange — main brand accent */
--color-primary-hover: #f05a22; /* Darker on hover */
--color-primary-active: #dc4a12; /* Pressed state */
--color-primary-muted: rgba(255, 107, 53, 0.10); /* Subtle tint */
--color-secondary: #1a1a2e; /* Deep navy — used for strong text */
--color-secondary-hover: #252545;
--color-accent: #FF6B35; /* Same as primary in this theme */
/* ------------------------------------------------------------------------
BACKGROUNDS
------------------------------------------------------------------------ */
--color-bg-base: #FFFFFF; /* Page / app shell background */
--color-bg-elevated: #F8F9FF; /* Cards, panels — very subtle blue */
--color-bg-overlay: #FFFFFF; /* Modals, dropdowns */
/* Surface levels */
--color-surface-1: #F8F9FF;
--color-surface-2: #F0F2FF;
--color-surface-3: #E8EBFF;
/* Dot-grid background pattern (apply via background-image on body/shell) */
/* background-image: radial-gradient(circle, var(--dot-grid-color) 1px, transparent 1px); */
/* background-size: var(--dot-grid-size) var(--dot-grid-size); */
--dot-grid-color: rgba(26, 26, 46, 0.07);
--dot-grid-size: 24px;
/* ------------------------------------------------------------------------
TEXT
------------------------------------------------------------------------ */
--color-text-primary: #1a1a2e;
--color-text-secondary: #4a4a6a;
--color-text-muted: #8080a0;
--color-text-disabled: #b0b0c8;
--color-text-inverse: #FFFFFF; /* Text on orange background */
--color-text-accent: #FF6B35;
/* ------------------------------------------------------------------------
BORDERS
------------------------------------------------------------------------ */
--color-border: #e2e4f0;
--color-border-strong: #c8cadc;
--color-border-accent: #FF6B35;
--color-border-focus: #FF6B35;
/* ------------------------------------------------------------------------
BUTTONS
------------------------------------------------------------------------ */
/* Primary button */
--btn-primary-bg: #FF6B35;
--btn-primary-bg-hover: #f05a22;
--btn-primary-bg-active: #dc4a12;
--btn-primary-text: #FFFFFF;
--btn-primary-border: transparent;
/* Secondary button */
--btn-secondary-bg: transparent;
--btn-secondary-bg-hover: rgba(255, 107, 53, 0.08);
--btn-secondary-text: #FF6B35;
--btn-secondary-border: #FF6B35;
/* Ghost / Danger */
--btn-ghost-bg: transparent;
--btn-ghost-text: #4a4a6a;
--btn-ghost-border: #e2e4f0;
--btn-danger-bg: #ef4444;
--btn-danger-text: #FFFFFF;
/* ------------------------------------------------------------------------
TYPOGRAPHY
------------------------------------------------------------------------ */
/* Font families */
--font-heading: 'Poppins', 'Segoe UI', sans-serif;
--font-body: 'Poppins', 'Segoe UI', sans-serif;
--font-mono: 'Courier New', 'Consolas', monospace; /* prices / SKUs */
/* Font weights */
--font-weight-light: 300;
--font-weight-regular: 400;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--font-weight-extrabold: 800; /* falls to 700 in Poppins */
/* Heading weights (Poppins) */
--heading-weight-primary: 700;
--heading-weight-secondary: 600;
/* ------------------------------------------------------------------------
SHADOWS / ELEVATION
Softer, cooler tints for the light theme
------------------------------------------------------------------------ */
--shadow-sm: 0 1px 3px rgba(26, 26, 46, 0.08),
0 1px 2px rgba(26, 26, 46, 0.05);
--shadow-md: 0 4px 6px rgba(26, 26, 46, 0.08),
0 2px 4px rgba(26, 26, 46, 0.05);
--shadow-lg: 0 10px 15px rgba(26, 26, 46, 0.10),
0 4px 6px rgba(26, 26, 46, 0.06);
--shadow-xl: 0 20px 25px rgba(26, 26, 46, 0.12),
0 10px 10px rgba(26, 26, 46, 0.06);
/* Accent glow — use on focused/highlighted elements */
--shadow-accent: 0 0 0 3px rgba(255, 107, 53, 0.25);
--shadow-focus: 0 0 0 3px rgba(255, 107, 53, 0.30);
/* ------------------------------------------------------------------------
MISC UI
------------------------------------------------------------------------ */
--scrollbar-track: #F8F9FF;
--scrollbar-thumb: #c8cadc;
--scrollbar-thumb-hover: #FF6B35;
--overlay-backdrop: rgba(26, 26, 46, 0.50);
/* No diagonal clip in modern theme — set to 0 for override-safe utilities */
--clip-diagonal-angle: 0deg;
}
/* ==========================================================================
TYPOGRAPHY SCALE — Token definitions
Resolved at theme level because font families differ between themes.
These tokens map to semantic roles and should be consumed directly.
========================================================================== */
/* Shared scale values (dimensionless, theme-independent) */
:root {
/* --- Type scale (font-size) --- */
--text-h1: clamp(2.25rem, 5vw, 3.5rem); /* 36px → 56px */
--text-h2: clamp(1.875rem, 4vw, 2.75rem); /* 30px → 44px */
--text-h3: clamp(1.5rem, 3vw, 2.125rem); /* 24px → 34px */
--text-h4: clamp(1.25rem, 2vw, 1.625rem); /* 20px → 26px */
--text-h5: 1.125rem; /* 18px */
--text-h6: 1rem; /* 16px */
--text-body-lg: 1.125rem; /* 18px */
--text-body: 1rem; /* 16px */
--text-body-sm: 0.875rem; /* 14px */
--text-caption: 0.75rem; /* 12px */
--text-label: 0.8125rem; /* 13px */
--text-mono: 1rem; /* 16px — prices, SKUs */
/* --- Line heights --- */
--leading-h1: 1.10;
--leading-h2: 1.12;
--leading-h3: 1.15;
--leading-h4: 1.20;
--leading-h5: 1.25;
--leading-h6: 1.30;
--leading-body-lg: 1.65;
--leading-body: 1.60;
--leading-body-sm: 1.55;
--leading-caption: 1.45;
--leading-label: 1.40;
--leading-mono: 1.50;
/* --- Letter spacing --- */
--tracking-tight: -0.03em;
--tracking-snug: -0.01em;
--tracking-normal: 0em;
--tracking-wide: 0.03em;
--tracking-wider: 0.06em;
--tracking-widest: 0.12em; /* Use for ALL-CAPS labels / badges */
}
/* Heading letter-spacing per theme */
[data-theme="industrial"] {
--heading-tracking-h1: -0.02em;
--heading-tracking-h2: -0.02em;
--heading-tracking-h3: -0.01em;
--heading-tracking-h4: 0em;
--heading-tracking-h5: 0.02em;
--heading-tracking-h6: 0.04em;
}
[data-theme="modern"] {
--heading-tracking-h1: -0.03em;
--heading-tracking-h2: -0.02em;
--heading-tracking-h3: -0.01em;
--heading-tracking-h4: 0em;
--heading-tracking-h5: 0em;
--heading-tracking-h6: 0.01em;
}
/* ==========================================================================
COMPONENT SHORTHAND TOKENS
Convenience aliases that combine multiple primitives. Components should
reference these rather than the primitives above.
========================================================================== */
:root {
/* --- Input / form fields --- */
/* These are intentionally left as CSS variable references so they resolve
correctly within whichever theme is active at runtime. */
/* (No :root overrides needed — components consume --color-* directly.) */
/* --- Focus ring --- */
--focus-ring: 0 0 0 3px var(--shadow-focus, rgba(245,166,35,0.40));
/* --- Content max widths --- */
--content-xs: 480px;
--content-sm: 640px;
--content-md: 768px;
--content-lg: 1024px;
--content-xl: 1280px;
--content-full: 100%;
}
/* ==========================================================================
UTILITY — Scrollbar styles (opt-in via class)
========================================================================== */
.themed-scrollbar {
scrollbar-width: thin;
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}
.themed-scrollbar::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.themed-scrollbar::-webkit-scrollbar-track {
background: var(--scrollbar-track);
}
.themed-scrollbar::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb);
border-radius: var(--radius-full);
border: 2px solid var(--scrollbar-track);
}
.themed-scrollbar::-webkit-scrollbar-thumb:hover {
background-color: var(--scrollbar-thumb-hover);
}
/* ==========================================================================
UTILITY — Dot-grid background (Theme B helper)
Apply class .bg-dot-grid to body or layout shell when using modern theme.
========================================================================== */
[data-theme="modern"] .bg-dot-grid {
background-color: var(--color-bg-base);
background-image: radial-gradient(
circle,
var(--dot-grid-color) 1px,
transparent 1px
);
background-size: var(--dot-grid-size) var(--dot-grid-size);
}
/* ==========================================================================
UTILITY — Industrial diagonal clip helpers (Theme A)
========================================================================== */
[data-theme="industrial"] .clip-top-right {
clip-path: polygon(0 0, calc(100% - 24px) 0, 100% 24px, 100% 100%, 0 100%);
}
[data-theme="industrial"] .clip-bottom-left {
clip-path: polygon(0 0, 100% 0, 100% 100%, 24px 100%, 0 calc(100% - 24px));
}
[data-theme="industrial"] .clip-corner {
clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 0 100%);
}
/* ==========================================================================
GLASSMORPHISM TOKENS
========================================================================== */
[data-theme="industrial"] {
--glass-bg: rgba(26, 26, 26, 0.70);
--glass-bg-strong: rgba(26, 26, 26, 0.85);
--glass-border: rgba(255, 255, 255, 0.08);
--glass-blur: 16px;
--glass-highlight: rgba(245, 166, 35, 0.06);
--glow-color: rgba(245, 166, 35, 0.40);
--glow-color-soft: rgba(245, 166, 35, 0.15);
--glow-color-strong: rgba(245, 166, 35, 0.60);
--gradient-accent: linear-gradient(135deg, #F5A623 0%, #e8951a 50%, #d4850f 100%);
--gradient-text: linear-gradient(135deg, #F5A623 0%, #FFD080 50%, #F5A623 100%);
--canvas-grid-color: rgba(255, 255, 255, 0.06);
--canvas-star-color: rgba(245, 166, 35, 0.30);
--canvas-glow-color: rgba(245, 166, 35, 0.08);
}
[data-theme="modern"] {
--glass-bg: rgba(248, 249, 255, 0.70);
--glass-bg-strong: rgba(248, 249, 255, 0.85);
--glass-border: rgba(26, 26, 46, 0.08);
--glass-blur: 16px;
--glass-highlight: rgba(255, 107, 53, 0.04);
--glow-color: rgba(255, 107, 53, 0.35);
--glow-color-soft: rgba(255, 107, 53, 0.12);
--glow-color-strong: rgba(255, 107, 53, 0.55);
--gradient-accent: linear-gradient(135deg, #FF6B35 0%, #FF8F65 50%, #FF6B35 100%);
--gradient-text: linear-gradient(135deg, #FF6B35 0%, #FF8F65 50%, #e85520 100%);
--canvas-grid-color: rgba(26, 26, 46, 0.05);
--canvas-star-color: rgba(255, 107, 53, 0.20);
--canvas-glow-color: rgba(255, 107, 53, 0.06);
}
/* ==========================================================================
ANIMATION KEYFRAMES
========================================================================== */
@keyframes nx-fade-up {
from { opacity: 0; transform: translateY(24px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes nx-fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes nx-scale-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
@keyframes nx-marquee {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
@keyframes nx-glow-pulse {
0%, 100% { box-shadow: 0 0 20px var(--glow-color-soft); }
50% { box-shadow: 0 0 40px var(--glow-color); }
}
@keyframes nx-shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
@keyframes nx-float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-8px); }
}
@keyframes nx-border-glow {
0%, 100% { border-color: var(--color-border); }
50% { border-color: var(--color-border-accent); }
}
@keyframes nx-typewriter-cursor {
0%, 100% { opacity: 1; }
50% { opacity: 0; }
}
/* ==========================================================================
SCROLL REVEAL UTILITIES
========================================================================== */
.nx-reveal {
opacity: 0;
transform: translateY(24px);
transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out);
}
.nx-reveal.is-visible {
opacity: 1;
transform: translateY(0);
}
.nx-reveal-scale {
opacity: 0;
transform: scale(0.95);
transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out);
}
.nx-reveal-scale.is-visible {
opacity: 1;
transform: scale(1);
}
/* Stagger children */
.nx-stagger > .nx-reveal:nth-child(1) { transition-delay: 0ms; }
.nx-stagger > .nx-reveal:nth-child(2) { transition-delay: 80ms; }
.nx-stagger > .nx-reveal:nth-child(3) { transition-delay: 160ms; }
.nx-stagger > .nx-reveal:nth-child(4) { transition-delay: 240ms; }
.nx-stagger > .nx-reveal:nth-child(5) { transition-delay: 320ms; }
.nx-stagger > .nx-reveal:nth-child(6) { transition-delay: 400ms; }
/* ==========================================================================
GLASS UTILITIES
========================================================================== */
.nx-glass {
background: var(--glass-bg);
backdrop-filter: blur(var(--glass-blur));
-webkit-backdrop-filter: blur(var(--glass-blur));
border: 1px solid var(--glass-border);
}
.nx-glass-strong {
background: var(--glass-bg-strong);
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
border: 1px solid var(--glass-border);
}
/* ==========================================================================
END OF TOKENS FILE
nexus-autoparts-design/tokens/tokens.css
========================================================================== */