Applies ruff format, ruff check --fix and prettier, so CI can gate on all three. The surviving unused imports were all re-exports in __init__.py, now covered by a per-file ignore; the pdf.js viewer and the generated openapi types join the vendored code that eslint and prettier already skip.
164 lines
4.3 KiB
CSS
164 lines
4.3 KiB
CSS
@import 'tailwindcss';
|
|
|
|
@plugin 'tailwind-scrollbar';
|
|
|
|
@import 'tw-animate-css';
|
|
|
|
@custom-variant dark (&:is(.dark *));
|
|
|
|
:root {
|
|
--radius: 0.625rem;
|
|
|
|
/* Typography — system stacks, so nothing depends on a CDN or a webfont build. */
|
|
--app-font-sans:
|
|
system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
--app-font-serif: Georgia, 'Iowan Old Style', 'Times New Roman', serif;
|
|
--app-font-mono: ui-monospace, 'SF Mono', 'Cascadia Mono', Menlo, Consolas, monospace;
|
|
|
|
/* Reading Room — light */
|
|
--background: #e9ebee;
|
|
--foreground: #1b1f24;
|
|
--card: #fbfbfc;
|
|
--card-foreground: #1b1f24;
|
|
--popover: #fbfbfc;
|
|
--popover-foreground: #1b1f24;
|
|
--primary: #1f5f5b;
|
|
--primary-foreground: #f2f7f6;
|
|
--secondary: #dfe3e8;
|
|
--secondary-foreground: #1b1f24;
|
|
--muted: #e2e5e9;
|
|
--muted-foreground: #7d858f;
|
|
--accent: #d7e5e3;
|
|
--accent-foreground: #164743;
|
|
--destructive: #a6402f;
|
|
--border: #d2d6dc;
|
|
--input: #d2d6dc;
|
|
--ring: #1f5f5b;
|
|
|
|
/* Semantic — deliberately not the accent, so state never reads as branding. */
|
|
--success: #2f7d4f;
|
|
--success-foreground: #f2f7f6;
|
|
--flag: #b08a1e;
|
|
--star: #c79a25;
|
|
|
|
--chart-1: #1f5f5b;
|
|
--chart-2: #2f7d4f;
|
|
--chart-3: #b08a1e;
|
|
--chart-4: #4c6b8a;
|
|
--chart-5: #a6402f;
|
|
|
|
--sidebar: #e2e5e9;
|
|
--sidebar-foreground: #1b1f24;
|
|
--sidebar-primary: #1f5f5b;
|
|
--sidebar-primary-foreground: #f2f7f6;
|
|
--sidebar-accent: #d7e5e3;
|
|
--sidebar-accent-foreground: #164743;
|
|
--sidebar-border: #d2d6dc;
|
|
--sidebar-ring: #1f5f5b;
|
|
}
|
|
|
|
.dark {
|
|
/* Reading Room — dark */
|
|
--background: #15191b;
|
|
--foreground: #e6eae9;
|
|
--card: #1d2226;
|
|
--card-foreground: #e6eae9;
|
|
--popover: #1d2226;
|
|
--popover-foreground: #e6eae9;
|
|
--primary: #6fbab0;
|
|
--primary-foreground: #0e1a19;
|
|
--secondary: #232a2d;
|
|
--secondary-foreground: #e6eae9;
|
|
--muted: #232a2d;
|
|
--muted-foreground: #78868a;
|
|
--accent: #1b3330;
|
|
--accent-foreground: #9fd8d0;
|
|
--destructive: #e0796b;
|
|
--border: #2a3034;
|
|
--input: #2a3034;
|
|
--ring: #6fbab0;
|
|
|
|
--success: #4fa97a;
|
|
--success-foreground: #0e1a19;
|
|
--flag: #d4a63a;
|
|
--star: #e5b84b;
|
|
|
|
--chart-1: #6fbab0;
|
|
--chart-2: #4fa97a;
|
|
--chart-3: #d4a63a;
|
|
--chart-4: #7f9dc0;
|
|
--chart-5: #e0796b;
|
|
|
|
--sidebar: #111517;
|
|
--sidebar-foreground: #e6eae9;
|
|
--sidebar-primary: #6fbab0;
|
|
--sidebar-primary-foreground: #0e1a19;
|
|
--sidebar-accent: #1b3330;
|
|
--sidebar-accent-foreground: #9fd8d0;
|
|
--sidebar-border: #2a3034;
|
|
--sidebar-ring: #6fbab0;
|
|
}
|
|
|
|
@theme inline {
|
|
--font-sans: var(--app-font-sans);
|
|
--font-serif: var(--app-font-serif);
|
|
--font-mono: var(--app-font-mono);
|
|
--radius-sm: calc(var(--radius) - 4px);
|
|
--radius-md: calc(var(--radius) - 2px);
|
|
--radius-lg: var(--radius);
|
|
--radius-xl: calc(var(--radius) + 4px);
|
|
--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-success: var(--success);
|
|
--color-success-foreground: var(--success-foreground);
|
|
--color-flag: var(--flag);
|
|
--color-star: var(--star);
|
|
--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);
|
|
--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 {
|
|
* {
|
|
@apply border-border outline-ring/50;
|
|
}
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
}
|
|
}
|
|
|
|
/* Comma separated list */
|
|
.cs-list::after {
|
|
content: ',';
|
|
}
|
|
|
|
.cs-list:last-of-type::after {
|
|
display: none;
|
|
}
|