/**
 * Downcity UI SDK 主题样式入口。
 *
 * 关键说明（中文）
 * - 宿主应用需要先加载 `tailwindcss`，再引入本文件。
 * - 本文件只负责提供 Downcity 的设计令牌与基础层，不重复声明业务布局。
 */

@custom-variant dark (&:is(.dark *));

:root {
  --background: rgb(255, 255, 255);
  --foreground: rgb(10, 10, 10);
  --card: rgb(255, 255, 255);
  --card-foreground: rgb(10, 10, 10);
  --popover: rgb(255, 255, 255);
  --popover-foreground: rgb(10, 10, 10);
  --primary: rgb(23, 23, 23);
  --primary-foreground: rgb(250, 250, 250);
  --secondary: rgb(245, 245, 245);
  --secondary-foreground: rgb(23, 23, 23);
  --muted: rgb(245, 245, 245);
  --muted-foreground: rgb(115, 115, 115);
  --accent: rgb(245, 245, 245);
  --accent-foreground: rgb(23, 23, 23);
  --destructive: rgb(231, 0, 11);
  --destructive-foreground: rgb(255, 255, 255);
  --warning: rgb(154, 103, 0);
  --border: rgb(229, 229, 229);
  --input: rgb(229, 229, 229);
  --ring: rgb(161, 161, 161);
  --chart-1: rgb(145, 197, 255);
  --chart-2: rgb(58, 129, 246);
  --chart-3: rgb(37, 99, 239);
  --chart-4: rgb(26, 78, 218);
  --chart-5: rgb(31, 63, 173);
  --radius: 0.625rem;
  --surface-subtle: color-mix(in srgb, var(--foreground) 4%, transparent);
  --surface-emphasis: color-mix(in srgb, var(--foreground) 7%, transparent);
  --interaction-hover: color-mix(in srgb, var(--foreground) 6%, transparent);
  --interaction-active: color-mix(in srgb, var(--foreground) 10%, transparent);
  --interaction-selected: color-mix(in srgb, var(--foreground) 10%, transparent);
  --divider: color-mix(in srgb, var(--foreground) 6%, transparent);
  --border-subtle: color-mix(in srgb, var(--border) 55%, transparent);
  --control-surface: var(--muted);
  --control-hover: color-mix(in srgb, var(--foreground) 10%, transparent);
  --code-background: rgb(246, 248, 250);
  --code-foreground: rgb(36, 41, 46);
  --code-border: rgb(208, 215, 222);
  --code-comment: rgb(106, 115, 125);
  --code-keyword: rgb(215, 58, 73);
  --code-string: rgb(3, 47, 98);
  --code-number: rgb(0, 92, 197);
  --code-function: rgb(111, 66, 193);
  --code-type: rgb(0, 92, 197);
  --sidebar: var(--background);
  --sidebar-foreground: var(--foreground);
  --sidebar-primary: var(--primary);
  --sidebar-primary-foreground: var(--primary-foreground);
  --sidebar-accent: var(--accent);
  --sidebar-accent-foreground: var(--accent-foreground);
  --sidebar-border: var(--border);
  --sidebar-ring: var(--ring);
  --theme-preview-neutral: rgb(82, 82, 82);
  --theme-preview-zinc: rgb(63, 63, 70);
  --theme-preview-slate: rgb(71, 85, 105);
  --theme-preview-stone: rgb(87, 83, 78);
  --theme-preview-blue: rgb(37, 99, 235);
  --control-primary: color-mix(in srgb, var(--foreground) 90%, transparent);
  --control-primary-hover: var(--foreground);
  --control-primary-foreground: var(--background);
  --overlay: color-mix(in srgb, rgb(0, 0, 0) 72%, transparent);
  --floating-surface: var(--popover);
  --floating-foreground: var(--popover-foreground);
  --selection-surface: var(--control-primary);
  --selection-foreground: var(--control-primary-foreground);
  --text-selection-background: color-mix(in srgb, var(--foreground) 14%, transparent);
}

/* ThemeContainer 是组件树唯一的主题事实源。 */
.dc-theme-container {
  --background: rgb(255, 255, 255);
  --foreground: rgb(10, 10, 10);
  --card: rgb(255, 255, 255);
  --card-foreground: rgb(10, 10, 10);
  --popover: rgb(255, 255, 255);
  --popover-foreground: rgb(10, 10, 10);
  --primary: rgb(23, 23, 23);
  --primary-foreground: rgb(250, 250, 250);
  --secondary: rgb(245, 245, 245);
  --secondary-foreground: rgb(23, 23, 23);
  --muted: rgb(245, 245, 245);
  --muted-foreground: rgb(115, 115, 115);
  --accent: rgb(245, 245, 245);
  --accent-foreground: rgb(23, 23, 23);
  --border: rgb(229, 229, 229);
  --input: rgb(229, 229, 229);
  --ring: rgb(161, 161, 161);
  background-color: var(--background);
  color: var(--foreground);
}

.dc-theme-container[data-ui-theme="zinc"] {
  --background: rgb(250, 250, 250);
  --foreground: rgb(39, 39, 42);
  --card: rgb(250, 250, 250);
  --popover: rgb(255, 255, 255);
  --primary: rgb(39, 39, 42);
  --primary-foreground: rgb(250, 250, 250);
  --muted: rgb(244, 244, 245);
  --muted-foreground: rgb(113, 113, 122);
  --border: rgb(228, 228, 231);
  --input: rgb(228, 228, 231);
  --ring: rgb(161, 161, 170);
}

.dc-theme-container[data-ui-theme="slate"] {
  --background: rgb(248, 250, 252);
  --foreground: rgb(15, 23, 42);
  --card: rgb(248, 250, 252);
  --popover: rgb(255, 255, 255);
  --primary: rgb(30, 41, 59);
  --primary-foreground: rgb(248, 250, 252);
  --muted: rgb(241, 245, 249);
  --muted-foreground: rgb(100, 116, 139);
  --border: rgb(226, 232, 240);
  --input: rgb(226, 232, 240);
  --ring: rgb(148, 163, 184);
}

.dc-theme-container[data-ui-theme="stone"] {
  --background: rgb(250, 250, 249);
  --foreground: rgb(41, 37, 36);
  --card: rgb(250, 250, 249);
  --popover: rgb(255, 255, 255);
  --primary: rgb(41, 37, 36);
  --primary-foreground: rgb(250, 250, 249);
  --muted: rgb(245, 245, 244);
  --muted-foreground: rgb(120, 113, 108);
  --border: rgb(231, 229, 228);
  --input: rgb(231, 229, 228);
  --ring: rgb(168, 162, 158);
}

.dc-theme-container[data-ui-theme="blue"] {
  --background: rgb(248, 250, 255);
  --foreground: rgb(23, 37, 84);
  --card: rgb(248, 250, 255);
  --popover: rgb(255, 255, 255);
  --primary: rgb(37, 99, 235);
  --primary-foreground: rgb(255, 255, 255);
  --muted: rgb(239, 246, 255);
  --muted-foreground: rgb(82, 109, 160);
  --border: rgb(219, 234, 254);
  --input: rgb(191, 219, 254);
  --ring: rgb(96, 165, 250);
}

.dc-theme-container[data-ui-mode="dark"] {
  --background: rgb(10, 10, 10);
  --foreground: rgb(229, 229, 229);
  --card: rgb(23, 23, 23);
  --card-foreground: rgb(250, 250, 250);
  --popover: rgb(38, 38, 38);
  --popover-foreground: rgb(250, 250, 250);
  --primary: rgb(229, 229, 229);
  --primary-foreground: rgb(23, 23, 23);
  --secondary: rgb(38, 38, 38);
  --secondary-foreground: rgb(250, 250, 250);
  --muted: rgb(38, 38, 38);
  --muted-foreground: rgb(161, 161, 161);
  --accent: rgb(64, 64, 64);
  --accent-foreground: rgb(250, 250, 250);
  --border: rgb(52, 52, 52);
  --input: rgb(64, 64, 64);
  --ring: rgb(115, 115, 115);
}

/* Chat UI：只提供展示层样式，宿主通过组件属性接入自己的运行时。 */
.dc-chat-panel { display:flex; flex-direction:column; width:100%; height:100%; min-height:0; overflow:hidden; background:var(--background); color:var(--foreground); }
.dc-chat-body { position:relative; display:flex; flex:1; min-width:0; min-height:0; flex-direction:column; overflow:hidden; }
.dc-chat-header { display:flex; align-items:center; gap:.5rem; flex:none; min-height:2.75rem; padding:.375rem .625rem; border-bottom:1px solid var(--border-subtle); }
.dc-chat-header-title { display:flex; align-items:center; gap:.45rem; min-width:0; flex:1; font-size:.8125rem; font-weight:600; }
.dc-chat-header-title span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dc-chat-header-title svg { width:1rem; height:1rem; color:var(--muted-foreground); }
.dc-chat-header-actions { display:flex; align-items:center; gap:.125rem; }
.dc-chat-icon-button, .dc-chat-composer-action, .dc-chat-thread-archive { display:inline-flex; align-items:center; justify-content:center; border:0; border-radius:.45rem; background:transparent; color:var(--muted-foreground); cursor:pointer; transition:background-color 140ms ease, color 140ms ease, transform 140ms ease; }
.dc-chat-icon-button { width:1.9rem; height:1.9rem; }
.dc-chat-icon-button:hover, .dc-chat-thread-archive:hover { background:var(--interaction-hover); color:var(--foreground); }
.dc-chat-icon-button:active, .dc-chat-composer-action:active { transform:scale(.95); }
.dc-chat-icon-button svg, .dc-chat-thread-archive svg { width:1rem; height:1rem; }
.dc-chat-body { position:relative; display:flex; flex:1; min-height:0; flex-direction:column; }
.dc-chat-conversation { flex:1; min-width:0; overflow-x:hidden; overflow-y:auto; padding:.5rem; scrollbar-width:thin; }
.dc-chat-message { display:flex; width:100%; max-width:52.5rem; margin:0 auto; padding:0; animation:dc-chat-message-in 220ms cubic-bezier(.16,1,.3,1); }
.dc-chat-message-body { min-width:0; width:100%; }
.dc-chat-message-content { width:100%; min-width:0; max-width:100%; overflow:hidden; padding:.125rem .25rem 0; color:color-mix(in srgb, var(--foreground) 90%, transparent); font-size:.8125rem; line-height:1.54; white-space:pre-wrap; overflow-wrap:anywhere; }
.dc-chat-message-user { justify-content:flex-end; padding:.5rem 0; }
.dc-chat-message-user .dc-chat-message-body { display:flex; width:100%; max-width:min(80%, 42rem); flex-direction:column; align-items:flex-end; gap:.125rem; margin-left:auto; }
.dc-chat-message-user .dc-chat-message-content { width:fit-content; max-width:100%; margin-left:auto; padding:.5rem .75rem; border-radius:1rem 1rem 0 1rem; background:color-mix(in srgb, var(--muted-foreground) 10%, transparent); color:var(--foreground); font-size:.8125rem; line-height:1.34; }
.dc-chat-message-error .dc-chat-message-content { color:var(--destructive); }
.dc-chat-message-activity { display:flex; min-height:1.5rem; align-items:center; padding-left:.25rem; font-size:.6875rem; line-height:1.25rem; color:color-mix(in srgb, var(--muted-foreground) 75%, transparent); }
.dc-chat-message-user .dc-chat-message-activity { padding:0 .25rem; }
.dc-chat-attachments { display:inline-flex; flex-wrap:wrap; gap:.25rem; margin-left:.25rem; vertical-align:middle; }
.dc-chat-attachment { display:inline-flex; align-items:center; max-width:14rem; height:1.25rem; padding:0 .375rem; border:0; border-radius:.375rem; background:color-mix(in srgb, var(--foreground) 8%, transparent); color:color-mix(in srgb, var(--foreground) 88%, transparent); font-size:.6875rem; font-weight:500; line-height:1rem; }
.dc-chat-markdown :where(p) { margin:.24rem 0; }
.dc-chat-message-user .dc-chat-markdown :where(p) { margin:0; }
.dc-chat-markdown :where(h1, h2, h3, h4) { margin:.9rem 0 .36rem; color:var(--foreground); font-weight:650; line-height:1.3; }
.dc-chat-markdown :where(h1) { font-size:1.25rem; }
.dc-chat-markdown :where(h2) { font-size:1.08rem; }
.dc-chat-markdown :where(h3, h4) { font-size:.95rem; }
.dc-chat-markdown :where(blockquote) { margin:.42rem 0; padding:.16rem 0 .16rem .65rem; border-left:2px solid color-mix(in srgb, var(--foreground) 22%, transparent); color:var(--muted-foreground); }
.dc-chat-markdown :where(code) { padding:.125rem .25rem; border-radius:.25rem; background:color-mix(in srgb, var(--muted) 90%, transparent); font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace); font-size:.78em; white-space:break-spaces; word-break:break-word; }
.dc-chat-markdown :where(ul, ol) { margin:.22rem 0; padding-left:1.1rem; }
.dc-chat-markdown :where(li) { line-height:1.5; }
.dc-chat-part { display:block; min-width:0; }
.dc-chat-reasoning { display:flex; align-items:flex-start; gap:.4rem; min-height:1.5rem; padding:.12rem .25rem; color:color-mix(in srgb, var(--muted-foreground) 72%, transparent); font-size:.75rem; line-height:1.35; }
.dc-chat-thinking-dots { display:grid; flex:none; grid-template-columns:repeat(2, 3px); gap:2px; width:8px; margin-top:.18rem; }
.dc-chat-thinking-dots i { display:block; width:3px; height:3px; border-radius:50%; background:currentColor; animation:dc-chat-thinking-dot .72s ease-in-out infinite; }
.dc-chat-thinking-dots i:nth-child(2) { animation-delay:.6s; }
.dc-chat-thinking-dots i:nth-child(3) { animation-delay:.12s; }
.dc-chat-thinking-dots i:nth-child(4) { animation-delay:.48s; }
.dc-chat-thinking-dots i:nth-child(5) { animation-delay:.24s; }
.dc-chat-thinking-dots i:nth-child(6) { animation-delay:.36s; }
.dc-chat-tool-row { display:flex; flex-direction:column; width:100%; color:color-mix(in srgb, var(--foreground) 62%, transparent); font-size:.75rem; line-height:1.3; }
.dc-chat-tool-row summary { display:block; min-height:1.45rem; padding:.1rem .25rem; cursor:pointer; list-style:none; }
.dc-chat-tool-row summary::-webkit-details-marker { display:none; }
.dc-chat-tool-main { display:flex; align-items:center; gap:.38rem; min-height:1.25rem; }
.dc-chat-tool-icon { display:inline-flex; width:1rem; justify-content:center; color:color-mix(in srgb, var(--foreground) 52%, transparent); font-weight:700; }
.dc-chat-tool-name { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:color-mix(in srgb, var(--foreground) 76%, transparent); }
.dc-chat-tool-chevron { margin-left:auto; font-size:1rem; transition:transform 140ms ease; }
.dc-chat-tool-row[open] .dc-chat-tool-chevron { transform:rotate(90deg); }
.dc-chat-tool-row.is-running .dc-chat-tool-main { animation:dc-chat-tool-pulse 1.4s ease-in-out infinite; }
.dc-chat-tool-row.is-failed .dc-chat-tool-icon { color:var(--destructive); }
.dc-chat-tool-row pre { width:calc(100% - 1.4rem); max-height:10rem; margin:0 0 .25rem 1.4rem; overflow:auto; padding:.45rem .55rem; border-radius:.3rem; background:var(--control-surface); color:color-mix(in srgb, var(--foreground) 82%, transparent); font:inherit; font-size:.7rem; line-height:1.45; white-space:pre-wrap; }
.dc-chat-interaction-row { display:flex; align-items:center; gap:.4rem; min-height:1.5rem; padding:.12rem .25rem; color:var(--muted-foreground); font-size:.75rem; }
.dc-chat-interaction-row span:first-child { display:inline-flex; align-items:center; justify-content:center; width:1rem; height:1rem; border:1px solid currentColor; border-radius:999px; font-size:.65rem; }
.dc-chat-data-part { padding:.2rem .25rem; color:var(--muted-foreground); font-size:.72rem; }
.dc-chat-empty { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:100%; padding:2rem; text-align:center; color:var(--muted-foreground); }
.dc-chat-empty-icon { display:flex; align-items:center; justify-content:center; width:2.75rem; height:2.75rem; margin-bottom:.8rem; border:1px solid var(--border-subtle); border-radius:.8rem; background:var(--surface-subtle); }
.dc-chat-empty-icon svg { width:1.3rem; height:1.3rem; }
.dc-chat-empty h2 { margin:0; color:var(--foreground); font-size:.9rem; font-weight:600; }
.dc-chat-empty p { max-width:20rem; margin:.35rem 0 0; font-size:.78rem; line-height:1.5; }
.dc-chat-scroll-button { position:absolute; right:1rem; bottom:6.2rem; display:flex; align-items:center; justify-content:center; width:1.9rem; height:1.9rem; border:1px solid var(--border); border-radius:999px; background:var(--background); color:var(--muted-foreground); box-shadow:0 2px 10px color-mix(in srgb, var(--foreground) 10%, transparent); cursor:pointer; transition:transform 140ms ease, background-color 140ms ease; }
.dc-chat-scroll-button:hover { background:var(--surface-subtle); transform:translateY(-2px); }
.dc-chat-scroll-button svg { width:1rem; height:1rem; }
.dc-chat-composer-wrap { flex:none; width:calc(100% - 1rem); max-width:52.5rem; margin:.5rem auto; padding:0; }
.dc-chat-composer { display:flex; width:100%; min-height:5rem; flex-direction:column; gap:.35rem; padding:.3rem; border-radius:1rem; background:color-mix(in srgb, var(--muted-foreground) 10%, transparent); transition:background-color 140ms ease; }
.dc-chat-composer:focus-within { background:color-mix(in srgb, var(--muted-foreground) 13%, transparent); }
.dc-chat-composer textarea { width:100%; min-height:3.125rem; max-height:12.5rem; flex:1; resize:none; overflow-y:auto; padding:.25rem .3rem 0; border:0; outline:0; background:transparent; color:var(--foreground); font:inherit; font-size:.8125rem; line-height:1.34; }
.dc-chat-composer textarea::placeholder { color:var(--muted-foreground); opacity:.7; }
.dc-chat-composer-toolbar { display:flex; align-items:center; justify-content:space-between; min-height:1.85rem; }
.dc-chat-composer-tool, .dc-chat-composer-action { display:inline-flex; align-items:center; justify-content:center; border:0; border-radius:999px; cursor:pointer; transition:background-color 140ms ease, color 140ms ease, transform 140ms ease; }
.dc-chat-composer-tool { width:1.85rem; height:1.85rem; background:transparent; color:var(--muted-foreground); }
.dc-chat-composer-tool:hover { background:color-mix(in srgb, var(--foreground) 8%, transparent); color:var(--foreground); }
.dc-chat-composer-action { width:1.85rem; height:1.85rem; background:var(--control-primary); color:var(--control-primary-foreground); }
.dc-chat-composer-action:hover:not(:disabled) { background:var(--control-primary-hover); }
.dc-chat-composer-action:disabled { opacity:.35; cursor:not-allowed; }
.dc-chat-composer-tool svg, .dc-chat-composer-action svg { width:.95rem; height:.95rem; }
.dc-chat-history { display:flex; flex-direction:column; width:100%; min-width:0; }
.dc-chat-history-title { display:flex; align-items:center; gap:.4rem; padding:.7rem .875rem .5rem; font-size:.7rem; font-weight:600; color:var(--muted-foreground); }
.dc-chat-history-title svg { width:.85rem; height:.85rem; }
.dc-chat-history-list { flex:1; overflow-y:auto; padding:.15rem .45rem .75rem; }
.dc-chat-thread { display:flex; align-items:center; gap:.25rem; margin:.125rem 0; border-radius:.55rem; transition:background-color 140ms ease; }
.dc-chat-thread:hover, .dc-chat-thread.is-active { background:var(--surface-subtle); }
.dc-chat-thread-select { display:flex; flex-direction:column; min-width:0; flex:1; padding:.55rem .5rem; border:0; background:transparent; text-align:left; color:var(--foreground); cursor:pointer; }
.dc-chat-thread-title { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.78rem; }
.dc-chat-thread-time { margin-top:.15rem; font-size:.625rem; color:var(--muted-foreground); }
.dc-chat-thread-unread { width:.35rem; height:.35rem; margin-right:.35rem; border-radius:999px; background:var(--primary); }
.dc-chat-thread-archive { width:1.7rem; height:1.7rem; margin-right:.25rem; }
.dc-chat-history-empty, .dc-chat-history-loading { display:flex; align-items:center; justify-content:center; gap:.4rem; padding:2rem .75rem; font-size:.75rem; color:var(--muted-foreground); }
.dc-chat-history-loading svg { width:.85rem; height:.85rem; }
.dc-chat-history-more { display:block; width:100%; padding:.45rem; border:0; background:transparent; color:var(--muted-foreground); font-size:.7rem; cursor:pointer; }
.dc-chat-history-more:hover { color:var(--foreground); }
@keyframes dc-chat-message-in { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:translateY(0); } }
@keyframes dc-chat-thinking-dot { 0%, 100% { opacity:0; } 50% { opacity:1; } }
@keyframes dc-chat-tool-pulse { 0%, 100% { opacity:.45; } 50% { opacity:1; } }
@media (prefers-reduced-motion: reduce) { .dc-chat-message, .dc-chat-icon-button, .dc-chat-composer-action, .dc-chat-scroll-button, .dc-chat-thinking-dots i, .dc-chat-tool-row.is-running .dc-chat-tool-main { animation:none; transition:none; } }

.dc-theme-container[data-ui-theme="zinc"][data-ui-mode="dark"] {
  --background: rgb(24, 24, 27);
  --foreground: rgb(228, 228, 231);
  --card: rgb(39, 39, 42);
  --popover: rgb(39, 39, 42);
  --primary: rgb(244, 244, 245);
  --primary-foreground: rgb(39, 39, 42);
  --muted: rgb(39, 39, 42);
  --muted-foreground: rgb(161, 161, 170);
  --border: rgb(63, 63, 70);
  --input: rgb(63, 63, 70);
  --ring: rgb(113, 113, 122);
}

.dc-theme-container[data-ui-theme="slate"][data-ui-mode="dark"] {
  --background: rgb(15, 23, 42);
  --foreground: rgb(226, 232, 240);
  --card: rgb(30, 41, 59);
  --popover: rgb(30, 41, 59);
  --primary: rgb(226, 232, 240);
  --primary-foreground: rgb(30, 41, 59);
  --muted: rgb(30, 41, 59);
  --muted-foreground: rgb(148, 163, 184);
  --border: rgb(51, 65, 85);
  --input: rgb(51, 65, 85);
  --ring: rgb(100, 116, 139);
}

.dc-theme-container[data-ui-theme="stone"][data-ui-mode="dark"] {
  --background: rgb(28, 25, 23);
  --foreground: rgb(231, 229, 228);
  --card: rgb(41, 37, 36);
  --popover: rgb(41, 37, 36);
  --primary: rgb(231, 229, 228);
  --primary-foreground: rgb(41, 37, 36);
  --muted: rgb(41, 37, 36);
  --muted-foreground: rgb(168, 162, 158);
  --border: rgb(68, 64, 60);
  --input: rgb(68, 64, 60);
  --ring: rgb(120, 113, 108);
}

.dc-theme-container[data-ui-theme="blue"][data-ui-mode="dark"] {
  --background: rgb(15, 23, 42);
  --foreground: rgb(219, 234, 254);
  --card: rgb(23, 37, 84);
  --popover: rgb(30, 58, 138);
  --primary: rgb(147, 197, 253);
  --primary-foreground: rgb(23, 37, 84);
  --muted: rgb(30, 58, 138);
  --muted-foreground: rgb(147, 197, 253);
  --border: rgb(30, 58, 138);
  --input: rgb(30, 64, 175);
  --ring: rgb(96, 165, 250);
}

.dc-theme-container {
  --card-foreground: var(--foreground);
  --popover-foreground: var(--foreground);
  --secondary: var(--muted);
  --secondary-foreground: var(--foreground);
  --accent: var(--muted);
  --accent-foreground: var(--foreground);
  --surface-subtle: color-mix(in srgb, var(--foreground) 4%, transparent);
  --surface-emphasis: color-mix(in srgb, var(--foreground) 7%, transparent);
  --interaction-hover: color-mix(in srgb, var(--foreground) 7%, transparent);
  --interaction-active: color-mix(in srgb, var(--foreground) 11%, transparent);
  --interaction-selected: color-mix(in srgb, var(--foreground) 11%, transparent);
  --divider: color-mix(in srgb, var(--foreground) 9%, transparent);
  --border-subtle: color-mix(in srgb, var(--foreground) 10%, transparent);
  --control-surface: color-mix(in srgb, var(--foreground) 6%, transparent);
  --control-hover: color-mix(in srgb, var(--foreground) 10%, transparent);
  --control-primary: color-mix(in srgb, var(--foreground) 90%, transparent);
  --control-primary-hover: var(--foreground);
  --control-primary-foreground: var(--background);
  --overlay: color-mix(in srgb, rgb(0, 0, 0) 72%, transparent);
  --floating-surface: var(--popover);
  --floating-foreground: var(--popover-foreground);
  --sidebar: var(--background);
  --sidebar-foreground: var(--foreground);
  --sidebar-primary: var(--primary);
  --sidebar-primary-foreground: var(--primary-foreground);
  --sidebar-accent: var(--accent);
  --sidebar-accent-foreground: var(--accent-foreground);
  --sidebar-border: var(--border);
  --sidebar-ring: var(--ring);
}

.dc-theme-container[data-ui-mode="dark"] {
  --surface-subtle: color-mix(in srgb, var(--foreground) 8%, transparent);
  --surface-emphasis: color-mix(in srgb, var(--foreground) 12%, transparent);
  --control-surface: color-mix(in srgb, var(--foreground) 14%, transparent);
  --control-hover: color-mix(in srgb, var(--foreground) 20%, transparent);
  --code-background: rgb(40, 44, 52);
  --code-foreground: rgb(171, 178, 191);
  --code-border: rgb(62, 68, 81);
  --code-comment: rgb(92, 99, 112);
  --code-keyword: rgb(198, 120, 221);
  --code-string: rgb(152, 195, 121);
  --code-number: rgb(209, 154, 102);
  --code-function: rgb(97, 175, 239);
  --code-type: rgb(229, 192, 123);
  --selection-surface: color-mix(in srgb, var(--foreground) 92%, transparent);
  --selection-foreground: var(--background);
  --text-selection-background: color-mix(in srgb, var(--foreground) 18%, transparent);
  --warning: rgb(229, 192, 123);
}

@theme inline {
  --color-surface-subtle: var(--surface-subtle);
  --color-surface-emphasis: var(--surface-emphasis);
  --color-interaction-hover: var(--interaction-hover);
  --color-interaction-active: var(--interaction-active);
  --color-interaction-selected: var(--interaction-selected);
  --color-divider: var(--divider);
  --color-border-subtle: var(--border-subtle);
  --color-control-surface: var(--control-surface);
  --color-control-hover: var(--control-hover);
  --color-control-primary: var(--control-primary);
  --color-control-primary-hover: var(--control-primary-hover);
  --color-control-primary-foreground: var(--control-primary-foreground);
  --color-overlay: var(--overlay);
  --color-floating-surface: var(--floating-surface);
  --color-floating-foreground: var(--floating-foreground);
  --color-selection-surface: var(--selection-surface);
  --color-selection-foreground: var(--selection-foreground);
  --color-code-comment: var(--code-comment);
  --color-code-keyword: var(--code-keyword);
  --color-code-string: var(--code-string);
  --color-code-number: var(--code-number);
  --color-code-background: var(--code-background);
  --color-code-foreground: var(--code-foreground);
  --color-code-border: var(--code-border);
  --color-code-function: var(--code-function);
  --color-code-type: var(--code-type);
  --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-destructive-foreground: var(--destructive-foreground);
  --color-warning: var(--warning);
  --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);
  --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);
  --radius-3xl: calc(var(--radius) * 2.2);
  --radius-4xl: calc(var(--radius) * 2.6);
  --radius-floating-surface: var(--radius-xl);
  --radius-floating-item: var(--radius-lg);
}

/* Chat Panel 与 Duobox renderer 对齐的结构样式。 */
.dc-chat-panel { background: transparent; }
.dc-chat-header { height: 2.5rem; min-height: 2.5rem; padding: 0 .5rem; border-bottom: 0; gap: .5rem; }
.dc-chat-header > button { display: inline-flex; width: 1.5rem; height: 1.5rem; align-items: center; justify-content: center; border: 0; border-radius: .375rem; background: transparent; color: color-mix(in srgb, var(--foreground) 52%, transparent); cursor: pointer; }
.dc-chat-header > button:hover { background: color-mix(in srgb, var(--foreground) 8%, transparent); color: var(--foreground); }
.dc-chat-header > button svg { width: .9rem; height: .9rem; }
.dc-chat-header-title { flex: 0 1 auto; font-size: .75rem; font-weight: 600; }
.dc-chat-header-title small { margin-left: .5rem; color: var(--muted-foreground); font-size: .625rem; font-weight: 400; }
.dc-chat-header-drag { min-width: 0; flex: 1; height: 100%; }
.dc-chat-conversation { position: relative; padding: 0; }
.dc-chat-conversation-content { box-sizing: border-box; width: 100%; max-width: 52.5rem; min-height: 100%; margin: 0 auto; overflow-x: hidden; padding: .5rem; }
.dc-chat-message { max-width: none; padding: .5rem 0; animation: none; }
.dc-chat-message.is-user { align-items: flex-end; justify-content: flex-end; }
.dc-chat-message.is-assistant { flex-direction: row-reverse; justify-content: flex-end; }
.dc-chat-message-content { padding: .125rem .25rem 0; }
.dc-chat-message.is-user .dc-chat-message-content { width: fit-content; max-width: min(80%, 42rem); margin-left: auto; padding: .5rem .75rem; border-radius: 1rem 0 1rem 1rem; background: color-mix(in srgb, var(--muted-foreground) 10%, transparent); font-size: .8125rem; line-height: 1.34; }
.dc-chat-message.is-assistant .dc-chat-message-content { width: 100%; padding: .125rem .25rem 0; color: color-mix(in srgb, var(--foreground) 90%, transparent); font-size: .8125rem; line-height: 1.54; }
.dc-chat-message.is-error .dc-chat-message-content { color: var(--destructive); }
.dc-chat-markdown { white-space: pre-wrap; overflow-wrap: anywhere; }
.dc-chat-markdown p { margin: .24rem 0; }
.dc-chat-message.is-user .dc-chat-markdown p { margin: 0; }
.dc-chat-markdown-h1, .dc-chat-markdown-h2, .dc-chat-markdown-h3 { margin: .72rem 0 .3rem; color: var(--foreground); font-weight: 650; line-height: 1.3; }
.dc-chat-markdown-h1 { font-size: 1.2rem; }
.dc-chat-markdown-h2 { font-size: 1.08rem; }
.dc-chat-markdown-h3 { font-size: .98rem; }
.dc-chat-markdown-li { margin: .12rem 0; padding-left: .2rem; }
.dc-chat-markdown-break { height: .42rem; }
.dc-chat-code-block { margin: .5rem 0; padding: .7rem .8rem; overflow-x: auto; border: 1px solid var(--border); border-radius: .45rem; background: color-mix(in srgb, var(--muted) 55%, transparent); font: .78rem/1.5 var(--font-mono, ui-monospace, monospace); white-space: pre; }
.dc-chat-tool-interaction { display: flex; flex-direction: column; gap: .25rem; margin-bottom: .55rem; padding: .55rem .65rem; border: 1px solid color-mix(in srgb, var(--primary) 30%, var(--border)); border-radius: .45rem; background: color-mix(in srgb, var(--primary) 7%, transparent); }
.dc-chat-part { min-width: 0; }
.dc-chat-activity-list { display: flex; flex-direction: column; gap: .05rem; margin: .1rem 0 .25rem; }
.dc-chat-message-actions { display: flex; height: 1.5rem; align-items: center; gap: .125rem; opacity: 0; pointer-events: none; transition: opacity 140ms ease; }
.dc-chat-message:hover .dc-chat-message-actions, .dc-chat-message-actions:focus-within { opacity: 1; pointer-events: auto; }
.dc-chat-message-actions button { display: inline-flex; width: 1.25rem; height: 1.25rem; align-items: center; justify-content: center; border: 0; border-radius: .375rem; background: transparent; color: color-mix(in srgb, var(--foreground) 45%, transparent); cursor: pointer; }
.dc-chat-message-actions button:hover { background: color-mix(in srgb, var(--foreground) 10%, transparent); color: var(--foreground); }
.dc-chat-message-actions svg { width: .75rem; height: .75rem; }
.dc-chat-thinking-dots { display: grid; grid-template-columns: repeat(2, 3px); gap: 2px; width: 8px; }
.dc-chat-thinking-dots i { width: 3px; height: 3px; border-radius: 999px; background: currentColor; animation: dc-chat-thinking-dot .72s ease-in-out infinite; }
.dc-chat-thinking-dots i:nth-child(2) { animation-delay: .6s; }.dc-chat-thinking-dots i:nth-child(3) { animation-delay: .12s; }.dc-chat-thinking-dots i:nth-child(4) { animation-delay: .48s; }.dc-chat-thinking-dots i:nth-child(5) { animation-delay: .24s; }.dc-chat-thinking-dots i:nth-child(6) { animation-delay: .36s; }
.dc-chat-activity-row { width: 100%; color: color-mix(in srgb, var(--foreground) 62%, transparent); font-size: .8125rem; line-height: 1.3; }
.dc-chat-activity-summary { min-height: 1.45rem; padding: .1rem .25rem; cursor: pointer; list-style: none; }.dc-chat-activity-summary::-webkit-details-marker { display: none; }
.dc-chat-activity-main { display: flex; min-width: 0; min-height: 1.25rem; align-items: center; gap: .2rem; }.dc-chat-activity-main > svg { width: .9rem; height: .9rem; color: color-mix(in srgb, var(--foreground) 52%, transparent); }.dc-chat-activity-state { flex: none; color: color-mix(in srgb, var(--foreground) 58%, transparent); }.dc-chat-activity-name { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: color-mix(in srgb, var(--muted-foreground) 82%, transparent); }.dc-chat-activity-chevron { flex: none; margin-left: auto; transition: transform 140ms ease; }.dc-chat-activity-row[open] .dc-chat-activity-chevron { transform: rotate(90deg); }
.dc-chat-activity-row.is-running .dc-chat-activity-main > * { animation: dc-chat-tool-pulse 1.4s ease-in-out infinite; }.dc-chat-activity-row.is-failed .dc-chat-activity-state { color: var(--destructive); }
.dc-chat-activity-terminal, .dc-chat-reasoning-content { width: calc(100% - 1.4rem); margin-left: 1.4rem; padding: .25rem .45rem; border-radius: .3rem; background: color-mix(in srgb, var(--muted) 24%, transparent); }.dc-chat-activity-terminal pre { margin: 0; overflow: auto; color: color-mix(in srgb, var(--foreground) 78%, transparent); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .7rem; line-height: 1.45; white-space: pre-wrap; }.dc-chat-command-prompt { color: color-mix(in srgb, var(--foreground) 54%, transparent); }.dc-chat-input-caret { display: inline-block; width: 1px; height: 1em; margin-left: 2px; vertical-align: text-bottom; background: var(--primary); animation: dc-chat-caret .9s steps(1,end) infinite; }
.dc-chat-operation { display: flex; min-height: 1.45rem; align-items: center; gap: .35rem; padding: .1rem .25rem; font-size: .8125rem; color: var(--muted-foreground); }.dc-chat-operation svg { width: .85rem; height: .85rem; }
.dc-chat-interaction-card { width: min(100%, 42rem); margin: .35rem 0; border: 1px solid color-mix(in srgb, var(--border) 54%, transparent); border-radius: .75rem; background: color-mix(in srgb, var(--muted) 94%, var(--foreground) 6%); color: var(--foreground); }.dc-chat-interaction-card header, .dc-chat-interaction-card footer { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .55rem .7rem; }.dc-chat-interaction-card header { border-bottom: 1px solid color-mix(in srgb, var(--border) 40%, transparent); font-weight: 600; font-size: .75rem; }.dc-chat-interaction-card header small { color: var(--muted-foreground); font-size: .625rem; font-weight: 400; }.dc-chat-interaction-body { display: flex; flex-direction: column; gap: .55rem; padding: .7rem; font-size: .75rem; }.dc-chat-interaction-card footer { justify-content: flex-end; border-top: 1px solid color-mix(in srgb, var(--border) 40%, transparent); }.dc-chat-interaction-card footer button { min-height: 1.75rem; padding: 0 .6rem; border: 0; border-radius: .5rem; background: color-mix(in srgb, var(--foreground) 8%, transparent); color: var(--foreground); font-size: .6875rem; cursor: pointer; }.dc-chat-interaction-card footer button.is-primary { background: var(--control-primary); color: var(--control-primary-foreground); }.dc-chat-interaction-card footer button:disabled { opacity: .4; cursor: not-allowed; }.dc-chat-question { display: flex; flex-direction: column; gap: .4rem; border: 0; padding: 0; }.dc-chat-question textarea { min-height: 3rem; resize: vertical; border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); border-radius: .45rem; background: transparent; color: inherit; padding: .4rem; font: inherit; }.dc-chat-question label { display: flex; gap: .35rem; align-items: center; }
.dc-chat-changed-files { margin: .35rem 0; border: 1px solid color-mix(in srgb, var(--border) 64%, transparent); border-radius: .55rem; background: color-mix(in srgb, var(--muted) 54%, var(--card) 46%); font-size: .75rem; }.dc-chat-changed-files > summary, .dc-chat-changed-files details > summary { display: flex; min-height: 1.8rem; align-items: center; gap: .45rem; padding: .3rem .55rem; cursor: pointer; list-style: none; }.dc-chat-changed-files summary::-webkit-details-marker, .dc-chat-changed-files details summary::-webkit-details-marker { display: none; }.dc-chat-changed-files summary svg { width: .8rem; height: .8rem; }.dc-chat-changed-files b { margin-left: auto; color: var(--primary); font-weight: 500; }.dc-chat-changed-files em { color: var(--destructive); font-style: normal; }.dc-chat-changed-files > div { padding: 0 .3rem .3rem; }.dc-chat-changed-files details + details { border-top: 1px solid color-mix(in srgb, var(--border) 42%, transparent); }.dc-chat-changed-files details pre { max-height: 12rem; margin: 0 .4rem .4rem; overflow: auto; padding: .4rem; background: color-mix(in srgb, var(--muted-foreground) 10%, transparent); font: .7rem/1.45 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; }
.dc-chat-attachment { display: inline-flex; align-items: center; gap: .25rem; max-width: 14rem; margin: .2rem .25rem 0 0; padding: .2rem .4rem; border-radius: .375rem; background: color-mix(in srgb, var(--foreground) 8%, transparent); font-size: .6875rem; }.dc-chat-attachment svg { width: .8rem; height: .8rem; }.dc-chat-source { color: var(--primary); text-decoration: underline; font-size: .75rem; }.dc-chat-empty { min-height: 50vh; }.dc-chat-empty svg { width: 1.4rem; height: 1.4rem; }
.dc-chat-scroll-button { bottom: 1rem; left: 50%; right: auto; transform: translateX(-50%); }
.dc-chat-history { flex: 1; min-height: 0; overflow: hidden; }.dc-chat-history header { display: flex; align-items: center; justify-content: space-between; padding: .7rem .8rem .4rem; }.dc-chat-history header div { display: flex; align-items: center; gap: .4rem; font-size: .75rem; font-weight: 600; }.dc-chat-history header svg { width: .9rem; height: .9rem; }.dc-chat-history header small { color: var(--muted-foreground); font-size: .625rem; }.dc-chat-history-list { overflow-y: auto; padding: .2rem .4rem .6rem; }.dc-chat-thread { display: flex; align-items: center; min-height: 1.75rem; border-radius: .5rem; }.dc-chat-thread.is-active { background: color-mix(in srgb, var(--primary) 10%, transparent); }.dc-chat-thread > button:first-child { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: .1rem; border: 0; background: transparent; padding: .35rem .5rem; text-align: left; color: var(--foreground); cursor: pointer; }.dc-chat-thread > button span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .75rem; }.dc-chat-thread > button small { color: var(--muted-foreground); font-size: .625rem; }.dc-chat-thread > i { width: .35rem; height: .35rem; margin-right: .3rem; border-radius: 999px; background: var(--primary); }.dc-chat-thread-menu { display: inline-flex; width: 1.5rem; height: 1.5rem; align-items: center; justify-content: center; border: 0; background: transparent; color: var(--muted-foreground); }.dc-chat-thread-menu svg { width: .8rem; height: .8rem; }.dc-chat-history-more { width: 100%; border: 0; background: transparent; color: var(--muted-foreground); padding: .4rem; font-size: .6875rem; }.dc-chat-history-state { display: flex; align-items: center; justify-content: center; gap: .35rem; padding: 2rem; color: var(--muted-foreground); font-size: .75rem; }.dc-chat-history-state svg { width: .85rem; height: .85rem; }
.dc-chat-input-root { width: calc(100% - 1rem); max-width: 52.5rem; flex: none; margin: .5rem auto; padding: .25rem; display: flex; flex-direction: column; gap: .5rem; }.dc-chat-input-shell { width: 100%; min-height: 5rem; max-height: 15rem; overflow: hidden; padding: .3rem; border-radius: 1rem; background: color-mix(in srgb, var(--muted-foreground) 10%, transparent); }.dc-chat-input-editor, .dc-chat-input-editor.ProseMirror, .chat-input-editor, .chat-input-editor.ProseMirror { width: 100%; min-height: 3.125rem; max-height: 12.5rem; overflow-y: auto; padding: .25rem .3rem 0; outline: 0; font-family: var(--font-sans, inherit); font-size: .8125rem; line-height: 1.34; }.dc-chat-input-editor:empty::before, .chat-input-editor.is-editor-empty > p:first-child::before { content: attr(data-placeholder); color: color-mix(in srgb, var(--muted-foreground) 70%, transparent); pointer-events: none; }.dc-chat-input-toolbar { display: flex; align-items: center; justify-content: space-between; min-height: 1.85rem; margin-top: .35rem; }.dc-chat-input-toolbar > div { display: flex; align-items: center; gap: .15rem; }.dc-chat-input-toolbar button { display: inline-flex; min-width: 1.85rem; height: 1.85rem; align-items: center; justify-content: center; border: 0; border-radius: 999px; background: transparent; color: var(--muted-foreground); cursor: pointer; }.dc-chat-input-toolbar button:hover { background: color-mix(in srgb, var(--foreground) 8%, transparent); color: var(--foreground); }.dc-chat-input-toolbar svg { width: .9rem; height: .9rem; stroke-width: 2; }.dc-chat-input-chip { gap: .2rem; padding: 0 .45rem; font-size: .625rem; }.dc-chat-input-chip svg { width: .7rem !important; height: .7rem !important; }.dc-chat-send { background: var(--control-primary) !important; color: var(--control-primary-foreground) !important; }.dc-chat-send:disabled { opacity: .35; cursor: not-allowed; }.dc-chat-queue { max-height: 7rem; overflow-y: auto; margin-bottom: .4rem; border-radius: .65rem; background: color-mix(in srgb, var(--muted) 32%, transparent); }.dc-chat-queue > div { display: flex; align-items: center; gap: .25rem; min-height: 1.75rem; padding: .25rem .5rem; border-bottom: 1px solid color-mix(in srgb, var(--border) 30%, transparent); color: var(--muted-foreground); font-size: .6875rem; }.dc-chat-queue > div:last-child { border-bottom: 0; }.dc-chat-queue span { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.dc-chat-queue svg { width: .75rem; height: .75rem; }.dc-chat-queue button { display: inline-flex; width: 1.2rem; height: 1.2rem; align-items: center; justify-content: center; border: 0; border-radius: .25rem; background: transparent; color: inherit; }.dc-chat-queue button:hover { background: color-mix(in srgb, var(--foreground) 8%, transparent); color: var(--foreground); }
.dc-chat-input-editor p { margin: 0; }
.dc-chat-input-editor ul,
.dc-chat-input-editor ol { margin: .2rem 0; padding-left: 1.35rem; }
.dc-chat-input-editor.is-editor-empty > p:first-child::before,
.dc-chat-input-editor > p.is-empty:first-child::before { content: attr(data-placeholder); color: color-mix(in srgb, var(--muted-foreground) 70%, transparent); opacity: .7; pointer-events: none; float: left; height: 0; }
@keyframes dc-chat-caret { 50% { opacity: 0; } }

/* Shiki 双主题输出在 ThemeContainer 暗色模式下切换为 One Dark Pro。 */
.dc-theme-container[data-ui-mode="dark"] [data-slot="code-block"] .shiki span {
  color: var(--shiki-dark) !important;
  font-style: var(--shiki-dark-font-style) !important;
  font-weight: var(--shiki-dark-font-weight) !important;
  text-decoration: var(--shiki-dark-text-decoration) !important;
}

/* 所有 ThemeContainer 后代统一使用可感知的文字选区颜色。 */
.dc-theme-container ::selection {
  background: var(--text-selection-background);
}

/* 原子操作与状态标签不参与正文文字选择。 */
:where(
  [data-slot="button"],
  [data-slot="button-group"],
  [data-slot="badge"],
  [data-slot="toggle"],
  [data-slot="toggle-group-item"],
  [data-slot="spinner"],
  [data-slot="kbd"],
  [data-slot="kbd-group"],
  [data-slot="input-group-addon"],
  [data-slot="accordion-trigger"],
  [data-slot="alert-dialog-trigger"],
  [data-slot="alert-dialog-close"],
  [data-slot="dialog-trigger"],
  [data-slot="dialog-close"],
  [data-slot="drawer-trigger"],
  [data-slot="drawer-close"],
  [data-slot="sheet-trigger"],
  [data-slot="sheet-close"],
  [data-slot="popover-trigger"],
  [data-slot="hover-card-trigger"],
  [data-slot="tooltip-trigger"],
  [data-slot="dropdown-menu-trigger"],
  [data-slot="context-menu-trigger"],
  [data-slot="select-trigger"],
  [data-slot="tabs-trigger"],
  [data-slot="pagination-link"],
  [data-slot="pagination-ellipsis"],
  [data-slot="checkbox"],
  [data-slot="radio-group-item"],
  [data-slot="switch"],
  [data-slot="dropdown-menu-item"],
  [data-slot="dropdown-menu-checkbox-item"],
  [data-slot="dropdown-menu-radio-item"],
  [data-slot="dropdown-menu-sub-trigger"],
  [data-slot="dropdown-menu-label"],
  [data-slot="dropdown-menu-shortcut"],
  [data-slot="context-menu-item"],
  [data-slot="context-menu-checkbox-item"],
  [data-slot="context-menu-radio-item"],
  [data-slot="context-menu-sub-trigger"],
  [data-slot="context-menu-label"],
  [data-slot="context-menu-shortcut"],
  [data-slot="command-item"],
  [data-slot="command-shortcut"],
  [data-slot="menu-label"],
  [data-slot="tooltip-content"]
) {
  user-select: none;
}

@layer base {
  * {
    @apply border-border outline-ring/50;
  }

  html {
    @apply font-sans;
  }

  body {
    @apply bg-background text-foreground antialiased;
    font-feature-settings: "ss01" 1, "cv01" 1, "cv11" 1;
  }
}

@keyframes downcity-progress-shimmer {
  from { transform: translateX(-160%); }
  to { transform: translateX(320%); }
}
