@import "tailwindcss";
@import "tw-animate-css";
@custom-variant dark (&:is(.dark *));
:root {
--radius: 0.625rem;
--code-block: oklch(0.885 0.012 73);
--background: oklch(0.905 0.010 78);
--foreground: oklch(0.14 0.008 55);
--card: oklch(0.89 0.012 76);
--card-foreground: oklch(0.14 0.008 55);
--popover: oklch(0.89 0.012 76);
--popover-foreground: oklch(0.14 0.008 55);
--primary: oklch(0.48 0.14 28);
--primary-foreground: oklch(0.98 0.005 78);
--link: oklch(0.38 0.04 55);
--link-hover: oklch(0.30 0.05 55);
--link-visited: oklch(0.42 0.03 45);
--link-underline: oklch(0.38 0.04 55 / 40%);
--secondary: oklch(0.89 0.012 76);
--secondary-foreground: oklch(0.14 0.008 55);
--muted: oklch(0.88 0.012 75);
--muted-foreground: oklch(0.32 0.012 65);
--accent: oklch(0.14 0.008 55 / 7%);
--accent-foreground: oklch(0.14 0.008 55);
--destructive: oklch(0.55 0.20 27);
--border: oklch(0.14 0.008 55 / 18%);
--input: oklch(0.14 0.008 55 / 18%);
--ring: oklch(0.32 0.012 65);
--sidebar: oklch(0.855 0.012 75);
--sidebar-foreground: oklch(0.26 0.012 65);
--sidebar-primary: oklch(0.26 0.012 65);
--sidebar-primary-foreground: oklch(0.98 0.005 78);
--sidebar-accent: oklch(0.14 0.008 55 / 10%);
--sidebar-accent-foreground: oklch(0.14 0.008 55);
--sidebar-border: transparent;
--sidebar-ring: oklch(0.44 0.012 65);
--grain-opacity: 0.035;
--blockquote-bar: oklch(0.44 0.012 65 / 48%);
}
.dark {
--code-block: oklch(0.105 0.006 258);
--background: oklch(0.145 0.005 260);
--foreground: oklch(0.85 0.008 250);
--card: oklch(0.165 0.006 260);
--card-foreground: oklch(0.85 0.008 250);
--popover: oklch(0.165 0.006 260);
--popover-foreground: oklch(0.85 0.008 250);
--primary: oklch(0.72 0.10 220);
--primary-foreground: oklch(0.12 0.005 260);
--link: oklch(0.70 0.03 250);
--link-hover: oklch(0.78 0.04 250);
--link-visited: oklch(0.62 0.02 260);
--link-underline: oklch(0.70 0.03 250 / 40%);
--secondary: oklch(0.165 0.006 260);
--secondary-foreground: oklch(0.85 0.008 250);
--muted: oklch(0.12 0.006 258);
--muted-foreground: oklch(0.55 0.008 250);
--accent: oklch(1 0 0 / 3%);
--accent-foreground: oklch(0.85 0.008 250);
--destructive: oklch(0.65 0.18 22);
--border: oklch(1 0 0 / 6%);
--input: oklch(1 0 0 / 6%);
--ring: oklch(0.55 0.008 250);
--sidebar: oklch(0.12 0.006 258);
--sidebar-foreground: oklch(0.55 0.008 250);
--sidebar-primary: oklch(0.55 0.008 250);
--sidebar-primary-foreground: oklch(0.12 0.005 260);
--sidebar-accent: oklch(1 0 0 / 5%);
--sidebar-accent-foreground: oklch(0.85 0.008 250);
--sidebar-border: transparent;
--sidebar-ring: oklch(0.55 0.008 250);
--grain-opacity: 0.02;
--blockquote-bar: oklch(0.55 0.008 250 / 40%);
}
@theme inline {
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-link: var(--link);
--color-link-hover: var(--link-hover);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
--color-code-block: var(--code-block);
--color-blockquote-bar: var(--blockquote-bar);
}
[data-sidebar] ul {
padding-inline-start: 0;
}
[data-sidebar="group"] {
padding-inline: 6px;
padding-block-end: 4px;
}
@layer components {
.project-sidebar [data-sidebar="sidebar"] {
border-right: 1px solid color-mix(in oklch, var(--foreground) 10%, transparent);
background:
linear-gradient(180deg, color-mix(in oklch, var(--sidebar) 94%, white 6%), var(--sidebar)),
radial-gradient(circle at 20% 15%, color-mix(in oklch, var(--foreground) 10%, transparent) 0 1px, transparent 1px 100%);
background-size: auto, 8px 8px;
}
.project-sidebar .sidebar-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 0;
margin: 0;
}
.project-sidebar .sidebar-controls[data-sidebar-controls="true"] {
display: grid;
gap: 10px;
margin: 0 12px 12px;
padding: 10px;
border-radius: 12px;
border: 1px solid color-mix(in oklch, var(--foreground) 10%, transparent);
background: color-mix(in oklch, var(--background) 80%, white 20%);
box-shadow:
inset 0 1px 0 color-mix(in oklch, white 48%, transparent),
0 1px 2px color-mix(in oklch, black 4%, transparent);
}
.project-sidebar .sidebar-project-picker {
min-width: 0;
flex: 1;
display: grid;
gap: 3px;
}
.sidebar-project-select {
width: 100%;
min-width: 0;
height: 36px;
display: inline-flex;
align-items: center;
justify-content: space-between;
gap: 8px;
border-radius: 10px;
border: 1px solid transparent;
background: transparent;
color: color-mix(in oklch, var(--foreground) 90%, transparent);
padding: 0 12px;
font-size: 0.95rem;
font-weight: 650;
line-height: 1.2;
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
text-align: left;
transition: background-color 120ms ease, border-color 120ms ease;
}
.sidebar-project-select:hover {
background: color-mix(in oklch, var(--foreground) 4%, transparent);
}
.sidebar-project-select:focus {
outline: none;
}
.sidebar-project-select:focus-visible {
background: color-mix(in oklch, var(--foreground) 6%, transparent);
}
.sidebar-project-select-label {
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.sidebar-project-menu {
min-width: 220px;
max-width: 320px;
}
.sidebar-project-command {
border-radius: 10px;
border: 0;
background: color-mix(in oklch, var(--background) 92%, white 8%);
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
}
.sidebar-project-command [data-slot="command-input-wrapper"] {
min-height: 40px;
padding-inline-start: 10px;
padding-inline-end: 10px;
gap: 8px;
align-items: center;
border-bottom-color: color-mix(in oklch, var(--foreground) 10%, transparent);
}
.sidebar-project-command [data-slot="command-input"] {
height: 36px;
padding-block: 0;
font-size: 0.95rem;
line-height: 1.2;
}
.sidebar-project-menu-item {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
font-size: 0.95rem;
line-height: 1.25;
}
.sidebar-project-switch-icon {
opacity: 0.72;
color: color-mix(in oklch, var(--sidebar-foreground) 82%, transparent);
}
.project-sidebar [data-sidebar="content"] {
min-height: 0;
}
.sidebar-shell {
display: flex;
flex-direction: column;
min-height: 0;
height: 100%;
padding: 0;
}
.sidebar-mode-toggle {
display: flex;
align-items: center;
gap: 5px;
background: color-mix(in oklch, var(--foreground) 6%, transparent);
padding: 3px;
border-radius: 10px;
}
.sidebar-mode-button {
display: inline-flex;
align-items: center;
justify-content: center;
width: 26px;
height: 26px;
border-radius: 7px;
color: color-mix(in oklch, var(--sidebar-foreground) 76%, transparent);
border: 1px solid transparent;
background: transparent;
transition: all 140ms ease;
}
.sidebar-mode-button:hover {
color: color-mix(in oklch, var(--foreground) 86%, transparent);
}
.sidebar-mode-button--active {
color: color-mix(in oklch, var(--foreground) 95%, transparent);
background: var(--background);
border-color: color-mix(in oklch, var(--foreground) 10%, transparent);
box-shadow: 0 1px 2px color-mix(in oklch, black 4%, transparent);
}
.sidebar-pane {
display: flex;
flex-direction: column;
min-height: 0;
border: none;
border-radius: 0;
background: transparent;
}
.project-sidebar .sidebar-search-wrap {
padding: 0;
}
.sidebar-search {
width: 100%;
height: 32px;
border-radius: 9px;
border: 1px solid color-mix(in oklch, var(--foreground) 12%, transparent);
background: color-mix(in oklch, var(--background) 84%, white 16%);
color: color-mix(in oklch, var(--foreground) 86%, transparent);
padding-inline: 12px;
padding-block: 6px;
font-size: 0.82rem;
font-weight: 600;
line-height: 1.2;
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
box-shadow: inset 0 1px 0 color-mix(in oklch, white 35%, transparent);
transition: border-color 120ms ease, background-color 120ms ease, box-shadow 120ms ease;
}
.sidebar-search:focus {
outline: none;
border-color: color-mix(in oklch, var(--foreground) 24%, transparent);
box-shadow: inset 0 1px 0 color-mix(in oklch, white 45%, transparent);
}
.sidebar-search:focus-visible {
outline: none;
}
.sidebar-tree-menu [data-sidebar="menu-button"],
.sidebar-tree-menu [data-sidebar="menu-sub-button"] {
position: relative;
border-radius: 9px;
min-height: 34px;
max-height: 34px;
margin-bottom: 2px;
padding-right: 10px !important;
padding-left: calc(var(--tree-depth, 0) * 20px + 10px) !important;
font-size: 0.875rem;
line-height: 1;
border: 1px solid transparent;
background: transparent;
transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease;
}
.sidebar-tree-sub {
position: relative;
display: flex;
flex-direction: column;
}
.sidebar-tree-sub::before {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: calc(var(--tree-depth, 0) * 20px + 17px);
width: 1px;
background: color-mix(in oklch, var(--foreground) 18%, transparent);
z-index: 10;
pointer-events: none;
}
.sidebar-tree-menu [data-sidebar="menu-button"]:hover,
.sidebar-tree-menu [data-sidebar="menu-sub-button"]:hover {
background: color-mix(in oklch, var(--foreground) 14%, transparent);
}
.sidebar-tree-menu [data-sidebar="menu-button"]:focus-visible,
.sidebar-tree-menu [data-sidebar="menu-sub-button"]:focus-visible,
.sidebar-outline-item:focus-visible {
outline: none;
box-shadow: 0 0 0 2px color-mix(in oklch, var(--foreground) 20%, transparent);
}
.sidebar-tree-menu [data-sidebar="menu-button"][data-active="true"],
.sidebar-tree-menu [data-sidebar="menu-sub-button"][data-active="true"] {
background: color-mix(in oklch, var(--foreground) 19%, transparent);
border-color: transparent;
color: color-mix(in oklch, var(--foreground) 96%, transparent);
}
.sidebar-tree-menu [data-sidebar="menu-button"][data-active="true"]::before,
.sidebar-tree-menu [data-sidebar="menu-sub-button"][data-active="true"]::before {
content: "";
position: absolute;
inset: 5px auto 5px 1px;
width: 2px;
border-radius: 2px;
background: color-mix(in oklch, var(--foreground) 62%, transparent);
}
.sidebar-tree-row {
display: inline-flex;
width: 100%;
align-items: center;
gap: 6px;
}
.sidebar-tree-row--dir {
font-weight: 640;
color: color-mix(in oklch, var(--foreground) 93%, transparent);
}
.sidebar-tree-row--file {
font-weight: 500;
color: color-mix(in oklch, var(--foreground) 90%, transparent);
}
.sidebar-tree-chevron {
color: color-mix(in oklch, var(--sidebar-foreground) 72%, transparent);
}
.sidebar-tree-icon {
color: color-mix(in oklch, var(--sidebar-foreground) 80%, transparent);
}
.sidebar-tree-icon-image {
display: block;
opacity: 0.96;
filter: saturate(0.92) contrast(1.1);
}
.sidebar-tree-icon-placeholder {
display: block;
}
.sidebar-tree-menu [data-sidebar="menu-button"][data-active="true"] .sidebar-tree-icon-image,
.sidebar-tree-menu [data-sidebar="menu-sub-button"][data-active="true"] .sidebar-tree-icon-image {
opacity: 0.95;
filter: saturate(0.82) contrast(1.03);
}
.sidebar-tree-name {
flex: 1;
min-width: 0;
}
.sidebar-tree-meta {
flex: 0 0 auto;
border-radius: 999px;
min-width: 1.9rem;
height: 1.15rem;
padding: 0 0.4rem;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 0.56rem;
line-height: 1;
font-weight: 700;
letter-spacing: 0.06em;
color: color-mix(in oklch, var(--sidebar-foreground) 78%, transparent);
background: color-mix(in oklch, var(--foreground) 9%, transparent);
}
.sidebar-outline-list {
display: flex;
flex-direction: column;
gap: 2px;
padding: 4px 0 12px;
}
.sidebar-outline-wrap {
margin: 0;
padding: 0 10px 12px;
border: 0;
border-radius: 0;
background: transparent;
box-shadow: none;
}
.sidebar-outline-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
width: 100%;
min-height: 34px;
border-radius: 9px;
border: 1px solid transparent;
padding: 0 8px 0 calc(8px + max(0, var(--outline-level) - 1) * 10px);
text-align: left;
color: color-mix(in oklch, var(--foreground) 82%, transparent);
background: transparent;
transition: all 120ms ease;
}
.sidebar-outline-item:hover {
background: color-mix(in oklch, var(--foreground) 6%, transparent);
}
.sidebar-outline-item--active {
background: color-mix(in oklch, var(--foreground) 8%, transparent);
border-color: transparent;
color: color-mix(in oklch, var(--foreground) 96%, transparent);
}
.sidebar-outline-title {
font-size: 0.78rem;
line-height: 1.2;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.sidebar-outline-line {
flex: 0 0 auto;
font-size: 0.62rem;
font-weight: 700;
letter-spacing: 0.05em;
color: color-mix(in oklch, var(--sidebar-foreground) 66%, transparent);
}
.sidebar-outline-empty {
border: 1px dashed color-mix(in oklch, var(--foreground) 16%, transparent);
border-radius: 10px;
padding: 12px;
margin: 0;
background: color-mix(in oklch, var(--background) 75%, white 25%);
}
.sidebar-outline-empty-title {
font-size: 0.68rem;
font-weight: 650;
color: color-mix(in oklch, var(--foreground) 90%, transparent);
}
.sidebar-outline-empty-copy {
margin-top: 4px;
font-size: 0.63rem;
line-height: 1.3;
color: color-mix(in oklch, var(--sidebar-foreground) 74%, transparent);
}
}
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground;
}
}
.project-sidebar [data-slot="sidebar-input"] {
height: 36px;
min-height: 36px;
padding: 0 12px;
border-radius: 10px;
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
font-size: 0.95rem;
line-height: 1.2;
}
.project-sidebar [data-slot="sidebar-input"]::placeholder {
font-size: 0.95rem;
line-height: 1.2;
}
.sidebar-project-menu[data-slot="dropdown-menu-content"] [data-slot="command-input-wrapper"] {
min-height: 40px;
padding-inline-start: 12px;
padding-inline-end: 12px;
gap: 8px;
align-items: center;
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
}
.sidebar-project-menu[data-slot="dropdown-menu-content"] [data-slot="command-input"] {
height: 36px;
padding-block: 0;
padding-inline: 2px 0;
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
font-size: 0.95rem;
line-height: 1.2;
}
.sidebar-project-menu[data-slot="dropdown-menu-content"] [data-slot="command-item"] {
margin: 2px 6px;
padding: 8px 12px;
border-radius: 8px;
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
font-size: 0.95rem;
line-height: 1.25;
}
.sidebar-project-menu[data-slot="dropdown-menu-content"] [data-slot="command-list"] {
padding: 6px 0;
}
.project-sidebar .sidebar-project-select {
height: 40px;
min-height: 40px;
padding: 0 12px;
border-radius: 11px;
font-family: "Source Sans 3 Variable", "Source Sans 3", -apple-system, system-ui, sans-serif;
font-size: 0.95rem;
font-weight: 650;
line-height: 1.2;
}
.project-sidebar .sidebar-project-select-label {
font-size: 0.95rem;
line-height: 1.2;
}
.project-sidebar .sidebar-mode-toggle {
min-height: 32px;
padding: 3px;
border-radius: 11px;
}
.project-sidebar .sidebar-mode-button {
width: 28px;
height: 28px;
border-radius: 8px;
}