/* All visual values are owned by this prototype's token layer. */ :root, [data-preview-palette="midnight"] { color-scheme: light; --bg: #edf1f6; --surface: #ffffff; --surface-soft: #f5f7fa; --surface-hover: #eaf0f7; --rail-bg: #f0f3f8; --ink: #172337; --ink-secondary: #495b74; --ink-muted: #61728a; --line: #dce3ed; --line-strong: #c5d0df; --accent: #315acb; --accent-hover: #2548aa; --accent-soft: #eaf0ff; --on-accent: #ffffff; --nav-bg: #18243a; --nav-ink: #f3f6fc; --nav-text: #c4cfdf; --nav-muted: #9aadc8; --nav-line: #30405a; --nav-hover: #24334d; --nav-active: #2c4167; --nav-accent: #b4ccff; --nav-brand: #4269d8; --nav-on-brand: #ffffff; --theme-preview-light: #ffffff; --theme-preview-dark: #212c40; --theme-preview-line: #c4cfdf; --theme-preview-line-dark: #71829d; --success: #207550; --success-soft: #edf7f1; --warning: #91600e; --warning-soft: #fff7e8; --danger: #c33f42; --danger-soft: #fff0f0; --info: #315fa8; --info-soft: #edf3fd; --metric-fill: #5476ca; --blue: #476184; --blue-soft: #edf2fa; --avatar-ink: #46618c; --avatar-bg: #eaf0fa; --avatar-ink-alt: #596780; --avatar-bg-alt: #edf0f5; --neutral: #687385; --neutral-soft: #eff1f5; --overlay: #18223966; --shadow: 0 16px 56px #17243c1f; --motion-fast: 120ms; --motion-page: 160ms; --motion-detail: 200ms; --motion-panel: 240ms; --motion-exit: 160ms; --ease-standard: cubic-bezier(.2, 0, 0, 1); --fs-xs: 11px; --fs-sm: 12px; --fs-caption: 13px; --fs-body: 14px; --fs-input: 16px; --fs-title: 20px; --fs-heading: 28px; --fs-display: 36px; --r-sm: 6px; --r-md: 10px; --r-lg: 16px; --r-round: 999px; --nav-width: 200px; --list-width: 274px; --result-width: 320px; --font: "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif; --mono: "Cascadia Code", "SFMono-Regular", Consolas, monospace; } :root[data-theme="dark"], [data-preview-palette="midnight"][data-preview-theme="dark"] { color-scheme: dark; --bg: #11151c; --surface: #191f29; --surface-soft: #1e2531; --surface-hover: #2a3342; --rail-bg: #141b26; --nav-bg: #0c1320; --nav-hover: #1a2940; --nav-active: #243957; --nav-line: #25324a; --ink: #edf1f8; --ink-secondary: #b8c2d2; --ink-muted: #98a6bc; --line: #2d3747; --line-strong: #414f65; --accent: #93b5ff; --accent-hover: #b0c9ff; --accent-soft: #253451; --on-accent: #14203b; --success: #8ed2ac; --success-soft: #1d352c; --warning: #e8bf77; --warning-soft: #382f22; --danger: #f2a0a5; --danger-soft: #3b272f; --info: #acc9fa; --info-soft: #273a55; --metric-fill: #a8c2ff; --blue: #aac1e4; --blue-soft: #28364b; --avatar-ink: #b7cdf2; --avatar-bg: #2b3b56; --avatar-ink-alt: #bac7db; --avatar-bg-alt: #2d3748; --neutral: #acb7c9; --neutral-soft: #2b3341; --overlay: #070b12a6; --shadow: 0 18px 70px #00000055; } /* Palettes replace the full surface hierarchy; semantic status colors stay fixed. */ :root[data-palette="platinum"], [data-preview-palette="platinum"] { --bg: #f2f3f5; --surface: #ffffff; --surface-soft: #f7f7f8; --surface-hover: #e9eaec; --rail-bg: #eceef0; --ink: #202124; --ink-secondary: #45474b; --ink-muted: #62666d; --line: #dfe1e4; --line-strong: #c4c7cc; --accent: #25272a; --accent-hover: #111214; --accent-soft: #e8e9eb; --on-accent: #ffffff; --nav-bg: #202124; --nav-ink: #f5f5f6; --nav-text: #c6c8cc; --nav-muted: #a9adb4; --nav-line: #393b3f; --nav-hover: #303236; --nav-active: #3b3d41; --nav-accent: #ffffff; --nav-brand: #f5f5f6; --nav-on-brand: #202124; --metric-fill: #6c737d; --blue: #5c6572; --blue-soft: #eceef1; --avatar-ink: #565d67; --avatar-bg: #e9eaec; --avatar-ink-alt: #62666d; --avatar-bg-alt: #eeeff0; --neutral: #656a72; --neutral-soft: #eceef0; --overlay: #11121470; --shadow: 0 16px 56px #2021241f; } :root[data-palette="platinum"][data-theme="dark"], [data-preview-palette="platinum"][data-preview-theme="dark"] { --bg: #18191b; --surface: #222426; --surface-soft: #292b2e; --surface-hover: #383b3f; --rail-bg: #1d1f21; --ink: #f2f3f4; --ink-secondary: #c5c8cc; --ink-muted: #a7abb1; --line: #383b3f; --line-strong: #565a60; --accent: #f1f2f3; --accent-hover: #ffffff; --accent-soft: #373a3e; --on-accent: #202124; --nav-bg: #111214; --nav-ink: #f2f3f4; --nav-text: #c6c8cc; --nav-muted: #a4a8ae; --nav-line: #303236; --nav-hover: #25272a; --nav-active: #34373b; --nav-accent: #f1f2f3; --nav-brand: #f1f2f3; --nav-on-brand: #202124; --metric-fill: #c0c4ca; --blue: #bfc5ce; --blue-soft: #34373b; --avatar-ink: #c9cdd3; --avatar-bg: #373a3e; --avatar-ink-alt: #c5c8cd; --avatar-bg-alt: #393c40; --neutral: #bec2c8; --neutral-soft: #373a3e; --overlay: #08090bb0; --shadow: 0 18px 70px #00000066; } :root[data-palette="ice"], [data-preview-palette="ice"] { --bg: #f6f8fc; --surface: #ffffff; --surface-soft: #f1f4f9; --surface-hover: #e7ecf5; --rail-bg: #edf1f7; --ink: #202a3c; --ink-secondary: #46536b; --ink-muted: #606e86; --line: #dce2ec; --line-strong: #c2ccdc; --accent: #4056c7; --accent-hover: #3045ae; --accent-soft: #e8ecfb; --on-accent: #ffffff; --nav-bg: #e9edf5; --nav-ink: #202a3c; --nav-text: #394761; --nav-muted: #53617a; --nav-line: #d3dae7; --nav-hover: #dce3ef; --nav-active: #d9e1f2; --nav-accent: #4056c7; --nav-brand: #4056c7; --nav-on-brand: #ffffff; --metric-fill: #536ac9; --blue: #4056a3; --blue-soft: #e9eefb; --avatar-ink: #475b9a; --avatar-bg: #e6ebf7; --avatar-ink-alt: #55647f; --avatar-bg-alt: #e9edf3; --neutral: #626e83; --neutral-soft: #e9edf3; --overlay: #18243b66; --shadow: 0 16px 56px #27354d1c; } :root[data-palette="ice"][data-theme="dark"], [data-preview-palette="ice"][data-preview-theme="dark"] { --bg: #171b24; --surface: #202632; --surface-soft: #272f3d; --surface-hover: #343f51; --rail-bg: #1b222e; --ink: #f0f3fa; --ink-secondary: #bec8d9; --ink-muted: #a1aec3; --line: #343e4f; --line-strong: #515f76; --accent: #b4c2ff; --accent-hover: #cbd4ff; --accent-soft: #303957; --on-accent: #1d2546; --nav-bg: #111722; --nav-ink: #f0f3fa; --nav-text: #c7d0e0; --nav-muted: #a6b3c9; --nav-line: #2b3546; --nav-hover: #212b3c; --nav-active: #2c3954; --nav-accent: #b4c2ff; --nav-brand: #b4c2ff; --nav-on-brand: #1d2546; --metric-fill: #acbcff; --blue: #b6c7fa; --blue-soft: #2b354c; --avatar-ink: #becbfa; --avatar-bg: #2d3854; --avatar-ink-alt: #c1cce0; --avatar-bg-alt: #303a4c; --neutral: #bdc7d8; --neutral-soft: #303947; --overlay: #080c14b0; --shadow: 0 18px 70px #00000066; } :root[data-palette="clay"], [data-preview-palette="clay"] { --bg: #f3f0eb; --surface: #fffdfa; --surface-soft: #f7f3ee; --surface-hover: #ede7df; --rail-bg: #eee9e2; --ink: #2a2623; --ink-secondary: #514943; --ink-muted: #70665f; --line: #e2dbd3; --line-strong: #cfc4b9; --accent: #af482b; --accent-hover: #92391f; --accent-soft: #f6e8e1; --on-accent: #ffffff; --nav-bg: #302c29; --nav-ink: #f7f3ef; --nav-text: #d5cbc3; --nav-muted: #b9ada4; --nav-line: #49413c; --nav-hover: #403a35; --nav-active: #50453d; --nav-accent: #f1ad8e; --nav-brand: #f1ad8e; --nav-on-brand: #30211b; --metric-fill: #ad674d; --blue: #665b55; --blue-soft: #eee9e4; --avatar-ink: #795643; --avatar-bg: #f0e7df; --avatar-ink-alt: #6d5d52; --avatar-bg-alt: #eee9e4; --neutral: #70665f; --neutral-soft: #eee9e4; --overlay: #211b1770; --shadow: 0 16px 56px #38281e1c; } :root[data-palette="clay"][data-theme="dark"], [data-preview-palette="clay"][data-preview-theme="dark"] { --bg: #1d1a18; --surface: #292522; --surface-soft: #322d29; --surface-hover: #433a34; --rail-bg: #221f1c; --ink: #f3eee9; --ink-secondary: #d0c5bc; --ink-muted: #b2a69c; --line: #403832; --line-strong: #5d5047; --accent: #f0a184; --accent-hover: #ffb89c; --accent-soft: #49342c; --on-accent: #3b2119; --nav-bg: #171513; --nav-ink: #f3eee9; --nav-text: #d2c7be; --nav-muted: #afa197; --nav-line: #38302b; --nav-hover: #2b2521; --nav-active: #3c3029; --nav-accent: #f0a184; --nav-brand: #f0a184; --nav-on-brand: #3b2119; --metric-fill: #e09a7c; --blue: #d3b49e; --blue-soft: #3c332d; --avatar-ink: #e3b99c; --avatar-bg: #40332c; --avatar-ink-alt: #d7c2b2; --avatar-bg-alt: #3a332e; --neutral: #cec0b5; --neutral-soft: #39332e; --overlay: #0d0a08b0; --shadow: 0 18px 70px #00000066; } :root[data-palette="slate"], [data-preview-palette="slate"] { --bg: #f1f0f5; --surface: #ffffff; --surface-soft: #f6f5f9; --surface-hover: #eae8f0; --rail-bg: #eceaf1; --ink: #282633; --ink-secondary: #4c4a5d; --ink-muted: #666476; --line: #dfdde7; --line-strong: #c7c3d2; --accent: #6952a3; --accent-hover: #55418b; --accent-soft: #efebf8; --on-accent: #ffffff; --nav-bg: #282735; --nav-ink: #f4f2fa; --nav-text: #d1cde0; --nav-muted: #b2adc6; --nav-line: #403e50; --nav-hover: #373546; --nav-active: #48445d; --nav-accent: #c9baf1; --nav-brand: #c9baf1; --nav-on-brand: #302844; --metric-fill: #7a66ad; --blue: #5e5b76; --blue-soft: #eeedf3; --avatar-ink: #655a91; --avatar-bg: #eeebf5; --avatar-ink-alt: #666174; --avatar-bg-alt: #efedf2; --neutral: #686678; --neutral-soft: #edecf1; --overlay: #201d2b70; --shadow: 0 16px 56px #2826331c; } :root[data-palette="slate"][data-theme="dark"], [data-preview-palette="slate"][data-preview-theme="dark"] { --bg: #1b1a22; --surface: #26242f; --surface-soft: #302d3b; --surface-hover: #413d50; --rail-bg: #211f29; --ink: #f2f0f8; --ink-secondary: #c9c5d7; --ink-muted: #aaa6bc; --line: #3d394a; --line-strong: #5a556d; --accent: #c9baf1; --accent-hover: #dacff7; --accent-soft: #3c354f; --on-accent: #302844; --nav-bg: #17161e; --nav-ink: #f2f0f8; --nav-text: #d0cce0; --nav-muted: #aaa5bf; --nav-line: #343141; --nav-hover: #282634; --nav-active: #383447; --nav-accent: #c9baf1; --nav-brand: #c9baf1; --nav-on-brand: #302844; --metric-fill: #c1b1ee; --blue: #c3badf; --blue-soft: #373343; --avatar-ink: #c9bdf0; --avatar-bg: #373249; --avatar-ink-alt: #c9c2da; --avatar-bg-alt: #393644; --neutral: #c4bfd2; --neutral-soft: #383543; --overlay: #0c0b10b0; --shadow: 0 18px 70px #00000066; } * { box-sizing: border-box; } html, body { margin: 0; height: 100%; } body { background: var(--bg); color: var(--ink); font: var(--fs-body)/1.6 var(--font); -webkit-font-smoothing: antialiased; } button, input, textarea, select { font: inherit; } button, a, input, textarea, select { -webkit-tap-highlight-color: transparent; } button { cursor: pointer; color: inherit; border: 0; background: none; } button:disabled { opacity: .5; cursor: not-allowed; } a { color: var(--accent); text-decoration: none; } button, a, select { touch-action: manipulation; } button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; } h1, h2, h3, h4, p { margin: 0; } h1 { font-size: var(--fs-heading); font-weight: 600; letter-spacing: -.7px; line-height: 1.35; } h2 { font-size: var(--fs-title); font-weight: 600; letter-spacing: -.3px; } h3 { font-size: var(--fs-input); font-weight: 600; } small { font-size: var(--fs-sm); } svg.icon { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; } .icon-sm svg.icon { width: 16px; height: 16px; } .muted { color: var(--ink-muted); } .secondary { color: var(--ink-secondary); } .mono { font-family: var(--mono); font-size: var(--fs-sm); } .eyebrow { font: 500 var(--fs-xs)/1.5 var(--mono); letter-spacing: 1.6px; color: var(--ink-muted); text-transform: uppercase; } .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .grow { flex: 1; min-width: 0; } .row { display: flex; align-items: center; gap: 12px; } .spread { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .stack { display: grid; gap: 16px; } .divider { border-top: 1px solid var(--line); margin: 24px 0; } .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 44px; min-height: 44px; padding: 0 16px; border-radius: var(--r-sm); font-size: var(--fs-caption); font-weight: 500; white-space: nowrap; transition: background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard); } .btn:hover { background: var(--surface-hover); } .btn-primary { background: var(--accent); color: var(--on-accent); } .btn-primary:hover { background: var(--accent-hover); } .btn-outline { border: 1px solid var(--line-strong); background: var(--surface); } .btn-soft { color: var(--accent); background: var(--accent-soft); } .btn-danger { color: var(--danger); background: var(--danger-soft); } .icon-btn { min-width: 44px; min-height: 44px; display: inline-grid; place-items: center; border-radius: var(--r-sm); flex-shrink: 0; } .icon-btn:hover { background: var(--surface-hover); } .text-link { color: var(--accent); min-height: 44px; display: inline-flex; align-items: center; gap: 6px; padding: 0 5px; font-size: var(--fs-caption); } .badge { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-xs); line-height: 22px; padding: 0 7px; border-radius: var(--r-sm); background: var(--surface-hover); color: var(--ink-secondary); white-space: nowrap; } .badge.accent { background: var(--info-soft); color: var(--info); } .badge.success { background: var(--success-soft); color: var(--success); } .badge.warning { background: var(--warning-soft); color: var(--warning); } .badge.danger { background: var(--danger-soft); color: var(--danger); } .dot { display: inline-block; height: 6px; width: 6px; background: currentColor; border-radius: var(--r-round); flex-shrink: 0; } .avatar { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: var(--r-md); font-size: var(--fs-title); font-family: "Microsoft YaHei", serif; color: var(--avatar-ink); background: var(--avatar-bg); flex: 0 0 auto; font-weight: 500; } .avatar.sand, .avatar.rose { color: var(--avatar-ink-alt); background: var(--avatar-bg-alt); } .avatar.blue { color: var(--avatar-ink); background: var(--avatar-bg); } .avatar.neutral { color: var(--neutral); background: var(--neutral-soft); } .avatar.person { font: 600 var(--fs-caption)/1 var(--font); border-radius: var(--r-round); background: var(--surface-hover); color: var(--ink-secondary); } .avatar.small { width: 30px; height: 30px; font-size: var(--fs-body); border-radius: var(--r-sm); } .avatar.large { width: 64px; height: 64px; font-size: var(--fs-heading); border-radius: var(--r-lg); } .avatar-stack { display: flex; padding-left: 0; } .avatar-stack .avatar { border: 2px solid var(--surface); margin-left: -6px; } .avatar-stack .avatar:first-child { margin-left: 0; } .demo-strip { height: 44px; background: var(--bg); color: var(--ink-secondary); display: flex; justify-content: center; align-items: center; gap: 12px; font-size: var(--fs-xs); border-bottom: 1px solid var(--line); } .demo-strip .demo-label { display: flex; gap: 6px; align-items: center; } .demo-strip button { font-size: var(--fs-xs); text-decoration: underline; text-underline-offset: 3px; } .demo-strip .strip-control { min-height: 44px; padding: 0 12px; } .app-shell { height: calc(100dvh - 44px); display: grid; grid-template-columns: var(--nav-width) minmax(0, 1fr); overflow: hidden; } .sidebar { --ink: var(--nav-ink); --ink-secondary: var(--nav-text); --ink-muted: var(--nav-muted); --line: var(--nav-line); --surface-hover: var(--nav-hover); --accent: var(--nav-accent); --accent-soft: var(--nav-active); --on-accent: var(--nav-bg); background: var(--nav-bg); color: var(--nav-ink); padding: 28px 16px 16px; display: flex; flex-direction: column; border-right: 1px solid var(--nav-line); overflow-y: auto; } .sidebar .brand-mark { background: var(--nav-brand); color: var(--nav-on-brand); } .sidebar .nav-link.active { color: var(--nav-ink); box-shadow: inset 3px 0 0 var(--nav-accent); } .sidebar .nav-count { background: var(--nav-accent); color: var(--nav-bg); } .sidebar .profile-button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .brand { display: flex; gap: 10px; align-items: center; padding: 0 12px; } .brand-mark { background: var(--accent); color: var(--on-accent); display: inline-flex; width: 32px; height: 32px; align-items: center; justify-content: center; border-radius: var(--r-md); } .brand-mark svg { width: 22px; height: 22px; } .brand-word { font-size: var(--fs-title); font-weight: 650; letter-spacing: -.8px; } .workspace-label { padding: 25px 12px 14px; font-size: var(--fs-xs); color: var(--ink-muted); display: flex; align-items: center; gap: 7px; } .nav-items { display: grid; gap: 6px; } .nav-link { display: flex; align-items: center; min-height: 46px; gap: 12px; padding: 0 12px; color: var(--ink-secondary); border-radius: var(--r-sm); font-size: var(--fs-caption); transition: background .15s; } .nav-link:hover { background: var(--surface-hover); } .nav-link.active { background: var(--accent-soft); color: var(--accent); font-weight: 600; } .nav-count { margin-left: auto; min-width: 20px; text-align: center; font-size: var(--fs-xs); background: var(--accent); color: var(--on-accent); border-radius: var(--r-sm); } .nav-section-label { padding: 24px 12px 10px; color: var(--ink-muted); font-size: var(--fs-xs); } .nav-project { display: flex; align-items: center; gap: 8px; color: var(--ink-secondary); font-size: var(--fs-sm); text-align: left; min-height: 44px; padding: 0 12px; border-radius: var(--r-sm); } .nav-project:hover { background: var(--surface-hover); } .project-dot { width: 7px; height: 7px; border: 1.5px solid var(--ink-muted); border-radius: var(--r-sm); flex-shrink: 0; } .sidebar-bottom { margin-top: auto; } .sidebar-help { border-bottom: 1px solid var(--line); padding: 14px 10px; color: var(--ink-muted); font-size: var(--fs-xs); } .profile-button { width: 100%; display: flex; align-items: center; gap: 9px; min-height: 66px; text-align: left; } .profile-button strong { font-size: var(--fs-caption); font-weight: 500; } .profile-button small { display: block; color: var(--ink-muted); font-size: var(--fs-xs); } .workspace { min-width: 0; min-height: 0; background: var(--bg); overflow: auto; position: relative; scrollbar-gutter: stable; } .workspace:has(> .conversation-layout) { overflow: hidden; scrollbar-gutter: auto; } .page { padding: 30px 32px 36px; width: calc(100% - 48px); min-height: calc(100% - 48px); max-width: 1440px; margin: 24px auto; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); } .page-heading { display: flex; justify-content: space-between; align-items: center; gap: 24px; margin-bottom: 26px; padding-bottom: 24px; border-bottom: 1px solid var(--line); } .page-heading p { color: var(--ink-muted); margin-top: 6px; font-size: var(--fs-caption); } .breadcrumbs { display: flex; gap: 8px; color: var(--ink-muted); align-items: center; margin-bottom: 20px; font-size: var(--fs-sm); } .breadcrumbs button { min-height: 44px; color: var(--ink-secondary); } .section-heading { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; gap: 12px; } .section-heading h2 { font-size: var(--fs-input); } .section-count { font-family: var(--mono); font-size: var(--fs-sm); margin-left: 8px; color: var(--ink-muted); } .input-wrap { display: flex; gap: 8px; align-items: center; background: var(--surface-soft); border: 1px solid var(--line); border-radius: var(--r-sm); min-height: 44px; padding: 0 12px; color: var(--ink-muted); } .input-wrap input { width: 100%; min-width: 0; background: none; border: none; color: var(--ink); min-height: 42px; font-size: var(--fs-caption); } .input-wrap:focus-within { border-color: var(--accent); } .input-wrap input:focus { outline: none; } input::placeholder, textarea::placeholder { color: var(--ink-muted); } .toolbar { display: flex; align-items: center; gap: 16px; justify-content: space-between; padding-bottom: 20px; } .toolbar > .tabs { min-width: 0; max-width: 100%; } .toolbar > .input-wrap { width: 240px; max-width: 100%; flex-shrink: 0; } .tabs { display: flex; align-items: center; gap: 5px; overflow-x: auto; scrollbar-width: none; } .tab { min-height: 44px; padding: 0 14px; white-space: nowrap; border-radius: var(--r-sm); color: var(--ink-secondary); font-size: var(--fs-caption); } .tab:hover { background: var(--surface-hover); } .tab.active { background: var(--accent-soft); color: var(--accent); font-weight: 600; } .tab .count { margin-left: 5px; font: var(--fs-xs) var(--mono); opacity: .8; } .segmented { display: inline-flex; border: 1px solid var(--line); border-radius: var(--r-sm); padding: 3px; background: var(--surface-soft); } .segmented .tab { min-height: 44px; } .segmented .tab.active { background: var(--surface); box-shadow: 0 1px 3px var(--line); color: var(--ink); } .conversation-layout { height: 100%; display: grid; grid-template-columns: var(--list-width) minmax(0, 1fr) var(--result-width); } .conversation-list { background: var(--surface-soft); border-right: 1px solid var(--line-strong); display: flex; flex-direction: column; min-width: 0; overflow: hidden; } .list-title { display: flex; align-items: center; justify-content: space-between; padding: 23px 22px 17px; min-height: 83px; } .list-title h1 { font-size: var(--fs-title); } .list-search { padding: 0 18px 14px; } .list-filter { display: flex; padding: 0 18px 12px; gap: 8px; border-bottom: 1px solid var(--line); } .list-filter .tab { padding: 0 12px; } .chat-list-scroll { overflow: auto; flex: 1; padding: 8px; } .chat-row { width: 100%; display: flex; gap: 12px; padding: 17px 12px; border-radius: var(--r-md); text-align: left; min-height: 92px; } .chat-row.active { background: var(--accent-soft); box-shadow: inset 3px 0 0 var(--accent); } .chat-row:hover:not(.active) { background: var(--surface-soft); } .chat-row .avatar { width: 40px; height: 40px; } .chat-row-title { display: flex; justify-content: space-between; gap: 6px; align-items: baseline; } .chat-row-title strong { font-size: var(--fs-body); font-weight: 600; } .chat-row-title time { font-size: var(--fs-xs); color: var(--ink-muted); } .chat-row .preview { color: var(--ink-secondary); font-size: var(--fs-sm); margin-top: 4px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.65; } .unread { background: var(--accent); color: var(--on-accent); min-width: 17px; height: 17px; line-height: 17px; text-align: center; border-radius: var(--r-round); font-size: var(--fs-xs); } .list-foot { padding: 15px 22px; border-top: 1px solid var(--line); font-size: var(--fs-xs); color: var(--ink-muted); display: flex; gap: 8px; align-items: center; } .chat-main { display: flex; flex-direction: column; min-width: 0; min-height: 0; background: var(--surface); } .chat-header { min-height: 84px; display: flex; align-items: center; padding: 16px 28px; gap: 12px; border-bottom: 1px solid var(--line-strong); } .chat-header h2 { font-size: var(--fs-title); } .chat-header .agent-description { font-size: var(--fs-sm); color: var(--ink-muted); margin-top: 2px; } .chat-header .avatar { width: 38px; height: 38px; } .chat-header-tools { display: flex; margin-left: auto; gap: 4px; } .chat-context { margin: 18px 28px 0; padding: 9px 12px; display: flex; align-items: center; gap: 9px; border-radius: var(--r-sm); color: var(--ink-secondary); background: var(--surface-soft); border: 1px solid var(--line); font-size: var(--fs-sm); } .chat-context button { padding: 0 5px; min-height: 44px; color: var(--accent); } .messages { overflow-y: auto; min-height: 0; flex: 1; padding: 22px 28px 28px; scroll-behavior: auto; } .date-divider { text-align: center; font-size: var(--fs-xs); color: var(--ink-muted); margin: 2px 0 26px; } .message { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 24px; } .message .avatar { width: 28px; height: 28px; font-size: var(--fs-caption); margin-top: 3px; border-radius: var(--r-sm); } .message-body { max-width: min(88%, 680px); min-width: 0; } .message-meta { display: flex; gap: 9px; align-items: center; font-size: var(--fs-xs); color: var(--ink-muted); margin-bottom: 7px; } .message-meta strong { font-size: var(--fs-sm); color: var(--ink-secondary); font-weight: 500; } .bubble { color: var(--ink); line-height: 1.85; white-space: pre-wrap; overflow-wrap: anywhere; } .message.me { flex-direction: row-reverse; } .message.me .message-meta { justify-content: flex-end; } .message.me .bubble { background: var(--accent-soft); padding: 12px 16px; border-radius: var(--r-md) var(--r-sm) var(--r-md) var(--r-md); } .message.me .message-body { max-width: 82%; } .message-file { margin-top: 14px; background: var(--surface); border: 1px solid var(--line-strong); padding: 14px; width: 100%; max-width: 360px; display: flex; align-items: center; gap: 12px; text-align: left; border-radius: var(--r-md); } .message-file:hover { border-color: var(--accent); } .message-file strong { display: block; font-size: var(--fs-caption); font-weight: 600; white-space: normal; } .message-file small { color: var(--ink-muted); font-size: var(--fs-xs); } .file-icon { width: 38px; height: 44px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px solid var(--line-strong); color: var(--accent); border-radius: var(--r-sm); flex-shrink: 0; background: var(--surface); } .file-icon span { font: 600 var(--fs-xs)/1.5 var(--mono); letter-spacing: .4px; } .file-icon svg { width: 18px; height: 18px; } .file-icon.csv { color: var(--blue); } .message-task { text-align: left; margin-top: 12px; min-height: 44px; color: var(--warning); display: flex; align-items: center; gap: 8px; } .send-error { color: var(--danger); font-size: var(--fs-sm); display: flex; align-items: center; justify-content: flex-end; gap: 6px; } .send-error button { min-height: 44px; text-decoration: underline; } .composer-area { padding: 0 24px 16px; background: var(--surface); } .composer { border: 1px solid var(--line-strong); border-radius: var(--r-md); padding: 12px 12px 8px; transition: border-color .15s; } .composer:focus-within { border-color: var(--accent); } .composer textarea { resize: none; width: 100%; min-height: 48px; max-height: 160px; padding: 2px 5px; background: none; border: none; color: var(--ink); line-height: 1.7; font-size: var(--fs-body); display: block; } .composer textarea:focus { outline: none; } .composer-actions { display: flex; align-items: center; justify-content: space-between; } .composer-actions .hint { font-size: var(--fs-xs); color: var(--ink-muted); margin-left: auto; margin-right: 12px; } .send-btn { min-width: 44px; padding: 0 13px; } .composer-note { font-size: var(--fs-xs); color: var(--ink-muted); text-align: center; margin-top: 8px; } .connection-notice { padding: 10px 20px; color: var(--warning); background: var(--warning-soft); font-size: var(--fs-sm); display: flex; align-items: center; gap: 9px; } .connection-notice button { min-height: 44px; margin-left: auto; text-decoration: underline; } .result-rail { background: var(--rail-bg); border-left: 1px solid var(--line-strong); min-width: 0; overflow: auto; } .rail-header { padding: 24px; min-height: 84px; border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 8px; } .rail-header h2 { font-size: var(--fs-body); } .rail-section { padding: 22px 22px 0; } .rail-project { padding: 17px 0 22px; border-bottom: 1px solid var(--line); } .rail-project strong { display: block; font-size: var(--fs-body); font-weight: 600; margin: 8px 0 4px; } .rail-project p { font-size: var(--fs-sm); color: var(--ink-muted); line-height: 1.8; } .rail-file { width: 100%; text-align: left; background: var(--surface); border: 1px solid var(--line-strong); border-radius: var(--r-md); padding: 17px 15px; margin: 12px 0 0; transition: border-color var(--motion-fast), background-color var(--motion-fast); } .rail-file:hover { border-color: var(--line-strong); background: var(--surface-soft); } .rail-file strong { font-size: var(--fs-caption); font-weight: 600; display: block; margin: 12px 0 4px; } .rail-file p { font-size: var(--fs-xs); color: var(--ink-muted); margin-bottom: 14px; } .rail-file .spread { font-size: var(--fs-xs); color: var(--ink-muted); } .rail-file .file-icon { width: 32px; height: 38px; } .rail-foot { padding: 22px; color: var(--ink-muted); font-size: var(--fs-xs); line-height: 1.8; } .rail-toggle { display: none; } .banner { display: flex; align-items: center; gap: 12px; padding: 16px 20px; border-radius: var(--r-md); background: var(--warning-soft); color: var(--warning); margin-bottom: 28px; } .banner p { font-size: var(--fs-sm); opacity: .9; margin-top: 3px; } .banner .btn { margin-left: auto; color: inherit; } .overview-stats { display: grid; grid-template-columns: repeat(4, 1fr); padding: 8px 0 28px; margin-bottom: 28px; border-bottom: 1px solid var(--line); } .overview-stat { border-right: 1px solid var(--line); padding-left: 28px; } .overview-stat:first-child { padding-left: 0; } .overview-stat:last-child { border: none; } .overview-stat span { color: var(--ink-muted); font-size: var(--fs-sm); } .overview-stat strong { display: block; font: 500 var(--fs-heading)/1.5 var(--font); margin-top: 4px; letter-spacing: -.5px; } .overview-stat strong small { font-size: var(--fs-sm); margin-left: 6px; color: var(--ink-muted); font-weight: 400; } .agent-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; } .agent-card { border: 1px solid var(--line); border-radius: var(--r-md); padding: 22px; background: var(--surface); } .agent-card .agent-name { min-height: 44px; text-align: left; } .agent-card .agent-name strong { display: block; } .agent-card .agent-name small { color: var(--ink-muted); font-size: var(--fs-xs); } .agent-task { margin: 20px 0; padding: 12px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: var(--fs-caption); } .agent-task .eyebrow { margin-bottom: 7px; font-size: var(--fs-xs); } .metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .metric .spread { font-size: var(--fs-xs); color: var(--ink-muted); margin-bottom: 6px; } .metric .spread strong { color: var(--ink-secondary); font-family: var(--mono); font-size: var(--fs-xs); font-weight: 500; } .bar { height: 4px; background: var(--surface-hover); overflow: hidden; border-radius: var(--r-round); } .bar > span { display: block; height: 100%; width: var(--value); background: var(--metric-fill); border-radius: var(--r-round); } .metric-footer { display: flex; justify-content: space-between; gap: 8px; margin-top: 17px; color: var(--ink-muted); font-size: var(--fs-xs); align-items: center; } .metric-footer .text-link { font: var(--fs-sm) var(--mono); } .agent-card-footer { display: flex; justify-content: space-between; border-top: 1px solid var(--line); margin-top: 12px; padding-top: 10px; gap: 8px; } .agent-card-footer .btn { padding: 0 10px; } .view-switch { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin-bottom: 26px; } .view-switch .tab { border-radius: 0; border-bottom: 2px solid transparent; min-height: 52px; } .view-switch .tab.active { color: var(--accent); border-bottom-color: var(--accent); background: none; } .contact-group { padding: 18px 0 8px; color: var(--ink-muted); font-size: var(--fs-xs); } .contact-row { width: 100%; display: flex; align-items: center; gap: 14px; min-height: 82px; text-align: left; border-bottom: 1px solid var(--line); padding: 14px 12px; } .contact-row:hover { background: var(--surface-soft); } .contact-row .specialty { color: var(--ink-muted); font-size: var(--fs-sm); margin-top: 2px; } .contact-row .contact-owner { font-size: var(--fs-sm); color: var(--ink-muted); margin-right: 36px; } .contact-child { padding-left: 60px; } .content-narrow { max-width: 980px; } .split-workspace { display: grid; grid-template-columns: 310px minmax(0, 1fr); gap: 0; border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; min-height: 580px; } .split-list { padding: 10px; border-right: 1px solid var(--line); background: var(--surface-soft); } .project-row { width: 100%; padding: 18px 16px; text-align: left; border-radius: var(--r-sm); margin-bottom: 6px; border: 1px solid transparent; } .project-row.active { background: var(--surface); border-color: var(--line); } .project-row:hover { background: var(--surface); } .project-row h3 { margin: 8px 0; font-size: var(--fs-body); } .project-row p { font-size: var(--fs-sm); color: var(--ink-muted); line-height: 1.8; } .project-row .spread { margin-top: 18px; font-size: var(--fs-xs); color: var(--ink-muted); } .project-detail { padding: 32px; min-width: 0; } .project-detail h2 { font-size: var(--fs-heading); margin: 12px 0; } .project-detail > p { color: var(--ink-secondary); font-size: var(--fs-caption); line-height: 1.9; } .detail-facts { display: grid; grid-template-columns: repeat(3, 1fr); margin: 28px 0; gap: 20px; } .detail-facts dt { font-size: var(--fs-xs); color: var(--ink-muted); margin-bottom: 5px; } .detail-facts dd { margin: 0; font-size: var(--fs-caption); overflow-wrap: anywhere; } .inline-agent { min-height: 48px; display: flex; align-items: center; gap: 8px; padding: 0 9px; border: 1px solid var(--line); border-radius: var(--r-sm); } .inline-agents { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0 28px; } .artifact-row { display: flex; align-items: center; gap: 14px; padding: 17px 0; width: 100%; border-bottom: 1px solid var(--line); text-align: left; } .artifact-row:hover { background: var(--surface-soft); } .artifact-row strong { display: block; font-size: var(--fs-caption); font-weight: 500; } .artifact-row p { color: var(--ink-muted); font-size: var(--fs-xs); margin-top: 3px; } .artifact-row .artifact-time { font-size: var(--fs-xs); color: var(--ink-muted); } .task-toolbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; } select { min-height: 44px; padding: 0 35px 0 12px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); color: var(--ink); background: var(--surface); max-width: 100%; } .task-layout { display: grid; grid-template-columns: minmax(290px, .92fr) minmax(0, 1.3fr); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; min-height: 600px; } .task-list { border-right: 1px solid var(--line); background: var(--surface-soft); padding: 8px; } .task-list-head { display: flex; justify-content: space-between; color: var(--ink-muted); font-size: var(--fs-xs); padding: 10px 12px 14px; } .task-row { width: 100%; padding: 18px 14px; text-align: left; border-radius: var(--r-sm); margin-bottom: 6px; border: 1px solid transparent; } .task-row.active { border-color: var(--line); background: var(--surface); } .task-row:hover { background: var(--surface); } .task-row h3 { font-size: var(--fs-caption); margin: 10px 0 8px; } .task-row .task-meta { display: flex; gap: 12px; color: var(--ink-muted); font-size: var(--fs-xs); } .task-row .blocked-note { font-size: var(--fs-xs); color: var(--warning); margin-top: 8px; display: flex; align-items: center; gap: 5px; } .task-detail { padding: 28px 30px; min-width: 0; } .task-detail h2 { margin: 16px 0 20px; } .task-detail .banner { padding: 14px; align-items: flex-start; font-size: var(--fs-sm); margin-bottom: 22px; } .task-detail .detail-facts { grid-template-columns: 1fr 1fr; gap: 14px; margin: 18px 0; } .detail-section { border-top: 1px solid var(--line); padding-top: 22px; margin-top: 24px; } .detail-section h3 { font-size: var(--fs-caption); margin-bottom: 15px; } .markdown { font-size: var(--fs-caption); color: var(--ink-secondary); line-height: 1.95; overflow-wrap: anywhere; } .markdown h1 { font-size: var(--fs-input); color: var(--ink); margin: 14px 0 12px; letter-spacing: 0; } .markdown h2 { font-size: var(--fs-body); color: var(--ink); margin: 22px 0 10px; } .markdown p { margin: 9px 0; } .markdown ul { padding-left: 22px; } .run-row { display: flex; gap: 12px; padding-bottom: 20px; position: relative; } .run-row::before { content: ""; position: absolute; left: 9px; top: 25px; bottom: 0; width: 1px; background: var(--line); } .run-row:last-child::before { display: none; } .run-node { width: 20px; height: 24px; color: var(--accent); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .run-node.warning { color: var(--warning); } .run-row strong { font-size: var(--fs-sm); font-weight: 500; } .run-row p { font-size: var(--fs-xs); color: var(--ink-muted); margin-top: 3px; overflow-wrap: anywhere; } .run-row time { margin-left: auto; color: var(--ink-muted); font: var(--fs-xs)/2 var(--mono); } .comment { padding: 12px 15px; background: var(--surface-soft); border-radius: var(--r-sm); font-size: var(--fs-sm); color: var(--ink-secondary); } .empty-inline { color: var(--ink-muted); font-size: var(--fs-sm); padding: 10px 0; } .event-group { margin-top: 22px; } .event-date { color: var(--ink-muted); font-size: var(--fs-sm); padding: 10px 0 18px; } .event-date strong { color: var(--ink); margin-right: 12px; font-weight: 500; } .event-row { display: flex; gap: 18px; align-items: flex-start; padding: 20px 0; border-top: 1px solid var(--line); text-align: left; width: 100%; } .event-row:hover { background: var(--surface-soft); } .event-icon { width: 40px; height: 40px; border-radius: var(--r-round); background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; flex-shrink: 0; } .event-icon.alert { background: var(--warning-soft); color: var(--warning); } .event-icon.execution { background: var(--blue-soft); color: var(--blue); } .event-row h3 { font-size: var(--fs-body); font-weight: 500; } .event-row p { color: var(--ink-muted); font-size: var(--fs-sm); margin-top: 5px; } .event-row time { color: var(--ink-muted); font: var(--fs-sm)/1.8 var(--mono); margin-left: auto; } .results-group { margin-top: 30px; } .results-group-header { display: flex; align-items: center; gap: 10px; border-bottom: 1px solid var(--line); padding-bottom: 14px; } .results-group-header h2 { font-size: var(--fs-input); } .result-table-labels { display: grid; grid-template-columns: 1fr 140px 100px 44px; color: var(--ink-muted); padding: 13px 0 0; font-size: var(--fs-xs); } .results-group .artifact-row .source { width: 140px; display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); color: var(--ink-secondary); } .results-group .artifact-row .artifact-time { width: 100px; } .settings-page { max-width: 1240px; width: 100%; margin: 0 auto; min-height: 100%; background: transparent; border: none; } .settings-page > .page-heading { border-bottom: none; margin-bottom: 22px; padding-bottom: 0; } .settings-layout { display: grid; grid-template-columns: 242px minmax(0, 1fr); gap: 24px; align-items: start; } .account-panel { position: sticky; top: 24px; min-width: 0; padding: 24px; background: var(--surface); border: 1px solid var(--line-strong); border-radius: var(--r-md); } .identity-block { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; padding: 0 0 16px; } .identity-block h2 { margin-bottom: 5px; } .identity-block p { color: var(--ink-muted); font-size: var(--fs-caption); } .account-facts { padding: 22px 0 6px; margin: 22px 0 0; border-top: 1px solid var(--line); } .account-facts > div { margin-bottom: 18px; } .account-facts dt { color: var(--ink-muted); font-size: var(--fs-sm); margin-bottom: 5px; } .account-facts dd { margin: 0; font-size: var(--fs-caption); font-weight: 500; overflow-wrap: anywhere; } .account-note { display: flex; gap: 9px; align-items: flex-start; padding: 15px 0; border-top: 1px solid var(--line); color: var(--ink-muted); } .account-note svg { width: 16px; height: 16px; margin-top: 3px; } .account-note p { font-size: var(--fs-xs); line-height: 1.8; } .account-logout { width: 100%; color: var(--danger); margin-top: 10px; } .settings-content { min-width: 0; background: var(--surface); border: 1px solid var(--line-strong); border-radius: var(--r-md); overflow: hidden; } .settings-section { padding: 22px 26px; border-bottom: 1px solid var(--line); } .settings-section-heading { display: flex; gap: 10px; align-items: center; margin-bottom: 18px; } .settings-section-heading > svg { width: 18px; height: 18px; color: var(--ink-secondary); } .settings-section-heading h3 { font-size: var(--fs-input); } .settings-appearance { display: grid; grid-template-columns: minmax(120px, 1fr) minmax(200px, 290px); align-items: center; gap: 20px; } .setting-copy { min-width: 0; } .setting-copy h4 { font-size: var(--fs-caption); font-weight: 500; line-height: 1.6; } .setting-copy p { margin-top: 5px; color: var(--ink-muted); font-size: var(--fs-sm); line-height: 1.75; } .theme-switch { justify-self: end; } .palette-options { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; min-width: 0; } .palette-choice { border: 1px solid var(--line-strong); border-radius: var(--r-sm); padding: 7px; text-align: left; background: var(--surface); min-width: 0; } .palette-choice.selected { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); } .palette-thumbnail { height: 44px; display: grid; grid-template-columns: 23% 1fr 22%; border: 1px solid var(--line-strong); border-radius: var(--r-sm); overflow: hidden; background: var(--surface); } .palette-thumb-nav { background: var(--nav-bg); border-right: 1px solid var(--nav-line); padding: 7px 4px; display: grid; align-content: start; gap: 4px; } .palette-thumb-nav span { height: 3px; background: var(--nav-text); opacity: .6; border-radius: var(--r-round); } .palette-thumb-content { padding: 8px; display: grid; align-content: center; gap: 5px; } .palette-thumb-content span { display: block; height: 3px; width: 100%; background: var(--line-strong); border-radius: var(--r-round); } .palette-thumb-content span:first-child { width: 55%; background: var(--ink-secondary); } .palette-thumb-content span:last-child { width: 38%; height: 6px; background: var(--accent); } .palette-thumb-rail { background: var(--rail-bg); border-left: 1px solid var(--line-strong); } .palette-choice-label { display: flex; align-items: center; gap: 6px; font-size: var(--fs-sm); padding: 7px 2px 1px; font-weight: 500; } .palette-choice-description { display: block; font-size: var(--fs-xs); color: var(--ink-muted); padding: 0 2px; } .theme-radio { margin-left: auto; width: 16px; height: 16px; border: 1px solid var(--line-strong); border-radius: var(--r-round); display: grid; place-items: center; } .palette-choice.selected .theme-radio { background: var(--accent); border-color: var(--accent); color: var(--on-accent); } .theme-radio svg { width: 12px; height: 12px; } .settings-palettes { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); display: grid; grid-template-columns: minmax(145px, .55fr) minmax(0, 2fr); align-items: center; gap: 20px; } .setting-row { display: flex; align-items: center; gap: 20px; justify-content: space-between; min-height: 66px; } .settings-content .setting-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; min-height: 68px; } .settings-content .setting-row > .btn { justify-self: end; } .setting-row p { color: var(--ink-muted); font-size: var(--fs-sm); margin-top: 3px; } .setting-value { color: var(--ink-secondary); font-size: var(--fs-caption); } .settings-about { min-height: 66px; padding: 10px 26px; display: flex; justify-content: space-between; align-items: center; gap: 12px; background: var(--surface-soft); color: var(--ink-muted); font-size: var(--fs-sm); } .agent-profile-hero { display: flex; align-items: center; gap: 20px; padding-bottom: 28px; border-bottom: 1px solid var(--line); } .profile-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; padding: 30px 0; border-bottom: 1px solid var(--line); } .profile-metrics .metric strong { font: 500 var(--fs-heading)/1.5 var(--mono); display: block; color: var(--ink); } .profile-metrics .metric > span { font-size: var(--fs-sm); color: var(--ink-muted); } .mobile-nav, .mobile-header, .mobile-back, .mobile-only { display: none; } .state-panel { min-height: 260px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 35px 20px; gap: 10px; } .state-symbol { background: var(--surface-hover); color: var(--ink-muted); width: 56px; height: 56px; border-radius: var(--r-lg); display: grid; place-items: center; margin-bottom: 6px; } .state-panel h3 { font-size: var(--fs-body); } .state-panel p { max-width: 290px; font-size: var(--fs-sm); color: var(--ink-muted); line-height: 1.8; } .state-panel .btn { margin-top: 8px; } .skeleton { width: 100%; max-width: 400px; display: grid; gap: 18px; padding: 12px; } .skeleton-line { height: 12px; border-radius: var(--r-sm); background: var(--surface-hover); animation: breathe 1.2s ease-in-out infinite alternate; } .skeleton-line:nth-child(2) { width: 72%; } .skeleton-line:nth-child(3) { width: 88%; } .overlay-backdrop { position: fixed; inset: 0; background: var(--overlay); z-index: 100; display: flex; align-items: center; justify-content: center; padding: 24px; } .dialog { background: var(--surface); width: min(480px, 100%); max-height: calc(100dvh - 48px); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow); overflow: auto; } .dialog-head { padding: 20px 24px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border-bottom: 1px solid var(--line); } .dialog-head h2 { font-size: var(--fs-input); } .dialog-body { padding: 24px; } .dialog-body > p { color: var(--ink-secondary); font-size: var(--fs-caption); line-height: 1.9; margin-bottom: 20px; } .dialog-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; } .drawer-backdrop { justify-content: flex-end; padding: 0; } .drawer { height: 100dvh; max-height: 100dvh; width: 410px; border-radius: 0; display: flex; flex-direction: column; } .drawer .dialog-body { overflow: auto; min-height: 0; } .drawer .rail-section { padding: 0; } .drawer .rail-foot { padding-left: 0; } .preview-dialog { width: min(880px, 100%); height: calc(100dvh - 64px); display: flex; flex-direction: column; } .preview-dialog .dialog-head { padding: 14px 24px; } .preview-toolbar { display: flex; gap: 8px; align-items: center; } .preview-body { overflow: auto; min-height: 0; background: var(--surface-soft); padding: 32px; flex: 1; } .document-paper { background: var(--surface); border: 1px solid var(--line); padding: 42px 48px; max-width: 680px; margin: auto; min-height: 100%; } .document-paper .document-brand { color: var(--accent); font-size: var(--fs-xs); letter-spacing: 2px; margin-bottom: 32px; font-family: var(--mono); } .document-paper .markdown h1 { font-size: var(--fs-heading); margin: 0 0 28px; } .document-paper .markdown h2 { font-size: var(--fs-input); margin-top: 28px; } .document-paper .markdown { font-size: var(--fs-body); } .csv-table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); white-space: nowrap; } .csv-table th, .csv-table td { padding: 12px 10px; border-bottom: 1px solid var(--line); text-align: left; } .csv-table th { color: var(--ink-muted); background: var(--surface-soft); font-weight: 500; } .lab-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; } .lab-grid .btn { justify-content: flex-start; } .lab-group { border-top: 1px solid var(--line); padding-top: 18px; margin-top: 20px; } .lab-group h3 { font-size: var(--fs-caption); margin-bottom: 12px; } .lab-group .setting-row { min-height: 52px; } #toast { position: fixed; bottom: 28px; left: 50%; transform: translateX(-50%); z-index: 150; background: var(--ink); color: var(--surface); border-radius: var(--r-md); padding: 12px 20px; font-size: var(--fs-caption); max-width: calc(100vw - 32px); width: max-content; box-shadow: var(--shadow); opacity: 0; pointer-events: none; transition: opacity var(--motion-fast); } #toast.visible { opacity: 1; } .skip-link { position: fixed; left: 16px; top: -100px; z-index: 200; padding: 12px 20px; background: var(--surface); border: 2px solid var(--accent); border-radius: var(--r-sm); } .skip-link:focus { top: 16px; } .login-shell { min-height: calc(100dvh - 44px); display: grid; grid-template-columns: 1.1fr 1fr; background: var(--surface); } .login-story { background: var(--accent-soft); padding: 48px 64px; display: flex; flex-direction: column; } .login-story .brand { padding: 0; } .login-story-content { margin: auto 0; padding: 70px 0; } .login-story h1 { font-size: var(--fs-display); font-weight: 500; line-height: 1.55; margin: 20px 0; letter-spacing: -1px; } .login-story p { color: var(--ink-secondary); max-width: 340px; line-height: 1.9; } .login-flow { margin-top: 50px; display: flex; align-items: center; gap: 18px; padding: 22px 0; border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); font-size: var(--fs-caption); color: var(--accent); } .login-form-area { display: flex; align-items: center; justify-content: center; padding: 40px; } .login-form { width: 100%; max-width: 360px; } .login-form h2 { font-size: var(--fs-heading); margin-bottom: 8px; } .login-form > p { color: var(--ink-muted); font-size: var(--fs-caption); margin-bottom: 26px; } .form-field { margin: 20px 0; } .form-field label { display: block; margin-bottom: 8px; font-size: var(--fs-caption); color: var(--ink-secondary); } .form-field input { min-height: 48px; width: 100%; border: 1px solid var(--line-strong); border-radius: var(--r-sm); background: var(--surface); color: var(--ink); padding: 10px 12px; font-size: var(--fs-input); } .form-error { font-size: var(--fs-sm); color: var(--danger); padding: 4px 0 14px; } .login-submit { width: 100%; margin-top: 10px; min-height: 48px; } .demo-credentials { font-size: var(--fs-sm); color: var(--ink-muted); margin-top: 22px; line-height: 1.9; background: var(--surface-soft); padding: 14px; border-radius: var(--r-sm); } .narrow-desktop { display: none; } .upload-progress { width: 100%; margin-top: 8px; accent-color: var(--accent); } .upload-label { font-size: var(--fs-xs); color: var(--ink-muted); } .no-wrap { white-space: nowrap; } .full-width { width: 100%; } .hidden { display: none !important; } @keyframes breathe { from { opacity: .4; } to { opacity: 1; } } /* Route/dialog motion is opt-in in app.js. Data updates never replay it. */ .nav-link, .tab, .icon-btn, .chat-row, .mobile-nav a, .mobile-nav .nav-icon { transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard); } /* Breakpoint tokens: bp-dk-full=1280, bp-dk-4col=1150, bp-dk-3col=940, bp-dk-2col=768. CSS range syntax centralizes them here. */ @media (width < 1280px) { :root { --nav-width: 176px; --list-width: 244px; --result-width: 300px; } .page { padding: 30px; } .chat-header { padding-inline: 20px; } .messages { padding-inline: 20px; } .chat-context { margin-inline: 20px; } .agent-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .settings-layout { grid-template-columns: 220px minmax(0, 1fr); gap: 20px; } .settings-section { padding-inline: 22px; } .settings-appearance, .settings-palettes { grid-template-columns: minmax(0, 1fr); gap: 12px; } .palette-options { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 320px; } .theme-switch { justify-self: start; } } @media (width < 1150px) { .conversation-layout { grid-template-columns: var(--list-width) minmax(0, 1fr); } .result-rail { display: none; } .rail-toggle { display: inline-grid; } .split-workspace { grid-template-columns: 250px minmax(0, 1fr); } .project-detail { padding: 24px; } .task-layout { grid-template-columns: minmax(230px, .85fr) minmax(0, 1fr); } .task-detail { padding: 22px; } .settings-layout { grid-template-columns: minmax(0, 1fr); } .account-panel { position: static; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px 24px; } .account-panel .identity-block { flex-direction: row; align-items: center; padding: 0; } .account-panel > .badge { align-self: start; justify-self: end; } .account-facts { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; padding-top: 18px; margin: 0; } .account-facts > div { margin-bottom: 0; } .account-note { border: none; padding: 0; } .account-logout { width: auto; margin: 0; align-self: center; } .settings-appearance, .settings-palettes { grid-template-columns: minmax(0, 1fr) minmax(200px, 300px); } .theme-switch { justify-self: end; } } @media (width < 940px) { :root { --nav-width: 72px; --list-width: 250px; } .sidebar { padding: 25px 10px 12px; } .sidebar .brand { padding: 0; justify-content: center; } .sidebar .brand-word, .sidebar .workspace-label, .sidebar .nav-link > span, .sidebar .nav-section-label, .sidebar .nav-project, .sidebar-help, .sidebar .profile-button .grow, .sidebar .profile-button > svg { display: none; } .nav-items { margin-top: 35px; gap: 12px; } .nav-link { justify-content: center; padding: 0; } .profile-button { justify-content: center; } .page { padding: 28px; } } @media (width < 768px) { .app-shell:not(.mobile) .narrow-desktop { position: absolute; display: flex; inset: 0; align-items: center; justify-content: center; background: var(--surface); z-index: 30; padding: 28px; text-align: center; } .app-shell:not(.mobile) .narrow-desktop > div { max-width: 340px; } .narrow-desktop p { color: var(--ink-muted); margin: 16px 0; } .login-shell { grid-template-columns: 1fr; } .login-story { display: none; } .login-form-area { padding: 32px 24px; } .login-form-area .mobile-only { display: flex; margin-bottom: 44px; } } /* Mobile is a separate view tree, not a shrunken desktop workspace. */ .app-shell.mobile { display: block; background: var(--surface); height: calc(100dvh - 44px); } .mobile .workspace { height: 100%; padding-bottom: calc(72px + env(safe-area-inset-bottom)); background: var(--surface); scrollbar-gutter: auto; } .mobile.is-chat .workspace { padding-bottom: 0; overflow: hidden; } .mobile .mobile-header { display: flex; justify-content: space-between; align-items: center; min-height: 68px; padding: 12px 20px; border-bottom: 1px solid var(--line); background: var(--surface); } .mobile-header h1 { font-size: var(--fs-title); } .mobile .mobile-only { display: flex; } .mobile .mobile-back { display: inline-grid; } .mobile .desktop-only { display: none !important; } .mobile .mobile-nav { position: fixed; display: grid; grid-template-columns: repeat(5, 1fr); bottom: 0; left: 0; right: 0; height: calc(70px + env(safe-area-inset-bottom)); padding: 5px 8px env(safe-area-inset-bottom); border-top: 1px solid var(--line-strong); background: var(--surface); z-index: 40; } .mobile-nav a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; color: var(--ink-muted); font-size: var(--fs-xs); border-radius: var(--r-sm); } .mobile-nav a.active { color: var(--accent); font-weight: 600; } .mobile-nav a.active .nav-icon { background: var(--accent-soft); } .mobile-nav .nav-icon { width: 42px; height: 29px; display: grid; place-items: center; border-radius: var(--r-round); } .mobile.is-chat .mobile-nav { display: none; } .mobile .page { padding: 22px 20px 28px; width: 100%; max-width: none; min-height: 0; margin: 0; border: none; border-radius: 0; } .mobile .page-heading { margin-bottom: 22px; align-items: flex-start; gap: 12px; } .mobile .page-heading h1 { font-size: var(--fs-title); letter-spacing: -.4px; } .mobile .page-heading p { font-size: var(--fs-sm); } .mobile .page-heading .btn { padding: 0 10px; } .mobile .toolbar { flex-wrap: wrap; align-items: stretch; gap: 12px; } .mobile .toolbar .input-wrap { width: 100%; } .mobile .tabs { max-width: 100%; } .mobile .tab { padding-inline: 12px; } .mobile input, .mobile textarea, .mobile select { font-size: var(--fs-input); } .mobile .overview-stats { grid-template-columns: repeat(4, 1fr); gap: 0; padding-bottom: 22px; margin-bottom: 22px; } .mobile .overview-stat { padding-left: 14px; } .mobile .overview-stat:first-child { padding-left: 0; } .mobile .overview-stat strong { font-size: var(--fs-title); } .mobile .overview-stat span { font-size: var(--fs-xs); } .mobile .overview-stat small { display: none; } .mobile .agent-grid { grid-template-columns: 1fr; gap: 14px; } .mobile .agent-card { padding: 20px; } .mobile .banner { padding: 14px; align-items: flex-start; gap: 10px; margin-bottom: 22px; } .mobile .banner > svg { margin-top: 4px; } .mobile .banner strong { font-size: var(--fs-caption); } .mobile .banner p { font-size: var(--fs-xs); } .mobile .banner .btn { padding: 0 5px; min-width: 44px; } .mobile .view-switch { margin-bottom: 18px; } .mobile .conversation-list { border: none; height: 100%; } .mobile .list-title { min-height: 76px; padding: 20px; } .mobile .list-search, .mobile .list-filter { padding-inline: 20px; } .mobile .chat-list-scroll { padding: 0 12px; } .mobile .chat-row { padding: 18px 8px; border-radius: 0; border-bottom: 1px solid var(--line); } .mobile .chat-row .avatar { width: 46px; height: 46px; } .mobile .chat-row .preview { font-size: var(--fs-caption); } .mobile .chat-main { height: 100%; } .mobile .chat-header { padding: 10px 12px 10px 6px; min-height: 72px; gap: 8px; } .mobile .chat-header .avatar { width: 36px; height: 36px; } .mobile .chat-header-tools { gap: 0; } .mobile .chat-header .agent-description { font-size: var(--fs-xs); } .mobile .chat-context { margin: 12px 16px 0; padding: 4px 10px; gap: 7px; font-size: var(--fs-xs); } .mobile .messages { padding: 20px 16px; } .mobile .message { gap: 8px; margin-bottom: 25px; } .mobile .message-body { max-width: calc(100% - 36px); } .mobile .message.me .message-body { max-width: 85%; } .mobile .message.me .avatar { display: none; } .mobile .bubble { line-height: 1.85; } .mobile .composer-area { padding: 8px 12px calc(12px + env(safe-area-inset-bottom)); border-top: 1px solid var(--line); } .mobile .composer { padding: 10px 9px 5px; } .mobile .composer textarea { min-height: 30px; max-height: 100px; font-size: var(--fs-input); } .mobile .composer-note { display: none; } .mobile .composer-actions .hint { font-size: var(--fs-xs); } .mobile .contact-row { min-height: 80px; padding-inline: 0; gap: 12px; } .mobile .contact-owner { display: none; } .mobile .contact-row .specialty { font-size: var(--fs-xs); } .mobile .contact-row > .badge { font-size: var(--fs-xs); } .mobile .contact-child { padding-left: 35px; } .mobile .split-workspace { display: block; min-height: 0; border: none; border-radius: 0; } .mobile .split-list { border: none; background: none; padding: 0; } .mobile .project-row { border: 1px solid var(--line); padding: 20px; border-radius: var(--r-md); margin-bottom: 14px; } .mobile .project-row h3 { font-size: var(--fs-input); } .mobile .project-detail { padding: 0; } .mobile .project-detail h2 { font-size: var(--fs-title); } .mobile .detail-facts { gap: 12px; } .mobile .task-toolbar { gap: 10px; } .mobile .task-toolbar > select { width: 100%; } .mobile .task-layout { display: block; min-height: 0; border: none; border-radius: 0; } .mobile .task-list { border: none; padding: 0; background: none; } .mobile .task-row { border-bottom: 1px solid var(--line); border-radius: 0; padding: 18px 0; margin: 0; } .mobile .task-row.active { border: none; border-bottom: 1px solid var(--line); } .mobile .task-detail { padding: 0; } .mobile .task-detail h2 { font-size: var(--fs-title); } .mobile .event-row { gap: 12px; } .mobile .event-icon { width: 36px; height: 36px; } .mobile .event-row h3 { font-size: var(--fs-caption); } .mobile .event-row p { font-size: var(--fs-xs); } .mobile .event-row time { font-size: var(--fs-xs); } .mobile .event-date { font-size: var(--fs-xs); } .mobile .event-date strong { font-size: var(--fs-caption); } .mobile .results-group { margin-top: 24px; } .mobile .result-table-labels { display: none; } .mobile .results-group .artifact-row .source { display: none; } .mobile .results-group .artifact-row .artifact-time { display: none; } .mobile .artifact-row { gap: 12px; } .mobile .artifact-row .artifact-time { display: none; } .mobile .setting-row { align-items: flex-start; flex-wrap: wrap; padding: 12px 0; gap: 12px; } .mobile .setting-row > .segmented { max-width: 100%; } .mobile .identity-block { gap: 16px; } .mobile .settings-page { background: var(--bg); min-height: 100%; } .mobile .settings-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; } .mobile .account-panel { padding: 20px; grid-template-columns: minmax(0, 1fr) auto; gap: 16px 10px; position: static; } .mobile .account-panel .identity-block { grid-column: 1 / -1; } .mobile .account-panel > .badge { display: none; } .mobile .account-facts { grid-template-columns: minmax(0, 1fr); gap: 14px; } .mobile .account-facts > div { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; } .mobile .account-facts dt { margin: 0; } .mobile .account-facts dd { text-align: right; } .mobile .account-note { grid-column: 1 / -1; } .mobile .account-logout { grid-column: 1 / -1; width: 100%; } .mobile .settings-section { padding: 20px; } .mobile .settings-appearance, .mobile .settings-palettes { grid-template-columns: minmax(0, 1fr); gap: 14px; } .mobile .theme-switch { justify-self: start; } .mobile .palette-options { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: none; } .mobile .settings-content .setting-row { grid-template-columns: minmax(0, 1fr); gap: 10px; padding-block: 12px; } .mobile .settings-content .setting-row > .btn { justify-self: start; } .mobile .settings-about { padding-inline: 20px; flex-wrap: wrap; gap: 0; } .mobile .profile-metrics { grid-template-columns: 1fr 1fr; gap: 24px; } .mobile .agent-profile-hero { align-items: flex-start; flex-wrap: wrap; gap: 16px; } .mobile .agent-profile-hero > .btn { width: 100%; } .mobile .breadcrumbs { margin-bottom: 10px; } .mobile .state-panel { min-height: 240px; } .home-page { padding: 25px 20px; } .home-greeting { margin-bottom: 24px; } .home-greeting .eyebrow { font-size: var(--fs-xs); letter-spacing: 1px; } .home-greeting h1 { font-size: var(--fs-heading); margin-top: 8px; font-weight: 500; } .home-greeting p { font-size: var(--fs-caption); color: var(--ink-muted); margin-top: 6px; } .home-alert { width: 100%; display: flex; gap: 12px; align-items: center; padding: 15px; border-radius: var(--r-md); color: var(--warning); background: var(--warning-soft); text-align: left; margin-bottom: 26px; } .home-alert strong { display: block; font-weight: 500; font-size: var(--fs-caption); } .home-alert small { display: block; font-size: var(--fs-xs); opacity: .9; margin-top: 3px; } .home-section { margin-bottom: 28px; } .home-section .section-heading { margin-bottom: 2px; } .home-section .artifact-row { padding-block: 16px; } .home-section .artifact-row .artifact-time { display: none; } .home-shortcuts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 25px; } .home-shortcut { border: 1px solid var(--line); border-radius: var(--r-md); display: flex; align-items: center; gap: 10px; padding: 12px 14px; min-height: 62px; text-align: left; } .home-shortcut svg { color: var(--accent); } .home-shortcut small { font-size: var(--fs-xs); color: var(--ink-muted); display: block; } .home-section .chat-row { border-radius: 0; padding-inline: 0; min-height: 90px; } body[data-mode="mobile"] #toast { bottom: calc(90px + env(safe-area-inset-bottom)); } body[data-mode="mobile"] .overlay-backdrop { padding: 12px; } body[data-mode="mobile"] .drawer-backdrop { align-items: flex-end; padding: 0; } body[data-mode="mobile"] .drawer { width: 100%; height: auto; max-height: 88dvh; border-radius: var(--r-lg) var(--r-lg) 0 0; padding-bottom: env(safe-area-inset-bottom); } body[data-mode="mobile"] .drawer::before { content: ""; display: block; height: 4px; width: 34px; border-radius: var(--r-round); background: var(--line-strong); margin: 9px auto 0; flex-shrink: 0; } body[data-mode="mobile"] .preview-dialog { width: 100%; height: calc(100dvh - 24px); max-height: calc(100dvh - 24px); } body[data-mode="mobile"] .preview-dialog .dialog-head { padding: 12px; gap: 6px; } body[data-mode="mobile"] .preview-dialog .dialog-head h2 { font-size: var(--fs-caption); } body[data-mode="mobile"] .preview-toolbar { gap: 0; } body[data-mode="mobile"] .preview-toolbar .btn { padding-inline: 10px; } body[data-mode="mobile"] .preview-body { padding: 12px; } body[data-mode="mobile"] .document-paper { padding: 24px 20px; overflow-x: auto; } body[data-mode="mobile"] .document-paper .markdown h1 { font-size: var(--fs-title); } body[data-mode="mobile"] .demo-strip { justify-content: space-between; padding-left: 14px; gap: 3px; } body[data-mode="mobile"] .demo-strip .strip-detail { display: none; } body[data-mode="mobile"] .dialog-head { padding: 15px 20px; } body[data-mode="mobile"] .dialog-body { padding: 20px; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }