@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); @import "tailwindcss"; @import "tw-animate-css"; @import "shadcn-vue/tailwind.css"; @custom-variant dark (&:is(.dark *)); @theme inline { /* Design System Colors */ --color-canvas: #faf9f5; --color-surface-card: #efe9de; --color-surface-soft: #f5f0e8; --color-surface-dark: #181715; --color-surface-dark-elevated: #252320; --color-surface-dark-soft: #1f1e1b; --color-primary: #cc785c; --color-primary-active: #a9583e; --color-ink: #141413; --color-body: #3d3d3a; --color-body-strong: #252523; --color-muted: #6c6a64; --color-muted-soft: #8e8b82; --color-hairline: #e6dfd8; --color-hairline-soft: #ebe6df; --color-on-dark: #faf9f5; --color-on-dark-soft: #a09d96; --color-on-primary: #ffffff; --color-accent-teal: #5db8a6; --color-accent-amber: #e8a55a; /* shadcn-vue semantic tokens → design system colors */ --background: var(--color-canvas); --foreground: var(--color-ink); --card: var(--color-surface-card); --card-foreground: var(--color-ink); --popover: var(--color-canvas); --popover-foreground: var(--color-ink); --primary: var(--color-primary); --primary-foreground: var(--color-on-primary); --secondary: var(--color-surface-card); --secondary-foreground: var(--color-ink); --muted: var(--color-surface-soft); --muted-foreground: var(--color-muted); --accent: var(--color-accent-teal); --accent-foreground: var(--color-on-dark); --destructive: #c64545; --destructive-foreground: #ffffff; --border: var(--color-hairline); --input: var(--color-hairline); --ring: var(--color-primary); /* shadcn-vue radius */ --radius: 0.5rem; --font-sans: 'Inter', sans-serif; --font-heading: 'Abril Fatface', 'Times New Roman', Georgia, Garamond, 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-secondary-foreground: var(--secondary-foreground); --color-secondary: var(--secondary); --color-primary-foreground: var(--primary-foreground); --color-popover-foreground: var(--popover-foreground); --color-popover: var(--popover); --color-card-foreground: var(--card-foreground); --color-card: var(--card); --color-foreground: var(--foreground); --color-background: var(--background); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); } body { background-color: var(--color-canvas); color: var(--color-body); font-family: var(--font-sans); } /* ── Scrollbar ── */ html { scrollbar-width: auto; scrollbar-color: rgba(232, 224, 210, 0.55) transparent; } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(232, 224, 210, 0.55); border-radius: 9999px; } ::-webkit-scrollbar-thumb:hover { background: rgba(204, 120, 92, 0.30); } ::-webkit-scrollbar-corner { background: transparent; } :root { --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); --ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1); --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); --font-display: 'Abril Fatface', 'Times New Roman', Georgia, Garamond, serif; --font-body: var(--font-sans); } .noise-texture { position: relative; } .noise-texture::before { content: ""; position: absolute; inset: 0; opacity: 0.025; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); background-size: 128px 128px; pointer-events: none; z-index: 0; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* ── Button hover utilities ── */ .hover-surface-soft:hover { background-color: var(--color-surface-soft); } .hover-surface-dark-soft:hover { background-color: var(--color-surface-dark-soft); } [aria-expanded="true"].aria-expanded-surface-soft { background-color: var(--color-surface-soft); } @layer base { * { @apply border-border outline-ring/50; } body { @apply bg-background text-foreground; @apply font-sans; } } .dark { /* Dark mode tokens using design system colors */ --background: var(--color-surface-dark); --foreground: var(--color-on-dark); --card: var(--color-surface-dark-elevated); --card-foreground: var(--color-on-dark); --popover: var(--color-surface-dark); --popover-foreground: var(--color-on-dark); --primary: var(--color-primary); --primary-foreground: var(--color-on-primary); --secondary: var(--color-surface-dark-elevated); --secondary-foreground: var(--color-on-dark); --muted: var(--color-surface-dark-soft); --muted-foreground: var(--color-on-dark-soft); --accent: var(--color-accent-teal); --accent-foreground: var(--color-on-dark); --destructive: #c64545; --destructive-foreground: #ffffff; --border: var(--color-surface-dark-elevated); --input: var(--color-surface-dark-soft); --ring: var(--color-primary); }