@import "tailwindcss"; @custom-variant dark (&:where([data-theme="dark"])); /* ── Light (Vercel-inspired) ── */ :root, [data-theme="light"] { --color-background: #ffffff; --color-foreground: #171717; --color-card: #ffffff; --color-card-foreground: #171717; --color-popover: #ffffff; --color-popover-foreground: #171717; --color-primary: #171717; --color-primary-foreground: #ffffff; --color-secondary: #f5f5f5; --color-secondary-foreground: #171717; --color-muted: #f5f5f5; --color-muted-foreground: #737373; --color-accent: #f5f5f5; --color-accent-foreground: #171717; --color-destructive: #ef4444; --color-destructive-foreground: #ffffff; --color-border: #e5e5e5; --color-ring: #0072f5; --color-signal: #ff5b4f; --color-input: #e5e5e5; --color-overlay: #f5f5f5; --radius: 0.5rem; --font-geist-sans: "Geist", "Arial", "Apple Color Emoji", "Segoe UI Emoji", sans-serif; --font-geist-mono: "Geist Mono", "ui-monospace", "SFMono-Regular", "Roboto Mono", monospace; } /* ── Dark (Neutral zinc-dark — no blue, layered depth) ── */ [data-theme="dark"] { --color-background: #09090b; --color-foreground: #e4e4e7; --color-card: #111113; --color-card-foreground: #e4e4e7; --color-popover: #141416; --color-popover-foreground: #e4e4e7; --color-primary: #e4e4e7; --color-primary-foreground: #09090b; --color-secondary: #1a1a1c; --color-secondary-foreground: #e4e4e7; --color-muted: #18181b; --color-muted-foreground: #71717a; --color-accent: #1f1f22; --color-accent-foreground: #e4e4e7; --color-destructive: #f43f5e; --color-destructive-foreground: #e4e4e7; --color-border: #27272a; --color-ring: #71717a; --color-signal: #f43f5e; --color-input: #27272a; --color-overlay: #050505; } /* ── Base ── */ * { border-color: var(--color-border); } body { background: var(--color-background); color: var(--color-foreground); font-family: var(--font-geist-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* ── Focus ring ── */ :focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; } /* ── Scrollbar ── */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--color-muted-foreground); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-foreground); } /* ── Selection ── */ ::selection { background: var(--color-accent); color: var(--color-accent-foreground); } /* ── Shadow-as-border utility ── */ .shadow-border { box-shadow: 0px 0px 0px 1px var(--color-border); } .shadow-border-card { box-shadow: 0px 0px 0px 1px var(--color-border), 0px 2px 4px rgba(0, 0, 0, 0.04), 0px 8px 8px -8px rgba(0, 0, 0, 0.04); } .shadow-border-hover { box-shadow: 0px 0px 0px 1px var(--color-border), 0px 4px 8px rgba(0, 0, 0, 0.08), 0px 8px 16px -4px rgba(0, 0, 0, 0.08); } /* ── Service card hover (all themes) ── */ .service-card { transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease; } .service-card:hover { transform: translateY(-2px); } /* ── Drag overlay ── */ .drag-overlay { opacity: 0.95; transform: scale(1.03); box-shadow: 0px 0px 0px 2px var(--color-muted-foreground), 0px 12px 32px rgba(0, 0, 0, 0.25); z-index: 50; } /* ── Drop indicator ── */ .drop-indicator { position: relative; } .drop-indicator::before { content: ""; position: absolute; inset: -4px; border-radius: inherit; border: 2px dashed var(--color-muted-foreground); opacity: 0.5; pointer-events: none; } /* ── Drop target line ── */ .drop-target-line { height: 3px; border-radius: 2px; background: var(--color-muted-foreground); box-shadow: 0 0 8px var(--color-muted-foreground); margin: 4px 0; animation: pulse-line 1.2s ease-in-out infinite; } @keyframes pulse-line { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } } /* ── Dialog / Modal backdrop ── */ [data-state="open"] > [data-radix-dialog-overlay] { background: rgba(0, 0, 0, 0.6) !important; } /* ── Dialog content surface ── */ .dialog-surface { background: var(--color-popover); border: 1px solid var(--color-border); box-shadow: 0px 0px 0px 1px var(--color-border), 0px 8px 32px rgba(0, 0, 0, 0.35); } /* ── Colorful badge variants ── */ .badge-local { background: #0f1a15; color: #34d399; } .badge-external { background: #1a1a1c; color: #a1a1aa; } .badge-custom { background: #1a1a1c; color: #a1a1aa; }