Files
sofa/app/globals.css
T
jakeandClaude Opus 4.6 8c31784094 Replace Sofa text branding with sofa icon logo
Swap the "Sofa" wordmark for an SVG sofa icon across the nav bar,
auth forms, and landing page. Add SVG favicon replacing the old .ico.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 13:53:37 -05:00

216 lines
5.6 KiB
CSS

@import "tailwindcss";
@import "tw-animate-css";
@import "shadcn/tailwind.css";
@custom-variant dark (&:is(.dark *));
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-dm-sans);
--font-mono: var(--font-geist-mono);
--font-display: var(--font-dm-serif);
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar: var(--sidebar);
--color-chart-5: var(--chart-5);
--color-chart-4: var(--chart-4);
--color-chart-3: var(--chart-3);
--color-chart-2: var(--chart-2);
--color-chart-1: var(--chart-1);
--color-ring: var(--ring);
--color-input: var(--input);
--color-border: var(--border);
--color-destructive: var(--destructive);
--color-accent-foreground: var(--accent-foreground);
--color-accent: var(--accent);
--color-muted-foreground: var(--muted-foreground);
--color-muted: var(--muted);
--color-secondary-foreground: var(--secondary-foreground);
--color-secondary: var(--secondary);
--color-primary-foreground: var(--primary-foreground);
--color-primary: var(--primary);
--color-popover-foreground: var(--popover-foreground);
--color-popover: var(--popover);
--color-card-foreground: var(--card-foreground);
--color-card: var(--card);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--radius-2xl: calc(var(--radius) + 8px);
--radius-3xl: calc(var(--radius) + 12px);
--radius-4xl: calc(var(--radius) + 16px);
--color-status-watchlist: var(--status-watchlist);
--color-status-watching: var(--status-watching);
--color-status-completed: var(--status-completed);
}
/* Dark cinema — always dark, warm indigo base */
:root {
--background: oklch(0.12 0.008 270);
--foreground: oklch(0.93 0.01 80);
--card: oklch(0.16 0.008 270);
--card-foreground: oklch(0.93 0.01 80);
--popover: oklch(0.18 0.008 270);
--popover-foreground: oklch(0.93 0.01 80);
--primary: oklch(0.8 0.14 65);
--primary-foreground: oklch(0.12 0.008 270);
--secondary: oklch(0.2 0.008 270);
--secondary-foreground: oklch(0.85 0.02 80);
--muted: oklch(0.2 0.008 270);
--muted-foreground: oklch(0.6 0.02 80);
--accent: oklch(0.22 0.01 270);
--accent-foreground: oklch(0.93 0.01 80);
--destructive: oklch(0.65 0.2 25);
--border: oklch(0.8 0.02 65 / 8%);
--input: oklch(1 0 0 / 10%);
--ring: oklch(0.8 0.14 65);
--chart-1: oklch(0.8 0.14 65);
--chart-2: oklch(0.65 0.15 30);
--chart-3: oklch(0.55 0.12 260);
--chart-4: oklch(0.72 0.1 160);
--chart-5: oklch(0.6 0.15 310);
--radius: 0.625rem;
--sidebar: oklch(0.14 0.008 270);
--sidebar-foreground: oklch(0.93 0.01 80);
--sidebar-primary: oklch(0.8 0.14 65);
--sidebar-primary-foreground: oklch(0.12 0.008 270);
--sidebar-accent: oklch(0.2 0.008 270);
--sidebar-accent-foreground: oklch(0.93 0.01 80);
--sidebar-border: oklch(0.8 0.02 65 / 8%);
--sidebar-ring: oklch(0.8 0.14 65);
--status-watchlist: oklch(0.72 0.12 220);
--status-watching: oklch(0.78 0.14 65);
--status-completed: oklch(0.75 0.14 155);
}
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground antialiased;
}
/* https://ui.shadcn.com/docs/components/radix/button#cursor */
button:not(:disabled),
[role="button"]:not(:disabled) {
cursor: pointer;
}
}
/* Film grain texture overlay */
body::before {
content: "";
position: fixed;
inset: 0;
z-index: 9999;
pointer-events: none;
opacity: 0.015;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
}
/* Custom keyframe animations */
@keyframes card-enter {
from {
opacity: 0;
transform: translateY(12px) scale(0.98);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes check-pop {
0% {
transform: scale(0);
}
60% {
transform: scale(1.15);
}
100% {
transform: scale(1);
}
}
@keyframes star-fill {
0% {
transform: scale(1);
}
50% {
transform: scale(1.25);
}
100% {
transform: scale(1);
}
}
@keyframes gentle-float {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(-6px);
}
}
/* Warm skeleton pulse override */
@keyframes warm-pulse {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.4;
}
}
[data-slot="skeleton"] {
animation: warm-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
background: oklch(0.22 0.015 270);
}
/* Scrollbar styling */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: oklch(1 0 0 / 15%);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: oklch(1 0 0 / 25%);
}
/* Horizontal scroll row for feeds */
.feed-scroll {
scrollbar-width: none;
-ms-overflow-style: none;
}
.feed-scroll::-webkit-scrollbar {
display: none;
}
/* Utility animations */
.animate-gentle-float {
animation: gentle-float 3s ease-in-out infinite;
}
.animate-check-pop {
animation: check-pop 0.3s ease-out;
}
.animate-star-fill {
animation: star-fill 0.3s ease-out;
}