@import "tailwindcss"; @import "tw-animate-css"; @custom-variant dark (&:is(.dark *)); :root { --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); --ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1); --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); --background: #fefffe; --foreground: #171513; --card: #ffffff; --card-foreground: #171513; --popover: #ffffff; --popover-foreground: #171513; --primary: #171513; --primary-foreground: #ffffff; --secondary: #f1eee6; --secondary-foreground: #171513; --muted: #f3f0e8; --muted-foreground: #6f685f; --accent: #f1ede5; --accent-foreground: #171513; --destructive: #ef4444; --destructive-foreground: #ffffff; --border: #e5dfd4; --input: #e5dfd4; --ring: #3e83b6; --chart-1: #3b82f6; --chart-2: #22c55e; --chart-3: #eab308; --chart-4: #f97316; --chart-5: #ef4444; --radius: 0.75rem; --sidebar: #f3f0e8; --sidebar-foreground: #171513; --sidebar-primary: #171513; --sidebar-primary-foreground: #ffffff; --sidebar-accent: #e5dfd4; --sidebar-accent-foreground: #171513; --sidebar-border: #e5dfd4; --sidebar-ring: #3e83b6; --font-heading: ui-sans-serif, system-ui, sans-serif; --font-sans: ui-sans-serif, system-ui, sans-serif; } .dark { --background: #111011; --foreground: #f5f0e8; --card: #1c1917; --card-foreground: #f5f0e8; --popover: #141211; --popover-foreground: #f5f0e8; --primary: #f5f0e8; --primary-foreground: #141211; --secondary: #26221f; --secondary-foreground: #f5f0e8; --muted: #26221f; --muted-foreground: #b3a89d; --accent: #2a2522; --accent-foreground: #f5f0e8; --destructive: #7f1d1d; --destructive-foreground: #fffdfa; --border: #35302c; --input: #35302c; --ring: #4c8fc0; --chart-1: #3b82f6; --chart-2: #22c55e; --chart-3: #eab308; --chart-4: #f97316; --chart-5: #ef4444; --sidebar: #141211; --sidebar-foreground: #f5f0e8; --sidebar-primary: #4c8fc0; --sidebar-primary-foreground: #fffdfa; --sidebar-accent: #26221f; --sidebar-accent-foreground: #f5f0e8; --sidebar-border: #35302c; --sidebar-ring: #4c8fc0; } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); --font-heading: var(--font-space-grotesk); --font-sans: var(--font-dm-sans); } @layer base { * { @apply border-border outline-ring/50; } body { @apply bg-background text-foreground antialiased; background-image: radial-gradient(circle at top, color-mix(in srgb, var(--color-muted) 34%, transparent) 0%, transparent 46%); } } @keyframes academic-fade-up { from { opacity: 0; transform: translate3d(0, 14px, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } @keyframes academic-fade-soft { from { opacity: 0; transform: translate3d(0, 8px, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } @layer utilities { .motion-academic-enter { opacity: 0; transform: translate3d(0, 14px, 0); animation: academic-fade-up 560ms var(--ease-out-quint) both; animation-delay: var(--enter-delay, 0ms); } .motion-academic-enter-soft { opacity: 0; transform: translate3d(0, 8px, 0); animation: academic-fade-soft 420ms var(--ease-out-quart) both; animation-delay: var(--enter-delay, 0ms); } .motion-academic-surface { transition: transform 220ms var(--ease-out-quart), box-shadow 220ms var(--ease-out-quart), border-color 220ms var(--ease-out-quart), background-color 220ms var(--ease-out-quart); will-change: transform; } .motion-academic-hover { transition: transform 220ms var(--ease-out-quart), box-shadow 220ms var(--ease-out-quart), border-color 220ms var(--ease-out-quart), background-color 220ms var(--ease-out-quart), color 220ms var(--ease-out-quart); } .motion-academic-button { transition: transform 180ms var(--ease-out-quart), background-color 180ms var(--ease-out-quart), border-color 180ms var(--ease-out-quart), color 180ms var(--ease-out-quart), opacity 180ms var(--ease-out-quart), box-shadow 180ms var(--ease-out-quart); } .motion-academic-progress { transition: width 420ms var(--ease-out-quint); } @media (hover: hover) and (pointer: fine) { .motion-academic-hover:hover { transform: translate3d(0, -2px, 0); } .motion-academic-button:hover { transform: translate3d(0, -1px, 0); } } } .param-range-input { appearance: none; position: absolute; left: 0.375rem; right: 0.375rem; top: 50%; transform: translateY(-50%); width: calc(100% - 0.75rem); height: 3px; background: transparent; pointer-events: none; } .param-range-input::-webkit-slider-runnable-track { height: 3px; background: transparent; } .param-range-input::-webkit-slider-thumb { appearance: none; pointer-events: auto; height: 12px; width: 12px; border-radius: 9999px; border: 2px solid var(--color-foreground); background: var(--color-foreground); margin-top: -4.5px; cursor: pointer; box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-background) 80%, transparent); transition: box-shadow 180ms var(--ease-out-quart), background-color 180ms var(--ease-out-quart), border-color 180ms var(--ease-out-quart); } .param-range-input::-moz-range-track { height: 3px; border: 0; background: transparent; } .param-range-input::-moz-range-thumb { pointer-events: auto; height: 12px; width: 12px; border-radius: 9999px; border: 2px solid var(--color-foreground); background: var(--color-foreground); cursor: pointer; box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-background) 80%, transparent); transition: box-shadow 180ms var(--ease-out-quart), background-color 180ms var(--ease-out-quart), border-color 180ms var(--ease-out-quart); } .param-range-input:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-background) 80%, transparent), 0 0 0 6px color-mix(in srgb, var(--color-ring) 35%, transparent); } .param-range-input:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-background) 80%, transparent), 0 0 0 6px color-mix(in srgb, var(--color-ring) 35%, transparent); } @media (prefers-reduced-motion: reduce) { .motion-academic-enter, .motion-academic-enter-soft { opacity: 1; transform: none; animation: none; } .motion-academic-surface, .motion-academic-hover, .motion-academic-button, .motion-academic-progress { transition: none; } }