338 lines
9.4 KiB
CSS
338 lines
9.4 KiB
CSS
@import "@fontsource-variable/schibsted-grotesk";
|
|
@import "@fontsource/azeret-mono/latin.css";
|
|
@import "tailwindcss";
|
|
@import "tw-animate-css";
|
|
|
|
@custom-variant dark (&:is(.dark *));
|
|
|
|
:root {
|
|
--font-desktop-sans: "Schibsted Grotesk Variable";
|
|
--font-desktop-mono: "Azeret Mono";
|
|
--background: oklch(1 0 0);
|
|
--foreground: oklch(0.145 0 0);
|
|
--card: oklch(1 0 0);
|
|
--card-foreground: oklch(0.145 0 0);
|
|
--popover: oklch(1 0 0);
|
|
--popover-foreground: oklch(0.145 0 0);
|
|
--primary: oklch(0.75 0.12 165);
|
|
--primary-foreground: oklch(0.962 0.018 272.314);
|
|
--secondary: oklch(0.97 0 0);
|
|
--secondary-foreground: oklch(0.205 0 0);
|
|
--muted: oklch(0.97 0 0);
|
|
--muted-foreground: oklch(0.556 0 0);
|
|
--accent: oklch(0.97 0 0);
|
|
--accent-foreground: oklch(0.205 0 0);
|
|
--destructive: oklch(0.577 0.245 27.325);
|
|
--destructive-foreground: oklch(0.985 0 0);
|
|
--border: oklch(0.922 0 0);
|
|
--input: oklch(0.922 0 0);
|
|
--ring: oklch(0.708 0 0);
|
|
--chart-1: oklch(0.646 0.222 41.116);
|
|
--chart-2: oklch(0.6 0.118 184.704);
|
|
--chart-3: oklch(0.398 0.07 227.392);
|
|
--chart-4: oklch(0.828 0.189 84.429);
|
|
--chart-5: oklch(0.769 0.188 70.08);
|
|
--radius: 0.5rem;
|
|
--sidebar: oklch(0.985 0 0);
|
|
--sidebar-foreground: oklch(0.145 0 0);
|
|
--sidebar-primary: oklch(0.205 0 0);
|
|
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
--sidebar-accent: oklch(0.97 0 0);
|
|
--sidebar-accent-foreground: oklch(0.205 0 0);
|
|
--sidebar-border: oklch(0.922 0 0);
|
|
--sidebar-ring: oklch(0.708 0 0);
|
|
}
|
|
|
|
.dark {
|
|
--background: oklch(0.145 0 0);
|
|
--foreground: oklch(0.985 0 0);
|
|
--card: oklch(0.205 0 0);
|
|
--card-foreground: oklch(0.985 0 0);
|
|
--popover: oklch(0.205 0 0);
|
|
--popover-foreground: oklch(0.985 0 0);
|
|
--primary: oklch(0.75 0.12 165);
|
|
--primary-foreground: oklch(0.962 0.018 272.314);
|
|
--secondary: oklch(0.274 0.006 286.033);
|
|
--secondary-foreground: oklch(0.985 0 0);
|
|
--muted: oklch(0.269 0 0);
|
|
--muted-foreground: oklch(0.708 0 0);
|
|
--accent: oklch(0.269 0 0);
|
|
--accent-foreground: oklch(0.985 0 0);
|
|
--destructive: oklch(0.704 0.191 22.216);
|
|
--border: oklch(1 0 0 / 10%);
|
|
--input: oklch(1 0 0 / 15%);
|
|
--ring: oklch(0.556 0 0);
|
|
--chart-1: oklch(0.87 0 0);
|
|
--chart-2: oklch(0.556 0 0);
|
|
--chart-3: oklch(0.439 0 0);
|
|
--chart-4: oklch(0.371 0 0);
|
|
--chart-5: oklch(0.269 0 0);
|
|
--sidebar: oklch(0.205 0 0);
|
|
--sidebar-foreground: oklch(0.985 0 0);
|
|
--sidebar-primary: oklch(0.585 0.233 277.117);
|
|
--sidebar-primary-foreground: oklch(0.962 0.018 272.314);
|
|
--sidebar-accent: oklch(0.269 0 0);
|
|
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
--sidebar-border: oklch(1 0 0 / 10%);
|
|
--sidebar-ring: oklch(0.556 0 0);
|
|
}
|
|
|
|
@theme inline {
|
|
--font-sans: var(--font-desktop-sans), sans-serif;
|
|
--font-mono:
|
|
var(--font-desktop-mono), ui-monospace, "SFMono-Regular", Menlo, Consolas,
|
|
"Liberation Mono", monospace;
|
|
--font-weight-normal: 480;
|
|
--font-weight-medium: 560;
|
|
--font-weight-semibold: 640;
|
|
--font-weight-bold: 640;
|
|
--text-step-1: 12px;
|
|
--text-step-1--line-height: 16px;
|
|
--text-step-1--letter-spacing: 0.0025em;
|
|
--text-step-2: 14px;
|
|
--text-step-2--line-height: 20px;
|
|
--text-step-2--letter-spacing: 0em;
|
|
--text-step-3: 16px;
|
|
--text-step-3--line-height: 24px;
|
|
--text-step-3--letter-spacing: 0em;
|
|
--text-step-4: 18px;
|
|
--text-step-4--line-height: 26px;
|
|
--text-step-4--letter-spacing: -0.0025em;
|
|
--text-step-5: 20px;
|
|
--text-step-5--line-height: 28px;
|
|
--text-step-5--letter-spacing: -0.005em;
|
|
--text-step-6: 24px;
|
|
--text-step-6--line-height: 30px;
|
|
--text-step-6--letter-spacing: -0.00625em;
|
|
--text-step-7: 28px;
|
|
--text-step-7--line-height: 36px;
|
|
--text-step-7--letter-spacing: -0.0075em;
|
|
--text-step-8: 35px;
|
|
--text-step-8--line-height: 40px;
|
|
--text-step-8--letter-spacing: -0.01em;
|
|
--text-step-9: 60px;
|
|
--text-step-9--line-height: 60px;
|
|
--text-step-9--letter-spacing: -0.025em;
|
|
--text-xs: var(--text-step-1);
|
|
--text-xs--line-height: var(--text-step-1--line-height);
|
|
--text-xs--letter-spacing: var(--text-step-1--letter-spacing);
|
|
--text-sm: var(--text-step-2);
|
|
--text-sm--line-height: var(--text-step-2--line-height);
|
|
--text-sm--letter-spacing: var(--text-step-2--letter-spacing);
|
|
--text-base: var(--text-step-3);
|
|
--text-base--line-height: var(--text-step-3--line-height);
|
|
--text-base--letter-spacing: var(--text-step-3--letter-spacing);
|
|
--text-lg: var(--text-step-4);
|
|
--text-lg--line-height: var(--text-step-4--line-height);
|
|
--text-lg--letter-spacing: var(--text-step-4--letter-spacing);
|
|
--text-xl: var(--text-step-5);
|
|
--text-xl--line-height: var(--text-step-5--line-height);
|
|
--text-xl--letter-spacing: var(--text-step-5--letter-spacing);
|
|
--text-2xl: var(--text-step-6);
|
|
--text-2xl--line-height: var(--text-step-6--line-height);
|
|
--text-2xl--letter-spacing: var(--text-step-6--letter-spacing);
|
|
--text-3xl: var(--text-step-7);
|
|
--text-3xl--line-height: var(--text-step-7--line-height);
|
|
--text-3xl--letter-spacing: var(--text-step-7--letter-spacing);
|
|
--text-4xl: var(--text-step-8);
|
|
--text-4xl--line-height: var(--text-step-8--line-height);
|
|
--text-4xl--letter-spacing: var(--text-step-8--letter-spacing);
|
|
--text-6xl: var(--text-step-9);
|
|
--text-6xl--line-height: var(--text-step-9--line-height);
|
|
--text-6xl--letter-spacing: var(--text-step-9--letter-spacing);
|
|
--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);
|
|
}
|
|
|
|
@layer base {
|
|
html,
|
|
body {
|
|
height: 100%;
|
|
min-height: 100vh;
|
|
overflow: hidden;
|
|
}
|
|
#__next {
|
|
height: 100%;
|
|
}
|
|
* {
|
|
@apply border-border outline-ring/50;
|
|
}
|
|
body {
|
|
@apply m-0 bg-background text-base font-normal text-foreground;
|
|
}
|
|
}
|
|
|
|
@layer components {
|
|
.markdown {
|
|
@apply leading-relaxed;
|
|
}
|
|
.markdown * {
|
|
@apply text-sm leading-relaxed;
|
|
}
|
|
.markdown + .markdown {
|
|
@apply mt-2;
|
|
}
|
|
.markdown p {
|
|
@apply my-2 first:mt-0 last:mb-0;
|
|
}
|
|
.markdown a {
|
|
@apply underline;
|
|
}
|
|
.markdown blockquote {
|
|
@apply border-l-2 border-border pl-3;
|
|
}
|
|
.markdown code {
|
|
@apply space-y-1 rounded bg-muted px-1 py-0.5;
|
|
}
|
|
.markdown h1 {
|
|
@apply text-lg font-bold;
|
|
}
|
|
.markdown h2,
|
|
.markdown h3 {
|
|
@apply text-lg font-semibold;
|
|
}
|
|
.markdown ul {
|
|
@apply list-disc space-y-1;
|
|
}
|
|
.markdown ol {
|
|
@apply list-decimal space-y-1;
|
|
}
|
|
.markdown li {
|
|
@apply ml-5;
|
|
}
|
|
.markdown pre {
|
|
@apply space-y-1 overflow-x-auto rounded bg-muted p-3;
|
|
}
|
|
.markdown div {
|
|
@apply space-y-1;
|
|
}
|
|
}
|
|
|
|
/* Custom scrollbar for dark theme */
|
|
::-webkit-scrollbar {
|
|
width: 6px;
|
|
height: 6px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: oklch(0.3 0.005 260);
|
|
border-radius: 3px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: oklch(0.4 0.005 260);
|
|
}
|
|
|
|
/* Selection color */
|
|
::selection {
|
|
background: oklch(0.75 0.12 165 / 0.25);
|
|
}
|
|
|
|
/* Aurora background (components/ui/aurora-bg.tsx) */
|
|
@keyframes aurora-drift {
|
|
0%,
|
|
100% {
|
|
transform: translate(0, 0) rotate(0deg) scale(1);
|
|
}
|
|
25% {
|
|
transform: translate(14%, -10%) rotate(18deg) scale(1.25);
|
|
}
|
|
50% {
|
|
transform: translate(-4%, 6%) rotate(-6deg) scale(1.05);
|
|
}
|
|
75% {
|
|
transform: translate(-12%, -4%) rotate(-16deg) scale(0.9);
|
|
}
|
|
}
|
|
|
|
/* Curtain ribbons: sway side-to-side while skewing and stretching, like an
|
|
aurora curtain rippling. Ribbons are bottom-anchored (transform-origin
|
|
bottom), so skew/scale fan out from the horizon. */
|
|
@keyframes aurora-wave {
|
|
0%,
|
|
100% {
|
|
transform: translateX(0) skewX(0deg) scaleY(1);
|
|
opacity: 0.7;
|
|
}
|
|
20% {
|
|
transform: translateX(4%) skewX(8deg) scaleY(1.15);
|
|
opacity: 1;
|
|
}
|
|
45% {
|
|
transform: translateX(-3%) skewX(-10deg) scaleY(0.9);
|
|
opacity: 0.55;
|
|
}
|
|
70% {
|
|
transform: translateX(5%) skewX(12deg) scaleY(1.25);
|
|
opacity: 0.9;
|
|
}
|
|
}
|
|
|
|
/* Traveling wave: a 200%-wide striped sheet slides left by half its width,
|
|
looping seamlessly, while bobbing vertically — bands visibly roll across. */
|
|
@keyframes aurora-flow {
|
|
0% {
|
|
transform: translateX(0) translateY(0) skewX(-6deg);
|
|
}
|
|
25% {
|
|
transform: translateX(-12.5%) translateY(-4%) skewX(4deg);
|
|
}
|
|
50% {
|
|
transform: translateX(-25%) translateY(2%) skewX(-3deg);
|
|
}
|
|
75% {
|
|
transform: translateX(-37.5%) translateY(-5%) skewX(6deg);
|
|
}
|
|
100% {
|
|
transform: translateX(-50%) translateY(0) skewX(-6deg);
|
|
}
|
|
}
|
|
|
|
@keyframes aurora-twinkle {
|
|
0%,
|
|
100% {
|
|
opacity: 0.15;
|
|
}
|
|
50% {
|
|
opacity: 1;
|
|
}
|
|
}
|