@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { /* Ascent AI Design System Variables */ --surface-base: #FAFAF8; --surface-raised: #FFFFFF; --surface-overlay: #F0EFEA; --text-primary: #1A1A18; --text-secondary: #6B6B66; --text-muted: #9B9B95; --text-disabled: #B8B8B3; --ascent-blue: #2563EB; --ascent-blue-hover: #1D4ED8; --ascent-blue-subtle: #DBEAFE; --semantic-error: #DC2626; --semantic-warning: #D97706; --semantic-success: #2563EB; --semantic-error-bg: #FEE2E2; --semantic-warning-bg: #FEF3C7; --semantic-success-bg: #DBEAFE; --border-default: #E5E4DF; --border-subtle: #F0EFEA; --border-strong: #D1D0CC; /* Typography */ --font-display: 'Outfit', system-ui, sans-serif; --font-body: 'Outfit', system-ui, sans-serif; --font-mono: 'JetBrains Mono', monospace; /* Spacing (4px base) */ --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-10: 40px; --space-12: 48px; --space-16: 64px; /* Radii */ --radius-sm: 6px; --radius-md: 10px; --radius-lg: 14px; --radius-xl: 8px; --radius-2xl: 8px; --radius-full: 9999px; /* Shadows */ --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); --shadow-md: 0 4px 12px rgba(0,0,0,0.08); --shadow-lg: 0 12px 32px rgba(0,0,0,0.12); /* Legacy page aliases mapped to the interview theme */ --bg-base: var(--surface-base); --bg-elevated: var(--surface-raised); --bg-surface: var(--surface-overlay); --border-medium: var(--border-strong); --success: var(--semantic-success); --danger: var(--semantic-error); --danger-dark: #991B1B; --danger-glow: var(--semantic-error-bg); --warning-dark: #92400E; --warning-glow: var(--semantic-warning-bg); --teal-500: var(--ascent-blue); --teal-600: var(--ascent-blue); --teal-700: var(--ascent-blue-hover); --teal-glow: rgba(37, 99, 235, 0.08); --teal-glow-strong: rgba(37, 99, 235, 0.14); --success-dark: var(--ascent-blue-hover); --success-glow: var(--semantic-success-bg); --stone-800: #292926; --stone-900: var(--text-primary); --z-nav: 50; --text-display: clamp(2.25rem, 6vw, 4.5rem); --text-xs: 0.75rem; --text-sm: 0.875rem; --text-base: 1rem; --text-md: 1.125rem; --text-lg: 1.25rem; --text-xl: 1.5rem; --text-2xl: 2rem; --text-3xl: 2.5rem; --text-4xl: 3rem; --dur-fast: 150ms; --dur-base: 250ms; --ease-out: var(--ease-out-expo); /* Easing & Duration */ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); --duration-reveal: 800ms; /* shadcn-ui compatibility */ --background: 0 0% 98%; --foreground: 0 0% 10%; --card: 0 0% 100%; --card-foreground: 0 0% 10%; --popover: 0 0% 100%; --popover-foreground: 0 0% 10%; --primary: var(--ascent-blue); --primary-foreground: 0 0% 100%; --secondary: 210 20% 96%; --secondary-foreground: 0 0% 10%; --muted: 210 20% 96%; --muted-foreground: 215 16% 47%; --accent: 214 95% 91%; --accent-foreground: 221 83% 53%; --destructive: 0 84% 50%; --destructive-foreground: 0 0% 100%; --border: 214 32% 91%; --input: 214 32% 91%; --ring: 221 83% 53%; --radius: 0.5rem; } } @layer base { * { @apply border-border; } body { @apply bg-surface-base text-text-primary font-sans antialiased; font-feature-settings: "rlig" 1, "calt" 1; } html, body, #root { min-height: 100%; } button, input, textarea, select { font: inherit; } img, video, canvas, svg { max-width: 100%; } } @layer components { .app-page { min-height: 100dvh; background: var(--surface-base); color: var(--text-primary); } .app-header { border-bottom: 1px solid var(--border-default); background: rgba(250, 250, 248, 0.92); backdrop-filter: blur(12px); position: sticky; top: 0; z-index: 50; } .app-header-inner { width: min(100%, 72rem); margin: 0 auto; min-height: 3.5rem; padding: 0 1.5rem; display: flex; align-items: center; gap: 1rem; } .app-brand { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 600; color: var(--text-primary); flex-shrink: 0; } .app-brand-mark { width: 1.5rem; height: 1.5rem; border-radius: 6px; background: var(--ascent-blue); display: inline-flex; align-items: center; justify-content: center; color: white; } .app-container { width: min(100%, 72rem); margin: 0 auto; padding: clamp(2rem, 5vw, 4rem) 1.5rem; } .app-kicker { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0.625rem; border: 1px solid rgba(37, 99, 235, 0.18); background: rgba(37, 99, 235, 0.08); color: var(--ascent-blue-hover); border-radius: 6px; font-size: 0.75rem; font-weight: 600; } .app-card { background: var(--surface-raised); border: 1px solid var(--border-default); border-radius: 6px; box-shadow: var(--shadow-sm); } } @media (max-width: 640px) { .app-header-inner, .app-container { padding-left: 1rem; padding-right: 1rem; } } /* Custom Scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #D1D0CC; border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #B8B8B3; } /* Loader Overlay */ .ascent-loader-overlay { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--surface-base); z-index: 9999; } .ascent-loader { width: 40px; height: 40px; border: 3px solid var(--border-default); border-top-color: var(--ascent-blue); border-radius: 50%; animation: spin 1s linear infinite; } .spinner { border: 2px solid rgba(0, 0, 0, 0.1); border-top: 2px solid currentColor; border-radius: 50%; width: 16px; height: 16px; animation: spin 0.8s linear infinite; display: inline-block; } @keyframes spin { to { transform: rotate(360deg); } }