BillTracker/client/index.css

255 lines
6.5 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ============================================================
Bill Tracker — Material Design theme via shadcn/studio
:root is the default Material Design light theme.
============================================================ */
/* ── Georgia for digits only ─────────────────────────────── */
@font-face {
font-family: 'GeorgiaDigits';
src: local('Georgia');
unicode-range:
U+0030-U+0039, /* 09 */
U+002C, /* , thousands separator */
U+002E, /* . decimal point */
U+002D, /* - minus / hyphen */
U+002B, /* + plus */
U+0025, /* % percent */
U+0024, /* $ dollar */
U+00A2, /* ¢ cent */
U+00A3, /* £ pound */
U+00A5, /* ¥ yen */
U+20AC; /* € euro */
}
/* ── Tailwind base ───────────────────────────────────────── */
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 0.97 0.005 250;
--foreground: 0.15 0.008 250;
--card: 1.00 0 0;
--card-foreground: 0.15 0.008 250;
--popover: 1.00 0 0;
--popover-foreground: 0.15 0.008 250;
--primary: 0.55 0.20 276;
--primary-foreground: 0.99 0.003 250;
--secondary: 0.93 0.008 250;
--secondary-foreground: 0.20 0.010 250;
--muted: 0.94 0.006 250;
--muted-foreground: 0.48 0.010 250;
--accent: 0.92 0.012 265;
--accent-foreground: 0.20 0.010 250;
--destructive: 0.55 0.22 25;
--destructive-foreground: 0.99 0.003 250;
--border: 0.88 0.008 250;
--input: 0.88 0.008 250;
--ring: 0.55 0.16 276;
--chart-1: 0.55 0.22 270;
--chart-2: 0.55 0.14 150;
--chart-3: 0.60 0.18 310;
--chart-4: 0.58 0.16 130;
--chart-5: 0.55 0.18 255;
--sidebar: 0.94 0.007 250;
--sidebar-foreground: 0.20 0.008 250;
--sidebar-primary: 0.55 0.20 276;
--sidebar-primary-foreground: 0.99 0.003 250;
--sidebar-accent: 0.90 0.009 250;
--sidebar-accent-foreground: 0.20 0.008 250;
--sidebar-border: 0.88 0.008 250;
--sidebar-ring: 0.55 0.20 276;
--font-sans: 'GeorgiaDigits', Roboto, Inter, ui-sans-serif, system-ui, sans-serif;
--font-serif: 'GeorgiaDigits', Merriweather, Georgia, serif;
--font-mono: 'GeorgiaDigits', "Roboto Mono", ui-monospace, SFMono-Regular, monospace;
--radius: 1rem;
}
.dark {
--background: 0.20 0.008 250;
--foreground: 0.91 0.006 250;
--card: 0.24 0.009 250;
--card-foreground: 0.91 0.006 250;
--popover: 0.27 0.009 250;
--popover-foreground: 0.91 0.006 250;
--primary: 0.62 0.20 276;
--primary-foreground: 0.98 0.004 250;
--secondary: 0.28 0.012 255;
--secondary-foreground: 0.88 0.006 250;
--muted: 0.27 0.008 250;
--muted-foreground: 0.62 0.010 250;
--accent: 0.30 0.015 265;
--accent-foreground: 0.91 0.006 250;
--destructive: 0.65 0.18 22;
--destructive-foreground: 0.98 0.004 250;
--border: 0.32 0.009 250;
--input: 0.32 0.009 250;
--ring: 0.55 0.16 276;
--chart-1: 0.55 0.22 270;
--chart-2: 0.62 0.14 150;
--chart-3: 0.65 0.18 310;
--chart-4: 0.62 0.16 130;
--chart-5: 0.58 0.18 255;
--sidebar: 0.17 0.007 250;
--sidebar-foreground: 0.88 0.006 250;
--sidebar-primary: 0.62 0.20 276;
--sidebar-primary-foreground: 0.98 0.004 250;
--sidebar-accent: 0.25 0.009 250;
--sidebar-accent-foreground: 0.88 0.006 250;
--sidebar-border: 0.26 0.008 250;
--sidebar-ring: 0.62 0.20 276;
}
* {
@apply border-border;
}
html {
@apply scroll-smooth;
}
body {
@apply bg-background font-sans text-foreground antialiased;
letter-spacing: 0;
}
}
/* ── Utilities ───────────────────────────────────────────── */
@layer utilities {
/* Generic surface */
.surface {
@apply rounded-2xl border border-border/70 bg-card shadow-sm;
}
/* Elevated surface */
.surface-elevated {
@apply surface;
box-shadow:
0 1px 2px rgb(0 0 0 / 0.05),
0 6px 18px rgb(0 0 0 / 0.06);
}
.dark .surface-elevated {
box-shadow:
0 0 0 1px oklch(var(--border) / 0.7),
0 8px 22px rgb(0 0 0 / 0.55);
}
/* Stat cards */
.stat-card {
@apply surface-elevated p-6;
}
/* Table */
.table-surface {
@apply surface overflow-hidden shadow-sm;
}
/* Custom Scrollbar */
.scrollbar-thin {
scrollbar-width: thin;
}
.scrollbar-thumb-muted {
scrollbar-color: oklch(var(--muted) / 0.3) transparent;
}
.scrollbar-track-transparent {
scrollbar-color: oklch(var(--muted) / 0.3) transparent;
}
.scrollbar-thumb-muted::-webkit-scrollbar-thumb {
background-color: oklch(var(--muted) / 0.3);
border-radius: 8px;
}
.scrollbar-track-transparent::-webkit-scrollbar-track {
background-color: transparent;
}
.scrollbar-thumb-muted::-webkit-scrollbar-thumb:hover {
background-color: oklch(var(--muted) / 0.5);
}
}
@media print {
body {
background: white !important;
color: #111827 !important;
}
header,
.analytics-screen-header,
.analytics-controls,
.analytics-actions,
.summary-screen-header,
.summary-controls,
.summary-actions,
.summary-edit-actions,
.summary-income-form {
display: none !important;
}
main,
main > div {
max-width: none !important;
padding: 0 !important;
}
.analytics-page,
.summary-page {
color: #111827 !important;
}
.analytics-report-meta,
.analytics-print-footer,
.summary-print-meta,
.summary-print-footer {
display: block !important;
margin-bottom: 1rem;
}
.analytics-report-meta h1,
.summary-print-meta h1 {
font-size: 22px;
font-weight: 700;
margin-bottom: 0.25rem;
}
.analytics-report-meta p,
.analytics-print-footer,
.summary-print-meta p,
.summary-print-footer {
color: #4b5563 !important;
font-size: 12px;
margin: 0.125rem 0;
}
.analytics-range {
margin-bottom: 1rem;
}
.summary-page input {
border: 0 !important;
background: white !important;
box-shadow: none !important;
color: #111827 !important;
padding-left: 0 !important;
}
.analytics-chart-grid {
display: block !important;
}
.analytics-chart,
.summary-card,
.summary-chart-card {
break-inside: avoid;
page-break-inside: avoid;
margin-bottom: 1rem;
border: 1px solid #d1d5db !important;
box-shadow: none !important;
background: white !important;
}
}