@import "tailwindcss"; @import "tw-animate-css"; @import "shadcn-svelte/tailwind.css"; @import "@fontsource-variable/inter"; @import "../lib/panel/panel.css"; @plugin "@tailwindcss/typography"; @custom-variant dark (&:is(.dark *)); :root { --rack: oklch(0.968 0.007 340); --strip: oklch(0.996 0.002 340); --background: var(--rack); --foreground: oklch(0.23 0.03 340); --card: var(--strip); --card-foreground: oklch(0.23 0.03 340); --popover: var(--strip); --popover-foreground: oklch(0.23 0.03 340); --primary: oklch(0.47 0.13 340); --primary-foreground: oklch(0.99 0.005 340); --secondary: oklch(0.95 0.012 340); --secondary-foreground: oklch(0.23 0.03 340); --muted: oklch(0.945 0.012 340); --muted-foreground: oklch(0.5 0.035 340); --accent: oklch(0.95 0.012 340); --accent-foreground: oklch(0.23 0.03 340); --destructive: oklch(0.58 0.22 25); --destructive-foreground: oklch(0.99 0 0); --border: oklch(0.9 0.016 340); --input: oklch(0.9 0.016 340); --ring: oklch(0.55 0.2 342); --icon: oklch(0.55 0.03 340); --signal: oklch(0.5 0.21 342); --attention: oklch(0.72 0.16 72); --attention-foreground: oklch(0.5 0.14 70); --note: oklch(0.52 0.13 78); --warn: oklch(0.55 0.13 75); --link: var(--primary); --status-new: oklch(0.55 0.22 342); --status-done: oklch(0.55 0.14 155); --status-skip: oklch(0.5 0.04 340); --status-reply: oklch(0.55 0.14 235); --status-snooze: oklch(0.66 0.13 75); --status-meeting: oklch(0.5 0.2 300); --status-work: oklch(0.55 0.13 195); --radius: 0.5rem; --sidebar: var(--rack); --sidebar-foreground: var(--foreground); --sidebar-primary: var(--primary); --sidebar-primary-foreground: var(--primary-foreground); --sidebar-accent: oklch(0.93 0.016 340); --sidebar-accent-foreground: var(--foreground); --sidebar-border: var(--border); --sidebar-ring: var(--ring); --shadow-lift: 0 8px 20px -12px oklch(0.25 0.06 340 / 0.35), 0 1px 2px oklch(0.25 0.06 340 / 0.08); --shadow-float: 0 24px 60px -24px oklch(0.2 0.06 340 / 0.45), 0 2px 6px oklch(0.2 0.06 340 / 0.08); } .dark { --rack: oklch(0.2 0.025 335); --strip: oklch(0.255 0.028 335); --background: var(--rack); --foreground: oklch(0.96 0.005 340); --card: var(--strip); --card-foreground: oklch(0.96 0.005 340); --popover: oklch(0.27 0.03 335); --popover-foreground: oklch(0.96 0.005 340); --primary: oklch(0.72 0.16 340); --primary-foreground: oklch(0.18 0.03 340); --secondary: oklch(0.29 0.03 335); --secondary-foreground: oklch(0.96 0.005 340); --muted: oklch(0.3 0.03 335); --muted-foreground: oklch(0.72 0.03 340); --accent: oklch(0.3 0.03 335); --accent-foreground: oklch(0.96 0.005 340); --destructive: oklch(0.66 0.2 25); --destructive-foreground: oklch(0.98 0 0); --border: oklch(0.96 0.02 340 / 10%); --input: oklch(0.96 0.02 340 / 14%); --ring: oklch(0.8 0.15 340); --icon: oklch(0.65 0.03 340); --signal: oklch(0.8 0.17 340); --attention: oklch(0.8 0.15 75); --attention-foreground: oklch(0.85 0.14 78); --note: oklch(0.84 0.14 88); --warn: oklch(0.8 0.13 75); --link: oklch(0.8 0.15 340); --status-new: oklch(0.8 0.17 340); --status-done: oklch(0.74 0.14 155); --status-skip: oklch(0.7 0.03 340); --status-reply: oklch(0.72 0.13 235); --status-snooze: oklch(0.8 0.13 75); --status-meeting: oklch(0.72 0.16 300); --status-work: oklch(0.75 0.12 195); --sidebar: var(--rack); --sidebar-foreground: var(--foreground); --sidebar-primary: var(--primary); --sidebar-primary-foreground: var(--primary-foreground); --sidebar-accent: oklch(0.3 0.03 335); --sidebar-accent-foreground: var(--foreground); --sidebar-border: var(--border); --sidebar-ring: var(--ring); --shadow-lift: 0 8px 20px -12px oklch(0 0 0 / 0.7), 0 1px 2px oklch(0 0 0 / 0.3); --shadow-float: 0 24px 60px -24px oklch(0 0 0 / 0.8), 0 2px 6px oklch(0 0 0 / 0.3); } @theme inline { --font-sans: -apple-system, BlinkMacSystemFont, "Inter Variable", system-ui, sans-serif; --font-heading: var(--font-sans); --text-xs: 0.75rem; --text-sm: 0.8125rem; --text-base: 0.875rem; --text-lg: 1rem; --text-xl: 1.25rem; --text-2xl: 1.5rem; --text-3xl: 2rem; --color-rack: var(--rack); --color-strip: var(--strip); --color-attention: var(--attention); --color-attention-foreground: var(--attention-foreground); --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-icon: var(--icon); --color-signal: var(--signal); --color-note: var(--note); --color-status-new: var(--status-new); --color-status-done: var(--status-done); --color-status-skip: var(--status-skip); --color-status-reply: var(--status-reply); --color-status-snooze: var(--status-snooze); --color-status-meeting: var(--status-meeting); --color-status-work: var(--status-work); --color-ring: var(--ring); --color-input: var(--input); --color-border: var(--border); --color-destructive-foreground: var(--destructive-foreground); --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); --color-foreground: var(--foreground); --color-background: var(--background); --shadow-lift: var(--shadow-lift); --shadow-float: var(--shadow-float); --radius-sm: calc(var(--radius) * 0.6); --radius-md: calc(var(--radius) * 0.8); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) * 1.4); --radius-2xl: calc(var(--radius) * 1.8); --animate-island-in: island-in 260ms cubic-bezier(0.2, 0.9, 0.25, 1.05) both; --animate-fade-in: fade-in 180ms ease-out both; } @keyframes island-in { from { opacity: 0; transform: translateY(-6px) scale(0.985); } to { opacity: 1; transform: none; } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @layer base { * { @apply border-border outline-ring/50; } body { font-feature-settings: "cv11", "ss01"; -webkit-font-smoothing: antialiased; @apply bg-background text-foreground; } html, body { height: 100%; overflow: hidden; overscroll-behavior-y: none; } html { @apply font-sans; } ::selection { background: color-mix(in oklab, var(--primary) 28%, transparent); } * { scrollbar-color: color-mix(in oklab, var(--foreground) 22%, transparent) transparent; scrollbar-width: thin; } ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-thumb { background: color-mix(in oklab, var(--foreground) 22%, transparent); border-radius: 999px; } :focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; } input, textarea { caret-color: var(--primary); } input:focus, textarea:focus, select:focus { --tw-ring-color: transparent; outline: none; border-color: var(--border); box-shadow: none; } a { text-underline-offset: 3px; } code, pre, kbd { font-family: var(--font-mono); font-size: 0.8125rem; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; } } } @utility hue-chip { color: oklch(0.45 0.13 var(--hue)); background: oklch(0.6 0.09 var(--hue) / 0.12); border-color: oklch(0.6 0.09 var(--hue) / 0.4); .dark & { color: oklch(0.82 0.08 var(--hue)); } } @utility hairline { border-color: color-mix(in oklab, var(--border) 100%, transparent); } @utility label-quiet { font-size: var(--text-xs); font-weight: 500; color: var(--muted-foreground); letter-spacing: 0.02em; } @utility rule-word { font-size: var(--text-sm); font-weight: 500; color: var(--muted-foreground); transition: color 150ms ease-out; &:hover, &[aria-current="page"], &[data-active="true"] { color: var(--foreground); } } /* chat markdown: typography plugin on the theme tokens, compact rhythm */ .prose { --tw-prose-body: var(--foreground); --tw-prose-headings: var(--foreground); --tw-prose-lead: var(--muted-foreground); --tw-prose-links: var(--link); --tw-prose-bold: var(--foreground); --tw-prose-counters: var(--muted-foreground); --tw-prose-bullets: var(--muted-foreground); --tw-prose-hr: var(--border); --tw-prose-quotes: var(--foreground); --tw-prose-quote-borders: var(--border); --tw-prose-captions: var(--muted-foreground); --tw-prose-code: var(--foreground); --tw-prose-pre-code: var(--foreground); --tw-prose-pre-bg: var(--muted); --tw-prose-th-borders: var(--border); --tw-prose-td-borders: var(--border); font-size: 0.875rem; line-height: 1.5; } .prose :where(p, ul, ol, pre, blockquote, table):not( :where([class~="not-prose"] *) ) { margin-top: 0.4em; margin-bottom: 0.4em; } .prose :where(h1, h2, h3, h4):not(:where([class~="not-prose"] *)) { margin-top: 0.9em; margin-bottom: 0.3em; font-size: 1em; font-weight: 600; } .prose :where(code):not(:where([class~="not-prose"] *)) { padding: 0.1em 0.3em; font-weight: 500; background: var(--muted); border-radius: 0.3em; } .prose :where(code):not(:where([class~="not-prose"] *))::before, .prose :where(code):not(:where([class~="not-prose"] *))::after { content: none; } .prose :where(a.internal-link):not(:where([class~="not-prose"] *)) { text-decoration-style: dotted; }