Files
accounted/app/globals.css
T
2026-02-13 14:00:46 +01:00

287 lines
7.5 KiB
CSS

@import "tailwindcss";
@plugin "@tailwindcss/typography";
/* Force light mode */
html, :root {
color-scheme: light only !important;
}
@media (prefers-color-scheme: dark) {
:root {
--background: 40 30% 97% !important;
--foreground: 30 10% 15% !important;
--card: 40 40% 99% !important;
--card-foreground: 30 10% 15% !important;
--popover: 40 40% 99% !important;
--popover-foreground: 30 10% 15% !important;
--primary: 28 40% 35% !important;
--primary-foreground: 40 40% 99% !important;
--secondary: 35 25% 93% !important;
--secondary-foreground: 30 10% 15% !important;
--muted: 35 15% 91% !important;
--muted-foreground: 30 8% 45% !important;
--accent: 18 45% 55% !important;
--accent-foreground: 40 40% 99% !important;
--destructive: 0 45% 55% !important;
--destructive-foreground: 40 40% 99% !important;
--border: 35 20% 88% !important;
--input: 35 20% 88% !important;
--ring: 28 40% 35% !important;
}
}
:root {
/* Nordic Warmth Color Palette */
/* Inspired by Swedish nature: forest, stone, linen, birch */
--background: 40 30% 97%; /* Warm paper white */
--foreground: 30 10% 15%; /* Soft charcoal, not harsh black */
--card: 40 40% 99%; /* Natural white with warmth */
--card-foreground: 30 10% 15%;
--popover: 40 40% 99%;
--popover-foreground: 30 10% 15%;
/* Primary - Leather Brown (warm, dark) */
--primary: 28 40% 35%; /* Dark leather brown */
--primary-foreground: 40 40% 99%;
/* Secondary - Warm Linen */
--secondary: 35 25% 93%; /* Soft linen/oat */
--secondary-foreground: 30 10% 15%;
/* Muted - Stone */
--muted: 35 15% 91%; /* Warm stone gray */
--muted-foreground: 30 8% 45%; /* Soft warm gray */
/* Accent - Terracotta */
--accent: 18 45% 55%; /* Muted terracotta/clay */
--accent-foreground: 40 40% 99%;
/* Destructive - Muted Rose */
--destructive: 0 45% 55%; /* Soft dusty rose */
--destructive-foreground: 40 40% 99%;
/* Borders & Input - Soft warm line */
--border: 35 20% 88%;
--input: 35 20% 88%;
--ring: 28 40% 35%;
/* Radius - Subtle, refined */
--radius: 0.5rem;
/* Success - Forest green */
--success: 150 30% 40%;
--success-foreground: 40 40% 99%;
/* Warning - Warm honey */
--warning: 38 70% 55%;
--warning-foreground: 30 10% 15%;
/* Custom tokens */
--font-display: var(--font-fraunces), Georgia, serif;
--font-body: var(--font-geist-sans), system-ui, sans-serif;
/* Refined shadows */
--shadow-sm: 0 1px 2px rgba(30, 25, 20, 0.04);
--shadow-md: 0 4px 12px rgba(30, 25, 20, 0.06);
--shadow-lg: 0 12px 40px rgba(30, 25, 20, 0.08);
/* Animation */
--ease-out: cubic-bezier(0.25, 0.46, 0.45, 0.94);
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
--duration-fast: 150ms;
--duration-base: 300ms;
--duration-slow: 500ms;
}
@theme inline {
--color-background: hsl(var(--background));
--color-foreground: hsl(var(--foreground));
--color-card: hsl(var(--card));
--color-card-foreground: hsl(var(--card-foreground));
--color-popover: hsl(var(--popover));
--color-popover-foreground: hsl(var(--popover-foreground));
--color-primary: hsl(var(--primary));
--color-primary-foreground: hsl(var(--primary-foreground));
--color-secondary: hsl(var(--secondary));
--color-secondary-foreground: hsl(var(--secondary-foreground));
--color-muted: hsl(var(--muted));
--color-muted-foreground: hsl(var(--muted-foreground));
--color-accent: hsl(var(--accent));
--color-accent-foreground: hsl(var(--accent-foreground));
--color-destructive: hsl(var(--destructive));
--color-destructive-foreground: hsl(var(--destructive-foreground));
--color-border: hsl(var(--border));
--color-input: hsl(var(--input));
--color-ring: hsl(var(--ring));
--color-success: hsl(var(--success));
--color-success-foreground: hsl(var(--success-foreground));
--color-warning: hsl(var(--warning));
--color-warning-foreground: hsl(var(--warning-foreground));
--radius-lg: var(--radius);
--radius-md: calc(var(--radius) - 2px);
--radius-sm: calc(var(--radius) - 4px);
--font-sans: var(--font-body);
--font-mono: var(--font-geist-mono), monospace;
--font-serif: var(--font-display);
}
* {
border-color: hsl(var(--border));
}
body {
background-color: hsl(var(--background));
color: hsl(var(--foreground));
font-family: var(--font-body);
font-feature-settings: "cv02", "cv03", "cv04", "cv11";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Display typography - Fraunces */
.font-display {
font-family: var(--font-display);
font-optical-sizing: auto;
}
h1, h2, h3 {
font-family: var(--font-display);
font-weight: 500;
letter-spacing: -0.02em;
font-optical-sizing: auto;
}
/* Number styling - tabular for alignment */
.tabular-nums {
font-variant-numeric: tabular-nums;
}
/* Text balance for better line wrapping on descriptions */
.text-balance {
text-wrap: balance;
}
/* Safe area padding for mobile devices with notch/home indicator */
.safe-area-bottom {
padding-bottom: max(0.5rem, env(safe-area-inset-bottom));
}
/* Animation Keyframes */
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(16px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideInLeft {
from {
opacity: 0;
transform: translateX(-8px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.96);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes gentlePulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.6; }
}
/* Staggered entrance animation */
.stagger-enter > * {
animation: slideUp var(--duration-slow) var(--ease-out) both;
}
.stagger-enter > *:nth-child(1) { animation-delay: 0ms; }
.stagger-enter > *:nth-child(2) { animation-delay: 80ms; }
.stagger-enter > *:nth-child(3) { animation-delay: 160ms; }
.stagger-enter > *:nth-child(4) { animation-delay: 240ms; }
.stagger-enter > *:nth-child(5) { animation-delay: 320ms; }
.stagger-enter > *:nth-child(6) { animation-delay: 400ms; }
.stagger-enter > *:nth-child(7) { animation-delay: 480ms; }
.stagger-enter > *:nth-child(8) { animation-delay: 560ms; }
.stagger-enter > *:nth-child(9) { animation-delay: 640ms; }
.stagger-enter > *:nth-child(10) { animation-delay: 720ms; }
/* Utility animations */
.animate-fade-in {
animation: fadeIn var(--duration-base) var(--ease-out);
}
.animate-slide-up {
animation: slideUp var(--duration-slow) var(--ease-out);
}
.animate-scale-in {
animation: scaleIn var(--duration-base) var(--ease-out);
}
/* Refined hover effects */
.hover-lift {
transition: transform var(--duration-base) var(--ease-out),
box-shadow var(--duration-base) var(--ease-out);
}
.hover-lift:hover {
transform: translateY(-2px);
box-shadow: var(--shadow-lg);
}
/* Soft focus states */
.focus-ring:focus-visible {
outline: none;
box-shadow: 0 0 0 2px hsl(var(--background)),
0 0 0 4px hsl(var(--primary) / 0.3);
}
/* Custom scrollbar - minimal */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: hsl(var(--muted-foreground) / 0.2);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: hsl(var(--muted-foreground) / 0.3);
}
/* Selection color */
::selection {
background: hsl(var(--primary) / 0.15);
color: hsl(var(--foreground));
}