@import "tailwindcss"; @custom-variant dark (&:is(.dark *)); /* * GMW — Linear Precision Clean Dark Design System * * Inspired by Linear's ultra-precise, dark-mode native interface. * Built on achromatic luminance hierarchy, near-black canvas (#08090a), * ultra-crisp hairline borders, subtle indigo/violet accents (#5e6ad2 / #7170ff), * and buttery smooth GSAP-driven micro-interactions. */ @theme { /* ── Canvas & Surface Stack (Luminance Stacking) ── */ --color-canvas: #08090a; --color-canvas-2: #0f1011; --color-surface: rgba(255, 255, 255, 0.035); --color-surface-2: rgba(255, 255, 255, 0.06); --color-surface-elevated: #191a1b; --color-surface-hover: rgba(255, 255, 255, 0.08); /* ── Typography & Ink ── */ --color-ink: #f7f8f8; --color-ink-soft: #d0d6e0; --color-ink-muted: #8a8f98; --color-ink-faint: #62666d; /* ── Hairline Structural Borders ── */ --color-hairline: rgba(255, 255, 255, 0.08); --color-hairline-subtle: rgba(255, 255, 255, 0.05); --color-hairline-focus: rgba(255, 255, 255, 0.16); --hairline-w: 1px; /* ── Brand & Accent Signals (Subdued Precision) ── */ --color-brand: #5e6ad2; --color-brand-accent: #7170ff; --color-brand-hover: #828fff; --color-brand-subtle: rgba(94, 106, 210, 0.15); --color-signal: #7170ff; --color-signal-ink: #ffffff; --color-signal-glow: rgba(113, 112, 255, 0.25); /* Semantic status colors (crisp, purposeful) */ --color-status-success: #10b981; --color-status-success-subtle: rgba(16, 185, 129, 0.15); --color-amber: #f59e0b; --color-amber-subtle: rgba(245, 158, 11, 0.15); --color-vermilion: #f43f5e; --color-vermilion-subtle: rgba(244, 63, 94, 0.15); --color-vermilion-glow: rgba(244, 63, 94, 0.3); --color-ring: var(--color-brand-accent); /* ── Typography Stack ── */ --font-sans: var(--font-inter), "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; --font-mono: var(--font-jetbrains-mono), "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace; --font-display: var(--font-inter), "Inter", -apple-system, BlinkMacSystemFont, sans-serif; /* ── Radii (Refined, tighter precision) ── */ --radius-r: 10px; --radius-r-panel: 8px; --radius-r-control: 6px; --radius-r-pill: 9999px; } /* ── Light Theme Fallbacks ── */ .light { color-scheme: light; --color-canvas: #f7f8f8; --color-canvas-2: #f3f4f5; --color-surface: rgba(0, 0, 0, 0.03); --color-surface-2: rgba(0, 0, 0, 0.05); --color-surface-elevated: #ffffff; --color-surface-hover: rgba(0, 0, 0, 0.06); --color-ink: #171717; --color-ink-soft: #404040; --color-ink-muted: #737373; --color-ink-faint: #a3a3a3; --color-hairline: rgba(0, 0, 0, 0.08); --color-hairline-subtle: rgba(0, 0, 0, 0.04); --color-hairline-focus: rgba(0, 0, 0, 0.18); } @layer base { * { @apply border-transparent; font-feature-settings: "cv01", "ss03"; } html { @apply font-sans antialiased scroll-smooth; background-color: var(--color-canvas); color: var(--color-ink); } body { @apply bg-canvas text-ink font-sans antialiased; min-height: 100dvh; } ::selection { background: rgba(113, 112, 255, 0.28); color: #ffffff; } /* Linear-style minimalist slim scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.12); border-radius: 9999px; } ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.22); } :focus-visible { outline: 2px solid var(--color-brand-accent); outline-offset: 2px; } } @layer components { /* Precision Surface Panel (Linear Card) */ .glass { background: var(--color-surface); border: 1px solid var(--color-hairline); border-radius: var(--radius-r); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.03) inset, 0 12px 32px -16px rgba(0, 0, 0, 0.7); transition: border-color 0.2s cubic-bezier(0.16, 1, 0.3, 1), background-color 0.2s ease; } .glass-2 { background: var(--color-surface-2); border: 1px solid var(--color-hairline-subtle); border-radius: var(--radius-r-panel); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } /* Linear-style subtle interactive hover card */ .linear-card { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: var(--radius-r-panel); transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1); } .linear-card:hover { background: rgba(255, 255, 255, 0.04); border-color: rgba(255, 255, 255, 0.12); transform: translateY(-1px); } /* Precision Eyebrow Header */ .eyebrow { font-family: var(--font-mono); font-size: 0.68rem; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-ink-muted); } /* Micro-Pill Tag */ .pill { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.18rem 0.55rem; border-radius: var(--radius-r-pill); font-size: 0.7rem; font-weight: 500; background: rgba(255, 255, 255, 0.04); border: 1px solid var(--color-hairline); color: var(--color-ink-soft); } .mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; } /* Display Typography (Compressed Linear-style tracking) */ .display { font-family: var(--font-sans); font-weight: 600; letter-spacing: -0.035em; line-height: 1.05; } } @layer utilities { .text-signal { color: var(--color-brand-accent); } .text-brand { color: var(--color-brand-accent); } .text-amber { color: var(--color-amber); } .text-vermilion { color: var(--color-vermilion); } .text-success { color: var(--color-status-success); } .text-ink-soft { color: var(--color-ink-soft); } .text-ink-muted { color: var(--color-ink-muted); } .text-ink-faint { color: var(--color-ink-faint); } .hero-clamp { font-size: clamp(1.85rem, 1.2rem + 3.5vw, 2.5rem); letter-spacing: -0.04em; font-weight: 600; } .glow-signal { text-shadow: 0 0 16px var(--color-signal-glow); } .ring-focus { transition: box-shadow 0.18s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.18s ease; } .ring-focus:hover { border-color: rgba(255, 255, 255, 0.16); } .ring-focus:focus-visible { box-shadow: 0 0 0 2px var(--color-brand-accent); } } /* ═══ Micro Navigation Elements ═══ */ .nav-dock-item { position: relative; transition: all 0.18s cubic-bezier(0.16, 1, 0.3, 1); } .nav-dock-item:hover { background: rgba(255, 255, 255, 0.05); color: var(--color-ink); } .nav-dock-item.is-active { background: rgba(255, 255, 255, 0.08); color: #ffffff; border: 1px solid rgba(255, 255, 255, 0.12); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); } /* ── Keyframes ── */ @keyframes spin-disc { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes pulse-ring { 0% { transform: scale(0.85); opacity: 0.8; } 100% { transform: scale(2.2); opacity: 0; } } .animate-spin-disc { animation: spin-disc 10s linear infinite; } .animate-pulse-ring { animation: pulse-ring 2s cubic-bezier(0.16, 1, 0.3, 1) infinite; } /* Respect reduced motion */ @media (prefers-reduced-motion: reduce) { .animate-spin-disc, .animate-pulse-ring { animation: none !important; } *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; } html { scroll-behavior: auto; } }