:root { color-scheme: light; --theme-2d2a26: #2d2a26; --theme-2f6b3a: #2f6b3a; --theme-2f6b3f: #2f6b3f; --theme-342f2a: #342f2a; --theme-344ca1: #344ca1; --theme-39352f: #39352f; --theme-3f3550: #3f3550; --theme-3f6f98: #3f6f98; --theme-42637f: #42637f; --theme-433f39: #433f39; --theme-4b4742: var(--text-secondary); --theme-4d78a8: #4d78a8; --theme-4f4a43: #4f4a43; --theme-4f825c: #4f825c; --theme-554075: #554075; --theme-59544d: var(--text-secondary); --theme-5d9a6c: #5d9a6c; --theme-5f5a53: var(--text-secondary); --theme-654f91: #654f91; --theme-655f57: var(--text-secondary); --theme-66709a: #66709a; --theme-6684a1: #6684a1; --theme-6b655d: var(--text-secondary); --theme-6d6760: var(--text-secondary); --theme-6f6961: var(--text-tertiary); --theme-716b61: var(--text-tertiary); --theme-777067: var(--text-tertiary); --theme-7a746c: var(--text-tertiary); --theme-805a24: #805a24; --theme-8069ad: #8069ad; --theme-817b72: var(--text-tertiary); --theme-817b73: var(--text-tertiary); --theme-866b4d: #866b4d; --theme-8a625d: #8a625d; --theme-8a847c: var(--text-quaternary); --theme-8b5b21: #8b5b21; --theme-8d8377: #8d8377; --theme-8f3025: #8f3025; --theme-918a81: var(--text-quaternary); --theme-9a938a: var(--text-quaternary); --theme-9a958d: var(--text-quaternary); --theme-9b958c: var(--text-quaternary); --theme-9ca9df: #9ca9df; --theme-9d8abd: #9d8abd; --theme-9db8a5: #9db8a5; --theme-9f2d20: #9f2d20; --theme-a33b2b: #a33b2b; --theme-a83f32: #a83f32; --theme-aaa49b: #aaa49b; --theme-b64132: #b64132; --theme-b6d3bd: #b6d3bd; --theme-b8d1bb: #b8d1bb; --theme-b9d5bf: #b9d5bf; --theme-bdb5a9: #bdb5a9; --theme-bf8a43: #bf8a43; --theme-c77b30: #c77b30; --theme-c7c2b8: #c7c2b8; --theme-c9c4ba: #c9c4ba; --theme-c9d6e2: #c9d6e2; --theme-c9d8ca: #c9d8ca; --theme-c9dfcf: #c9dfcf; --theme-d5d2cb: #d5d2cb; --theme-d8d1eb: #d8d1eb; --theme-d8d2c8: #d8d2c8; --theme-d8d4cc: #d8d4cc; --theme-d9d4c9: #d9d4c9; --theme-dce2fb: #dce2fb; --theme-dce8df: #dce8df; --theme-ddd8ce: #ddd8ce; --theme-dfb7b0: #dfb7b0; --theme-dfbf91: #dfbf91; --theme-dfdcd4: #dfdcd4; --theme-e2b6ae: #e2b6ae; --theme-e2ddd3: #e2ddd3; --theme-e3e1db: #e3e1db; --theme-e4d0af: #e4d0af; --theme-e5e1d9: #e5e1d9; --theme-e8e4dc: #e8e4dc; --theme-e8e5dc: #e8e5dc; --theme-ece8df: #ece8df; --theme-eeeae2: #eeeae2; --theme-eeece6: #eeece6; --theme-eef1ff: #eef1ff; --theme-eef7f0: #eef7f0; --theme-efc9c2: #efc9c2; --theme-f0ede6: #f0ede6; --theme-f0eee8: #f0eee8; --theme-f1ecfb: #f1ecfb; --theme-f1f6fa: #f1f6fa; --theme-f1f8f1: #f1f8f1; --theme-f2efe8: #f2efe8; --theme-f2f0ea: #f2f0ea; --theme-f2f7f2: #f2f7f2; --theme-f3f8f4: #f3f8f4; --theme-f4f1ea: #f4f1ea; --theme-f4f2ec: #f4f2ec; --theme-f5f1ff: #f5f1ff; --theme-f5f7ff: #f5f7ff; --theme-f6f2ec: #f6f2ec; --theme-f7f3ff: #f7f3ff; --theme-f8f5ee: #f8f5ee; --theme-f8f5ef: #f8f5ef; --theme-f8f5ff: #f8f5ff; --theme-f8f6f1: #f8f6f1; --theme-faf8f2: #faf8f2; --theme-faf8f4: #faf8f4; --theme-faf9f5: #f6f7f5; --theme-fdf1ee: #fdf1ee; --theme-fff: #fff; --theme-fff1ee: #fff1ee; --theme-fff7e9: #fff7e9; --theme-fff8eb: #fff8eb; --theme-fffdf8: #fffdf8; --theme-ffffff: #ffffff; --bg-secondary: #f6f7f5; --bg-primary: #ffffff; --bg-tertiary: #f8fafc; --bg-hover: #f1f5f9; --bg-quinary: #f8fafc; --bg-card: #ffffff; --bg-error-light: #fff1ee; --text-primary: #0f172a; --text-secondary: #1e293b; --text-tertiary: #334155; --text-quaternary: #475569; --text-muted: var(--text-tertiary); --text-placeholder: var(--text-quaternary); --text-disabled: #64748b; --border-color: #e2e8f0; --border-secondary: #f1f5f9; --border-primary: #cbd5e1; --border-hover: #94a3b8; --primary-color: #0f766e; --primary-hover: #0b5d57; --primary-active: #094c47; --primary-contrast: #ffffff; --success-color: #2f6b3f; --warning-color: #c77b30; --error-color: #9f2d20; --danger-color: #9f2d20; --info-color: #0f766e; --amber-color: #c77b30; --amber-text: #8b5b21; --success-badge-bg: #eef7f0; --success-badge-text: #2f6b3f; --success-badge-border: #b6d3bd; --failure-badge-bg: #fff1ee; --failure-badge-text: #9f2d20; --failure-badge-border: #dfb7b0; --count-badge-bg: #eff3f0; --count-badge-text: var(--text-primary); --ui-accent: #0f766e; --ui-accent-strong: #0b5d57; --ui-accent-soft: #f0fdfa; --ui-focus-ring: rgba(15, 118, 110, 0.28); --ui-accent-shadow: rgba(15, 118, 110, 0.18); --ui-panel-shadow: 0 8px 24px rgba(32, 42, 36, 0.07); --shadow-sm: 0 1px 2px rgba(32, 42, 36, 0.06); } :root[data-theme='dark'] { color-scheme: dark; --bg-secondary: #0b0d11; --bg-primary: #141720; --bg-tertiary: #1c212c; --bg-hover: #252b38; --bg-quinary: #10131a; --bg-card: #141720; --bg-error-light: rgba(198, 87, 70, 0.18); --text-primary: #f8fafc; --text-secondary: #d3dce8; --text-tertiary: #b0bdcf; --text-quaternary: #9aa9bf; --text-disabled: #64748b; --border-color: #222836; --border-secondary: #222836; --border-primary: #2e3646; --border-hover: #3a4356; --primary-color: #5dd3c7; --primary-hover: #83e0d6; --primary-active: #4ec4b8; --primary-contrast: #0b0d11; --success-color: #34d399; --viz-success: #10b981; --warning-color: #c65746; --error-color: #c65746; --danger-color: #c65746; --info-color: #f8fafc; --amber-color: #d97706; --amber-text: #fcd34d; --success-badge-bg: rgba(16, 185, 129, 0.16); --success-badge-text: #6ee7b7; --success-badge-border: rgba(52, 211, 153, 0.38); --failure-badge-bg: rgba(198, 87, 70, 0.18); --failure-badge-text: #fca5a5; --failure-badge-border: rgba(198, 87, 70, 0.35); --count-badge-bg: rgba(248, 250, 252, 0.12); --count-badge-text: var(--text-primary); --ui-accent: #5dd3c7; --ui-accent-strong: #83e0d6; --ui-accent-contrast: #0b0d11; --ui-accent-soft: rgba(45, 169, 158, 0.2); --ui-focus-ring: rgba(93, 211, 199, 0.28); --ui-accent-shadow: rgba(0, 0, 0, 0.22); --ui-panel-shadow: 0 1px 2px rgba(0, 0, 0, 0.28), 0 12px 32px -10px rgba(0, 0, 0, 0.45); --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.28); --theme-2d2a26: #f8fafc; --theme-2f2c28: #ece9e2; --theme-2f6b3a: #34d399; --theme-2f6b3f: #34d399; --theme-342f2a: #ece9e2; --theme-344ca1: #9c958d; --theme-39352f: #dfdcd4; --theme-3f3550: #c9c3bb; --theme-3f6f98: #9c958d; --theme-42637f: #9c958d; --theme-433f39: #d3cfc7; --theme-4d78a8: #9c958d; --theme-4f4a43: #cbd5e1; --theme-4f825c: #34d399; --theme-554075: #b0aaa2; --theme-5d9a6c: #34d399; --theme-654f91: #b0aaa2; --theme-66709a: #c9c3bb; --theme-6684a1: #c9c3bb; --theme-805a24: #fcd34d; --theme-8069ad: #8a847c; --theme-866b4d: #8a847c; --theme-8a625d: #8a847c; --theme-8b5b21: #fcd34d; --theme-8d8377: #6d6760; --theme-8f3025: #c65746; --theme-9ca9df: #8b8680; --theme-9d8abd: #8b8680; --theme-9db8a5: #34d399; --theme-9f2d20: #c65746; --theme-a33b2b: #c65746; --theme-a83f32: #c65746; --theme-aaa49b: #334155; --theme-b64132: #c65746; --theme-b6d3bd: rgba(16, 185, 129, 0.3); --theme-b8d1bb: rgba(16, 185, 129, 0.3); --theme-b9d5bf: rgba(16, 185, 129, 0.3); --theme-bd5e31: #c65746; --theme-bdb5a9: #3a3530; --theme-bf8a43: #d97706; --theme-c77b30: #d97706; --theme-c7c2b8: #222836; --theme-c9c4ba: #222836; --theme-c9d6e2: #222836; --theme-c9d8ca: rgba(16, 185, 129, 0.3); --theme-c9dfcf: rgba(16, 185, 129, 0.3); --theme-d3d0c9: #2e3646; --theme-d5d2cb: #2e3646; --theme-d7a447: #d97706; --theme-d8d1eb: #3a3530; --theme-d8d2c8: #3a3530; --theme-d8d4cc: #222836; --theme-d9d4c9: #1c212c; --theme-dce2fb: rgba(139, 134, 128, 0.35); --theme-dce8df: rgba(16, 185, 129, 0.25); --theme-ddd8ce: #2e2a26; --theme-dfb7b0: rgba(198, 87, 70, 0.35); --theme-dfbf91: rgba(217, 119, 6, 0.35); --theme-dfdcd4: #1c212c; --theme-e2b6ae: rgba(198, 87, 70, 0.35); --theme-e2ddd3: #2e2a26; --theme-e3ded5: #3a3530; --theme-e3e1db: #222836; --theme-e4d0af: #3a3530; --theme-e5e1d9: #2e2a26; --theme-e8e4dc: #1c212c; --theme-e8e5dc: #1c212c; --theme-ece8df: #1c212c; --theme-eeeae2: #1c212c; --theme-eeece6: #1c212c; --theme-eef1ff: rgba(139, 134, 128, 0.15); --theme-eef7f0: rgba(16, 185, 129, 0.12); --theme-efc9c2: rgba(198, 87, 70, 0.3); --theme-f0ede6: #12151c; --theme-f0eee8: #141720; --theme-f1ecfb: #1c212c; --theme-f1f6fa: #1c212c; --theme-f1f8f1: rgba(16, 185, 129, 0.1); --theme-f2efe8: #141720; --theme-f2f0ea: #141720; --theme-f2f7f2: rgba(16, 185, 129, 0.1); --theme-f3f8f4: rgba(16, 185, 129, 0.1); --theme-f4f1ea: #10131a; --theme-f4f2ec: #10131a; --theme-f5f1ff: #10131a; --theme-f5f7ff: #10131a; --theme-f6f2ec: #10131a; --theme-f7f3ff: #10131a; --theme-f8f5ee: #0f1218; --theme-f8f5ef: #0f1218; --theme-f8f5ff: #0f1218; --theme-f8f6f1: #0f1218; --theme-faf8f2: #0f1218; --theme-faf8f4: #0f1218; --theme-faf9f5: #0b0d11; --theme-fdf1ee: rgba(198, 87, 70, 0.1); --theme-fff: #141720; --theme-fff1ee: rgba(198, 87, 70, 0.16); --theme-fff7e9: rgba(217, 119, 6, 0.14); --theme-fff8eb: rgba(217, 119, 6, 0.14); --theme-fffdf8: #141720; --theme-ffffff: #141720; } /* * Readability-first palette. * * The original tokens are retained because they are used throughout the app, * while these overrides move the interface to a calm graphite-and-teal * system. New semantic tokens are used by the shell and * primary interactions below. */ :root { --ui-accent: #0f766e; --ui-accent-strong: #0b5d57; --ui-accent-soft: #f0fdfa; --ui-focus-ring: rgba(15, 118, 110, 0.28); --ui-accent-shadow: rgba(15, 118, 110, 0.18); --ui-panel-shadow: 0 8px 24px rgba(32, 42, 36, 0.07); --theme-2d2a26: #202521; --theme-342f2a: #282e29; --theme-39352f: #313832; --theme-433f39: #39413b; --theme-4f4a43: #465049; --theme-8d8377: #808a82; --theme-aaa49b: #a1aaa3; --theme-bdb5a9: #b2bab4; --theme-c7c2b8: #c0c8c1; --theme-c9c4ba: #c4ccc5; --theme-d5d2cb: #cfd7d0; --theme-d8d2c8: #d6ddd7; --theme-d8d4cc: #d3dbd4; --theme-d9d4c9: #d8ded9; --theme-ddd8ce: #dde3de; --theme-dfdcd4: #e2e9e3; --theme-e2ddd3: #dce4dd; --theme-e3e1db: #e2e8e3; --theme-e5e1d9: #e5eae6; --theme-e8e4dc: #e8ede9; --theme-e8e5dc: #e6ece7; --theme-ece8df: #edf1ee; --theme-eeeae2: #edf1ee; --theme-eeece6: #eff3f0; --theme-f0ede6: #f0f3f1; --theme-f0eee8: #eef2ef; --theme-f2efe8: #f2f5f3; --theme-f2f0ea: #f3f5f3; --theme-f4f1ea: #f6f8f6; --theme-f4f2ec: #f5f7f5; --theme-f6f2ec: #f7f9f7; --theme-f8f5ee: #f9faf9; --theme-f8f5ef: #f9faf9; --theme-f8f6f1: #f9faf9; --theme-faf8f2: #fbfcfb; --theme-faf8f4: #fbfcfb; --theme-faf9f5: #ffffff; --theme-fff: #ffffff; --theme-fffdf8: #ffffff; --theme-ffffff: #ffffff; } :root { --font-family-sans: 'Noto Sans SC', 'Noto Sans CJK SC', 'Source Han Sans SC', 'PingFang SC', 'Microsoft YaHei UI', 'Microsoft YaHei', system-ui, sans-serif; --font-family-mono: 'Cascadia Code', 'SFMono-Regular', Consolas, 'Liberation Mono', monospace; --font-mono: var(--font-family-mono); --font-weight-regular: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-size-caption: 12px; --font-size-meta: 13px; --font-size-label: 14px; --font-size-body: 14px; --font-size-section: 16px; --font-size-panel-title: 18px; --font-size-dialog-title: 20px; --font-size-page-title: 24px; --font-size-metric-compact: 24px; --font-size-display: 28px; --line-height-tight: 1.35; --line-height-body: 1.6; --line-height-relaxed: 1.7; font-family: var(--font-family-sans); font-size: var(--font-size-body); line-height: var(--line-height-body); color: var(--theme-2d2a26); background: var(--theme-faf9f5); font-synthesis: none; letter-spacing: 0; text-rendering: optimizeLegibility; } :root:lang(zh-TW) { --font-family-sans: 'Noto Sans TC', 'Noto Sans CJK TC', 'Source Han Sans TC', 'PingFang TC', 'Microsoft JhengHei UI', 'Microsoft JhengHei', system-ui, sans-serif; } :root:lang(ja) { --font-family-sans: 'Noto Sans JP', 'Noto Sans CJK JP', 'Source Han Sans JP', 'Hiragino Kaku Gothic ProN', 'Yu Gothic UI', Meiryo, system-ui, sans-serif; } :root:lang(en) { --font-family-sans: 'Inter', 'Segoe UI Variable Text', 'Segoe UI', -apple-system, BlinkMacSystemFont, 'Noto Sans', 'Noto Sans SC', sans-serif; } h1, h2, h3, h4, strong, b { font-weight: var(--font-weight-semibold); } code, pre, kbd, samp { font-family: var(--font-family-mono); } * { box-sizing: border-box; } html { scrollbar-width: thin; } html, body, #root { width: 100%; min-width: 0; height: 100%; margin: 0; background: var(--theme-faf9f5); } .app-error-boundary { display: grid; min-height: 100vh; place-items: center; padding: 24px; background: var(--theme-faf9f5); } .app-error-boundary .empty-state { width: min(560px, 100%); } body { margin: 0; } button, input, select, textarea { font: inherit; } input::placeholder, textarea::placeholder { color: var(--text-placeholder); opacity: 1; } button { cursor: pointer; font-weight: var(--font-weight-medium); } button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--ui-focus-ring); outline-offset: 2px; } .app-shell { display: grid; grid-template-columns: 264px minmax(0, 1fr); height: 100%; min-height: 0; overflow: hidden; background: var(--theme-faf9f5); } .sidebar { position: sticky; top: 0; display: flex; flex-direction: column; height: 100vh; padding: 20px 14px; border-right: 1px solid var(--border-color); background: var(--bg-primary); color: var(--text-primary); } .sidebar-brand { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 12px; min-height: 54px; margin-bottom: 22px; } .brand-mark { display: grid; width: 42px; height: 42px; place-items: center; border: 1px solid var(--theme-d5d2cb); border-radius: 12px; background: var(--theme-2d2a26); color: var(--theme-fffdf8); font-size: var(--font-size-section); font-weight: var(--font-weight-semibold); box-shadow: 0 6px 16px var(--ui-accent-shadow); } .brand-logo { display: block; object-fit: cover; } .sidebar-brand strong, .sidebar-brand span { display: block; min-width: 0; } .sidebar-brand strong { overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-section); text-overflow: ellipsis; white-space: nowrap; } .sidebar-brand div > span { margin-top: 4px; color: var(--theme-7a746c); font-size: var(--font-size-label); } .nav-section { display: grid; gap: 6px; align-content: start; } .nav-section button { display: grid; grid-template-columns: 19px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; min-height: 46px; padding: 0 13px; border: 1px solid transparent; border-radius: 10px; background: transparent; color: var(--theme-2d2a26); font-weight: var(--font-weight-semibold); text-align: left; transition: border-color 140ms ease, background 140ms ease, color 140ms ease, transform 140ms ease; } .nav-section button svg { color: var(--theme-7a746c); } .nav-lock-icon { color: var(--text-tertiary); opacity: 0.85; } .nav-section button span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nav-update-indicator { display: block; width: 8px; height: 8px; border-radius: 999px; background: var(--theme-c77b30); box-shadow: 0 0 0 3px rgba(199, 123, 48, 0.14); } .nav-update-indicator.processing { background: var(--theme-4d78a8); box-shadow: 0 0 0 3px rgba(77, 120, 168, 0.15); animation: update-indicator-pulse 1.2s ease-in-out infinite; } @keyframes update-indicator-pulse { 50% { opacity: 0.45; transform: scale(0.78); } } .nav-section button:hover { background: var(--theme-e8e5dc); color: var(--theme-2d2a26); transform: translateX(2px); } .nav-section button:disabled, .nav-section button.locked { cursor: not-allowed; color: var(--text-disabled); opacity: 0.58; } .nav-section button:disabled:hover, .nav-section button.locked:hover { background: transparent; color: var(--text-disabled); transform: none; } .nav-section button:disabled svg, .nav-section button.locked svg { color: var(--text-tertiary); } .nav-section button.active { border-color: color-mix(in srgb, var(--ui-accent) 30%, transparent); background: var(--ui-accent-soft); color: var(--ui-accent-strong); font-weight: var(--font-weight-semibold); box-shadow: 0 4px 12px var(--ui-accent-shadow); } .nav-section button.active svg { color: var(--ui-accent); } .sidebar-bottom { display: grid; gap: 10px; margin-top: auto; padding-top: 18px; border-top: 1px solid var(--theme-e3e1db); } .sidebar-easy-entry { display: block; width: 100%; min-height: 38px; padding: 0 10px; border: 1px dashed var(--border-primary); border-radius: 9px; background: transparent; color: var(--text-secondary); text-align: center; transition: border-color 140ms ease, background 140ms ease, color 140ms ease; } .sidebar-easy-entry:hover { border-style: solid; border-color: var(--border-hover); background: var(--bg-tertiary); color: var(--text-primary); } .sidebar-easy-entry.active { border-style: solid; border-color: var(--border-primary); background: var(--bg-tertiary); color: var(--text-primary); } .sidebar-easy-entry span { min-width: 0; overflow: hidden; font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; } .sidebar-theme-selector { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3px; width: 100%; padding: 3px; border: 1px solid var(--border-color); border-radius: 9px; background: var(--bg-tertiary); } .sidebar-theme-selector button { min-width: 0; min-height: 32px; padding: 0 8px; border: 0; border-radius: 5px; background: transparent; color: var(--theme-716b61); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); transition: background 140ms ease, color 140ms ease, box-shadow 140ms ease; white-space: nowrap; } .sidebar-theme-selector button:hover { background: var(--theme-e8e5dc); color: var(--theme-2d2a26); } .sidebar-theme-selector button.active { background: var(--bg-primary); box-shadow: var(--shadow-sm); color: var(--text-primary); } .sidebar-language { position: relative; width: 100%; } .sidebar-language-trigger { display: grid; grid-template-columns: 18px minmax(0, 1fr) 14px; align-items: center; gap: 8px; width: 100%; min-height: 38px; padding: 0 10px; border: 1px solid var(--border-color); border-radius: 9px; background: var(--bg-primary); color: var(--text-secondary); text-align: left; } .sidebar-language-trigger:hover, .sidebar-language-trigger[aria-expanded='true'] { border-color: var(--theme-c7c2b8); background: var(--theme-e8e5dc); color: var(--theme-2d2a26); } .sidebar-language-trigger span { min-width: 0; overflow: hidden; font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; } .sidebar-language-trigger > svg:last-child { transition: transform 160ms ease; } .sidebar-language-trigger > svg:last-child.expanded { transform: rotate(180deg); } .sidebar-language-list { position: absolute; z-index: 120; right: 0; bottom: calc(100% + 8px); left: 0; display: grid; gap: 3px; padding: 5px; border: 1px solid var(--theme-d8d4cc); border-radius: 9px; background: var(--theme-fff); box-shadow: 0 -10px 28px rgba(45, 42, 38, 0.16); } .sidebar-language-list button { display: grid; grid-template-columns: minmax(0, 1fr) 16px; align-items: center; gap: 8px; width: 100%; min-height: 36px; padding: 0 9px; border: 0; border-radius: 6px; background: transparent; color: var(--theme-5f5a53); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); text-align: left; } .sidebar-language-list button:hover { background: var(--theme-f0eee8); color: var(--theme-2d2a26); } .sidebar-language-list button.selected { background: var(--theme-e8e5dc); color: var(--theme-2d2a26); } .sidebar-language-list button svg { color: var(--theme-2d2a26); } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .sidebar-contact { display: grid; grid-template-columns: 18px minmax(0, 1fr) 14px; align-items: center; gap: 8px; width: 100%; min-height: 38px; padding: 0 10px; border: 1px solid var(--border-color); border-radius: 9px; background: var(--bg-primary); color: var(--text-secondary); text-align: left; } .sidebar-contact:hover { border-color: var(--theme-c7c2b8); background: var(--theme-e8e5dc); color: var(--theme-2d2a26); } .sidebar-contact svg { color: var(--theme-7a746c); } .sidebar-contact span { overflow: hidden; font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; } .workspace { min-width: 0; height: 100%; overflow: auto; scrollbar-width: thin; } .state-pill { display: inline-flex; align-items: center; justify-content: center; min-height: 28px; padding: 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 999px; background: var(--theme-fffdf8); color: var(--theme-5f5a53); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); white-space: nowrap; } .state-pill.success { border-color: var(--theme-b6d3bd); background: var(--theme-eef7f0); color: var(--theme-2f6b3f); } .state-pill.error { border-color: var(--theme-dfb7b0); background: var(--theme-fff1ee); color: var(--theme-9f2d20); } .state-pill.warning { border-color: var(--theme-dfbf91); background: var(--theme-fff7e9); color: var(--theme-8b5b21); } .state-pill.update { border-color: var(--theme-dfbf91); background: var(--theme-fff7e9); color: var(--theme-8b5b21); } .content { width: 100%; padding: clamp(20px, 3vw, 32px) clamp(18px, 3.2vw, 40px) clamp(28px, 4vw, 48px); container-type: inline-size; container-name: workspace; } .page { width: 100%; max-width: none; min-width: 0; margin-inline: 0; } .page > * { min-width: 0; } .kernel-page, .config-page, .management-page { display: grid; gap: 18px; } .panel { width: 100%; min-width: 0; padding: 24px; border: 1px solid var(--theme-e3e1db); border-radius: 12px; background: var(--theme-fffdf8); box-shadow: var(--ui-panel-shadow); } .quiet-panel { background: var(--theme-faf9f5); } .panel-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; min-height: 49px; margin-bottom: 16px; } .panel-heading > div { min-width: 0; } .panel h2 { margin: 0; color: var(--theme-2d2a26); font-size: var(--font-size-panel-title); line-height: var(--line-height-tight); } .panel-heading p { min-height: 0; margin: 5px 0 0; color: var(--theme-5f5a53); font-size: var(--font-size-body); line-height: var(--line-height-body); } .panel-heading p.success { color: var(--theme-2f6b3f); } .panel-heading p.error { color: var(--theme-9f2d20); } .status-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr)); gap: 12px; } .status-card { display: grid; gap: 4px; min-width: 0; min-height: 72px; padding: 12px 14px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); } .status-card-primary { grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px; } .status-card-primary > div { display: grid; gap: 4px; min-width: 0; } .status-card span { overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .status-card strong { overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-panel-title); line-height: var(--line-height-tight); text-overflow: ellipsis; white-space: nowrap; } .software-version-line { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; } .software-version-line > strong { flex: none; } .software-version-action { display: inline-flex; align-items: center; justify-content: flex-end; gap: 4px; min-width: 0; max-width: 62%; padding: 0; border: 0; background: transparent; color: var(--theme-817b73); font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); } .software-version-action span { color: inherit; font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); } .software-version-action:hover:not(:disabled) span { text-decoration: underline; text-underline-offset: 2px; } .software-version-action:disabled { cursor: wait; opacity: 0.72; } .software-version-action.update { color: var(--theme-866b4d); } .software-version-action.error { color: var(--theme-8a625d); } .status-dot { display: block; width: 12px; height: 12px; border-radius: 999px; background: var(--theme-9b958c); box-shadow: 0 0 0 5px rgba(155, 149, 140, 0.14); } .status-dot.success { background: var(--theme-2f6b3f); box-shadow: 0 0 0 5px rgba(47, 107, 63, 0.15); } .status-dot.error { background: var(--theme-9f2d20); box-shadow: 0 0 0 5px rgba(159, 45, 32, 0.15); } .status-dot.neutral { background: var(--theme-9b958c); } .kernel-layout { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 18px; } /* ========================================================================== Version Management Redesign ========================================================================== */ .version-management-page { display: flex; flex-direction: column; width: 100%; max-width: 1160px; margin: 0 auto; } .version-list { display: grid; gap: 20px; padding: 0; border: 0; background: transparent; box-shadow: none; } .version-source-row, .version-list-item, .app-release-notes { border: 1px solid var(--theme-e3e1db); border-radius: 12px; background: var(--theme-fffdf8); box-shadow: var(--ui-panel-shadow); } .version-source-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; min-height: 84px; align-items: center; gap: 24px; padding: 20px 24px; } .version-source-copy { display: grid; min-width: 0; gap: 5px; } .version-source-copy strong, .version-card-top h2 { color: var(--theme-2d2a26); font-size: var(--font-size-panel-title); font-weight: var(--font-weight-semibold); line-height: var(--line-height-body); } .version-source-copy > span { color: var(--theme-7a746c); font-size: var(--font-size-meta); line-height: var(--line-height-body); } .version-source-copy > .version-source-error { color: var(--theme-9f2d20); } .version-source-control label { display: grid; } .version-source-control { display: grid; grid-template-columns: minmax(0, 220px) auto; width: max-content; max-width: 100%; gap: 8px; } .version-source-control select { width: 220px; max-width: 100%; height: 42px; padding: 0 36px 0 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; background: var(--theme-fffdf8); color: var(--theme-2d2a26); cursor: pointer; font-size: var(--font-size-body); } .version-source-control select:hover:not(:disabled) { border-color: var(--theme-9b958c); } .version-source-control select:disabled { cursor: not-allowed; opacity: 0.58; } .version-source-add-button { display: inline-flex; min-height: 42px; align-items: center; justify-content: center; gap: 6px; padding: 0 12px; } .version-source-add-button:disabled { cursor: not-allowed; opacity: 0.58; } .version-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; gap: 20px; } .version-list-item { display: grid; grid-template-rows: minmax(0, 1fr) auto; min-height: 240px; align-items: stretch; gap: 20px; padding: 24px; } .version-item-content { min-width: 0; } .version-card-top { display: flex; min-width: 0; align-items: baseline; flex-wrap: wrap; gap: 6px 14px; } .version-card-top h2 { margin: 0; } .version-row-status { display: inline-flex; align-items: center; gap: 6px; min-width: 0; color: var(--theme-7a746c); font-size: var(--font-size-meta); font-weight: var(--font-weight-semibold); line-height: var(--line-height-body); } .version-row-status::before { width: 6px; height: 6px; flex: none; border-radius: 50%; background: currentColor; content: ''; } .version-row-status.info { color: var(--theme-5f5a53); } .version-row-status.update { color: var(--theme-8b5b21); } .version-row-status.error { color: var(--theme-9f2d20); } .version-row-status.neutral { color: var(--theme-817b73); } .version-metrics-comparison { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); min-width: 0; gap: 12px; margin: 20px 0 0; } .version-metric-tile { display: grid; min-width: 0; gap: 5px; padding: 15px 16px; border: 1px solid var(--theme-e8e5dc); border-radius: 10px; background: var(--theme-faf9f5); } .version-metric-label { color: var(--theme-8a847c); font-size: var(--font-size-meta); line-height: var(--line-height-body); } .version-metric-value { min-width: 0; margin: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-panel-title); font-weight: var(--font-weight-semibold); font-family: var(--font-family-mono, monospace); line-height: var(--line-height-body); text-overflow: ellipsis; white-space: nowrap; } .version-metric-tile.has-update .version-metric-value { color: var(--theme-8b5b21); } .version-alert-banner { display: flex; min-width: 0; align-items: center; gap: 6px; margin-top: 12px; color: var(--theme-7a746c); font-size: var(--font-size-meta); line-height: var(--line-height-body); } .version-alert-banner > svg { flex: none; } .version-alert-banner.info { color: var(--theme-5f5a53); } .version-alert-banner.neutral { color: var(--theme-6d6760); } .version-alert-banner.update { color: var(--ui-accent-strong); } .version-alert-banner.warning { color: var(--theme-8b5b21); } .version-alert-banner.error { color: var(--theme-9f2d20); } .version-alert-banner.success { color: var(--theme-2f6b3f); } .version-card-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; align-self: end; gap: 10px; } .version-card-actions button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; flex: 1 1 120px; min-height: 40px; padding: 8px 14px; font-weight: var(--font-weight-semibold); border-radius: 9px; white-space: nowrap; } .app-release-notes { min-width: 0; overflow: hidden; } .app-release-notes-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 20px 24px; } .app-release-notes-heading > div { display: flex; align-items: center; gap: 9px; min-width: 0; } .app-release-notes-heading h2 { margin: 0; font-size: var(--font-size-panel-title); } .app-release-notes-heading svg { flex: none; color: var(--theme-7a746c); } .app-release-notes-toggle { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: none; min-height: 32px; padding: 3px 0; border: 0; background: transparent; color: var(--theme-6d6760); font-size: var(--font-size-meta); cursor: pointer; } .app-release-notes-toggle:hover { color: var(--theme-2d2a26); } .app-release-notes-toggle .is-expanded { transform: rotate(180deg); } .app-release-notes-body { padding: 0 24px 20px; } .app-release-notes-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; padding-bottom: 20px; border-bottom: 1px solid var(--theme-e8e5dc); } .app-release-notes-meta strong { font-family: var(--font-family-mono, monospace); font-size: var(--font-size-panel-title); overflow-wrap: anywhere; } .app-release-notes-latest { padding: 2px 7px; border-radius: 5px; background: var(--theme-dce8df); color: var(--theme-2f6b3f); font-size: var(--font-size-meta); } .app-release-notes-meta time { margin-left: auto; color: var(--theme-7a746c); font-size: var(--font-size-meta); } .app-release-notes-markdown { display: grid; grid-template-columns: minmax(44px, auto) minmax(0, 1fr); align-items: start; gap: 18px 22px; margin-top: 20px; color: var(--theme-2d2a26); font-size: var(--font-size-body); line-height: var(--line-height-body); overflow-wrap: anywhere; } .app-release-notes-markdown > * { grid-column: 2; min-width: 0; margin: 0; } .app-release-notes-markdown > .release-notes-category { grid-column: 1; max-width: 220px; padding: 3px 9px; border-radius: 5px; background: var(--theme-faf9f5); color: var(--theme-6d6760); font-size: var(--font-size-meta); font-weight: var(--font-weight-semibold); text-align: center; } .app-release-notes-markdown > .release-notes-subtitle { grid-column: 1 / -1; } .app-release-notes-markdown ul, .app-release-notes-markdown ol { padding-left: 20px; } .app-release-notes-markdown li + li { margin-top: 7px; } .app-release-notes-markdown li p { margin: 5px 0; } .app-release-notes-markdown a { color: var(--theme-3f6f98); text-decoration: underline; } .app-release-notes-markdown pre { white-space: pre-wrap; padding: 12px; border-radius: 8px; background: var(--theme-faf9f5); } .app-release-notes-markdown blockquote { border-left: 3px solid var(--theme-e3e1db); padding-left: 14px; color: var(--theme-6d6760); } .app-release-notes-empty { margin: 18px 0 0; color: var(--theme-7a746c); font-size: var(--font-size-body); } .app-release-notes-footer { display: flex; justify-content: flex-end; padding: 10px 24px; border-top: 1px solid var(--theme-e8e5dc); background: var(--theme-faf9f5); } @media (max-width: 640px) { .app-release-notes-heading { padding: 16px; } .app-release-notes-body { padding: 0 16px 16px; } .app-release-notes-footer { padding: 10px 16px; } .app-release-notes-markdown { gap: 14px 12px; } .app-release-notes-markdown > .release-notes-category { max-width: 80px; } .app-release-notes-meta time { width: 100%; margin-left: 0; } } .client-api-panel { margin-top: 0; } .client-api-heading { min-height: 44px; margin-bottom: 14px; } .client-api-heading .state-pill { flex: none; } .client-api-key-actions { display: flex; min-width: 0; align-items: center; gap: 5px; margin: 4px 0 0; } .client-api-default-key { display: inline-flex; min-width: 0; min-height: 19px; flex: 0 1 auto; align-items: center; gap: 6px; margin: 0; padding: 0; border: 0; background: transparent; color: var(--theme-5f5a53); font-size: var(--font-size-body); line-height: var(--line-height-body); } .client-api-default-key span { flex: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .client-api-default-key code { min-width: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .client-api-default-key svg { flex: none; color: var(--theme-7a746c); } .client-api-default-key:hover span { color: var(--theme-2d2a26); } .client-api-key-copy { width: 26px; height: 26px; border-color: transparent !important; background: transparent !important; } .client-api-key-copy:hover:not(:disabled) { border-color: var(--theme-d5d2cb) !important; background: var(--theme-f4f1ea) !important; } .client-api-no-key { color: var(--theme-9f2d20) !important; } .client-api-grid { display: flex; flex-direction: column; gap: 12px; } .client-api-card { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; height: 100%; min-height: 56px; padding: 0 14px; border: 1px solid var(--theme-e3e1db); border-radius: 10px; background: var(--theme-ffffff); box-sizing: border-box; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.02); transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease; } .client-api-card:hover { border-color: var(--theme-d5d2cb); background: var(--theme-ffffff); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.06); } :root[data-theme='dark'] .client-api-card { border-color: var(--border-primary); background: rgba(255, 255, 255, 0.035); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); } :root[data-theme='dark'] .client-api-card:hover { border-color: var(--border-hover); background: rgba(255, 255, 255, 0.055); } .client-api-card-heading { display: flex; align-items: center; gap: 10px; min-width: 0; flex: 0 0 138px; width: 138px; } .client-api-logo { display: grid; width: 36px; height: 36px; flex: none; place-items: center; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--bg-secondary); } :root[data-theme='dark'] .client-api-logo { border-color: var(--border-secondary); background: var(--bg-quinary); } :root[data-theme='dark'] .client-api-card.openai .client-api-logo img { filter: invert(1); } .client-api-logo img { display: block; width: 22px; height: 22px; object-fit: contain; } .client-api-card-heading > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .client-api-card-heading strong { color: var(--theme-2d2a26); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); line-height: 1.2; } .client-api-card-heading .client-api-format-tag, .client-api-card-heading span { color: var(--theme-7a746c); font-size: var(--font-size-caption); line-height: 1.2; white-space: nowrap; } .client-api-values { display: flex; align-items: center; gap: 8px; min-width: 0; flex: 1 1 auto; justify-content: stretch; } .client-api-value-row { display: flex; align-items: center; gap: 8px; min-width: 0; width: 100%; justify-content: stretch; height: 36px; padding: 0; border: none; background: transparent; box-sizing: border-box; } .client-api-value-row > span:first-child { display: none; } .client-api-value-row code { flex: 1 1 auto; min-width: 0; height: 36px; line-height: 34px; padding: 0 12px; border: 1px solid var(--theme-e3e1db); border-radius: 6px; background: var(--bg-secondary); color: var(--theme-2d2a26); font-size: var(--font-size-meta); font-family: var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; user-select: all; box-sizing: border-box; text-align: left; cursor: pointer; transition: border-color 150ms ease, background-color 150ms ease; } .client-api-value-row code:hover { border-color: var(--theme-d5d2cb); background: var(--theme-ffffff); } :root[data-theme='dark'] .client-api-value-row code { border-color: var(--border-secondary); background: var(--bg-quinary); color: var(--text-primary); } :root[data-theme='dark'] .client-api-value-row code:hover { border-color: var(--border-primary); background: var(--bg-primary); } .client-api-value-row .icon-button { flex: none; width: 34px; height: 34px; border-radius: 6px; } .client-api-copy-placeholder { display: block; width: 34px; height: 34px; } .kernel-layout > .panel { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: repeat(3, auto); } .kernel-layout > .panel > .panel-heading { min-height: 0; height: auto; margin: 0; padding-bottom: 16px; } .kernel-layout .panel-action-row { height: auto; margin: 0; padding-top: 18px; } .panel-detail-grid { display: grid; grid-auto-rows: auto; gap: 8px; min-height: 0; margin: 0; } .panel-detail-row { display: grid; grid-template-columns: 92px minmax(0, 1fr); align-items: center; gap: 14px; min-width: 0; min-height: 40px; } .panel-detail-row dt { color: var(--theme-7a746c); font-size: var(--font-size-body); } .panel-detail-row dd { min-width: 0; margin: 0; overflow: hidden; color: var(--theme-2d2a26); text-align: right; text-overflow: ellipsis; white-space: nowrap; } .panel-detail-row dd.success { color: var(--theme-2f6b3f); } .panel-detail-row dd.update { color: var(--theme-c77b30); } .panel-detail-row dd.error { color: var(--theme-9f2d20); } .detail-control-cell { display: flex; align-items: center; justify-content: flex-end; height: 40px; overflow: visible !important; } .compact-text-input { width: min(150px, 100%); height: 34px; padding: 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-ffffff); color: var(--theme-2d2a26); text-align: right; } .compact-text-input::placeholder { color: var(--text-placeholder); } .compact-text-input.error { border-color: var(--theme-a83f32); color: var(--theme-9f2d20); } .compact-text-input:disabled { cursor: not-allowed; background: var(--theme-f4f1ea); } .button-row.control-action-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-flow: row; grid-auto-rows: minmax(38px, auto); gap: 8px; align-items: stretch; } .control-action-row > button { width: 100%; min-height: 38px; height: auto; padding: 6px 8px; overflow: hidden; font-size: var(--font-size-label); line-height: var(--line-height-tight); text-align: center; text-overflow: ellipsis; white-space: nowrap; } @container workspace (min-width: 840px) { .home-page { grid-template-columns: minmax(320px, 1fr) minmax(360px, 1.15fr); grid-template-rows: auto auto; grid-auto-rows: unset; align-items: stretch; } .home-page > .home-layout { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); align-self: stretch; align-items: stretch; height: 100%; } .home-page > .client-api-panel { grid-column: 2; } .home-page > .home-layout > .control-panel, .home-page > .client-api-panel { display: grid; height: 100%; align-self: stretch; row-gap: 16px; box-sizing: border-box; } .home-page > .home-layout > .control-panel { grid-template-rows: auto minmax(0, 1fr) auto; } .home-page > .client-api-panel { grid-template-rows: auto minmax(0, 1fr); } .home-page > .home-layout > .control-panel > .panel-heading, .home-page > .client-api-panel > .panel-heading, .version-management-layout > .panel > .panel-heading { min-height: 0; margin-bottom: 0; padding-bottom: 0; } .home-page > .home-layout > .control-panel > .panel-detail-grid { align-content: space-evenly; } .home-page > .client-api-panel > .client-api-grid { display: grid; grid-template-rows: repeat(3, minmax(0, 1fr)); gap: 12px; height: 100%; min-height: 0; } .home-page > .home-layout > .control-panel > .panel-action-row { padding-top: 0; } } @container workspace (max-width: 760px) { .version-card-grid { grid-template-columns: minmax(0, 1fr); } .version-list-item { min-height: 0; gap: 20px; padding: 22px; } .version-card-actions, .version-card-actions.core-actions { grid-column: 1; grid-row: auto; justify-content: flex-start; } .version-source-row { grid-template-columns: minmax(0, 1fr) auto; } } @container workspace (max-width: 560px) { .client-api-card { flex-direction: column; align-items: stretch; height: auto; min-height: 0; padding: 12px; gap: 10px; } .client-api-card-heading { flex: none; } .client-api-values { width: 100%; justify-content: stretch; } .client-api-value-row { width: 100%; } .version-source-row { grid-template-columns: minmax(0, 1fr); } .version-source-control select { width: 100%; } .version-source-control { grid-template-columns: minmax(0, 1fr) auto; width: 100%; } .version-source-add-button { grid-column: 1 / -1; } } @container workspace (max-width: 360px) { .button-row.control-action-row { grid-template-columns: 1fr; } } .info-list { display: grid; gap: 10px; grid-template-rows: repeat(4, 20px); min-height: 110px; margin: 0; } .info-list div { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 14px; align-items: start; min-height: 20px; } .info-list dt { color: var(--theme-7a746c); font-size: var(--font-size-body); } .info-list dd { min-width: 0; margin: 0; overflow: hidden; color: var(--theme-2d2a26); text-overflow: ellipsis; white-space: nowrap; } .empty-state { display: grid; gap: 6px; padding: 18px; border: 1px dashed var(--theme-d5d2cb); border-radius: 8px; background: var(--theme-fffdf8); color: var(--theme-5f5a53); } .empty-state strong { color: var(--theme-2d2a26); } .button-row { display: grid; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; gap: 10px; min-height: 38px; margin-top: 18px; } .primary-button, .secondary-button, .danger-button { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; min-width: 0; overflow: hidden; padding: 0 14px; border-radius: 8px; font-size: var(--font-size-label); font-weight: var(--font-weight-medium); text-overflow: ellipsis; white-space: nowrap; } .primary-button svg, .secondary-button svg, .danger-button svg { flex: none; } .primary-button { border: 1px solid var(--ui-accent); background: var(--ui-accent); color: #ffffff; box-shadow: 0 4px 12px var(--ui-accent-shadow); } .primary-button:hover:not(:disabled) { border-color: var(--ui-accent-strong); background: var(--ui-accent-strong); } .secondary-button { border: 1px solid var(--theme-d5d2cb); background: var(--theme-fffdf8); color: var(--theme-2d2a26); } .secondary-button:hover:not(:disabled) { background: var(--theme-f4f1ea); } .danger-button { border: 1px solid var(--theme-a83f32); background: var(--theme-fffdf8); color: var(--theme-9f2d20); } .danger-button:hover:not(:disabled) { background: var(--theme-fff1ee); } .primary-button:disabled, .secondary-button:disabled, .danger-button:disabled { cursor: not-allowed; opacity: 0.55; } .switch-control { position: relative; display: block; width: 44px; height: 24px; flex: none; } .switch-control input { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; margin: 0; cursor: pointer; opacity: 0; } .switch-control input:disabled { cursor: not-allowed; } .switch-control input:disabled + .switch-track { opacity: 0.55; } .switch-track { display: block; width: 100%; height: 100%; border: 1px solid var(--theme-d5d2cb); border-radius: 999px; background: var(--theme-e8e5dc); transition: background 140ms ease, border-color 140ms ease; } .switch-track::after { display: block; width: 18px; height: 18px; margin: 2px; border-radius: 999px; background: var(--theme-fffdf8); box-shadow: 0 1px 2px rgba(45, 42, 38, 0.18); transition: transform 140ms ease; content: ''; } .switch-control input:checked + .switch-track { border-color: var(--theme-2d2a26); background: var(--theme-2d2a26); } .switch-control input:checked + .switch-track::after { transform: translateX(20px); } .config-general-subpage { display: grid; gap: 18px; } .config-keys-panel { display: grid; min-height: 0; } .config-keys-panel { grid-template-rows: 42px minmax(0, 1fr); gap: 16px; height: 350px; } .config-management-panel { display: grid; gap: 18px; } .config-diagnostics-panel { display: grid; gap: 16px; } .config-diagnostics-intro { margin: -4px 0 0; color: var(--theme-6b655d); font-size: var(--font-size-label); line-height: var(--line-height-relaxed); } .config-diagnostics-toggle-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .config-diagnostics-setting { display: grid; grid-template-columns: 38px minmax(0, 1fr) 44px; align-items: center; gap: 12px; min-width: 0; padding: 15px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-faf8f2); } .config-diagnostics-setting-icon { display: grid; width: 38px; height: 38px; place-items: center; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); color: var(--theme-5f5a53); } .config-diagnostics-setting-copy { display: grid; min-width: 0; gap: 4px; } .config-diagnostics-setting-copy strong { color: var(--theme-2d2a26); font-size: var(--font-size-body); } .config-diagnostics-setting-copy small, .config-diagnostics-field small { margin: 0; color: var(--theme-5f5a53); font-size: var(--font-size-label); line-height: var(--line-height-relaxed); } .config-diagnostics-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .config-diagnostics-field { display: grid; min-width: 0; gap: 7px; padding: 14px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); } .config-diagnostics-field > span { color: var(--theme-39352f); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .config-diagnostics-commercial-note { display: flex; align-items: flex-start; gap: 8px; padding: 11px 13px; border: 1px solid var(--theme-dfbf91); border-radius: 7px; background: var(--theme-fff7e9); color: var(--theme-8b5b21); font-size: var(--font-size-label); line-height: var(--line-height-body); } .config-diagnostics-commercial-note svg { flex: none; margin-top: 1px; } .config-diagnostics-footer { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 16px; } .config-diagnostics-actions { display: flex; align-items: center; gap: 10px; } .config-management-content { display: grid; grid-template-columns: minmax(220px, 0.72fr) minmax(420px, 1.28fr); align-items: stretch; gap: 18px; } .config-management-description, .config-management-form { min-width: 0; padding: 16px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-faf8f2); } .config-management-description { display: grid; align-content: start; gap: 9px; } .config-management-description strong { color: var(--theme-2d2a26); font-size: var(--font-size-section); } .config-management-description p, .config-management-description small { margin: 0; color: var(--theme-6d6760); font-size: var(--font-size-body); line-height: var(--line-height-body); } .config-management-description small { color: var(--theme-7a746c); font-size: var(--font-size-meta); } .config-management-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 16px; } .config-management-field { display: grid; min-width: 0; align-content: start; gap: 8px; color: var(--theme-5f5a53); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); } .config-management-field .config-secret-input input, .config-management-field > .config-dialog-text-input { background: var(--theme-fffdf8); } .config-management-field > .config-dialog-text-input[aria-invalid='true'] { border-color: var(--theme-a83f32); } .config-management-form-footer { display: grid; grid-column: 1 / -1; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 14px; } .config-management-error { min-width: 0; overflow: hidden; color: transparent; font-size: var(--font-size-label); line-height: var(--line-height-body); text-overflow: ellipsis; white-space: nowrap; } .config-management-error.visible { color: var(--theme-9f2d20); } .config-management-actions { display: flex; align-items: center; justify-content: end; gap: 10px; } .config-network-panel { display: grid; gap: 18px; } .config-tls-content { display: grid; gap: 16px; } .config-tls-toggle-row { padding: 4px 0; border: 0; background: transparent; } .config-tls-section-heading, .config-section-heading-with-actions { justify-content: space-between; } .config-tls-section-title, .config-network-section-title { display: flex; align-items: center; gap: 8px; } .config-tls-section-title h3, .config-network-section-title h3 { margin: 0; font-size: var(--font-size-section); line-height: var(--line-height-body); } .config-tls-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; } .config-tls-fields .config-network-field { min-height: 142px; height: auto; } .config-tls-path-control { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; } .config-tls-browse-button { min-width: max-content; white-space: nowrap; } .config-tls-message { min-height: 20px; color: var(--theme-6d6760); font-size: var(--font-size-label); line-height: var(--line-height-body); } .config-tls-message.error { color: var(--theme-9f2d20); } .config-network-sections { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 18px; } .config-network-section { display: grid; min-width: 0; gap: 14px; padding: 16px; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; background: var(--theme-fffdf8); } .config-network-section[hidden] { display: none; } .config-network-section-heading { display: flex; align-items: center; gap: 8px; color: var(--theme-39352f); } .config-network-section-heading svg { flex: none; color: var(--theme-777067); } .config-network-section-heading h3 { margin: 0; font-size: var(--font-size-section); line-height: var(--line-height-body); } .config-network-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 154px; gap: 16px 18px; } .config-network-field { display: grid; height: 100%; min-width: 0; align-content: start; gap: 8px; padding: 14px; border: 1px solid var(--theme-e3e1db); border-radius: 7px; background: var(--theme-faf8f2); } .config-network-field > span, .config-network-toggle > div > span { color: var(--theme-39352f); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); } .config-network-field small { color: var(--theme-7a746c); font-size: var(--font-size-meta); line-height: var(--line-height-body); } .config-network-label { display: flex; align-items: center; gap: 7px; } .config-network-label svg { flex: none; color: var(--theme-777067); } .config-proxy-heading { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 10px; } .config-proxy-heading > .config-network-label { min-width: 0; color: var(--theme-39352f); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); } .config-proxy-system-toggle { display: inline-flex; flex: none; align-items: center; gap: 7px; color: var(--theme-7a746c); font-size: var(--font-size-meta); font-weight: var(--font-weight-medium); cursor: pointer; } .config-network-input { width: 100%; height: 38px; min-width: 0; padding: 0 11px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; outline: none; background: var(--theme-fffdf8); color: var(--theme-2d2a26); font: inherit; font-size: var(--font-size-body); } .config-network-input:focus { border-color: var(--theme-777067); box-shadow: 0 0 0 3px rgba(119, 112, 103, 0.12); } .config-network-input.error { border-color: var(--theme-b64132); box-shadow: 0 0 0 3px rgba(182, 65, 50, 0.1); } .config-network-input:disabled { cursor: not-allowed; opacity: 0.58; } .config-network-port-field .config-network-input { width: 120px; max-width: 100%; } .config-network-toggle { grid-template-columns: minmax(0, 1fr) auto; align-content: center; align-items: center; gap: 16px; } .config-network-toggle > div { display: grid; min-width: 0; gap: 7px; } .config-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 0; } .config-heading-title, .config-heading-actions, .config-key-identity, .config-key-actions, .config-dialog-heading > div { display: flex; align-items: center; } .config-heading-title { gap: 9px; min-width: 0; } .config-heading-title svg, .config-dialog-heading svg { flex: none; color: var(--theme-6d6760); } .config-heading-title h2 { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .config-heading-actions { gap: 8px; flex: none; } .config-heading-actions .compact-button { width: auto; margin-top: 0; } .config-panel-heading .state-pill { max-width: 108px; flex: none; overflow: hidden; text-overflow: ellipsis; } .config-count { display: inline-flex; width: 34px; height: 30px; align-items: center; justify-content: center; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-f4f1ea); color: var(--theme-5f5a53); font-size: var(--font-size-label); font-variant-numeric: tabular-nums; font-weight: var(--font-weight-semibold); } .icon-button { display: inline-flex; width: 34px; height: 34px; flex: none; align-items: center; justify-content: center; padding: 0; border: 1px solid var(--theme-2d2a26); border-radius: 6px; background: var(--theme-2d2a26); color: var(--theme-fffdf8); } .icon-button:hover:not(:disabled) { background: var(--theme-433f39); } .icon-button.quiet { border-color: var(--theme-d5d2cb); background: var(--theme-fffdf8); color: var(--theme-2d2a26); } .icon-button.quiet:hover:not(:disabled) { background: var(--theme-f4f1ea); } .icon-button.danger { border-color: var(--theme-dfb7b0); background: var(--theme-fffdf8); color: var(--theme-9f2d20); } .icon-button.danger:hover:not(:disabled) { background: var(--theme-fff1ee); } .icon-button:disabled { cursor: not-allowed; opacity: 0.5; } .icon-button.copied, .icon-button.quiet.copied { border-color: var(--success-badge-border) !important; background: var(--success-badge-bg) !important; color: var(--success-color) !important; } .config-key-list { min-height: 0; overflow-x: hidden; overflow-y: auto; border-top: 1px solid var(--theme-e3e1db); border-bottom: 1px solid var(--theme-e3e1db); scrollbar-gutter: stable; } .config-key-row { display: grid; grid-template-columns: minmax(0, 1fr) 112px; align-items: center; gap: 12px; min-height: 66px; padding: 0 4px 0 2px; border-bottom: 1px solid var(--theme-eeece6); } .config-key-row:last-child { border-bottom: 0; } .config-key-identity { gap: 12px; min-width: 0; } .config-key-index { display: inline-flex; width: 30px; height: 28px; flex: none; align-items: center; justify-content: center; border-radius: 5px; background: var(--theme-f0eee8); color: var(--theme-7a746c); font-size: var(--font-size-meta); font-variant-numeric: tabular-nums; font-weight: var(--font-weight-semibold); } .config-key-details { display: grid; min-width: 0; gap: 5px; } .config-key-label-line { display: flex; min-width: 0; align-items: center; gap: 7px; } .config-key-label-line strong { min-width: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-body); text-overflow: ellipsis; white-space: nowrap; } .config-key-details code { min-width: 0; overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-label); letter-spacing: 0; text-overflow: ellipsis; white-space: nowrap; } .config-key-actions { display: grid; grid-template-columns: repeat(3, 32px); justify-content: end; gap: 8px; } .config-key-actions .icon-button { width: 32px; height: 32px; } .config-key-actions .icon-button.danger { justify-self: center; } .config-key-row.skeleton span:first-child { width: min(280px, 75%); height: 14px; border-radius: 4px; background: var(--theme-eeece6); } .config-key-row.skeleton span:last-child { width: 70px; height: 28px; justify-self: end; border-radius: 5px; background: var(--theme-f4f1ea); } .config-empty-list, .config-unavailable { display: grid; height: 100%; min-height: 0; place-content: center; justify-items: center; gap: 9px; padding: 24px; color: var(--theme-7a746c); text-align: center; } .config-empty-list strong, .config-unavailable strong { color: var(--theme-2d2a26); font-size: var(--font-size-section); } .config-unavailable > span { width: min(360px, 100%); overflow: hidden; color: var(--theme-9f2d20); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .compact-button { gap: 7px; width: auto; min-height: 34px; margin-top: 3px; padding: 0 12px; font-size: var(--font-size-body); } .routing-segmented { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-self: center; gap: 4px; height: 40px; padding: 4px; border: 1px solid var(--theme-d5d2cb); border-radius: 7px; background: var(--theme-f0eee8); } .routing-segmented button { min-width: 0; overflow: hidden; padding: 0 8px; border: 0; border-radius: 5px; background: transparent; color: var(--theme-6d6760); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; } .routing-segmented button:hover:not(:disabled) { background: var(--theme-e8e5dc); color: var(--theme-2d2a26); } .routing-segmented button.active { background: var(--theme-fffdf8); color: var(--theme-2d2a26); box-shadow: 0 1px 2px rgba(45, 42, 38, 0.12); } .routing-segmented button:disabled { cursor: not-allowed; opacity: 0.55; } .config-dialog-backdrop { position: fixed; inset: 0; z-index: 70; display: grid; place-items: center; padding: 20px; background: rgba(45, 42, 38, 0.42); backdrop-filter: blur(3px); } .config-dialog { display: grid; grid-template-rows: 40px 72px 72px 20px 40px; gap: 16px; width: min(460px, 100%); height: 340px; padding: 22px; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; background: var(--theme-fffdf8); box-shadow: 0 18px 48px rgba(45, 42, 38, 0.24); } .config-dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; } .config-dialog-heading > div { gap: 9px; min-width: 0; } .config-dialog-heading h2 { margin: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); text-overflow: ellipsis; white-space: nowrap; } .config-dialog-field { display: grid; grid-template-rows: 20px 42px; gap: 8px; color: var(--theme-5f5a53); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); } .config-secret-input { display: grid; grid-template-columns: minmax(0, 1fr) 34px; align-items: center; gap: 7px; } .config-secret-input input { width: 100%; height: 42px; min-width: 0; padding: 0 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-ffffff); color: var(--theme-2d2a26); } .config-dialog-text-input { width: 100%; height: 42px; min-width: 0; padding: 0 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-ffffff); color: var(--theme-2d2a26); } .config-dialog-text-input:disabled { cursor: not-allowed; background: var(--theme-f4f1ea); } .config-secret-input input[aria-invalid='true'] { border-color: var(--theme-a83f32); } .config-secret-input input:disabled { cursor: not-allowed; background: var(--theme-f4f1ea); } .config-form-message { min-width: 0; overflow: hidden; color: transparent; font-size: var(--font-size-label); line-height: var(--line-height-body); text-overflow: ellipsis; white-space: nowrap; } .config-form-message.error { color: var(--theme-9f2d20); } .config-dialog-actions { display: grid; grid-template-columns: minmax(0, 1fr) 118px; gap: 10px; min-width: 0; } .config-dialog-actions.two-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); } .config-dialog-actions.single-action { grid-template-columns: 118px; justify-content: end; } .config-dialog-actions button { gap: 7px; height: 40px; } .close-dialog-backdrop { position: fixed; inset: 0; z-index: 110; display: grid; place-items: center; padding: 24px; background: rgba(45, 42, 38, 0.5); backdrop-filter: blur(4px); } .close-dialog { position: relative; display: grid; gap: 18px; width: min(430px, 100%); padding: 24px; border: 1px solid var(--theme-d5d2cb); border-radius: 10px; outline: none; background: var(--theme-fffdf8); box-shadow: 0 22px 60px rgba(45, 42, 38, 0.28); } .close-dialog-heading { display: grid; padding-right: 34px; } .close-dialog-dismiss { position: absolute; top: 12px; right: 12px; display: grid; width: 32px; height: 32px; padding: 0; place-items: center; border: 1px solid transparent; border-radius: 7px; background: transparent; color: var(--theme-7a746c); } .close-dialog-dismiss:hover:not(:disabled) { border-color: var(--theme-d5d2cb); background: var(--theme-f0ede6); color: var(--theme-2d2a26); } .close-dialog-dismiss:focus-visible { outline: 3px solid rgba(66, 99, 127, 0.3); outline-offset: 2px; } .close-dialog-dismiss:disabled { cursor: not-allowed; opacity: 0.45; } .close-dialog-heading h2 { margin: 0; color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); line-height: var(--line-height-tight); } .close-dialog > p { margin: 0; color: var(--theme-5f5a53); font-size: var(--font-size-body); line-height: var(--line-height-relaxed); } .close-dialog-error { padding: 9px 11px; border: 1px solid var(--theme-dfb7b0); border-radius: 6px; background: var(--theme-fff1ee); color: var(--theme-9f2d20); font-size: var(--font-size-label); line-height: var(--line-height-body); overflow-wrap: anywhere; } .close-dialog-remember { display: inline-flex; align-items: center; justify-self: start; gap: 8px; color: var(--theme-5f5a53); font-size: var(--font-size-label); cursor: pointer; } .close-dialog-remember input { width: 16px; height: 16px; margin: 0; accent-color: var(--theme-4f825c); } .close-dialog-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .close-choice-button { display: grid; min-height: 58px; gap: 3px; padding: 8px 12px; } .close-choice-button span { font-size: var(--font-size-body); } .close-choice-button:focus-visible { outline: 3px solid rgba(66, 99, 127, 0.36); outline-offset: 2px; } .config-software-panel { display: grid; gap: 18px; } .config-sensitive-words-panel { display: grid; width: min(780px, 100%); gap: 16px; margin: 0 auto; } .config-sensitive-words-grid { display: grid; gap: 12px; } .config-sensitive-words-card { display: grid; min-width: 0; gap: 12px; padding: 16px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); } .config-sensitive-words-card-heading { display: flex; align-items: center; gap: 8px; } .config-sensitive-words-card-heading h3 { margin: 0; color: var(--theme-39352f); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); } .config-sensitive-words-count { min-width: 22px; padding: 2px 6px; border-radius: 10px; background: var(--theme-f4f1ea); color: var(--theme-7a746c); font-size: var(--font-size-meta); text-align: center; } .config-sensitive-words-composer, .config-sensitive-words-row { display: grid; grid-template-columns: minmax(0, 1fr) 38px; align-items: center; gap: 8px; } .config-sensitive-words-composer .icon-button, .config-sensitive-words-row .icon-button { width: 38px; height: 38px; } .config-sensitive-words-list { display: grid; gap: 6px; } .config-sensitive-words-empty { margin: 0; padding: 6px 0; color: var(--theme-7a746c); font-size: var(--font-size-meta); } .config-software-panel > .config-panel-heading { width: min(960px, 100%); margin: 0 auto; } .config-software-content { display: grid; width: min(960px, 100%); margin: 0 auto; } .config-software-setting-icon { display: inline-flex; flex: none; align-items: center; justify-content: center; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); color: var(--theme-777067); } .config-software-setting-copy > div { display: grid; min-width: 0; gap: 4px; } .config-software-setting-copy strong { color: var(--theme-39352f); font-size: var(--font-size-body); line-height: var(--line-height-body); } .config-software-settings-list { overflow: hidden; border: 1px solid var(--theme-d5d2cb); border-radius: 10px; background: var(--theme-fffdf8); } .config-software-setting-row { display: flex; min-height: 92px; align-items: center; justify-content: space-between; gap: 24px; padding: 17px 20px; } .config-software-setting-row + .config-software-setting-row { border-top: 1px solid var(--theme-e3e1db); } .config-software-setting-copy { display: flex; min-width: 0; align-items: center; gap: 14px; } .config-software-setting-icon { width: 40px; height: 40px; background: var(--theme-faf8f2); } .config-software-setting-copy small { color: var(--theme-7a746c); font-size: var(--font-size-meta); font-weight: var(--font-weight-regular); line-height: var(--line-height-body); } .config-software-select { display: grid; width: 228px; flex: none; } .config-software-select .config-network-input { height: 42px; } @media (max-width: 520px) { .close-dialog-backdrop { padding: 16px; } .close-dialog { padding: 20px; } .close-dialog-actions { grid-template-columns: 1fr; } } @media (max-width: 700px) { .config-software-panel .config-panel-heading { align-items: flex-start; } .config-software-setting-row { min-height: 84px; gap: 16px; padding: 15px 16px; } .config-software-close-row { align-items: flex-start; flex-direction: column; } .config-software-select { width: 100%; padding-left: 54px; } } @media (max-width: 480px) { .config-diagnostics-toggle-grid, .config-diagnostics-fields { grid-template-columns: 1fr; } .config-diagnostics-footer { align-items: stretch; grid-template-columns: 1fr; flex-direction: column; } .config-diagnostics-actions, .config-diagnostics-actions button { width: 100%; } .config-diagnostics-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .config-software-setting-row { padding: 14px; } .config-software-setting-copy { gap: 11px; } .config-software-setting-icon { width: 36px; height: 36px; } .config-software-select { padding-left: 47px; } } .config-delete-dialog { grid-template-rows: 40px 52px 40px; height: 202px; } .config-delete-dialog.has-warning { grid-template-rows: 40px 52px auto 40px; height: auto; min-height: 254px; } .config-delete-key { display: flex; min-width: 0; align-items: center; overflow: hidden; padding: 0 14px; border-radius: 6px; background: var(--theme-f4f1ea); color: var(--theme-2d2a26); font-size: var(--font-size-section); letter-spacing: 0; text-overflow: ellipsis; white-space: nowrap; } .config-delete-warning { display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: start; gap: 9px; padding: 10px 12px; border: 1px solid var(--theme-e2b6ae); border-radius: 6px; background: var(--theme-fff1ee); color: var(--theme-8f3025); font-size: var(--font-size-label); line-height: var(--line-height-body); } .config-delete-warning svg { margin-top: 1px; } .action-feedback.inline-notice { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 10px; width: 100%; min-height: 38px; padding: 8px 12px; margin: 10px 0; border: 1px solid var(--theme-b6d3bd); border-radius: 7px; background: var(--theme-eef7f0); color: var(--theme-2f6b3f); box-sizing: border-box; } .action-feedback.inline-notice.error { border-color: var(--theme-dfb7b0); background: var(--theme-fff1ee); color: var(--theme-9f2d20); } .action-feedback.inline-notice.info { border-color: var(--theme-c9d6e2); background: var(--theme-f1f6fa); color: var(--theme-42637f); } .action-feedback.inline-notice .action-feedback-main { display: flex; align-items: flex-start; gap: 8px; min-width: 0; } .action-feedback.inline-notice .action-feedback-icon { flex-shrink: 0; margin-top: 3px; } .action-feedback.inline-notice .action-feedback-text { min-width: 0; max-height: min(160px, 25vh); overflow-y: auto; overflow-x: hidden; font-size: var(--font-size-body); line-height: var(--line-height-body); overflow-wrap: anywhere; white-space: pre-wrap; padding-right: 4px; } .action-feedback.inline-notice .action-feedback-text:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; } .action-feedback.inline-notice .action-feedback-source { font-weight: var(--font-weight-semibold); margin-right: 4px; } .action-feedback.inline-notice .action-feedback-message { min-width: 0; } .action-feedback.inline-notice .action-feedback-dismiss { display: grid; place-items: center; width: 24px; height: 24px; padding: 0; border: 1px solid transparent; border-radius: 4px; background: transparent; color: inherit; cursor: pointer; flex-shrink: 0; margin-top: 1px; } .action-feedback.inline-notice .action-feedback-dismiss:hover { border-color: currentColor; background: rgba(0, 0, 0, 0.04); } :root[data-theme='dark'] .action-feedback.inline-notice .action-feedback-dismiss:hover { background: rgba(255, 255, 255, 0.08); } .management-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-width: 0; min-height: 54px; } .management-header > div { min-width: 0; } .management-header span { display: block; margin-bottom: 5px; overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-label); font-weight: var(--font-weight-regular); text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .management-header h1 { margin: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-page-title); line-height: var(--line-height-tight); text-overflow: ellipsis; white-space: nowrap; } .oauth-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr)); gap: 14px; } .oauth-browser-picker { display: flex; align-items: center; justify-content: flex-end; gap: 10px; color: var(--text-secondary); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); white-space: nowrap; } .oauth-browser-picker span { flex: none; margin: 0; overflow: visible; text-overflow: clip; text-transform: none; white-space: nowrap; } .oauth-browser-picker select { width: 240px; flex: none; height: 38px; padding: 0 34px 0 11px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-ffffff); color: var(--theme-2d2a26); } .oauth-card { display: grid; grid-template-rows: auto auto auto; gap: 12px; min-height: 0; align-content: start; } .provider-title-row { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 12px; min-width: 0; } .provider-title-row > div { min-width: 0; } .provider-title-row h2, .management-panel-heading h2 { margin: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-panel-title); line-height: var(--line-height-tight); text-overflow: ellipsis; white-space: nowrap; } .provider-title-row span:not(.state-pill), .management-panel-heading span { display: block; margin-top: 4px; overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } :root[data-theme='dark'] .devin-logo { filter: invert(1); } .provider-logo { width: 38px; height: 38px; flex: none; object-fit: contain; } .oauth-card-body { display: grid; gap: 9px; min-width: 0; align-content: start; } .oauth-hint { margin: 0; color: var(--theme-7a746c); font-size: var(--font-size-body); line-height: var(--line-height-body); } .oauth-auth-url-box { display: grid; gap: 8px; min-width: 0; padding: 12px; border: 1px solid var(--theme-e2ddd3); border-radius: 8px; background: var(--theme-f8f5ef); } .oauth-auth-url-label { color: var(--theme-7a746c); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .oauth-auth-url-value { min-width: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-label); line-height: var(--line-height-body); word-break: break-all; } .oauth-auth-url-actions, .oauth-callback-block { display: grid; gap: 10px; min-width: 0; } .oauth-auth-url-actions { grid-template-columns: repeat(2, minmax(0, max-content)); } .oauth-device-code-box { display: grid; grid-template-columns: minmax(0, 1fr) max-content; align-items: center; gap: 6px 10px; padding-top: 4px; } .oauth-device-code-box .oauth-auth-url-label { grid-column: 1 / -1; } .oauth-device-code-value { min-width: 0; color: var(--theme-2d2a26); font-size: 1.05rem; font-weight: var(--font-weight-semibold); letter-spacing: 0.08em; word-break: break-all; } .oauth-inline-status { min-width: 0; color: var(--theme-7a746c); font-size: var(--font-size-label); line-height: var(--line-height-body); } .oauth-inline-status.success { color: var(--theme-2f6b3a); } .oauth-inline-status.error { color: var(--theme-a33b2b); } .spin { animation: spin 0.9s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .oauth-callback-row { display: grid; grid-template-columns: minmax(0, 1fr) 96px; align-items: center; gap: 10px; min-width: 0; } .oauth-callback-row input, .management-toolbar input, .management-dialog input, .auth-filter-grid input, .auth-filter-grid select { width: 100%; min-width: 0; height: 40px; padding: 0 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-ffffff); color: var(--theme-2d2a26); } .oauth-callback-row input:disabled { cursor: not-allowed; background: var(--theme-f4f1ea); } .management-dialog textarea { width: 100%; min-width: 0; min-height: 78px; resize: vertical; padding: 9px 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-ffffff); color: var(--theme-2d2a26); font: inherit; line-height: var(--line-height-body); } .management-dialog label.multiline-field { grid-template-rows: 18px auto; } .oauth-callback-row > span { min-width: 0; overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-body); text-overflow: ellipsis; white-space: nowrap; } .management-card-actions { margin: 0; } .model-config-card { display: grid; gap: 10px; min-width: 0; padding: 12px; border: 1px solid var(--theme-e2ddd3); border-radius: 7px; background: var(--theme-faf9f5); } .model-config-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; } .model-config-heading > div { display: grid; gap: 3px; min-width: 0; } .model-config-heading span { color: var(--theme-5f5a53); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .model-config-heading small { color: var(--theme-7a746c); font-size: var(--font-size-meta); font-weight: var(--font-weight-regular); } .model-config-summary { display: grid; gap: 3px; min-width: 0; min-height: 48px; align-content: center; padding: 8px 10px; border: 1px dashed var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fffdf8); } .model-config-summary.has-models { border-style: solid; border-color: var(--theme-c9d8ca); background: var(--theme-f2f7f2); } .model-config-summary strong, .model-config-summary span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .model-config-summary strong { color: var(--theme-5f5a53); font-size: var(--font-size-label); } .model-config-summary span { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .model-config-entries { display: grid; gap: 6px; } .model-config-entry { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) auto; align-items: center; gap: 6px; } .model-config-entry input { width: 100%; min-width: 0; } .model-config-entry .icon-button { width: 32px; height: 32px; } .model-config-add { justify-self: start; } .model-picker-error { color: var(--theme-9f2d20); font-size: var(--font-size-meta); font-weight: var(--font-weight-regular); } .model-discovery-backdrop { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; padding: 24px; background: rgba(45, 42, 38, 0.54); backdrop-filter: blur(4px); } .model-discovery-dialog { display: grid; grid-template-rows: auto 38px auto minmax(190px, 1fr) 38px; gap: 10px; width: min(680px, 100%); height: min(540px, calc(100vh - 32px)); min-height: 400px; padding: 16px; border: 1px solid var(--theme-d5d2cb); border-radius: 9px; background: var(--theme-fffdf8); box-shadow: 0 24px 64px rgba(45, 42, 38, 0.3); } .model-discovery-header, .model-discovery-toolbar, .model-discovery-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; } .model-discovery-header > div { display: flex; align-items: baseline; gap: 8px; min-width: 0; } .model-discovery-header h2 { margin: 0; color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); } .model-discovery-header span, .model-discovery-toolbar > span { color: var(--theme-7a746c); font-size: var(--font-size-label); white-space: nowrap; } .model-discovery-search { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; align-items: center; gap: 8px; min-width: 0; padding: 0 8px 0 11px; border: 1px solid var(--theme-d5d2cb); border-radius: 7px; background: var(--theme-ffffff); color: var(--theme-8a847c); } .model-discovery-search input { width: 100%; min-width: 0; height: 38px; padding: 0; border: 0; outline: 0; background: transparent; color: var(--theme-2d2a26); } .model-discovery-search .compact-button { min-height: 30px; } .model-discovery-toolbar > div { display: flex; flex-wrap: wrap; gap: 7px; justify-content: flex-end; } .model-discovery-content { min-height: 0; overflow: hidden; border: 1px solid var(--theme-e2ddd3); border-radius: 7px; background: var(--theme-ffffff); } .model-discovery-list { height: 100%; overflow: auto; } .model-discovery-results { display: grid; grid-template-rows: auto minmax(0, 1fr); height: 100%; min-height: 0; } .model-discovery-inline-error { display: grid; gap: 2px; padding: 8px 11px; border-bottom: 1px solid var(--theme-dfb7b0); background: var(--theme-fff1ee); color: var(--theme-9f2d20); font-size: var(--font-size-meta); } .model-discovery-inline-error span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .model-discovery-row { display: grid; grid-template-columns: 18px minmax(0, 1fr) 18px; align-items: center; gap: 10px; min-height: 44px; padding: 6px 11px; border-bottom: 1px solid var(--theme-eeece6); color: var(--theme-5f5a53); cursor: pointer; } .model-discovery-row:last-child { border-bottom: 0; } .model-discovery-row:hover, .model-discovery-row.selected { background: var(--theme-f4f2ec); } .model-discovery-row input { width: 16px; height: 16px; margin: 0; } .model-discovery-row > span { display: grid; gap: 2px; min-width: 0; } .model-discovery-row strong, .model-discovery-row small { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .model-discovery-row strong { color: var(--theme-2d2a26); font-size: var(--font-size-label); } .model-discovery-row small { color: var(--theme-8a847c); font-size: var(--font-size-meta); font-weight: var(--font-weight-regular); } .model-discovery-row > svg { color: var(--theme-2f6b3a); } .model-discovery-message { display: grid; height: 100%; min-height: 190px; place-content: center; justify-items: center; gap: 8px; padding: 20px; color: var(--theme-7a746c); font-size: var(--font-size-label); text-align: center; } .model-discovery-message strong { color: var(--theme-5f5a53); font-size: var(--font-size-body); } .model-discovery-message.error, .model-discovery-message.error strong { color: var(--theme-9f2d20); } .model-discovery-actions { justify-content: flex-end; } .model-discovery-actions button { min-width: 112px; } .model-discovery-dialog.model-transfer-dialog { display: flex; flex-direction: column; width: min(960px, 100%); height: min(640px, calc(100dvh - 48px)); min-height: 0; } .model-transfer-summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--theme-7a746c); font-size: var(--font-size-label); } .model-transfer-summary > button { width: auto; flex: 0 0 auto; } .model-transfer-panels { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; flex: 1; min-height: 0; } .model-transfer-panel { display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; border: 1px solid var(--theme-e2ddd3); border-radius: 8px; background: var(--theme-ffffff); } .model-transfer-panel-heading { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 10px; } .model-transfer-panel-heading h3 { margin: 0; color: var(--theme-2d2a26); font-size: var(--font-size-label); } .model-transfer-panel-heading button { width: auto; flex: 0 0 auto; margin-left: auto; } .model-transfer-count { border-radius: 5px; padding: 2px 6px; background: var(--theme-f4f2ec); color: var(--theme-6d6760); font-size: var(--font-size-meta); font-variant-numeric: tabular-nums; } .model-transfer-search { display: flex; align-items: center; gap: 8px; margin: 0 10px 10px; padding: 0 8px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; color: var(--theme-8a847c); } .model-transfer-search:focus-within { outline: 2px solid var(--theme-9ca9df); outline-offset: 1px; } .model-transfer-search input { width: 100%; min-width: 0; height: 34px; padding: 0; border: 0; outline: 0; background: transparent; color: var(--theme-2d2a26); } .model-transfer-list { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; border-top: 1px solid var(--theme-eeece6); } .model-transfer-row { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 9px 12px; border: 0; border-bottom: 1px solid var(--theme-eeece6); background: transparent; color: var(--theme-6d6760); text-align: left; cursor: pointer; } .model-transfer-row:hover:not(:disabled) { background: var(--theme-f4f2ec); } .model-transfer-row:focus-visible { outline: 2px solid var(--theme-9ca9df); outline-offset: -2px; } .model-transfer-row > span { display: grid; flex: 1; min-width: 0; gap: 2px; } .model-transfer-row strong, .model-transfer-row small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .model-transfer-row strong { color: var(--theme-2d2a26); font-size: var(--font-size-label); } .model-transfer-row small { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .model-transfer-empty { display: grid; place-content: center; height: 100%; padding: 16px; color: var(--theme-7a746c); font-size: var(--font-size-label); text-align: center; } .model-transfer-actions { flex-wrap: wrap; } .model-transfer-actions > span { margin-right: auto; color: var(--theme-7a746c); font-size: var(--font-size-label); } @media (max-width: 600px) { .model-discovery-dialog.model-transfer-dialog { height: calc(100dvh - 24px); padding: 12px; } .model-transfer-panels { grid-template-columns: minmax(0, 1fr); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 8px; } .model-transfer-actions > span { width: 100%; } } .model-discovery-dialog.auth-model-dialog { grid-template-rows: auto 38px auto minmax(0, 1fr) auto auto; height: min(720px, calc(100vh - 32px)); min-height: 0; } .auth-model-dialog .model-discovery-header { align-items: flex-start; } .auth-model-dialog .model-discovery-header > div { display: grid; gap: 5px; flex: 1; } .auth-model-dialog .model-discovery-header span { white-space: normal; overflow-wrap: anywhere; } .auth-model-dialog .auth-model-target { color: var(--theme-2d2a26); font-weight: var(--font-weight-semibold); } .auth-model-provider { display: flex; align-items: center; gap: 8px; } .auth-model-provider select { min-width: 0; max-width: 100%; padding: 5px 8px; border: 1px solid var(--theme-d5d2cb); border-radius: 5px; background: var(--theme-ffffff); color: var(--theme-2d2a26); } .auth-model-rules { display: grid; gap: 5px; min-width: 0; font-size: var(--font-size-meta); } .auth-model-rules textarea { width: 100%; min-height: 64px; max-height: 150px; resize: vertical; padding: 8px; border: 1px solid var(--theme-d5d2cb); border-radius: 5px; background: var(--theme-ffffff); color: var(--theme-2d2a26); font: inherit; } .auth-model-rules small { color: var(--theme-7a746c); line-height: 1.5; } .auth-model-dialog .model-discovery-row.rule-blocked { background: var(--theme-f4f2ec); cursor: not-allowed; } .model-discovery-dialog.auth-model-view-dialog { grid-template-rows: auto 38px minmax(0, 1fr) auto; height: min(620px, calc(100vh - 32px)); } .auth-model-view-row { grid-template-columns: minmax(0, 1fr) 18px; width: 100%; text-align: left; border: 0; border-radius: 0; background: transparent; color: inherit; } @media (max-height: 650px) { .model-discovery-dialog.auth-model-dialog { height: auto; max-height: calc(100vh - 32px); overflow: auto; grid-template-rows: auto 38px auto minmax(140px, 1fr) auto auto; } .model-discovery-dialog.auth-model-view-dialog { grid-template-rows: auto 38px minmax(140px, 1fr) auto; } } .provider-health-dialog { width: min(780px, 100%); height: min(660px, calc(100vh - 32px)); } .provider-health-overview { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 5px 14px; min-width: 0; padding: 9px 11px; border: 1px solid var(--theme-dfbf91); border-radius: 7px; background: var(--theme-fff7e9); } .provider-health-overview p, .provider-health-overview span, .provider-health-overview small { margin: 0; font-size: var(--font-size-label); line-height: var(--line-height-body); } .provider-health-overview p { min-width: 0; color: var(--theme-8b5b21); } .provider-health-overview span { color: var(--theme-5f5a53); font-variant-numeric: tabular-nums; font-weight: var(--font-weight-semibold); white-space: nowrap; } .provider-health-overview small { grid-column: 1 / -1; min-width: 0; overflow: hidden; color: var(--theme-7a746c); text-overflow: ellipsis; white-space: nowrap; } .provider-health-overview small.error { color: var(--theme-9f2d20); } .provider-health-model-list { min-height: 0; border: 1px solid var(--theme-e2ddd3); border-radius: 7px; background: var(--theme-ffffff); } .provider-health-model-row { display: grid; grid-template-columns: minmax(0, 1fr) auto 88px; align-items: center; gap: 10px; min-height: 54px; padding: 7px 10px; border-bottom: 1px solid var(--theme-eeece6); } .provider-health-model-row:last-child { border-bottom: 0; } .provider-health-model-row.failed { background: var(--theme-fff1ee); } .provider-health-model-name { display: grid; gap: 3px; min-width: 0; } .provider-health-model-name strong, .provider-health-model-name small { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .provider-health-model-name strong { color: var(--theme-2d2a26); font-family: var(--font-family-mono); font-size: var(--font-size-label); } .provider-health-model-name small { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .provider-health-model-name small.error { color: var(--theme-9f2d20); } .provider-health-model-row .provider-health-pill { max-width: 180px; overflow: hidden; text-overflow: ellipsis; } .provider-health-single-button { width: 88px; min-width: 88px; margin-top: 0; } .provider-health-actions .primary-button { min-width: 150px; } .management-card-actions button, .management-heading-actions button { gap: 7px; } .provider-workbench { display: grid; grid-template-columns: 270px minmax(0, 1fr); align-items: start; gap: 14px; } .provider-category-panel { display: grid; gap: 8px; height: 520px; overflow: hidden; } .provider-category-panel button { display: grid; grid-template-columns: 30px minmax(0, 1fr) minmax(24px, auto); align-items: center; gap: 8px; height: 48px; min-width: 0; padding: 0 10px; border: 1px solid transparent; border-radius: 10px; background: transparent; color: var(--text-primary); } .provider-category-panel button:hover { background: var(--bg-tertiary); } .provider-category-panel button.active { border-color: transparent; background: var(--bg-tertiary); } .provider-category-panel .provider-logo { width: 30px; height: 30px; } .provider-category-panel span, .provider-category-panel strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .provider-category-panel span { line-height: var(--line-height-tight); overflow-wrap: anywhere; text-align: left; font-weight: var(--font-weight-semibold); text-overflow: clip; white-space: normal; } .provider-category-panel strong { color: var(--theme-7a746c); font-size: var(--font-size-label); text-align: right; } .provider-resource-panel { display: grid; grid-template-rows: 52px 42px minmax(0, 1fr); gap: 14px; height: 520px; } .management-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 0; } .management-panel-heading > div { min-width: 0; } .management-heading-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex: none; } .management-toolbar { display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 9px; min-width: 0; padding: 0 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 7px; background: var(--theme-ffffff); } .management-toolbar input { height: 38px; padding: 0; border: 0; } .resource-table { min-height: 0; overflow: auto; border-top: 1px solid var(--theme-e3e1db); border-bottom: 1px solid var(--theme-e3e1db); scrollbar-gutter: stable; } .resource-row { display: grid; grid-template-columns: minmax(150px, 1fr) minmax(108px, 0.8fr) minmax(170px, 1fr) 48px 74px; align-items: center; gap: 12px; min-height: 64px; padding: 0 4px 0 0; border-bottom: 1px solid var(--theme-eeece6); } .resource-row:last-child { border-bottom: 0; } .resource-main { display: grid; gap: 4px; min-width: 0; } .resource-main strong, .resource-main span, .resource-row code, .resource-models, .resource-priority { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .resource-main strong { color: var(--theme-2d2a26); font-size: var(--font-size-section); } .resource-main span, .resource-models, .resource-priority { color: var(--theme-7a746c); font-size: var(--font-size-label); } .resource-row code { color: var(--theme-2d2a26); font-size: var(--font-size-label); } .resource-priority { text-align: right; font-variant-numeric: tabular-nums; font-weight: var(--font-weight-semibold); } .resource-row .state-pill { width: 70px; } .management-empty { display: grid; height: 100%; min-height: 220px; place-content: center; justify-items: center; gap: 10px; color: var(--theme-7a746c); } .management-empty strong { color: var(--theme-2d2a26); font-size: var(--font-size-section); } .management-dialog { display: grid; grid-template-rows: 40px repeat(3, 64px) 40px; gap: 14px; width: min(460px, 100%); height: 358px; padding: 22px; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; background: var(--theme-fffdf8); box-shadow: 0 18px 48px rgba(45, 42, 38, 0.24); } .management-dialog label, .auth-filter-grid label { display: grid; grid-template-rows: 18px 40px; gap: 6px; min-width: 0; color: var(--theme-7a746c); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .auth-files-panel { display: grid; grid-template-rows: 42px 64px minmax(0, 1fr); gap: 14px; height: 610px; } .auth-filter-grid { display: grid; grid-template-columns: 160px 150px minmax(0, 1fr); gap: 12px; min-width: 0; } .auth-file-list { min-height: 0; overflow: auto; border-top: 1px solid var(--theme-e3e1db); border-bottom: 1px solid var(--theme-e3e1db); scrollbar-gutter: stable; } .auth-file-row { display: grid; grid-template-columns: 42px minmax(150px, 1.2fr) minmax(130px, 1fr) 48px 74px 34px; align-items: center; gap: 12px; min-height: 68px; padding: 0 4px 0 0; border-bottom: 1px solid var(--theme-eeece6); } .auth-file-row:last-child { border-bottom: 0; } .auth-file-row > span:not(.state-pill) { min-width: 0; overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .muted-summary { color: var(--theme-7a746c); font-size: var(--font-size-label); white-space: nowrap; } .management-alert { display: flex; align-items: center; min-height: 38px; padding: 0 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 7px; background: var(--theme-fffdf8); color: var(--theme-5f5a53); font-size: var(--font-size-body); } .management-alert.error { border-color: var(--theme-dfb7b0); background: var(--theme-fff1ee); color: var(--theme-9f2d20); } .management-alert.success { border-color: var(--theme-b8d1bb); background: var(--theme-f1f8f1); color: var(--theme-2f6b3f); } .real-provider-workbench { grid-template-columns: 240px minmax(0, 1fr); } .real-provider-workbench .provider-category-panel { height: auto; min-height: 0; } .real-provider-workbench .provider-resource-panel { display: block; height: auto; min-height: 500px; } .compact-toolbar { width: min(320px, 42%); min-height: 38px; } .real-provider-list { margin-top: 16px; border-top: 1px solid var(--theme-e3e1db); } .real-provider-row { display: grid; grid-template-columns: 32px minmax(280px, 1.6fr) minmax(120px, 0.5fr) max-content; align-items: start; gap: 16px; min-height: 88px; padding: 14px 0; border-bottom: 1px solid var(--theme-eeece6); transition: background 180ms ease, box-shadow 180ms ease, opacity 160ms ease; } .real-provider-row.dragging { border-radius: 10px; background: var(--theme-faf9f5); box-shadow: 0 10px 28px rgb(45 42 38 / 14%); opacity: 0.96; } .real-provider-row.drag-over { background: color-mix(in srgb, var(--theme-f4f1ea) 65%, transparent); } .real-provider-row.disabled > :not(.provider-row-actions) { opacity: 0.68; } .provider-drag-handle { margin-top: -2px; cursor: grab; color: var(--theme-9b958c); touch-action: none; } .provider-drag-handle:hover { color: var(--theme-2d2a26); } .provider-drag-handle:active { cursor: grabbing; } @media (prefers-reduced-motion: reduce) { .real-provider-row { transition: none; } } .provider-row-main, .provider-row-title, .provider-row-meta, .provider-row-actions, .auth-file-main, .auth-file-title, .auth-file-meta, .auth-file-actions { display: flex; align-items: center; min-width: 0; } .provider-row-main { display: grid; gap: 5px; } .provider-row-main > span, .provider-row-main > code, .provider-row-meta span { min-width: 0; overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .provider-row-main > code { color: var(--theme-2d2a26); } .provider-row-main > .provider-row-url, .provider-row-main > .provider-row-models { overflow: visible; line-height: var(--line-height-body); overflow-wrap: anywhere; text-overflow: clip; white-space: normal; } .provider-row-title { align-items: flex-start; gap: 8px; } .provider-row-title strong, .auth-file-title strong { min-width: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-section); text-overflow: ellipsis; white-space: nowrap; } .provider-row-title strong { line-height: var(--line-height-body); overflow-wrap: anywhere; text-overflow: clip; white-space: normal; } .provider-row-title .state-pill { flex: none; } .provider-health-pill { min-height: 24px; padding: 0 8px; font-size: var(--font-size-meta); } .provider-health-pill.checking { border-color: var(--theme-d5d2cb); background: var(--theme-f4f1ea); color: var(--theme-5f5a53); } .provider-row-meta { align-items: flex-end; flex-direction: column; justify-content: flex-end; gap: 6px; padding-top: 2px; } .provider-row-actions, .auth-file-actions { justify-content: flex-end; gap: 7px; } .provider-row-actions .provider-health-button { min-width: max-content; width: auto; flex: 0 0 auto; min-height: 30px; overflow: visible; padding: 0 10px; font-size: var(--font-size-label); text-overflow: clip; white-space: nowrap; } .provider-enabled-control { display: flex; min-width: 108px; align-items: center; justify-content: flex-end; gap: 8px; color: var(--theme-7a746c); font-size: var(--font-size-meta); white-space: nowrap; } .provider-enabled-control .switch-control { display: inline-block; flex: none; } .management-loading { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 240px; color: var(--theme-7a746c); } .real-provider-workbench .management-empty { min-height: 360px; } .config-dialog.api-provider-dialog { grid-template-rows: auto; grid-auto-rows: auto; width: min(560px, 100%); height: auto; min-height: 0; max-height: min(720px, calc(100vh - 48px)); max-height: min(720px, calc(100dvh - 48px)); overflow: auto; overscroll-behavior: contain; gap: 10px; padding: 16px 18px; scrollbar-gutter: stable; } .api-provider-dialog .config-dialog-heading { position: sticky; z-index: 3; top: -16px; margin: -16px -18px 0; padding: 14px 18px 10px; border-bottom: 1px solid var(--theme-e8e4dc); background: var(--theme-fffdf8); } .api-provider-dialog .config-dialog-actions { position: sticky; z-index: 3; bottom: -16px; margin: 0 -18px -16px; padding: 10px 18px 16px; border-top: 1px solid var(--theme-e8e4dc); background: var(--theme-fffdf8); } .api-provider-dialog label { grid-template-rows: 16px 36px; gap: 4px; } .api-provider-dialog input { height: 36px; } .api-provider-dialog .api-provider-proxy-clear { justify-self: start; } .api-provider-dialog textarea { min-height: 64px; padding-block: 7px; } .api-provider-dialog .model-config-card, .api-provider-dialog .thinking-level-config { gap: 7px; padding: 9px 10px; } .api-provider-dialog .model-config-summary { min-height: 42px; } .thinking-level-config { display: grid; gap: 9px; padding: 11px 12px; border: 1px solid var(--theme-e2ddd3); border-radius: 7px; background: var(--theme-faf9f5); } .thinking-level-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; } .thinking-level-heading strong { color: var(--theme-5f5a53); font-size: var(--font-size-label); } .thinking-level-heading span { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .thinking-level-entry { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px; } .thinking-level-entry input { width: 100%; min-width: 0; height: 36px; padding: 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-2d2a26); } .thinking-level-tags { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; } .thinking-level-tags > span { display: inline-flex; min-height: 28px; align-items: center; gap: 5px; padding: 0 7px 0 9px; border: 1px solid var(--theme-d5d2cb); border-radius: 999px; background: var(--theme-fffdf8); color: var(--theme-6d6760); font-size: var(--font-size-meta); font-weight: var(--font-weight-semibold); } .thinking-level-tags.readonly > span { padding-right: 9px; border-color: var(--theme-9ca9df); background: var(--theme-eef1ff); color: var(--theme-344ca1); } .thinking-level-tags button { display: inline-flex; width: 20px; height: 20px; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 999px; background: transparent; color: var(--theme-8a847c); } .thinking-level-tags button:hover { background: var(--theme-eeece6); color: var(--theme-2d2a26); } .thinking-level-empty { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .provider-advanced-settings { border: 1px solid var(--theme-e2ddd3); border-radius: 7px; background: var(--theme-faf9f5); } .provider-advanced-settings > summary { padding: 11px 12px; color: var(--theme-5f5a53); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); cursor: pointer; } .provider-advanced-fields { display: grid; gap: 14px; padding: 4px 12px 14px; border-top: 1px solid var(--theme-e8e4dc); } .provider-advanced-toggle { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 48px; } .provider-advanced-toggle > div { display: grid; gap: 3px; min-width: 0; } .provider-advanced-toggle strong { color: var(--theme-5f5a53); font-size: var(--font-size-label); } .provider-advanced-toggle > div > span { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .provider-advanced-toggle .switch-control { display: inline-block; flex: 0 0 auto; } .provider-cloak-settings { display: grid; gap: 14px; padding: 12px; border: 1px dashed var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fffdf8); } .provider-cloak-settings select, .provider-advanced-toggle > select { width: 100%; min-width: 0; height: 40px; padding: 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-ffffff); color: var(--theme-2d2a26); } .provider-advanced-toggle > select { width: auto; max-width: 55%; flex: 0 1 auto; } .thinking-alias-page { grid-template-rows: auto; gap: 12px; } .thinking-alias-feedback { min-height: 0; overflow: hidden; } .thinking-alias-feedback:empty { display: none; } .thinking-alias-feedback .management-alert { min-height: 42px; } .thinking-alias-workbench { display: grid; grid-template-columns: minmax(min(480px, 100%), 1.4fr) minmax(min(320px, 100%), 0.6fr); gap: 16px; align-items: stretch; } .thinking-alias-editor-panel, .thinking-alias-list-panel { height: clamp(600px, calc(100vh - 250px), 720px); min-height: 600px; } .thinking-alias-editor-panel { position: relative; z-index: 2; display: flex; flex-direction: column; gap: 12px; padding: 16px; overflow: visible; } .management-dialog.thinking-alias-dialog { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; width: min(640px, calc(100vw - 32px)); height: auto; min-height: 0; max-height: min(780px, calc(100vh - 40px)); padding: 0; gap: 0; overflow: hidden; border-radius: 12px; } .thinking-alias-dialog .thinking-alias-panel-heading { padding: 18px 20px 16px; } .thinking-alias-dialog .thinking-alias-panel-heading > div { flex: 1; } .thinking-alias-dialog .thinking-alias-panel-heading > .icon-button { margin-left: auto; } .thinking-alias-dialog-body { display: grid; grid-auto-rows: max-content; align-content: start; gap: 18px; min-height: 0; padding: 18px 20px; overflow-y: auto; scrollbar-gutter: stable; } .thinking-alias-dialog .thinking-alias-field > label { display: block; height: auto; grid-template-rows: none; } .thinking-alias-dialog .thinking-field-heading > strong { flex: none; } .thinking-alias-dialog .thinking-field-heading { display: grid; justify-content: stretch; gap: 3px; } .thinking-alias-dialog .thinking-field-heading > span { min-width: 0; line-height: var(--line-height-body); text-overflow: initial; white-space: normal; } .thinking-alias-dialog .thinking-alias-field > .thinking-fast-option { display: flex; grid-template-rows: none; } .thinking-alias-dialog-actions { display: flex; gap: 10px; padding: 14px 20px 18px; border-top: 1px solid var(--theme-e3e1db); background: var(--theme-fffdf8); } .thinking-alias-dialog-actions > button { width: auto; flex: 1; } .thinking-alias-dialog-actions .thinking-alias-create { margin-top: 0; } .thinking-alias-section-divider { height: 1px; flex: none; margin: 2px 0; background: var(--theme-e3e1db); } .thinking-alias-panel-heading { display: flex; align-items: center; gap: 11px; padding-bottom: 11px; border-bottom: 1px solid var(--theme-e3e1db); } .thinking-alias-panel-heading > span { display: grid; width: 38px; height: 38px; flex: none; place-items: center; border: 1px solid var(--theme-d8d1eb); border-radius: 8px; background: var(--theme-f5f1ff); color: var(--theme-654f91); } .thinking-alias-panel-heading > div { display: grid; min-width: 0; gap: 3px; } .thinking-alias-panel-heading h2, .thinking-alias-list-heading h2 { margin: 0; color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); } .thinking-alias-panel-heading p, .thinking-alias-list-heading span { margin: 0; color: var(--theme-8a847c); font-size: var(--font-size-section); line-height: var(--line-height-body); } .thinking-alias-field { display: grid; min-height: 0; gap: 6px; } .thinking-model-field { position: relative; z-index: 10; } .thinking-alias-field > label { color: var(--theme-6f6961); font-size: var(--font-size-section); font-weight: var(--font-weight-semibold); } .thinking-field-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .thinking-field-heading strong { color: var(--theme-6f6961); font-size: var(--font-size-section); } .thinking-field-heading span { overflow: hidden; color: var(--theme-918a81); font-size: var(--font-size-body); text-overflow: ellipsis; white-space: nowrap; } .thinking-model-picker { position: relative; min-width: 0; } .thinking-model-search { display: flex; align-items: center; gap: 7px; height: 36px; padding: 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-8a847c); } .thinking-model-search input { flex: 1; min-width: 0; height: 34px; padding: 0; border: 0; outline: 0; background: transparent; color: var(--theme-2d2a26); font-size: var(--font-size-section); } .thinking-source-kind { max-width: 105px; overflow: hidden; padding: 3px 6px; border: 1px solid var(--theme-d8d1eb); border-radius: 999px; background: var(--theme-f5f1ff); color: var(--theme-654f91); font-size: var(--font-size-meta); font-weight: var(--font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; } .thinking-model-list { position: absolute; z-index: 40; top: calc(100% + 6px); right: 0; left: 0; max-height: 270px; overflow-y: auto; border: 1px solid var(--theme-e5e1d9); border-radius: 7px; background: var(--theme-fff); box-shadow: 0 12px 28px rgba(45, 42, 38, 0.16); } .thinking-model-list > button { display: grid; grid-template-columns: minmax(0, 1fr) 16px; align-items: center; gap: 8px; width: 100%; min-height: 43px; padding: 7px 10px; border: 0; border-bottom: 1px solid var(--theme-eeeae2); background: transparent; color: var(--theme-2d2a26); text-align: left; } .thinking-model-list > button:last-child { border-bottom: 0; } .thinking-model-list > button:hover, .thinking-model-list > button.active { background: var(--theme-f2efe8); } .thinking-model-list > button.selected { background: var(--theme-f7f3ff); } .thinking-model-option-copy { display: grid; min-width: 0; gap: 5px; } .thinking-model-option-copy > span:first-child { display: flex; min-width: 0; align-items: baseline; gap: 7px; } .thinking-model-option-copy strong, .thinking-model-option-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .thinking-model-option-copy strong { font-size: var(--font-size-section); } .thinking-model-option-copy > span:first-child small { color: var(--theme-8a847c); font-size: var(--font-size-body); } .thinking-model-source { display: flex; min-width: 0; align-items: center; gap: 5px; } .thinking-model-source em { flex: none; padding: 2px 5px; border-radius: 4px; background: var(--theme-eeece6); color: var(--theme-5f5a53); font-size: var(--font-size-meta); font-style: normal; font-weight: var(--font-weight-semibold); } .thinking-model-source small { color: var(--theme-8a847c); font-size: var(--font-size-body); } .thinking-model-list > button > svg { color: var(--theme-2f6b3f); } .thinking-model-empty { display: flex; min-height: 82px; align-items: center; justify-content: center; gap: 7px; color: var(--theme-8a847c); font-size: var(--font-size-body); } .thinking-model-selection { display: flex; min-width: 0; align-items: center; gap: 6px; color: var(--theme-777067); font-size: var(--font-size-body); } .thinking-model-selection > span { flex: none; padding: 2px 5px; border-radius: 4px; background: var(--theme-eeece6); color: var(--theme-5f5a53); font-weight: var(--font-weight-semibold); } .thinking-model-selection strong { min-width: 0; overflow: hidden; font-weight: var(--font-weight-medium); text-overflow: ellipsis; white-space: nowrap; } .thinking-model-hint { color: var(--theme-918a81); font-size: var(--font-size-body); line-height: var(--line-height-body); } .thinking-effort-options { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; } .thinking-effort-options button { height: 34px; padding: 0 4px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-7a746c); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); } .thinking-effort-options button.active { border-color: var(--theme-8069ad); background: var(--theme-f1ecfb); color: var(--theme-554075); } .thinking-effort-options button:disabled { cursor: not-allowed; opacity: 0.45; } .thinking-fast-option { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 48px; padding: 8px 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 7px; background: var(--theme-fff); color: var(--theme-7a746c); cursor: pointer; transition: border-color 140ms ease, background 140ms ease, color 140ms ease; } .thinking-fast-option:hover { border-color: var(--theme-d7a447); } .thinking-fast-option.active { border-color: var(--theme-d7a447); background: var(--theme-fff8eb); color: var(--theme-805a24); } .thinking-fast-option-copy { display: grid; min-width: 0; gap: 2px; } .thinking-fast-option-copy > span { display: inline-flex; align-items: center; gap: 5px; font-size: var(--font-size-section); font-weight: var(--font-weight-semibold); } .thinking-fast-option-copy small { color: var(--theme-9a938a); font-size: var(--font-size-label); } .thinking-fast-option.active .thinking-fast-option-copy small { color: var(--theme-805a24); } .thinking-fast-option:has(input:disabled) { cursor: not-allowed; opacity: 0.55; } .thinking-fast-switch { width: 42px; height: 23px; } .thinking-fast-switch input:checked + .switch-track { border-color: var(--theme-d7a447); background: var(--theme-d7a447); } .thinking-alias-input { width: 100%; height: 36px; padding: 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; outline: 0; background: var(--theme-fff); color: var(--theme-2d2a26); font-size: var(--font-size-section); } .thinking-alias-input:focus, .thinking-model-search:focus-within { border-color: var(--theme-9d8abd); box-shadow: 0 0 0 2px rgba(128, 105, 173, 0.12); } .thinking-alias-preview { display: grid; grid-template-columns: 22px minmax(0, 1fr); align-items: center; gap: 9px; min-height: 56px; padding: 9px 11px; border: 1px solid var(--theme-d8d1eb); border-radius: 7px; background: var(--theme-f8f5ff); color: var(--theme-654f91); } .thinking-alias-preview > div { display: grid; min-width: 0; gap: 4px; } .thinking-alias-preview span { display: flex; min-width: 0; align-items: center; gap: 5px; overflow: hidden; color: var(--theme-3f3550); font-size: var(--font-size-section); font-weight: var(--font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; } .thinking-alias-preview code { color: var(--theme-8069ad); font-size: var(--font-size-body); } .thinking-alias-create { width: 100%; margin-top: auto; } .thinking-alias-list-panel { display: grid; grid-template-rows: minmax(0, 1fr); padding: 16px; } .thinking-alias-list-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 11px; border-bottom: 1px solid var(--theme-e3e1db); } .thinking-alias-list-heading > div { display: grid; min-width: 0; gap: 3px; } .thinking-alias-list-heading > strong { display: grid; min-width: 32px; height: 26px; place-items: center; border-radius: 999px; background: var(--theme-eeece6); color: var(--theme-5f5a53); font-size: var(--font-size-body); } .thinking-alias-list { min-height: 0; overflow-y: auto; } .thinking-alias-row { display: grid; grid-template-columns: minmax(0, 1fr) auto 34px; align-items: center; gap: 10px; min-height: 66px; padding: 9px 7px 9px 10px; border-bottom: 1px solid var(--theme-eeeae2); } .thinking-alias-row:last-child { border-bottom: 0; } .thinking-alias-route { display: grid; grid-template-columns: minmax(80px, 1fr) 16px minmax(100px, 1fr); align-items: center; gap: 7px; min-width: 0; } .thinking-alias-route span, .thinking-alias-route strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .thinking-alias-route-source > span { color: var(--theme-7a746c); font-size: var(--font-size-section); } .thinking-alias-route-source { display: grid; min-width: 0; gap: 3px; } .thinking-alias-route-source > small { display: flex; min-width: 0; align-items: center; gap: 4px; } .thinking-alias-route-source > small em { flex: none; padding: 1px 4px; border-radius: 3px; background: var(--theme-eeece6); color: var(--theme-6f6961); font-size: var(--font-size-caption); font-style: normal; font-weight: var(--font-weight-semibold); } .thinking-alias-route-source > small span { color: var(--theme-9a938a); font-size: var(--font-size-label); } .thinking-alias-route strong { color: var(--theme-2d2a26); font-size: var(--font-size-section); } .thinking-alias-route svg { color: var(--text-tertiary); } .thinking-effort-badge { min-width: 52px; padding: 5px 8px; border: 1px solid var(--theme-d8d1eb); border-radius: 999px; background: var(--theme-f5f1ff); color: var(--theme-654f91); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); text-align: center; text-transform: uppercase; } .thinking-alias-badges { display: flex; align-items: center; justify-content: flex-end; gap: 5px; } .thinking-effort-badge.missing { border-color: var(--theme-e4d0af); background: var(--theme-fff8eb); color: var(--theme-805a24); text-transform: none; } .thinking-effort-badge.fast { border-color: var(--theme-d7a447); background: var(--theme-fff8eb); color: var(--theme-805a24); } .agent-workbench { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 3fr); min-height: 0; gap: 16px; align-items: stretch; } .agent-client-list { min-width: 0; min-height: 0; } .agent-config-panel { min-height: 0; overflow: visible; } .agents-page { grid-template-rows: minmax(0, 1fr); gap: 14px; } .agents-page-embedded { grid-template-rows: minmax(48px, auto) minmax(0, 1fr); } .agents-page-embedded .agent-client-list { min-height: 0; } .agent-inline-message { display: block; min-width: 0; color: var(--theme-7a746c); font-size: var(--font-size-label); line-height: var(--line-height-body); overflow-wrap: anywhere; } .agent-inline-message.error, .agent-model-hint.error { color: var(--theme-9f2d20); } .agent-inline-message.warning { color: var(--theme-805a24); } .agent-client-list { position: relative; display: flex; flex-direction: column; overflow: hidden; gap: 10px; padding: 14px; } .agent-client-list-heading { display: flex; flex: none; align-items: center; justify-content: space-between; gap: 10px; min-height: 32px; } .agent-client-list-heading strong { min-width: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-section); font-weight: var(--font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; } .agent-client-list-heading .icon-button { width: 30px; height: 30px; } .agent-list-items button > span { display: grid; width: 100%; min-width: 0; gap: 3px; } .agent-list-items strong { min-width: 0; max-width: 100%; color: var(--theme-2d2a26); font-size: var(--font-size-section); line-height: 1.3; overflow-wrap: break-word; } .agent-list-items small { min-width: 0; max-width: 100%; color: var(--theme-8a847c); font-size: var(--font-size-meta); line-height: 1.4; overflow-wrap: anywhere; white-space: normal; } .agent-list-items { position: relative; flex: 1 1 auto; display: grid; align-content: start; grid-auto-rows: max-content; gap: 6px; height: auto; min-height: 0; max-height: none; overflow-y: auto; overscroll-behavior: contain; padding-right: 4px; scrollbar-color: var(--border-primary) transparent; scrollbar-gutter: stable; scrollbar-width: thin; } .agent-list-items::-webkit-scrollbar { width: 10px; } .agent-list-items::-webkit-scrollbar-track { background: transparent; } .agent-list-items::-webkit-scrollbar-thumb { min-height: 48px; border: 3px solid transparent; border-radius: 999px; background: var(--border-primary); background-clip: padding-box; } .agent-list-items::-webkit-scrollbar-thumb:hover { border-width: 2px; background-color: var(--border-hover); } .agent-list-items::-webkit-scrollbar-thumb:active { border-width: 2px; background-color: color-mix(in srgb, var(--border-hover) 72%, var(--text-quaternary)); } .agent-list-items::-webkit-scrollbar-button { display: none; } .agent-list-items button { display: grid; grid-template-columns: 28px minmax(0, 1fr) 8px; align-items: center; gap: 9px; width: 100%; min-height: 58px; padding: 8px 9px; border: 1px solid transparent; border-radius: 7px; background: transparent; color: var(--theme-2d2a26); text-align: left; } .agent-list-items button:hover { background: var(--theme-f4f1ea); } .agent-list-items button.active { border-color: var(--theme-d5d2cb); background: var(--theme-eeece6); } .agent-list-items .provider-logo { width: 26px; height: 26px; } .agent-client-icon { display: grid; width: 28px; height: 28px; place-items: center; color: var(--theme-5f5a53); } .agent-client-icon .provider-logo { object-fit: contain; } .agent-installed-indicator { width: 8px; height: 8px; border-radius: 50%; background: var(--theme-5d9a6c); } .agent-config-panel { display: flex; flex-direction: column; gap: 14px; container-type: inline-size; container-name: agent-panel; } .agent-config-scroll-region { display: grid; min-width: 0; min-height: 0; align-content: start; grid-auto-rows: max-content; gap: 14px; } .agent-subpage-tabs { display: inline-grid; grid-auto-flow: column; justify-self: start; max-width: 100%; gap: 3px; padding: 3px; overflow-x: auto; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; background: var(--theme-eeece6); } .agent-subpage-tabs button { display: inline-flex; min-width: 104px; height: 34px; align-items: center; justify-content: center; padding: 0 12px; border: 0; border-radius: 6px; background: transparent; color: var(--theme-7a746c); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); white-space: nowrap; } .agent-subpage-tabs button:hover, .agent-subpage-tabs button.active { background: var(--theme-fffdf8); color: var(--theme-2d2a26); } .agent-subpage-tabs button.active { box-shadow: 0 1px 4px rgba(45, 42, 38, 0.14); } .oauth-management-page, .oauth-subpage-panel { display: grid; min-width: 0; gap: 18px; } .agent-core-config { display: grid; min-width: 0; align-content: start; gap: 14px; } .agent-sessions-page { display: grid; min-width: 0; min-height: 360px; align-content: start; } .codex-sessions-page { display: grid; min-width: 0; align-content: start; gap: 12px; } .codex-session-overview, .codex-session-list-section { display: grid; min-width: 0; gap: 12px; padding: 16px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-faf9f5); } .codex-session-overview-head, .codex-session-list-head { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 14px; } .codex-session-overview-head > div, .codex-session-list-head > div:first-child { display: grid; min-width: 0; gap: 4px; } .codex-session-overview-head strong, .codex-session-list-head strong { color: var(--theme-2d2a26); font-size: var(--font-size-section); } .codex-session-overview-head span, .codex-session-list-head > div:first-child > span { color: var(--theme-8a847c); font-size: var(--font-size-label); line-height: var(--line-height-body); } .codex-session-overview-head .compact-button, .codex-session-selection-actions .compact-button, .codex-session-repair-actions .compact-button, .codex-session-delete-button { min-height: 32px; margin-top: 0; padding: 0 10px; font-size: var(--font-size-label); } .codex-session-metrics { display: grid; grid-template-columns: repeat(3, minmax(74px, 0.55fr)) minmax(150px, 2fr); gap: 8px; } .codex-session-metrics > div { display: grid; min-width: 0; gap: 5px; padding: 10px 11px; border: 1px solid var(--theme-e3e1db); border-radius: 7px; background: var(--theme-fffdf8); } .codex-session-metrics span { display: flex; min-width: 0; align-items: center; gap: 5px; color: var(--theme-8a847c); font-size: var(--font-size-meta); } .codex-session-metrics strong { min-width: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); text-overflow: ellipsis; white-space: nowrap; } .codex-session-database-metric strong { direction: rtl; font-family: var(--font-family-mono); font-size: var(--font-size-meta); text-align: left; } .codex-session-repair-panel { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px 18px; padding: 12px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); } .codex-session-repair-copy, .codex-session-repair-actions, .codex-session-selection-actions, .codex-session-notice, .codex-session-pagination { display: flex; align-items: center; } .codex-session-repair-copy { min-width: 0; gap: 9px; color: var(--theme-5f5a53); } .codex-session-repair-copy > div { display: grid; min-width: 0; gap: 3px; } .codex-session-repair-copy strong { color: var(--theme-2d2a26); font-size: var(--font-size-body); } .codex-session-repair-copy span { color: var(--theme-8a847c); font-size: var(--font-size-meta); line-height: var(--line-height-body); } .codex-session-repair-actions { flex: none; gap: 10px; } .codex-session-repair-progress { display: grid; grid-column: 1 / -1; gap: 6px; } .codex-session-repair-progress > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--theme-7a746c); font-size: var(--font-size-meta); } .codex-session-progress-track { height: 5px; overflow: hidden; border-radius: 999px; background: var(--theme-dce8df); } .codex-session-progress-track i { display: block; height: 100%; border-radius: inherit; background: var(--theme-4f825c); transition: width 0.2s ease; } .codex-session-notice { min-width: 0; align-items: flex-start; gap: 8px; padding: 10px 11px; border: 1px solid var(--theme-b6d3bd); border-radius: 7px; background: var(--theme-eef7f0); color: var(--theme-2f6b3f); font-size: var(--font-size-meta); line-height: var(--line-height-body); } .codex-session-notice.warning { border-color: var(--theme-dfbf91); background: var(--theme-fff7e9); color: var(--theme-8b5b21); } .codex-session-notice.error { border-color: var(--theme-dfb7b0); background: var(--theme-fff1ee); color: var(--theme-9f2d20); } .codex-session-notice > svg { flex: none; margin-top: 1px; } .codex-session-notice > span { min-width: 0; flex: 1; overflow-wrap: anywhere; white-space: pre-wrap; } .codex-session-notice > button, .codex-session-dialog-close { display: grid; width: 24px; height: 24px; flex: none; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; color: currentColor; } .codex-session-notice > button:hover, .codex-session-dialog-close:hover { background: rgba(45, 42, 38, 0.08); } .codex-session-list-section { background: var(--theme-fffdf8); } .codex-session-selection-actions { min-width: 0; justify-content: flex-end; gap: 6px; flex-wrap: wrap; } .codex-session-selection-actions > span { color: var(--theme-8a847c); font-size: var(--font-size-meta); white-space: nowrap; } .codex-session-list { display: grid; min-width: 0; max-height: clamp(240px, calc(100dvh - 600px), 480px); overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; border: 1px solid var(--theme-e3e1db); border-radius: 7px; background: var(--theme-fff); } .codex-session-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(150px, auto) auto; min-width: 0; align-items: center; gap: 12px; min-height: 76px; padding: 10px 11px; border-bottom: 1px solid var(--theme-eeeae2); background: var(--theme-fff); } .codex-session-row:has(.codex-session-checkbox) { grid-template-columns: 20px minmax(0, 1fr) minmax(150px, auto) auto; } .codex-session-row:last-child { border-bottom: 0; } .codex-session-row:hover, .codex-session-row.selected { background: var(--theme-faf9f5); } .codex-session-row.selected { box-shadow: inset 3px 0 var(--theme-4f825c); } .codex-session-checkbox { display: grid; align-self: stretch; place-items: center; } .codex-session-checkbox input, .codex-session-cleanup-dialog input { width: 15px; height: 15px; margin: 0; accent-color: var(--theme-4f825c); } .codex-session-main, .codex-session-meta { display: grid; min-width: 0; } .codex-session-main { gap: 4px; } .codex-session-main strong, .codex-session-main code, .codex-session-main span, .codex-session-meta small, .codex-session-meta time { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .codex-session-main strong { color: var(--theme-2d2a26); font-size: var(--font-size-body); } .codex-session-main code { color: var(--theme-8a847c); font-size: var(--font-size-caption); } .codex-session-main span { color: var(--theme-5f5a53); font-size: var(--font-size-meta); } .codex-session-meta { justify-items: end; gap: 4px; text-align: right; } .codex-session-meta > span { padding: 3px 7px; border: 1px solid var(--theme-b6d3bd); border-radius: 999px; background: var(--theme-eef7f0); color: var(--theme-2f6b3f); font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); } .codex-session-meta > span.archived { border-color: var(--theme-d5d2cb); background: var(--theme-f4f1ea); color: var(--theme-5f5a53); } .codex-session-meta small, .codex-session-meta time { max-width: 190px; color: var(--theme-8a847c); font-size: var(--font-size-caption); } .codex-session-delete-button { align-self: center; } .codex-session-empty { display: grid; min-height: 150px; place-content: center; justify-items: center; gap: 9px; padding: 18px; border: 1px dashed var(--theme-d5d2cb); border-radius: 7px; background: var(--theme-faf9f5); color: var(--theme-8a847c); font-size: var(--font-size-label); text-align: center; } .codex-session-pagination { justify-content: center; gap: 10px; } .codex-session-pagination button { width: 34px; min-width: 34px; min-height: 32px; padding: 0; } .codex-session-pagination span { min-width: 72px; color: var(--theme-5f5a53); font-size: var(--font-size-meta); font-weight: var(--font-weight-semibold); text-align: center; } .codex-session-dialog, .codex-session-cleanup-dialog { grid-template-rows: auto; height: auto; } .codex-session-dialog { min-height: 210px; } .codex-session-dialog .config-dialog-heading > div, .codex-session-cleanup-dialog .config-dialog-heading > div { display: flex; align-items: center; color: var(--theme-9f2d20); } .codex-session-dialog > p, .codex-session-cleanup-dialog > p { margin: 0; color: var(--theme-5f5a53); font-size: var(--font-size-label); line-height: var(--line-height-relaxed); overflow-wrap: anywhere; } .codex-session-cleanup-dialog { width: min(580px, 100%); max-height: min(720px, calc(100vh - 40px)); min-height: 320px; overflow: hidden; } .codex-session-cleanup-select-all { display: flex; align-items: center; gap: 8px; color: var(--theme-5f5a53); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .codex-session-cleanup-list { display: grid; min-height: 120px; max-height: 360px; overflow-y: auto; border: 1px solid var(--theme-e3e1db); border-radius: 7px; background: var(--theme-fff); } .codex-session-cleanup-list > label { display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 8px; min-height: 62px; padding: 8px 10px; border-bottom: 1px solid var(--theme-eeeae2); } .codex-session-cleanup-list > label:last-child { border-bottom: 0; } .codex-session-cleanup-list > label:hover { background: var(--theme-faf9f5); } .codex-session-cleanup-list > label > span { display: grid; min-width: 0; gap: 3px; } .codex-session-cleanup-list strong, .codex-session-cleanup-list code, .codex-session-cleanup-list small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .codex-session-cleanup-list strong { color: var(--theme-2d2a26); font-size: var(--font-size-label); } .codex-session-cleanup-list code, .codex-session-cleanup-list small { color: var(--theme-8a847c); font-size: var(--font-size-caption); } .agent-status-messages { display: grid; gap: 4px; padding: 0 2px; } .agent-status-grid span { display: flex; align-items: center; } .agent-config-footer { display: flex; align-items: center; justify-content: flex-end; gap: 14px; min-height: 48px; padding-top: 14px; border-top: 1px solid var(--theme-e3e1db); } .agent-launch-control { display: grid; min-width: 0; justify-items: end; gap: 5px; } .agent-launch-actions { display: flex; min-width: 0; max-width: 100%; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; } .agent-launch-actions > button { min-width: 120px; } .agent-launch-control > .agent-inline-message { max-width: 420px; text-align: right; } .agent-launch-directory-dialog { grid-template-rows: auto; align-content: start; width: min(620px, 100%); max-height: calc(100vh - 40px); height: auto; min-height: 0; overflow-y: auto; } .agent-launch-directory-dialog > p { margin: 0; color: var(--theme-5f5a53); font-size: var(--font-size-label); line-height: var(--line-height-relaxed); } .agent-launch-directory-dialog .config-dialog-field { grid-template-rows: auto auto; min-height: 0; } .deepseek-harness-launch-options { display: grid; gap: 12px; padding: 14px; border: 1px solid var(--theme-e3ded5); border-radius: 10px; background: var(--theme-faf8f4); } .deepseek-harness-launch-field { grid-template-rows: auto auto; gap: 6px; } .deepseek-harness-launch-field > span { font-size: var(--font-size-label); } .deepseek-harness-launch-field select.config-dialog-text-input { cursor: pointer; } .deepseek-harness-launch-field textarea.config-dialog-text-input { height: 72px; min-height: 72px; padding-block: 9px; resize: vertical; line-height: var(--line-height-relaxed); } .deepseek-harness-launch-mode-description { margin: -4px 0 0; color: var(--theme-777067); font-size: var(--font-size-label); font-weight: var(--font-weight-medium); line-height: var(--line-height-relaxed); } .deepseek-harness-launch-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(132px, 0.42fr); gap: 10px; } .deepseek-harness-launch-checkbox { display: flex; align-items: flex-start; gap: 10px; color: var(--theme-5f5a53); cursor: pointer; } .deepseek-harness-launch-checkbox > input { width: 16px; height: 16px; margin: 2px 0 0; accent-color: var(--theme-8069ad); } .deepseek-harness-launch-checkbox > span { display: grid; gap: 2px; } .deepseek-harness-launch-checkbox strong { color: var(--theme-2d2a26); font-size: var(--font-size-label); } .deepseek-harness-launch-checkbox small { color: var(--theme-777067); font-size: var(--font-size-meta); line-height: var(--line-height-relaxed); } @media (max-width: 680px) { .deepseek-harness-launch-grid { grid-template-columns: minmax(0, 1fr); } } .agent-launch-directory-picker { display: flex; width: 100%; min-width: 0; min-height: 64px; align-items: center; justify-content: space-between; gap: 16px; padding: 11px 13px; border: 1px solid var(--theme-d8d2c8); border-radius: 9px; background: var(--theme-fff); color: var(--theme-2d2a26); text-align: left; } .agent-launch-directory-picker:hover:not(:disabled) { border-color: var(--theme-bdb5a9); background: var(--theme-faf8f4); } .agent-launch-directory-picker:focus-visible { border-color: var(--theme-8d8377); outline: 0; box-shadow: 0 0 0 3px rgba(45, 42, 38, 0.1); } .agent-launch-directory-picker > span { display: grid; min-width: 0; gap: 4px; } .agent-launch-directory-picker small { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .agent-launch-directory-picker strong { overflow: hidden; font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .agent-launch-directory-picker > b { flex: none; color: var(--theme-8069ad); font-size: var(--font-size-label); } .agent-launch-directory-history { display: grid; min-height: 0; gap: 7px; } .agent-launch-directory-history > strong { color: var(--theme-5f5a53); font-size: var(--font-size-body); } .agent-launch-directory-history-list { display: grid; min-height: 64px; max-height: 176px; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; border: 1px solid var(--theme-d8d2c8); border-radius: 9px; background: var(--theme-fff); } .agent-launch-directory-history-list > button { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; width: 100%; min-height: 58px; padding: 8px 11px; border: 0; border-bottom: 1px solid var(--theme-eeeae2); border-radius: 0; background: transparent; color: var(--theme-2d2a26); text-align: left; } .agent-launch-directory-history-list > button:last-child { border-bottom: 0; } .agent-launch-directory-history-list > button:hover:not(:disabled) { background: var(--theme-faf8f4); } .agent-launch-directory-history-list > button.active { background: var(--theme-f1ecfb); box-shadow: inset 3px 0 0 var(--theme-8069ad); } .agent-launch-directory-history-list > button > span { display: grid; min-width: 0; gap: 3px; } .agent-launch-directory-history-list > button strong { overflow: hidden; font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .agent-launch-directory-history-list > button small { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .agent-launch-directory-history-list > button > b { display: inline-flex; flex: none; align-items: center; gap: 5px; color: var(--theme-8069ad); font-size: var(--font-size-label); } .agent-status-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; min-height: 76px; } .agent-status-grid.dual-install-status-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .agent-status-grid.pi-status-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .agent-status-grid > div { display: grid; min-width: 0; gap: 5px; padding: 12px; border: 1px solid var(--theme-e3e1db); border-radius: 7px; background: var(--theme-fffdf8); } .agent-status-grid span { gap: 5px; color: var(--theme-8a847c); font-size: var(--font-size-meta); } .agent-status-grid .agent-version-update-label { display: inline-flex; flex: none; padding: 2px 6px; border-radius: 4px; background: var(--theme-f4f1ea); color: var(--theme-5f5a53); font-size: var(--font-size-caption); line-height: 1.4; white-space: nowrap; } .agent-status-grid strong { min-width: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; } .agent-core-setting-section { display: grid; min-width: 0; align-content: start; gap: 12px; padding: 16px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-faf9f5); } .agent-model-section { min-height: 0; } .agent-claude-desktop-mapping { grid-column: 1 / -1; } .agent-claude-desktop-mapping-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .agent-claude-code-runtime-settings { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) minmax(240px, 1.2fr); gap: 12px; padding: 12px; border: 1px solid var(--theme-e3e1db); border-radius: 9px; background: var(--theme-faf9f5); } .agent-claude-code-number-field { display: grid; align-content: start; gap: 6px; color: var(--theme-5f5a53); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .agent-claude-code-number-field > input, .agent-claude-code-percent-input input { width: 100%; min-width: 0; padding: 8px 10px; border: 1px solid var(--theme-d3d0c9); border-radius: 7px; background: var(--theme-fff); color: var(--theme-2f2c28); font: inherit; font-variant-numeric: tabular-nums; } .agent-claude-code-number-field > input:focus, .agent-claude-code-percent-input input:focus { border-color: var(--theme-8069ad); outline: 2px solid rgba(128, 105, 173, 0.14); } .agent-claude-code-number-field > input:disabled, .agent-claude-code-percent-input input:disabled { cursor: not-allowed; opacity: 0.62; } .agent-claude-code-number-field small, .agent-claude-code-disable-compact small { color: var(--theme-817b72); font-size: var(--font-size-caption); font-weight: var(--font-weight-medium); line-height: 1.4; } .agent-claude-code-percent-input { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 7px; } .agent-claude-code-percent-input > span { color: var(--theme-817b72); font-weight: var(--font-weight-semibold); } .agent-claude-code-disable-compact { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fff); color: var(--theme-5f5a53); cursor: pointer; } .agent-claude-code-disable-compact > span:first-child { display: grid; gap: 4px; } .agent-claude-code-disable-compact:has(input:checked) { border-color: rgba(174, 92, 82, 0.48); background: rgba(174, 92, 82, 0.06); } .agent-claude-code-disable-compact:has(input:disabled) { cursor: not-allowed; opacity: 0.62; } .agent-claude-desktop-mapping-row { display: grid; min-width: 0; align-content: start; gap: 10px; padding: 12px; border: 1px solid var(--theme-e3e1db); border-radius: 9px; background: var(--theme-fff); box-shadow: 0 1px 2px rgba(45, 42, 38, 0.04); } .agent-desktop-models { grid-column: 1 / -1; } .agent-desktop-models > .agent-section-heading button { width: auto; margin-top: 0; flex-shrink: 0; white-space: nowrap; } .agent-desktop-model-list { display: grid; gap: 8px; } .agent-desktop-model-row { padding: 10px; border-radius: 7px; box-shadow: none; } .agent-desktop-model-fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; align-items: end; gap: 12px; } .agent-desktop-model-field { display: grid; min-width: 0; gap: 5px; font-size: var(--font-size-label); color: var(--theme-5f5a53); } .agent-desktop-model-actions { height: 44px; } .agent-desktop-model-notice { margin: 0; color: var(--theme-8a847c); font-size: var(--font-size-caption); line-height: 1.5; } .agent-desktop-help-dialog { grid-template-rows: auto; align-content: start; width: min(600px, calc(100vw - 32px)); height: fit-content; max-height: calc(100vh - 32px); margin: auto; overflow: auto; } .agent-desktop-help-dialog::backdrop { background: rgba(45, 42, 38, 0.42); backdrop-filter: blur(3px); } .agent-desktop-help-list { display: grid; gap: 16px; margin: 0; padding-left: 22px; color: var(--theme-5f5a53); font-size: var(--font-size-body); line-height: 1.6; overflow-wrap: anywhere; } .agent-desktop-help-actions { display: flex; justify-content: flex-end; } @media (max-width: 700px) { .agent-desktop-models > .agent-section-heading { flex-wrap: wrap; } .agent-desktop-models > .agent-section-heading > .agent-section-heading-actions { width: 100%; flex-wrap: wrap; } } @media (max-width: 520px) { .agent-desktop-model-fields { grid-template-columns: minmax(0, 1fr); gap: 8px; } .agent-desktop-model-actions { height: 34px; justify-self: end; } } .agent-claude-desktop-mapping-row:has(.agent-claude-context-toggle input:checked) { border-color: rgba(128, 105, 173, 0.48); box-shadow: 0 0 0 2px rgba(128, 105, 173, 0.08); } .agent-claude-mapping-card-heading { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 8px; } .agent-claude-mapping-card-heading > strong { min-width: 0; overflow: hidden; color: var(--theme-5f5a53); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .agent-claude-context-toggle { display: flex; flex: none; align-items: center; gap: 6px; padding: 4px 7px; border: 1px solid var(--theme-e3e1db); border-radius: 999px; background: var(--theme-faf9f5); color: var(--theme-5f5a53); cursor: pointer; font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .agent-claude-context-toggle:has(input:checked) { border-color: var(--theme-8069ad); background: var(--theme-f1ecfb); color: var(--theme-554075); } .agent-claude-context-toggle:has(input:disabled) { cursor: not-allowed; opacity: 0.62; } .agent-section-heading-actions { display: flex !important; flex: none; align-items: center; justify-content: flex-end; gap: 8px !important; } .agent-claude-desktop-mapping-filter { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border: 1px solid var(--theme-e3e1db); border-radius: 7px; background: var(--theme-fff); color: var(--theme-5f5a53); cursor: pointer; font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .agent-claude-desktop-mapping-filter:has(input:checked) { border-color: var(--theme-8069ad); background: var(--theme-f1ecfb); color: var(--theme-554075); } .agent-claude-desktop-mapping-filter:has(input:disabled) { cursor: not-allowed; opacity: 0.62; } .agent-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; } .agent-section-heading > div { display: grid; min-width: 0; gap: 3px; } .agent-section-heading strong { color: var(--theme-2d2a26); font-size: var(--font-size-section); } .agent-section-heading > div > span, .agent-model-hint { color: var(--theme-8a847c); font-size: var(--font-size-label); } .agent-model-hint { line-height: var(--line-height-body); overflow-wrap: anywhere; } .agent-model-picker { position: relative; min-width: 0; } .agent-model-trigger { display: grid; grid-template-columns: minmax(0, 1fr) 18px; align-items: center; gap: 10px; width: 100%; min-width: 0; min-height: 44px; padding: 7px 11px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-2d2a26); text-align: left; } .agent-model-trigger:hover:not(:disabled), .agent-model-picker.open .agent-model-trigger { border-color: var(--text-tertiary); background: var(--theme-fffdf8); } .agent-model-trigger:disabled { cursor: not-allowed; background: var(--theme-f4f1ea); opacity: 0.62; } .agent-model-trigger > span { display: grid; min-width: 0; gap: 2px; } .agent-model-editable-trigger input { width: 100%; min-width: 0; padding: 0; border: 0; outline: 0; background: transparent; color: inherit; font: inherit; font-size: var(--font-size-body); } .agent-model-editable-trigger:focus-within { border-color: var(--theme-8069ad); box-shadow: 0 0 0 2px rgba(128, 105, 173, 0.14); } .agent-model-editable-trigger:has(input:disabled) { cursor: not-allowed; background: var(--theme-f4f1ea); opacity: 0.62; } .agent-model-editable-trigger > button { width: 20px; height: 24px; min-height: 0; padding: 0; border: 0; background: transparent; color: var(--theme-8a847c); } .agent-model-picker.open .agent-model-editable-trigger > button > svg { transform: rotate(180deg); } .agent-model-trigger strong, .agent-model-trigger small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-model-trigger strong { color: var(--theme-2d2a26); font-size: var(--font-size-body); } .agent-model-trigger small { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .agent-model-trigger > svg { color: var(--theme-8a847c); transition: transform 0.16s ease; } .agent-model-picker.open .agent-model-trigger > svg { transform: rotate(180deg); } .agent-model-dropdown { position: fixed; z-index: 45; display: grid; grid-template-rows: 40px minmax(0, 1fr) 28px; gap: 7px; padding: 9px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); box-shadow: 0 14px 34px rgba(45, 42, 38, 0.2); } .agent-model-dropdown-editable { grid-template-rows: minmax(0, 1fr) 28px; } .agent-model-search { display: grid; grid-template-columns: 17px minmax(0, 1fr) auto auto; align-items: center; gap: 6px; padding: 0 6px 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-8a847c); } .agent-model-search input { width: 100%; min-width: 0; height: 38px; padding: 0; border: 0; outline: 0; background: transparent; color: var(--theme-2d2a26); font-size: var(--font-size-body); } .agent-model-list { min-height: 0; overflow-y: auto; border: 1px solid var(--theme-ece8df); border-radius: 6px; } .agent-model-option { display: grid; grid-template-columns: minmax(0, 1fr) 18px; align-items: center; gap: 9px; width: 100%; min-height: 48px; padding: 7px 10px; border: 0; border-bottom: 1px solid var(--theme-eeeae2); background: var(--theme-fff); color: var(--theme-2d2a26); text-align: left; } .agent-model-option:last-child { border-bottom: 0; } .agent-model-option:hover, .agent-model-option.active { background: var(--theme-f4f1ea); } .agent-model-option.selected { background: var(--theme-eeece6); } .agent-model-option > span { display: grid; min-width: 0; gap: 3px; } .agent-model-option strong, .agent-model-option small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-model-option strong { font-size: var(--font-size-body); } .agent-model-option small { color: var(--theme-8a847c); font-size: var(--font-size-meta); } .agent-model-option > svg { color: var(--theme-2f6b3f); } .agent-model-empty { display: grid; min-height: 118px; place-items: center; align-content: center; gap: 6px; padding: 16px; color: var(--theme-8a847c); font-size: var(--font-size-label); text-align: center; } .agent-model-empty strong { color: var(--theme-5f5a53); font-size: var(--font-size-body); } .agent-model-empty.error, .agent-model-empty.error strong { color: var(--theme-9f2d20); } .agent-model-dropdown-footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--theme-8a847c); font-size: var(--font-size-meta); } .agent-model-dropdown-footer .error { color: var(--theme-9f2d20); } .agent-modification-actions { min-height: 0; } .agent-codex-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; gap: 8px; min-width: 0; } .agent-codex-options > .agent-oauth-configuration { height: 100%; min-height: 54px; padding: 10px 12px; } .agent-codex-catalog-button { width: 100%; min-height: 54px; height: auto; padding: 10px 12px; white-space: normal; } .codex-catalog-backdrop { z-index: 90; } .codex-catalog-dialog { position: relative; grid-template-rows: auto minmax(0, 1fr) auto; gap: 14px; width: min(1080px, calc(100vw - 40px)); height: min(780px, calc(100vh - 40px)); padding: 20px; } .codex-catalog-heading { align-items: flex-start; } .codex-catalog-heading > div { display: grid; gap: 4px; } .codex-catalog-heading p { margin: 0; color: var(--theme-716b61); font-size: var(--font-size-label); font-weight: var(--font-weight-medium); } .codex-catalog-body { display: grid; grid-template-columns: 250px minmax(0, 1fr); min-height: 0; overflow: hidden; border: 1px solid var(--theme-d5d2cb); border-radius: 9px; background: var(--theme-ffffff); } .codex-catalog-sidebar { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 10px; min-height: 0; padding: 12px; border-right: 1px solid var(--theme-d5d2cb); background: var(--theme-faf8f4); } .codex-catalog-search { display: flex; align-items: center; gap: 7px; height: 38px; padding: 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 7px; background: var(--theme-ffffff); color: var(--theme-716b61); } .codex-catalog-search input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--theme-2d2a26); } .codex-catalog-models { display: grid; align-content: start; gap: 6px; min-height: 0; overflow: auto; } .codex-catalog-models > button { display: grid; gap: 2px; width: 100%; padding: 9px 10px; border: 1px solid transparent; border-radius: 7px; background: transparent; color: var(--theme-2d2a26); text-align: left; } .codex-catalog-models > button:hover { background: var(--theme-ffffff); } .codex-catalog-models > button.active { border-color: var(--theme-9db8a5); background: var(--theme-f3f8f4); } .codex-catalog-models strong, .codex-catalog-models span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .codex-catalog-models span, .codex-catalog-models small { color: var(--theme-716b61); font-size: var(--font-size-meta); } .codex-catalog-models small { color: var(--theme-2f6b3f); } .codex-catalog-reload { width: 100%; } .codex-catalog-editor { min-width: 0; min-height: 0; overflow: auto; padding: 18px; } .codex-catalog-model-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; } .codex-catalog-model-heading > div { display: grid; gap: 3px; min-width: 0; } .codex-catalog-model-heading h3 { margin: 0; overflow-wrap: anywhere; color: var(--theme-2d2a26); font-size: var(--font-size-section-title); } .codex-catalog-model-heading span { color: var(--theme-716b61); font-size: var(--font-size-meta); } .codex-catalog-model-heading span.customized { color: var(--theme-2f6b3f); } .codex-catalog-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .codex-catalog-form > label { display: grid; align-content: start; gap: 7px; color: var(--theme-5f5a53); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .codex-catalog-form > label.wide, .codex-catalog-form > fieldset.wide { grid-column: 1 / -1; } .codex-catalog-form input[type='text'], .codex-catalog-form input[type='number'], .codex-catalog-form input:not([type]), .codex-catalog-form select, .codex-catalog-form textarea { width: 100%; min-width: 0; padding: 9px 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 7px; outline: 0; background: var(--theme-ffffff); color: var(--theme-2d2a26); font: inherit; font-weight: var(--font-weight-medium); } .codex-catalog-form input[type='text'], .codex-catalog-form input[type='number'], .codex-catalog-form input:not([type]), .codex-catalog-form select { height: 40px; } .codex-catalog-form textarea { min-height: 70px; resize: vertical; } .codex-catalog-form textarea.codex-catalog-system-prompt { min-height: 240px; line-height: 1.5; } .codex-catalog-form input:focus, .codex-catalog-form select:focus, .codex-catalog-form textarea:focus { border-color: var(--theme-8d8377); box-shadow: 0 0 0 3px rgba(45, 42, 38, 0.08); } .codex-catalog-choice-group { min-width: 0; margin: 0; padding: 11px; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; } .codex-catalog-choice-group legend { padding: 0 5px; color: var(--theme-5f5a53); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .codex-catalog-chips, .codex-catalog-checkboxes { display: flex; flex-wrap: wrap; gap: 7px; } .codex-catalog-chips label, .codex-catalog-checkboxes label { cursor: pointer; user-select: none; } .codex-catalog-chips input { position: absolute; opacity: 0; pointer-events: none; } .codex-catalog-chips span { display: inline-flex; align-items: center; gap: 4px; min-height: 30px; padding: 5px 9px; border: 1px solid var(--theme-d5d2cb); border-radius: 999px; background: var(--theme-faf8f4); color: var(--theme-5f5a53); font-size: var(--font-size-meta); font-weight: var(--font-weight-semibold); } .codex-catalog-chips label.selected span { border-color: var(--theme-9db8a5); background: var(--theme-f3f8f4); color: var(--theme-2f6b3f); } .codex-catalog-checkboxes label { display: flex; align-items: center; gap: 6px; color: var(--theme-5f5a53); font-size: var(--font-size-label); } .codex-catalog-switch { grid-template-columns: auto minmax(0, 1fr) !important; align-items: center; min-height: 42px; padding: 9px 11px; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; background: var(--theme-faf8f4); } .codex-catalog-switch input { width: 16px !important; height: 16px !important; } .codex-catalog-hint { margin: 14px 0 0; color: var(--theme-716b61); font-size: var(--font-size-meta); line-height: var(--line-height-relaxed); } .codex-catalog-state { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 90px; padding: 14px; color: var(--theme-716b61); font-size: var(--font-size-label); text-align: center; } .codex-catalog-footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; } .codex-catalog-footer > div:first-child { min-width: 0; color: var(--theme-716b61); font-size: var(--font-size-meta); } .codex-catalog-footer > div:last-child { display: flex; flex: none; gap: 8px; } .codex-catalog-confirm { position: absolute; inset: 0; z-index: 2; display: grid; place-items: center; padding: 20px; border-radius: inherit; isolation: isolate; } /* Blur the backdrop without making it a containing block for fixed notices. */ .codex-catalog-confirm::before { content: ''; position: absolute; inset: 0; z-index: -1; border-radius: inherit; background: rgba(45, 42, 38, 0.35); backdrop-filter: blur(2px); } .codex-catalog-confirm > div { display: grid; gap: 12px; width: min(420px, 100%); padding: 20px; border: 1px solid var(--theme-d5d2cb); border-radius: 9px; background: var(--theme-fffdf8); box-shadow: 0 18px 48px rgba(45, 42, 38, 0.24); } .codex-catalog-confirm span { color: var(--theme-716b61); font-size: var(--font-size-label); } .codex-catalog-confirm > div > div { display: flex; justify-content: flex-end; gap: 8px; } @media (max-width: 760px) { .codex-catalog-dialog { width: calc(100vw - 28px); height: calc(100vh - 28px); padding: 14px; } .codex-catalog-body { grid-template-columns: 1fr; grid-template-rows: 190px minmax(0, 1fr); } .codex-catalog-sidebar { grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto minmax(0, 1fr); border-right: 0; border-bottom: 1px solid var(--theme-d5d2cb); } .codex-catalog-models { grid-column: 1 / -1; } .codex-catalog-reload { width: auto; } .codex-catalog-editor { padding: 14px; } .codex-catalog-form { grid-template-columns: 1fr; } .codex-catalog-form > label.wide, .codex-catalog-form > fieldset.wide { grid-column: auto; } .codex-catalog-footer { align-items: stretch; flex-direction: column; } .codex-catalog-footer > div:last-child { display: grid; grid-template-columns: 1fr 1fr; } .codex-catalog-footer > div:last-child > button:first-child { grid-column: 1 / -1; } } .agent-codex-options .agent-section-heading strong, .agent-codex-options > .agent-oauth-configuration { font-size: var(--font-size-meta); font-weight: var(--font-weight-semibold); line-height: var(--line-height-tight); } .agent-modification-control { display: grid; min-width: 0; gap: 6px; } .agent-modification-control > .agent-inline-message { text-align: left; } .agent-oauth-configuration { display: flex; min-height: 42px; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 12px; border: 1px solid var(--theme-d8d2c8); border-radius: 9px; background: var(--theme-faf8f4); color: var(--theme-5f5a53); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); cursor: pointer; user-select: none; transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease; } .agent-oauth-configuration:hover { border-color: var(--theme-bdb5a9); background: var(--theme-f6f2ec); } .agent-oauth-configuration:has(input:focus-visible) { border-color: var(--theme-8d8377); box-shadow: 0 0 0 3px rgba(45, 42, 38, 0.1); } .agent-oauth-configuration:has(input:checked) { border-color: var(--theme-9db8a5); background: var(--theme-f3f8f4); color: var(--theme-2f6b3f); } .agent-oauth-configuration:has(input:disabled) { cursor: not-allowed; opacity: 0.55; } .agent-oauth-configuration .switch-control { flex: none; } .agent-modification-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; width: 100%; } .agent-modification-buttons.codex { grid-template-columns: repeat(auto-fit, minmax(132px, 1fr)); } .agent-modification-buttons button { width: 100%; min-width: 0; min-height: 38px; height: auto; padding: 8px 10px; line-height: var(--line-height-tight); white-space: normal; } .agent-restore-dialog { grid-template-rows: auto; height: auto; min-height: 210px; } .agent-restore-dialog .config-dialog-heading > div { display: flex; align-items: center; color: var(--theme-9f2d20); } .agent-restore-dialog p { margin: 0; color: var(--theme-5f5a53); font-size: var(--font-size-label); line-height: var(--line-height-relaxed); } .agent-restore-dialog > .agent-inline-message { margin-top: -6px; } .usage-records-page { display: flex; width: 100%; max-width: 100%; min-width: 0; min-height: 0; flex: 1 1 auto; flex-direction: column; gap: 12px; overflow: hidden; } .app-shell:has(.usage-records-page) { height: 100%; min-height: 100%; } .app-shell:has(.usage-records-page) .workspace { display: flex; min-height: 0; flex: 1 1 auto; flex-direction: column; } .app-shell:has(.usage-records-page) .content { display: flex; min-height: 0; flex: 1 1 auto; flex-direction: column; overflow: hidden; } .usage-records-page > .usage-overview-layout, .usage-records-page > .usage-analysis-grid, .usage-records-page > .usage-events-panel, .usage-records-page > .usage-pricing-panel, .usage-records-page > .usage-data-management-panel, .usage-records-page > .usage-initial-loading { flex: 1 1 auto; min-height: 0; } .usage-topbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; flex-wrap: wrap; } .usage-topbar-actions { display: flex; align-items: center; gap: 8px; } .usage-refresh-btn { width: 34px; height: 34px; border-radius: 7px; border: 1px solid var(--theme-e3e1db); background: var(--theme-fffdf8); color: var(--theme-5f5a53); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.15s ease; } .usage-refresh-btn:hover:not(:disabled) { background: var(--theme-f4f1ea); border-color: var(--theme-d5d2cb); color: var(--theme-2d2a26); } .usage-refresh-btn:disabled { opacity: 0.6; cursor: not-allowed; } .usage-collector-state { display: inline-flex; align-items: center; gap: 7px; min-width: 0; height: 34px; padding: 0 10px; border: 1px solid var(--theme-e3e1db); border-radius: 7px; background: var(--theme-fffdf8); white-space: nowrap; } .usage-collector-state .status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--theme-8a847c); flex-shrink: 0; box-shadow: 0 0 0 3px rgba(155, 149, 140, 0.15); } .usage-collector-state.success .status-dot { background: #10b981; box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.2); } .usage-collector-state.error .status-dot { background: #ef4444; box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2); } .usage-collector-state strong { color: var(--theme-2d2a26); font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); line-height: 1.2; } .usage-collector-state span { color: var(--theme-8a847c); font-size: var(--font-size-caption); line-height: 1.2; } .usage-collector-state > span:last-child { padding-left: 7px; border-left: 1px solid var(--theme-e3e1db); } /* Tab Switcher */ .usage-tabs { display: inline-flex; gap: 3px; padding: 3px; border: 1px solid var(--border-color); border-radius: 10px; background: var(--bg-tertiary); width: fit-content; } .usage-tabs button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 0 14px; border: 0; border-radius: 6px; background: transparent; color: var(--theme-7a746c); font-size: var(--font-size-meta); font-weight: var(--font-weight-semibold); cursor: pointer; transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1); } .usage-tabs button:hover:not(.active) { color: var(--text-primary); background: color-mix(in srgb, var(--bg-primary) 70%, transparent); } .usage-tabs button.active { background: var(--bg-primary); color: var(--text-primary); box-shadow: var(--shadow-sm); } /* Filter Toolbar */ .usage-filter-panel { display: grid; gap: 8px; padding: 10px 12px; border: 1px solid var(--border-color); border-radius: 12px; background: var(--bg-primary); } .usage-filter-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; flex-wrap: wrap; } .usage-filter-group { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; flex: 1; } .usage-filter-item { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1 1 0; } .usage-filter-label { display: flex; align-items: center; gap: 4px; color: var(--theme-8a847c); font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); line-height: 1; } .usage-filter-item select, .usage-filter-item input { min-width: 0; height: 34px; padding: 0 9px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-2d2a26); font-size: var(--font-size-meta); outline: none; transition: border-color 0.15s ease, box-shadow 0.15s ease; } .usage-filter-item select:focus, .usage-filter-item input:focus { border-color: var(--theme-3f6f98); box-shadow: 0 0 0 2px rgba(63, 111, 152, 0.15); } .usage-custom-range { display: flex; align-items: center; gap: 8px; padding-top: 6px; border-top: 1px dashed var(--theme-eeeae2); color: var(--theme-8a847c); font-size: var(--font-size-caption); } .usage-custom-range input { height: 32px; padding: 0 8px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-2d2a26); font-size: var(--font-size-caption); } /* Loading & Empty States */ .usage-initial-loading, .usage-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; min-height: 160px; padding: 30px; color: var(--theme-8a847c); font-size: var(--font-size-meta); } .usage-empty svg, .usage-initial-loading svg { color: var(--theme-9a958d); opacity: 0.6; } /* Overview Layout */ .usage-overview-layout { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: max-content minmax(0, 1fr); gap: 14px; align-items: stretch; overflow: clip; } .usage-overview-panels { position: relative; min-width: 0; min-height: 0; } .usage-overview-canvas { position: absolute; inset: 0 auto auto 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: minmax(0, 1fr); gap: 14px; width: calc(100% / var(--usage-overview-scale, 1)); height: calc(100% / var(--usage-overview-scale, 1)); transform: scale(var(--usage-overview-scale, 1)); transform-origin: top left; } .usage-stat-grid { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; } .usage-stat-card { display: flex; flex-direction: column; justify-content: center; gap: 5px; padding: 10px 12px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); min-width: 0; transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease; } .usage-stat-card:hover { border-color: var(--theme-d5d2cb); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); transform: translateY(-1px); } .usage-stat-card-label { color: var(--theme-7a746c); font-size: var(--font-size-caption); font-weight: var(--font-weight-medium); line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .usage-stat-card-value { color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; line-height: 1.2; letter-spacing: -0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Trend Panel */ .usage-trend-panel, .usage-health-panel, .usage-events-panel { display: grid; min-width: 0; min-height: 0; grid-template-rows: auto minmax(0, 1fr); padding: 16px; border: 1px solid var(--theme-e3e1db); border-radius: 9px; background: var(--theme-fffdf8); } .usage-trend-panel, .usage-health-panel { height: 100%; } .usage-section-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; } .usage-section-heading > div { display: grid; gap: 2px; } .usage-section-heading strong { color: var(--theme-2d2a26); font-size: var(--font-size-section); font-weight: var(--font-weight-semibold); white-space: nowrap; } .usage-section-heading span { color: var(--theme-8a847c); font-size: var(--font-size-caption); } .usage-trend-wrapper { display: grid; min-height: 0; grid-template-rows: auto minmax(0, 1fr); gap: 8px; } .usage-trend-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; } .usage-trend-legend { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; } .usage-trend-legend-item { display: inline-flex; align-items: center; gap: 5px; padding: 2px 7px; border: 1px solid transparent; border-radius: 999px; background: transparent; color: var(--theme-7a746c); font-size: var(--font-size-caption); cursor: pointer; transition: all 0.15s ease; user-select: none; } .usage-trend-legend-item:hover { background: var(--theme-f4f1ea); color: var(--theme-2d2a26); } .usage-trend-legend-item.is-hidden { color: var(--text-quaternary); text-decoration: line-through; } .usage-trend-legend-item.is-hidden .usage-trend-swatch { opacity: 0.38; } .usage-trend-swatch { width: 8px; height: 8px; border-radius: 2px; flex-shrink: 0; display: inline-block; } .usage-trend-chart { display: grid; min-height: 0; height: 100%; grid-template-columns: 36px minmax(0, 1fr); grid-template-rows: minmax(140px, 1fr) 18px; column-gap: 8px; row-gap: 4px; } .usage-trend-y-axis { position: relative; grid-column: 1; grid-row: 1; color: var(--theme-8a847c); font-size: var(--font-size-caption); font-variant-numeric: tabular-nums; line-height: 1; user-select: none; } .usage-trend-y-axis span { position: absolute; right: 0; transform: translateY(-50%); } .usage-trend-plot { position: relative; grid-column: 2; grid-row: 1; min-width: 0; min-height: 0; height: 100%; outline: none; cursor: crosshair; } .usage-trend-plot:focus-visible { box-shadow: 0 0 0 2px color-mix(in srgb, #3b82f6 35%, transparent); border-radius: 6px; } .usage-trend-svg { display: block; width: 100%; height: 100%; overflow: visible; pointer-events: none; } .usage-trend-grid { stroke: var(--theme-eeeae2); stroke-dasharray: 3 3; stroke-width: 1; vector-effect: non-scaling-stroke; } .usage-trend-baseline { stroke: var(--theme-e3e1db); stroke-width: 1; vector-effect: non-scaling-stroke; } .usage-trend-bar { opacity: 0.8; transition: opacity 0.15s ease; } .usage-trend-bar.is-active { opacity: 1; } .usage-trend-cursor-line { stroke: var(--theme-7a746c); stroke-dasharray: 3 2; stroke-width: 1; opacity: 0.65; vector-effect: non-scaling-stroke; } .usage-trend-x-axis { position: relative; grid-column: 2; grid-row: 2; height: 18px; } .usage-trend-x-axis span { position: absolute; top: 2px; color: var(--theme-8a847c); font-size: var(--font-size-caption); font-variant-numeric: tabular-nums; transform: translateX(-50%); white-space: nowrap; user-select: none; } .usage-trend-x-axis span.is-start { left: 0 !important; transform: none; } .usage-trend-x-axis span.is-end { left: 100% !important; transform: translateX(-100%); } .usage-trend-tooltip { position: absolute; top: 6px; z-index: 10; min-width: 140px; max-width: 260px; padding: 8px 10px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-fffdf8); box-shadow: 0 4px 16px rgba(45, 42, 38, 0.12); pointer-events: none; font-size: var(--font-size-caption); } :root[data-theme='dark'] .usage-trend-tooltip { box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35); } .usage-trend-tooltip.is-right { transform: translateX(12px); } .usage-trend-tooltip.is-left { transform: translateX(calc(-100% - 12px)); } .usage-trend-tooltip-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-bottom: 5px; border-bottom: 1px solid var(--theme-eeeae2); margin-bottom: 5px; } .usage-trend-tooltip-header strong { color: var(--theme-2d2a26); font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); } .usage-trend-tooltip-total { color: var(--theme-3f6f98); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; white-space: nowrap; } .usage-trend-tooltip-list { display: grid; gap: 4px; } .usage-trend-tooltip-row { display: flex; align-items: center; gap: 6px; color: var(--theme-7a746c); } .usage-trend-tooltip-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .usage-trend-tooltip-row b { color: var(--theme-2d2a26); font-variant-numeric: tabular-nums; } .usage-trend-tooltip-empty { color: var(--theme-8a847c); font-size: var(--font-size-caption); } /* Token Breakdown Panel */ .usage-health-panel { container: token-panel / size; grid-template-rows: auto minmax(0, 1fr); align-self: stretch; height: auto; min-height: 0; } .usage-token-content { display: grid; min-width: 0; min-height: 0; grid-template-rows: minmax(0, 1fr) auto auto; gap: clamp(6px, 2cqb, 14px); } .usage-token-composition { container: token-chart / size; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); min-height: 0; align-items: center; gap: clamp(10px, 3cqi, 22px); padding: clamp(8px, 2cqb, 20px) 12px; border: 1px solid var(--border-color); border-radius: 20px; } .usage-token-donut { container-type: inline-size; position: relative; width: min(100%, 100cqb, 320px); justify-self: center; aspect-ratio: 1; } .usage-token-donut svg { display: block; width: 100%; height: 100%; overflow: visible; fill: none; stroke-width: 34; } .usage-token-donut-track { stroke: var(--bg-hover); } .usage-token-donut-segment { stroke: var(--token-color); } .usage-token-donut-label { position: absolute; inset: 24%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; text-align: center; } .usage-token-donut-label strong { color: var(--text-primary); font-size: clamp(14px, 14cqi, 36px); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; line-height: 1.2; letter-spacing: -0.04em; } .usage-token-donut-label span { color: var(--text-tertiary); font-size: clamp(9px, 5cqi, 12px); line-height: 1.4; } .usage-token-breakdown { display: grid; min-width: 0; align-self: stretch; align-content: space-evenly; gap: clamp(4px, 3cqb, 18px); margin: 0; } .usage-token-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 6px 8px; font-size: var(--font-size-caption); } .usage-token-measurement { display: contents; } .usage-token-name { display: flex; align-items: center; gap: 6px; min-width: 0; color: var(--text-secondary); line-height: 1.4; } .usage-token-name i { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--token-color); } .usage-token-vals { display: flex; align-items: center; flex-shrink: 0; gap: 6px; margin: 0; } .usage-token-count { color: var(--text-primary); font-variant-numeric: tabular-nums; font-weight: var(--font-weight-medium); } .usage-token-pct { display: inline-block; min-width: 42px; text-align: right; color: var(--theme-8a847c); font-variant-numeric: tabular-nums; font-size: var(--font-size-caption); } .usage-token-bar-track { grid-column: 1 / -1; width: 100%; height: 4px; background: var(--theme-eeece6); border-radius: 999px; overflow: hidden; } .usage-token-bar-fill { height: 100%; border-radius: 999px; background: var(--token-color); transition: width 0.3s ease; } .usage-token-row.tone-input, .usage-token-donut-segment.tone-input { --token-color: #5595f9; } .usage-token-row.tone-output, .usage-token-donut-segment.tone-output { --token-color: #22b573; } .usage-token-row.tone-cache-read, .usage-token-donut-segment.tone-cache-read { --token-color: #ed9205; } .usage-token-row.tone-cache-creation, .usage-token-donut-segment.tone-cache-creation { --token-color: #ee5182; } .usage-token-notes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 4px 0; color: var(--text-tertiary); font-size: var(--font-size-caption); line-height: 1.5; } .usage-token-notes span { display: grid; align-content: start; gap: 2px; min-width: 0; padding-inline: 12px; overflow-wrap: anywhere; } .usage-token-notes span + span { border-left: 1px solid var(--border-color); } .usage-token-notes b { color: var(--text-primary); font-size: var(--font-size-section); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; } .usage-token-context { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; gap: 10px; font-size: var(--font-size-caption); line-height: 1.4; } .usage-token-context-group { display: grid; grid-template-rows: auto 1fr; min-width: 0; gap: 14px; padding: 14px; border: 1px solid var(--border-secondary); border-radius: 12px; background: var(--bg-hover); } .usage-token-context-group h3 { display: flex; align-items: center; gap: 6px; margin: 0; color: var(--text-secondary); font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); } .usage-token-context-group h3 svg { flex: none; color: var(--text-quaternary); } .usage-token-context-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: auto auto; align-content: start; align-items: start; gap: 5px 12px; margin: 0; } .usage-token-results .usage-token-context-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); } .usage-token-context-metrics > div { display: grid; grid-template-rows: subgrid; grid-row: span 2; min-width: 0; gap: 5px; } .usage-token-context-metrics dt { color: var(--text-tertiary); overflow-wrap: anywhere; } .usage-token-context-metrics dd { margin: 0; color: var(--text-primary); font-size: 20px; font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; letter-spacing: -0.025em; line-height: 1.3; overflow-wrap: anywhere; } .usage-token-context-metrics .tone-success dd { color: #15803d; } .usage-token-context-metrics .tone-failed dd { color: #b91c1c; } :root[data-theme='dark'] .usage-token-context-metrics .tone-success dd { color: #4ade80; } :root[data-theme='dark'] .usage-token-context-metrics .tone-failed dd { color: #f87171; } @container token-panel (max-width: 600px) { .usage-token-context { grid-template-columns: repeat(2, minmax(0, 1fr)); } .usage-token-results { grid-column: 1 / -1; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); grid-template-rows: auto; align-items: center; gap: 6px 12px; } .usage-token-results .usage-token-context-metrics { grid-column: 2; grid-row: 1 / -1; } } @container token-panel (max-width: 370px) { .usage-token-composition { grid-template-columns: minmax(0, 1fr); gap: 20px; padding: 18px 16px; } .usage-token-donut { max-width: 170px; } .usage-token-notes { grid-template-columns: repeat(2, minmax(0, 1fr)); } .usage-token-notes span:nth-child(3) { border-left: 0; } } @container token-panel (max-width: 300px) { .usage-token-context { grid-template-columns: minmax(0, 1fr); } .usage-token-results { grid-template-columns: minmax(0, 1fr); } .usage-token-results .usage-token-context-metrics { grid-column: auto; grid-row: auto; } } @container token-panel (max-height: 540px) { .usage-token-content { gap: 8px; } .usage-token-notes { font-size: 11px; padding: 0; } .usage-token-notes span { padding-inline: 6px; } .usage-token-notes b { font-size: 14px; } .usage-token-context { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; font-size: 11px; } .usage-token-context-group, .usage-token-results { grid-column: auto; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; gap: 8px; padding: 8px; } .usage-token-context-group h3 { font-size: 11px; gap: 4px; } .usage-token-context-metrics { column-gap: 6px; } .usage-token-context-metrics dd { font-size: 16px; } .usage-token-results .usage-token-context-metrics dt { font-size: 10px; } .usage-token-results .usage-token-context-metrics { grid-template-columns: 1.1fr 0.8fr 1.2fr; column-gap: 3px; } .usage-token-results .usage-token-context-metrics { grid-column: auto; grid-row: auto; } } /* Analysis Tab */ .usage-analysis-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); gap: 14px; } /* Events tab (request details) */ .usage-events-panel { display: flex; width: 100%; max-width: 100%; min-height: 0; padding: 0; flex-direction: column; overflow: hidden; } .usage-events-summary { display: flex; min-height: 52px; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--theme-e3e1db); background: var(--theme-fffdf8); color: var(--theme-8a847c); font-size: var(--font-size-caption); flex-wrap: nowrap; } .usage-events-summary-left { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; min-width: 0; } .usage-events-count-badge { display: inline-flex; align-items: center; padding: 3px 9px; border: 1px solid var(--theme-e3e1db); border-radius: 999px; background: var(--theme-f4f1ea); color: var(--theme-2d2a26); font-weight: var(--font-weight-semibold); font-size: var(--font-size-caption); white-space: nowrap; flex-shrink: 0; } .usage-pagination-summary { font-size: var(--font-size-caption); color: var(--theme-7a746c); font-variant-numeric: tabular-nums; white-space: nowrap; } .usage-events-summary-right { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; min-width: 0; } .usage-pagination-controls { display: inline-flex; align-items: center; gap: 8px; flex: none; } .usage-col-hint { font-size: var(--font-size-caption); color: var(--text-quaternary); } .usage-page-size-select { height: 30px; padding: 4px 8px; border: 1px solid var(--theme-e3e1db); border-radius: 5px; background: var(--theme-faf8f4); color: var(--theme-2d2a26); font-size: var(--font-size-caption); cursor: pointer; flex-shrink: 0; } .usage-page-size-select:focus { border-color: var(--theme-3f6f98); outline: none; } .usage-pagination-right { display: flex; align-items: center; gap: 4px; flex-shrink: 0; } .usage-pagination-top { display: inline-flex; align-items: center; gap: 4px; } .usage-page-nav-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 30px; padding: 0 8px; border: 1px solid var(--theme-e3e1db); border-radius: 5px; background: var(--theme-fffdf8); color: var(--theme-5f5a53); cursor: pointer; font-size: var(--font-size-caption); font-weight: var(--font-weight-medium); transition: all 0.15s ease; gap: 3px; flex-shrink: 0; white-space: nowrap; } .usage-page-nav-btn:hover:not(:disabled) { background: var(--theme-f4f1ea); border-color: var(--theme-d5d2cb); color: var(--theme-2d2a26); } .usage-page-nav-btn:disabled { opacity: 0.35; cursor: default; } .usage-pagination-info { padding: 0 6px; font-variant-numeric: tabular-nums; font-weight: var(--font-weight-semibold); color: var(--theme-7a746c); white-space: nowrap; font-size: var(--font-size-caption); } .usage-col-settings-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 30px; padding: 0 10px; font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); background: var(--theme-f4f1ea); border: 1px solid var(--theme-e3e1db); border-radius: 5px; color: var(--theme-7a746c); cursor: pointer; line-height: 1.2; transition: all 0.15s ease; flex-shrink: 0; white-space: nowrap; } .usage-col-settings-btn:hover { background: var(--theme-e8e5dc); color: var(--theme-2d2a26); border-color: var(--theme-d5d2cb); } .usage-col-settings-btn svg { width: 14px; height: 14px; flex: 0 0 auto; } .usage-col-reset-btn { display: inline-flex; align-items: center; justify-content: center; height: 30px; width: 30px; padding: 0; background: var(--theme-f4f1ea); border: 1px solid var(--theme-e3e1db); border-radius: 5px; color: var(--theme-7a746c); cursor: pointer; transition: all 0.15s ease; flex-shrink: 0; } .usage-col-reset-btn:hover { background: var(--theme-e8e5dc); color: var(--theme-2d2a26); border-color: var(--theme-d5d2cb); } .usage-col-reset-btn svg { width: 13px; height: 13px; flex: 0 0 auto; } .usage-col-reset-btn.icon-only { width: 30px; padding: 0; } /* Column Settings Dialog */ .usage-column-dialog { display: flex; width: min(540px, 100%); height: auto; max-height: min(680px, calc(100vh - 40px)); flex-direction: column; gap: 14px; overflow: hidden; } .usage-column-dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; } .usage-column-dialog-heading > div { display: flex; min-width: 0; align-items: center; gap: 9px; color: var(--theme-5f5a53); } .usage-column-dialog-heading h2 { margin: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); text-overflow: ellipsis; white-space: nowrap; } .usage-column-dialog-description { margin: 0; color: var(--theme-7a746c); font-size: var(--font-size-caption); line-height: 1.5; } .usage-column-options { display: grid; min-height: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; overflow-y: auto; max-height: 380px; padding: 2px; } .usage-column-option { display: flex; min-width: 0; align-items: center; gap: 9px; padding: 9px 11px; border: 1px solid var(--theme-e3e1db); border-radius: 6px; background: var(--theme-fffdf8); color: var(--theme-5f5a53); cursor: pointer; font-size: var(--font-size-caption); } .usage-column-option:hover { border-color: var(--theme-d5d2cb); background: var(--theme-faf8f4); } .usage-column-option input { width: 15px; height: 15px; flex: 0 0 auto; accent-color: var(--theme-3f6f98); } .usage-column-option:has(input:disabled) { cursor: default; opacity: 0.65; } .usage-column-dialog-footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding-top: 2px; } .usage-column-dialog-meta { display: flex; min-width: 0; align-items: center; gap: 10px; color: var(--theme-8a847c); font-size: var(--font-size-caption); } .usage-column-select-all { padding: 0; border: 0; background: transparent; color: var(--theme-5f5a53); cursor: pointer; font: inherit; font-weight: var(--font-weight-semibold); } .usage-column-select-all:hover { color: var(--theme-2d2a26); text-decoration: underline; } .usage-column-dialog-actions { display: flex; flex: 0 0 auto; gap: 8px; } .usage-column-dialog-actions button { min-width: 84px; } /* Native horizontal scrollbar, mirrored above the table. */ .usage-table-top-scrollbar { overflow-x: auto; overflow-y: hidden; flex: 0 0 18px; height: 18px; min-height: 18px; border-bottom: 1px solid var(--theme-e3e1db); background: var(--theme-fffdf8); } .usage-table-top-scrollbar::-webkit-scrollbar { height: 16px; } .usage-table-top-scrollbar::-webkit-scrollbar-track { background: transparent; } .usage-table-top-scrollbar::-webkit-scrollbar-thumb { min-width: 64px; /* Keep a slim thumb inside a larger draggable area. */ border: 5px solid transparent; border-radius: 999px; background: var(--theme-8a847c); background-clip: padding-box; cursor: grab; } .usage-table-top-scrollbar::-webkit-scrollbar-thumb:hover { border-width: 4px 5px; background-color: var(--theme-7a746c); } .usage-table-top-scrollbar::-webkit-scrollbar-thumb:active { border-width: 4px 5px; background-color: var(--theme-7a746c); cursor: grabbing; } .usage-table-top-scrollbar.is-hidden { display: none; } /* Main Table Wrap & Table */ .usage-table-wrap { position: relative; overflow-x: auto; overflow-y: auto; flex: 1 1 auto; min-height: 240px; height: auto; border: 0; border-radius: 0; background: var(--theme-fffdf8); overscroll-behavior: contain; scrollbar-gutter: stable; } /* Hide horizontal scrollbar on the table wrap so only the top scrollbar is shown */ .usage-table-wrap::-webkit-scrollbar { height: 0; } .usage-table-wrap::-webkit-scrollbar:horizontal { display: none; height: 0; } .usage-events-table { border-collapse: separate; border-spacing: 0; table-layout: fixed; font-size: var(--font-size-meta); } .usage-events-table th, .usage-events-table td { height: 44px; padding: 7px 11px; border-bottom: 1px solid var(--theme-eeeae2); color: var(--theme-5f5a53); white-space: nowrap; vertical-align: middle; box-sizing: border-box; } .usage-events-table tbody tr { cursor: default; transition: background-color 0.12s ease; } .usage-events-table tbody tr:hover td { background-color: var(--theme-f4f1ea) !important; } .usage-events-table th { position: sticky; z-index: 2; top: 0; background: var(--theme-f8f6f1); color: var(--theme-7a746c); font-weight: var(--font-weight-semibold); padding: 0; user-select: none; border-bottom: 1px solid var(--theme-e3e1db); box-shadow: 0 1px 0 rgba(45, 42, 38, 0.04); } .usage-th-content { display: flex; align-items: center; height: 44px; padding: 8px 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .usage-events-table th.align-left .usage-th-content, .usage-events-table td.align-left { text-align: left; justify-content: flex-start; } .usage-events-table th.align-center .usage-th-content, .usage-events-table td.align-center { text-align: center; justify-content: center; } .usage-events-table th.align-right .usage-th-content, .usage-events-table td.align-right { text-align: right; justify-content: flex-end; } .usage-col-resizer { position: absolute; top: 0; right: -3px; bottom: 0; width: 7px; cursor: col-resize; z-index: 6; touch-action: none; display: flex; justify-content: center; align-items: center; } .usage-col-resizer::after { content: ''; display: block; width: 1px; height: 62%; border-radius: 1px; background-color: var(--theme-bdb5a9); opacity: 0.9; transition: background-color 0.15s ease, height 0.15s ease, width 0.15s ease, opacity 0.15s ease; } /* Keep the final resize handle from adding overflow when all columns fit. */ .usage-events-table th:last-child .usage-col-resizer { right: 0; } .usage-events-table th:hover .usage-col-resizer::after { width: 2px; height: 78%; background-color: var(--theme-8a847c); opacity: 1; } .usage-col-resizer:hover::after, .usage-col-resizer.active::after { background-color: var(--theme-3f6f98) !important; width: 2px; height: 100%; opacity: 1; } body.table-col-resizing, body.table-col-resizing * { cursor: col-resize !important; user-select: none !important; } .usage-events-table td.usage-td-time { font-variant-numeric: tabular-nums; color: var(--theme-7a746c); } .usage-events-table td.usage-td-token, .usage-events-table td.usage-td-latency, .usage-events-table td.usage-td-speed { font-variant-numeric: tabular-nums; } .usage-events-table td.usage-td-provider, .usage-events-table td.usage-td-source { overflow: hidden; text-overflow: ellipsis; } .usage-tag-pill { display: inline-block; padding: 2px 6px; border-radius: 4px; background: var(--theme-eeece6); color: var(--theme-5f5a53); font-size: var(--font-size-caption); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .usage-events-table .usage-stacked-cell { vertical-align: middle; overflow: hidden; } .usage-events-table .usage-stacked-cell > strong, .usage-events-table .usage-stacked-cell > small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .usage-events-table td strong { font-weight: var(--font-weight-semibold); color: var(--theme-2d2a26); } .usage-events-table td small { color: var(--theme-8a847c); font-size: var(--font-size-caption); line-height: 1.3; } .usage-result { display: inline-flex; align-items: center; gap: 5px; padding: 2px 7px; border-radius: 999px; font-weight: var(--font-weight-semibold); font-size: var(--font-size-caption); line-height: 1.3; } .usage-result-dot { width: 5px; height: 5px; border-radius: 50%; background: currentColor; } .usage-result.success { background: var(--theme-eef7f0); color: var(--theme-2f6b3f); } .usage-result.failed { background: var(--theme-fff1ee); color: var(--theme-9f2d20); } .usage-result.canceled { background: var(--theme-f4f1ea); color: var(--theme-7a746c); } .usage-events-table .usage-result-cell { overflow: hidden; text-align: center; } .usage-result-cell > small { display: block; margin-top: 2px; overflow-wrap: anywhere; white-space: normal; color: var(--theme-8a847c); font-size: var(--font-size-caption); } @media (max-width: 768px) { .usage-events-summary { gap: 8px; padding: 8px 12px; flex-wrap: wrap; } .usage-events-summary-left, .usage-events-summary-right { width: 100%; justify-content: space-between; } } @media (max-width: 540px) { .usage-pagination-summary { display: none; } .usage-column-options { grid-template-columns: 1fr; } .usage-column-dialog-footer { align-items: stretch; flex-direction: column; } .usage-column-dialog-actions button { flex: 1; } } .usage-events-panel > .usage-empty { flex: 1 1 auto; min-height: 240px; } .usage-analysis-grid { align-content: start; overflow: auto; } /* Pricing Tab */ .usage-pricing-panel { display: flex; min-width: 0; min-height: 0; flex-direction: column; overflow: hidden; gap: 14px; padding: 16px; border: 1px solid var(--theme-e3e1db); border-radius: 9px; background: var(--theme-fffdf8); } .usage-data-management-panel { min-height: 0; padding: 24px; overflow: auto; } .usage-data-management-heading, .usage-data-management-action, .usage-data-management-result { display: flex; align-items: center; justify-content: space-between; gap: 18px; } .usage-data-management-heading > div { display: flex; align-items: flex-start; gap: 12px; } .usage-data-management-heading h2 { margin: 0; font-size: var(--font-size-panel-title); } .usage-data-management-heading p, .usage-data-management-action > div:first-child > span { display: block; margin: 6px 0 0; color: var(--theme-716b61); font-size: var(--font-size-meta); } .usage-data-management-badge { padding: 5px 9px; border: 1px solid var(--theme-d8d4cc); border-radius: 999px; color: var(--theme-716b61); font-size: var(--font-size-caption); } .usage-data-management-action { margin-top: 22px; padding: 16px; border: 1px solid var(--theme-d8d4cc); border-radius: 12px; background: var(--theme-f8f5ee); } .usage-data-management-action + .usage-data-management-action { margin-top: 12px; } .usage-storage-limit-action small { display: block; margin-top: 7px; color: var(--theme-8a847c); font-size: var(--font-size-caption); } .usage-storage-limit-editor { display: flex; flex: 0 0 auto; align-items: center; gap: 8px; } .usage-storage-limit-editor label { display: flex; align-items: center; overflow: hidden; border: 1px solid var(--theme-d8d4cc); border-radius: 7px; background: var(--theme-fffdf8); } .usage-storage-limit-editor input { width: 168px; min-height: 40px; padding: 0 12px; border: 0; background: transparent; box-shadow: none; text-align: right; } .usage-storage-limit-editor input:focus { box-shadow: none; } .usage-storage-limit-editor label > span { padding: 0 10px 0 4px; color: var(--theme-716b61); font-size: var(--font-size-caption); } .usage-data-management-result { align-items: stretch; margin-top: 26px; } .usage-data-management-panel .management-alert.success { margin-top: 18px; } .usage-data-management-result > div { display: flex; flex: 1; min-width: 0; flex-direction: column; gap: 5px; padding: 12px; border: 1px solid var(--theme-d8d4cc); border-radius: 10px; } .usage-data-management-result span { color: var(--theme-716b61); font-size: var(--font-size-caption); } .usage-data-management-result strong { overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .usage-pricing-toolbar { display: flex; flex: none; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; } .usage-pricing-summary { display: grid; flex: 1 1 240px; gap: 2px; } .usage-pricing-summary strong { color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; } .usage-pricing-summary span { color: var(--theme-8a847c); font-size: var(--font-size-caption); } .usage-pricing-actions { display: flex; min-width: 0; flex: 1 1 560px; flex-wrap: wrap; align-items: center; gap: 8px; } .usage-pricing-action-group { display: flex; min-width: 0; flex: 1 1 250px; align-items: center; gap: 8px; } .usage-pricing-actions input, .usage-pricing-actions select { width: 100%; min-width: 0; flex: 1 1 0; height: 34px; padding: 0 10px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-2d2a26); font-size: var(--font-size-meta); } .usage-pricing-actions button, .usage-price-editor-actions button { flex: none; min-height: 34px; height: 34px; white-space: nowrap; } .usage-price-sync-dialog { width: min(1100px, calc(100vw - 32px)); max-height: min(760px, calc(100vh - 32px)); padding: 20px; border: 1px solid var(--theme-e3e1db); border-radius: 10px; background: var(--theme-fff); color: var(--theme-2d2a26); } .usage-price-sync-dialog::backdrop { background: rgb(0 0 0 / 45%); } .usage-price-sync-header, .usage-price-sync-controls, .usage-price-sync-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .usage-price-sync-header h2 { margin: 0 0 4px; } .usage-price-sync-note { color: var(--theme-7a746c); } .usage-price-sync-controls { justify-content: flex-start; margin: 14px 0; flex-wrap: wrap; } .usage-price-sync-controls span { margin-right: auto; } .usage-price-sync-list { max-height: 430px; overflow: auto; } .usage-price-sync-row { display: grid; grid-template-columns: minmax(200px, 1.5fr) repeat(4, minmax(115px, 1fr)); gap: 8px; align-items: end; padding: 9px 0; border-bottom: 1px solid var(--theme-eeeae2); } .usage-price-sync-row label:not(.usage-price-sync-identity) { display: grid; gap: 4px; font-size: var(--font-size-caption); } .usage-price-sync-row input[type="number"] { width: 100%; min-width: 0; height: 34px; padding: 0 8px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; } .usage-price-sync-identity { display: flex; align-items: center; gap: 8px; min-width: 0; } .usage-price-sync-identity span { display: grid; min-width: 0; overflow-wrap: anywhere; } .usage-price-sync-identity small { color: var(--theme-8a847c); } .usage-price-sync-unmatched { margin-top: 12px; } .usage-price-sync-unmatched p { max-height: 90px; overflow: auto; overflow-wrap: anywhere; } .usage-price-sync-error { color: var(--theme-error, #b42318); } .usage-price-sync-footer { justify-content: flex-end; margin-top: 14px; } @media (max-width: 800px) { .usage-price-sync-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } .usage-price-sync-identity { grid-column: 1 / -1; } } .usage-price-editor { display: grid; min-height: 0; flex: 0 1 auto; max-height: 50%; overflow: auto; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; padding: 14px; border: 1px solid var(--theme-e3e1db); border-radius: 8px; background: var(--theme-f8f5ee); } .usage-price-editor label { display: grid; gap: 4px; } .usage-price-editor label > span { color: var(--theme-7a746c); font-size: var(--font-size-caption); font-weight: var(--font-weight-semibold); } .usage-price-editor input { min-width: 0; height: 34px; padding: 0 8px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; background: var(--theme-fff); color: var(--theme-2d2a26); font-size: var(--font-size-meta); } .usage-price-editor-actions { display: flex; grid-column: 1 / -1; justify-content: flex-end; gap: 8px; } .usage-pricing-table-wrap { min-height: 120px; } .usage-pricing-table-wrap::-webkit-scrollbar, .usage-pricing-table-wrap::-webkit-scrollbar:horizontal { display: block; width: 8px; height: 8px; } .usage-pricing-table-wrap::-webkit-scrollbar-thumb { border-radius: 4px; background: var(--border-primary); } .usage-pricing-table { width: 100%; min-width: 980px; border-collapse: separate; border-spacing: 0; font-size: var(--font-size-meta); } .usage-pricing-table th, .usage-pricing-table td { height: 42px; padding: 7px 10px; border-bottom: 1px solid var(--theme-eeeae2); color: var(--theme-5f5a53); text-align: center; white-space: nowrap; } .usage-pricing-table th { position: sticky; z-index: 1; top: 0; background: var(--theme-f4f1ea); color: var(--theme-7a746c); font-weight: var(--font-weight-semibold); text-align: center; } .usage-pricing-table th:first-child, .usage-pricing-table td:first-child { position: sticky; left: 0; min-width: 180px; max-width: 240px; overflow: hidden; text-overflow: ellipsis; box-shadow: 1px 0 0 var(--border-color); } .usage-pricing-table td:first-child { z-index: 1; background: var(--bg-primary); } .usage-pricing-table th:first-child { z-index: 2; } .usage-price-row-actions { display: flex; justify-content: center; gap: 5px; } .real-auth-files-panel { display: block; height: auto; min-height: 460px; } .auth-files-toolbar { grid-template-columns: 18px minmax(0, 1fr) 150px 128px; min-height: 42px; } .auth-files-toolbar select { width: 100%; height: 38px; border: 0; border-left: 1px solid var(--theme-e3e1db); border-radius: 0; background: transparent; color: var(--theme-5f5a53); } .real-auth-file-list { margin-top: 14px; border-top: 1px solid var(--theme-e3e1db); } .real-auth-file-row { display: grid; grid-template-columns: 34px minmax(0, 1.2fr) minmax(160px, 0.8fr) auto; align-items: center; gap: 14px; min-height: 76px; padding: 10px 0; border-bottom: 1px solid var(--theme-eeece6); } .real-auth-file-row > .quota-action-feedback { grid-column: 2 / -1; min-width: 0; } .auth-file-quota { display: flex; grid-column: 2 / -1; align-items: center; flex-wrap: wrap; gap: 5px 8px; min-width: 0; margin-top: -7px; color: var(--theme-7a746c); font-size: var(--font-size-meta); } .auth-file-quota.loading, .auth-file-quota.error { flex-wrap: nowrap; } .auth-file-quota.error { color: var(--theme-9f2d20); } .auth-file-quota.error small { min-width: 0; overflow: hidden; color: var(--theme-9f2d20); text-overflow: ellipsis; white-space: nowrap; } .auth-file-quota-plan, .auth-file-quota-credit, .auth-file-quota-empty { white-space: nowrap; } .auth-file-quota-plan { color: var(--theme-5f5a53); font-weight: var(--font-weight-semibold); } .auth-file-quota-item { display: inline-flex; align-items: center; gap: 4px; min-width: 0; padding: 2px 7px; border-radius: 999px; background: var(--theme-f2f0ea); white-space: nowrap; } .auth-file-quota-item strong { color: var(--theme-2d2a26); } .auth-file-quota-item small { display: inline-block; max-width: 150px; overflow: hidden; color: var(--theme-9a958d); text-overflow: ellipsis; } .real-auth-file-row.disabled > :not(.auth-file-actions) { opacity: 0.68; } .real-auth-file-row > .provider-logo { width: 28px; height: 28px; } .auth-file-main { display: grid; gap: 5px; } .auth-file-title { gap: 8px; } .auth-file-main > span, .auth-file-meta span { min-width: 0; overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .auth-file-meta { justify-content: flex-end; gap: 10px; } .real-auth-file-row .primary-button, .real-auth-file-row .secondary-button { min-width: 52px; } .real-auth-file-row .auth-file-priority-button { min-width: 92px; white-space: nowrap; } .auth-priority-dialog { grid-template-rows: 40px auto auto 20px 40px; width: min(460px, 100%); height: auto; min-height: 0; } .auth-priority-target { overflow: hidden; padding: 9px 11px; border: 1px solid var(--theme-e3e1db); border-radius: 6px; background: var(--theme-f4f1ea); color: var(--theme-5f5a53); font-family: var(--font-family-mono); font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .auth-priority-field { display: grid; gap: 8px; color: var(--theme-5f5a53); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); } .auth-priority-field input { width: 100%; height: 42px; min-width: 0; padding: 0 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 6px; outline: none; background: var(--theme-ffffff); color: var(--theme-2d2a26); font: inherit; } .auth-priority-field input:focus { border-color: var(--theme-777067); box-shadow: 0 0 0 3px rgba(119, 112, 103, 0.12); } .auth-priority-field input[aria-invalid='true'] { border-color: var(--theme-a83f32); } .auth-priority-field small { color: var(--theme-7a746c); font-size: var(--font-size-label); font-weight: var(--font-weight-regular); line-height: var(--line-height-body); } .page-footnote { margin: -6px 0 0; color: var(--theme-7a746c); font-size: var(--font-size-label); } .quota-group-list { display: grid; gap: 18px; } .quota-provider-group { display: grid; gap: 10px; } .quota-group-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--theme-7a746c); font-size: var(--font-size-label); } .quota-group-actions { display: flex; min-width: 0; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; } .quota-group-actions > span, .quota-empty-actions { color: var(--theme-7a746c); } .quota-empty-actions { justify-content: flex-end; } .quota-group-heading > div { display: flex; align-items: center; gap: 8px; } .quota-group-heading h2 { margin: 0; color: var(--theme-2d2a26); font-size: var(--font-size-panel-title); } .quota-group-heading .provider-logo { width: 24px; height: 24px; } .real-quota-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); gap: 12px; } .real-quota-card { display: grid; gap: 16px; min-width: 0; } .real-quota-card-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .real-quota-card-header > div { display: grid; gap: 4px; min-width: 0; } .real-quota-card-header .quota-card-actions { display: flex; align-items: center; gap: 7px; flex: 0 0 auto; } .quota-card-actions .compact-button { margin-top: 0; white-space: nowrap; } .real-quota-card-header strong, .real-quota-card-header span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .real-quota-card-header span { color: var(--theme-7a746c); font-size: var(--font-size-label); } .quota-row-list { display: grid; gap: 13px; } .app-confirm-backdrop { z-index: 160; padding: 20px; } .config-dialog.app-confirm-dialog { width: min(460px, 100%); height: auto; grid-template-rows: none; gap: 18px; max-height: calc(100vh - 40px); overflow: auto; } .app-confirm-dialog > p { margin: 0; line-height: 1.65; white-space: pre-wrap; overflow-wrap: anywhere; } .app-confirm-details { display: grid; gap: 10px; margin: 0; padding: 12px; border-radius: 7px; background: var(--theme-f4f2ec); } .app-confirm-details > div { display: flex; justify-content: space-between; gap: 16px; } .app-confirm-details dt { color: var(--theme-7a746c); } .app-confirm-details dd { margin: 0; text-align: right; overflow-wrap: anywhere; } .app-confirm-warning { color: var(--theme-7a746c); font-size: var(--font-size-label); } .quota-action-feedback { display: flex; gap: 7px; align-items: flex-start; padding: 9px 11px; border-radius: 6px; background: var(--theme-f4f2ec); font-size: var(--font-size-label); line-height: 1.6; overflow-wrap: anywhere; } .quota-action-feedback svg { flex-shrink: 0; margin-top: 3px; } .quota-action-feedback.error { color: var(--theme-9f2d20); background: var(--theme-fff1ee); } .quota-reset-credit-summary { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 14px; padding: 8px 10px; border-radius: 6px; background: var(--theme-f4f2ec); color: var(--theme-7a746c); font-size: var(--font-size-meta); } .quota-reset-credit-summary span { white-space: nowrap; } .quota-reset-credit-summary strong { color: var(--theme-2d2a26); } .real-quota-row { display: grid; gap: 6px; } .real-quota-row > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--theme-5f5a53); font-size: var(--font-size-label); } .real-quota-row > div:first-child strong { color: var(--theme-2d2a26); } .real-quota-track { height: 8px; overflow: hidden; border-radius: 999px; background: var(--theme-e8e5dc); } .real-quota-track span { display: block; height: 100%; border-radius: inherit; background: var(--theme-2d2a26); } .real-quota-row small { min-height: 15px; color: var(--theme-9a958d); font-size: var(--font-size-meta); } .quota-card-message, .quota-card-error { display: flex; align-items: center; gap: 8px; min-height: 72px; color: var(--theme-7a746c); font-size: var(--font-size-body); } .quota-card-error { align-items: flex-start; color: var(--theme-9f2d20); } .quota-summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(180px, 100%), 1fr)); gap: 12px; } .quota-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); gap: 14px; } .quota-card { display: grid; grid-template-rows: 46px 34px 10px 74px; gap: 14px; min-height: 220px; } .quota-meter-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; } .quota-meter-row strong { color: var(--theme-2d2a26); font-size: var(--font-size-display); line-height: 1; } .quota-meter-row span { min-width: 0; overflow: hidden; color: var(--theme-7a746c); font-size: var(--font-size-body); text-overflow: ellipsis; white-space: nowrap; } .quota-track { height: 10px; overflow: hidden; border-radius: 999px; background: var(--theme-e8e5dc); } .quota-track span { display: block; height: 100%; border-radius: inherit; background: var(--theme-2d2a26); } .quota-meta-grid { display: grid; grid-template-columns: 72px minmax(0, 1fr); align-items: center; gap: 8px 12px; min-width: 0; padding: 10px 12px; border-radius: 6px; background: var(--theme-f4f1ea); } .quota-meta-grid span, .quota-meta-grid strong { min-width: 0; overflow: hidden; font-size: var(--font-size-label); text-overflow: ellipsis; white-space: nowrap; } .quota-meta-grid span { color: var(--theme-7a746c); } .quota-meta-grid strong { color: var(--theme-2d2a26); text-align: right; } .install-dialog-backdrop { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 24px; background: rgba(45, 42, 38, 0.42); backdrop-filter: blur(3px); } .install-dialog { display: grid; grid-template-rows: 48px 42px 10px 22px 72px 40px; gap: 15px; width: min(420px, 100%); height: 360px; padding: 24px; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; outline: none; background: var(--theme-fffdf8); box-shadow: 0 18px 48px rgba(45, 42, 38, 0.24); } .install-dialog-heading { min-width: 0; } .install-dialog-heading > span { display: block; margin-bottom: 5px; color: var(--theme-7a746c); font-size: var(--font-size-label); font-weight: var(--font-weight-semibold); } .install-dialog-heading h2 { margin: 0; overflow: hidden; color: var(--theme-2d2a26); font-size: var(--font-size-dialog-title); line-height: var(--line-height-tight); text-overflow: ellipsis; white-space: nowrap; } .install-dialog-phase { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 12px; min-width: 0; padding: 0 12px; border-radius: 6px; background: var(--theme-f4f1ea); } .install-dialog-phase span { color: var(--theme-7a746c); font-size: var(--font-size-body); } .install-dialog-phase strong { overflow: hidden; color: var(--theme-2d2a26); text-align: right; text-overflow: ellipsis; white-space: nowrap; } .install-progress-track { width: 100%; height: 10px; overflow: hidden; border-radius: 999px; background: var(--theme-e8e5dc); } .install-progress-fill { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--theme-2d2a26); transition: width 160ms ease; } .install-dialog.success .install-progress-fill { background: var(--theme-2f6b3f); } .install-dialog.error .install-progress-fill { background: var(--theme-9f2d20); } .install-progress-track.unknown .install-progress-fill { visibility: hidden; width: 36%; } .install-progress-track.unknown.is-running .install-progress-fill { visibility: visible; animation: install-progress-slide 1.1s ease-in-out infinite; } .install-progress-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; color: var(--theme-6d6760); font-size: var(--font-size-body); } .install-progress-meta strong, .install-progress-meta span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .install-progress-meta strong { color: var(--theme-2d2a26); } .install-dialog-message { overflow: auto; padding: 10px 12px; border-radius: 6px; background: var(--theme-faf9f5); color: var(--theme-5f5a53); font-size: var(--font-size-body); line-height: var(--line-height-body); overflow-wrap: anywhere; } .install-dialog-message.success { background: var(--theme-eef7f0); color: var(--theme-2f6b3f); } .install-dialog-message.error { background: var(--theme-fff1ee); color: var(--theme-9f2d20); } .install-dialog > button { width: 100%; height: 40px; } .app-update-dialog { grid-template-rows: none; height: auto; min-height: 0; gap: 16px; } .app-update-confirm-copy { margin: 0; color: var(--theme-5f5a53); font-size: var(--font-size-body); line-height: var(--line-height-relaxed); } .app-update-dialog-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .custom-mirror-dialog { width: min(500px, 100%); } .custom-mirror-dialog-description { margin: 0; color: var(--theme-6f6961); font-size: var(--font-size-body); line-height: var(--line-height-relaxed); } .custom-mirror-dialog > input { width: 100%; height: 44px; min-width: 0; padding: 0 12px; border: 1px solid var(--theme-d5d2cb); border-radius: 8px; background: var(--theme-fffdf8); color: var(--theme-2d2a26); } .custom-mirror-dialog-error { color: var(--theme-9f2d20); font-size: var(--font-size-meta); line-height: var(--line-height-body); } .custom-mirror-dialog-list { display: grid; max-height: 150px; gap: 6px; overflow-y: auto; } .custom-mirror-dialog-list > span { color: var(--theme-7a746c); font-size: var(--font-size-meta); } .custom-mirror-dialog-list > div { display: grid; grid-template-columns: minmax(0, 1fr) 34px; align-items: center; gap: 8px; padding: 6px 6px 6px 10px; border: 1px solid var(--theme-e3e1db); border-radius: 7px; background: var(--theme-faf8f2); } .custom-mirror-dialog-list > div > span { overflow: hidden; color: var(--theme-4b4742); font-size: var(--font-size-meta); text-overflow: ellipsis; white-space: nowrap; } .custom-mirror-dialog-list button { display: grid; width: 30px; height: 30px; place-items: center; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--theme-9f2d20); } .custom-mirror-dialog-list button:hover:not(:disabled) { background: rgba(159, 45, 32, 0.08); } .app-update-dialog .install-dialog-message { display: flex; align-items: center; gap: 7px; } @keyframes install-progress-slide { from { transform: translateX(-120%); } to { transform: translateX(300%); } } @container agent-panel (min-width: 900px) { .agent-core-config { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 8px; align-items: stretch; } .agent-status-grid, .agent-status-messages, .agent-config-footer { grid-column: 1 / -1; } .agent-model-section { grid-column: 1; height: 100%; } .agent-modification-actions { grid-column: 2; height: 100%; } } @container agent-panel (max-width: 760px) { .agent-claude-code-runtime-settings { grid-template-columns: repeat(2, minmax(0, 1fr)); } .agent-claude-code-disable-compact { grid-column: 1 / -1; } .agent-claude-desktop-mapping-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @container agent-panel (max-width: 640px) { .agent-claude-desktop-mapping > .agent-section-heading { align-items: stretch; flex-direction: column; } .agent-claude-desktop-mapping .agent-section-heading-actions { justify-content: space-between; } .agent-claude-desktop-mapping-grid { grid-template-columns: 1fr; } .agent-claude-code-runtime-settings { grid-template-columns: 1fr; } .agent-claude-code-disable-compact { grid-column: auto; } .agent-codex-options { grid-template-columns: 1fr; } .agent-status-grid { grid-template-columns: 1fr; min-height: 0; } .agent-status-grid.dual-install-status-grid { grid-template-columns: 1fr; } .agent-status-grid.pi-status-grid { grid-template-columns: 1fr; } .codex-session-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } .codex-session-database-metric { grid-column: 1 / -1; } .codex-session-repair-panel { grid-template-columns: 1fr; } .codex-session-repair-actions { justify-content: space-between; flex-wrap: wrap; } .codex-session-row, .codex-session-row:has(.codex-session-checkbox) { grid-template-columns: minmax(0, 1fr) auto; } .codex-session-row:has(.codex-session-checkbox) { grid-template-columns: 20px minmax(0, 1fr); } .codex-session-row:has(.codex-session-checkbox) .codex-session-main { grid-column: 2; } .codex-session-meta, .codex-session-row:has(.codex-session-checkbox) .codex-session-meta { grid-column: 1 / -1; grid-template-columns: auto minmax(80px, 1fr) auto; align-items: center; justify-items: start; text-align: left; } .codex-session-meta small, .codex-session-meta time { max-width: none; } .codex-session-meta time { justify-self: end; } } @media (max-width: 1080px) { .app-shell { grid-template-columns: 232px minmax(0, 1fr); } .status-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); } .kernel-layout { grid-template-columns: 1fr; } .provider-workbench { grid-template-columns: 1fr; } .provider-category-panel { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); height: auto; } .provider-category-panel button { height: auto; min-height: 48px; padding-block: 8px; } .provider-category-panel span { white-space: normal; overflow: visible; text-overflow: clip; } .provider-resource-panel { height: 520px; } .real-provider-row { grid-template-columns: 32px minmax(0, 1fr) max-content; } .provider-row-meta { display: none; } .control-panel, .version-panel { grid-column: auto; } .config-management-content { grid-template-columns: 1fr; } } @media (max-width: 760px) { .app-shell:has(.usage-records-page) { height: auto; min-height: 100%; } .app-shell:has(.usage-records-page) .content { overflow: visible; } .usage-records-page { flex: none; overflow: visible; } .usage-table-wrap, .usage-events-panel > .usage-empty { min-height: 320px; height: min(70vh, 640px); flex: none; } .app-shell { grid-template-columns: 1fr; } .sidebar { position: static; display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; height: auto; padding: 14px; } .sidebar-brand { margin-bottom: 0; } .nav-section { display: flex; overflow-x: auto; padding-bottom: 2px; } .nav-section button { width: auto; min-width: 116px; text-align: center; } .nav-section button { grid-template-columns: 17px minmax(0, 1fr) 10px; } .sidebar-bottom { margin-top: 0; padding-top: 0; border-top: 0; } .content { padding: 18px; } .status-strip { grid-template-columns: 1fr; } .config-network-grid { grid-template-columns: 1fr; grid-auto-rows: auto; } .config-tls-fields { grid-template-columns: 1fr; } .config-management-form { grid-template-columns: 1fr; } .config-management-form-footer { grid-column: auto; } .client-api-grid { grid-template-columns: 1fr; } .oauth-grid, .quota-grid, .quota-summary-grid { grid-template-columns: 1fr; } .real-quota-grid { grid-template-columns: 1fr; } .real-provider-row { grid-template-columns: 32px minmax(0, 1fr) auto; } .real-auth-file-row { grid-template-columns: 34px minmax(0, 1fr); } .auth-file-actions { grid-column: 2; flex-wrap: wrap; justify-content: flex-start; } .auth-files-page .management-header { align-items: stretch; flex-direction: column; } .auth-files-page .management-heading-actions { flex-wrap: wrap; justify-content: flex-start; } .provider-row-meta, .auth-file-meta { display: none; } .auth-files-toolbar { grid-template-columns: 18px minmax(0, 1fr); } .auth-files-toolbar select { border-top: 1px solid var(--theme-e3e1db); border-left: 0; } .auth-files-toolbar select:first-of-type { grid-column: 1 / -1; } .auth-files-toolbar select:last-of-type { grid-column: 1 / -1; } .provider-category-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); } .agent-workbench { grid-template-columns: 1fr; } .usage-analysis-grid { grid-template-columns: 1fr; } .thinking-alias-workbench { grid-template-columns: 1fr; } .thinking-alias-editor-panel, .thinking-alias-list-panel { height: auto; min-height: 0; } .thinking-model-list { max-height: 240px; } .thinking-alias-list { max-height: 460px; } .agent-client-list { height: 270px; min-height: 0; max-height: 270px; } .agent-config-panel { height: auto; min-height: 0; overflow: visible; } .codex-session-metrics { grid-template-columns: repeat(3, minmax(70px, 1fr)); } .codex-session-database-metric { grid-column: 1 / -1; } .codex-session-repair-panel { grid-template-columns: 1fr; } .codex-session-repair-actions { justify-content: space-between; } .codex-session-row, .codex-session-row:has(.codex-session-checkbox) { grid-template-columns: minmax(0, 1fr) auto; } .codex-session-row:has(.codex-session-checkbox) .codex-session-main { grid-column: 2; } .codex-session-row:has(.codex-session-checkbox) .codex-session-meta { grid-column: 1 / -1; } .codex-session-meta { grid-column: 1 / -1; grid-template-columns: auto minmax(80px, 1fr) auto; align-items: center; justify-items: start; text-align: left; } .codex-session-meta small, .codex-session-meta time { max-width: none; } .codex-session-meta time { justify-self: end; } .agents-page, .agent-config-panel { grid-template-rows: auto; } .agent-model-section, .agent-modification-actions { height: auto; } .agent-list-items { grid-template-columns: repeat(2, minmax(0, 1fr)); } .agent-list-items button { grid-template-columns: 26px minmax(0, 1fr) 8px; } .auth-filter-grid { grid-template-columns: 1fr; } .auth-files-panel { grid-template-rows: 84px auto minmax(0, 1fr); height: 660px; } .panel { padding: 18px; } .kernel-layout > .panel { padding: 20px; } } @media (max-width: 620px) { .agent-modification-buttons.codex { grid-template-columns: 1fr; } } @media (max-width: 520px) { .usage-data-management-heading, .usage-data-management-action, .usage-data-management-result { align-items: stretch; flex-direction: column; } .usage-data-management-action .primary-button { width: 100%; } .usage-storage-limit-editor { align-items: stretch; flex-direction: column; } .usage-storage-limit-editor label { width: 100%; } .usage-storage-limit-editor input { flex: 1; width: auto; min-width: 0; } .panel-heading { flex-direction: column; } .button-row { grid-auto-columns: auto; grid-auto-flow: row; grid-template-columns: 1fr; } .primary-button, .secondary-button, .danger-button { width: 100%; } .config-management-form-footer { grid-template-columns: 1fr; } .config-management-actions { display: grid; grid-template-columns: 1fr; width: 100%; } .kernel-layout .panel-heading { flex-direction: row; } .management-header { align-items: start; flex-direction: column; } .agent-subpage-tabs { width: 100%; grid-auto-columns: minmax(104px, 1fr); } .codex-session-overview, .codex-session-list-section { padding: 12px; } .codex-session-overview-head, .codex-session-list-head { align-items: stretch; flex-direction: column; } .codex-session-overview-head .compact-button { width: 100%; } .codex-session-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } .codex-session-database-metric { grid-column: 1 / -1; } .codex-session-repair-actions, .codex-session-selection-actions { width: 100%; align-items: stretch; flex-direction: column; } .codex-session-row, .codex-session-row:has(.codex-session-checkbox) { grid-template-columns: 20px minmax(0, 1fr); gap: 9px; } .codex-session-row:not(:has(.codex-session-checkbox)) .codex-session-main, .codex-session-row:not(:has(.codex-session-checkbox)) .codex-session-meta, .codex-session-row:not(:has(.codex-session-checkbox)) .codex-session-delete-button { grid-column: 1 / -1; } .codex-session-main, .codex-session-row:has(.codex-session-checkbox) .codex-session-main { grid-column: 2; } .codex-session-meta, .codex-session-row:has(.codex-session-checkbox) .codex-session-meta { grid-column: 1 / -1; grid-template-columns: auto minmax(0, 1fr); gap: 6px; } .codex-session-meta time { grid-column: 1 / -1; justify-self: start; } .codex-session-delete-button { grid-column: 1 / -1; width: 100%; } .codex-session-cleanup-dialog { max-height: calc(100vh - 28px); } .usage-tabs { width: 100%; max-width: 100%; display: flex; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; } .usage-tabs button { flex: 0 0 auto; min-width: max-content; padding: 0 12px; } .usage-topbar-actions { width: 100%; } .usage-collector-state { flex: 1; } .usage-stat-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .usage-custom-range { flex-direction: column; align-items: stretch; } .provider-category-panel { grid-template-columns: 1fr; } .real-provider-row { grid-template-columns: 32px minmax(0, 1fr); } .provider-row-actions { grid-column: 2; flex-wrap: wrap; justify-content: flex-start; } .thinking-effort-options { grid-template-columns: repeat(3, minmax(0, 1fr)); } .thinking-alias-row { grid-template-columns: minmax(0, 1fr) auto; } .thinking-alias-route { grid-column: 1 / -1; } .agent-list-items, .agent-status-grid { grid-template-columns: 1fr; } .agent-status-grid { height: auto; } .agent-section-heading { align-items: stretch; flex-direction: column; } .agent-modification-control > .agent-inline-message { max-width: none; text-align: left; } .agent-config-footer, .agent-launch-actions { width: 100%; } .agent-launch-control { width: 100%; justify-items: stretch; } .agent-launch-actions { display: grid; grid-template-columns: 1fr; } .agent-launch-actions > button { width: 100%; } .agent-launch-control > .agent-inline-message { max-width: none; text-align: left; } .oauth-card { grid-template-rows: auto auto auto; min-height: 0; } .oauth-browser-picker { width: 100%; justify-content: stretch; } .oauth-browser-picker select { flex: 1; width: auto; } .oauth-card-body, .oauth-callback-row { grid-template-columns: 1fr; grid-template-rows: auto; } .oauth-callback-row { align-items: stretch; } .management-panel-heading { align-items: start; flex-direction: column; } .management-heading-actions { width: 100%; } .management-heading-actions button { flex: 1; } .management-heading-actions { flex-wrap: wrap; } .muted-summary { width: 100%; } .compact-toolbar { width: 100%; } .real-provider-row { grid-template-columns: 32px minmax(0, 1fr); } .real-auth-file-row { grid-template-columns: 30px minmax(0, 1fr); } .provider-row-actions { grid-column: 2; justify-content: flex-start; } .auth-file-actions { grid-column: 2; flex-wrap: wrap; justify-content: flex-start; } .real-auth-file-row > .provider-logo { align-self: start; margin-top: 3px; } .info-list div { grid-template-columns: 1fr; gap: 4px; } .install-dialog-backdrop { padding: 16px; } .config-dialog-backdrop { padding: 14px; } .config-dialog { padding: 18px; } .model-discovery-backdrop { padding: 12px; } .model-discovery-dialog { grid-template-rows: auto 40px auto minmax(180px, 1fr) 40px; height: calc(100vh - 24px); min-height: 0; padding: 16px; } .model-discovery-header > div { display: grid; gap: 2px; } .model-discovery-toolbar { align-items: stretch; flex-direction: column; gap: 8px; } .model-discovery-toolbar > div, .model-discovery-actions { width: 100%; } .model-discovery-toolbar button, .model-discovery-actions button { flex: 1; min-width: 0; } .provider-health-overview { grid-template-columns: 1fr; } .provider-health-overview span, .provider-health-overview small { grid-column: auto; white-space: normal; } .provider-health-model-row { grid-template-columns: minmax(0, 1fr) auto; } .provider-health-single-button { grid-column: 1 / -1; width: 100%; } } @media (prefers-reduced-motion: reduce) { .install-progress-track.unknown.is-running .install-progress-fill { animation-duration: 2.2s; } } .inline-notice { margin: 0 0 12px; padding: 10px 12px; border: 1px solid var(--theme-e2ddd3); border-radius: 8px; background: var(--theme-f8f5ef); color: var(--theme-2d2a26); font-size: var(--font-size-body); line-height: var(--line-height-body); } .inline-notice.success { border-color: var(--theme-c9dfcf); background: var(--theme-eef7f0); color: var(--theme-2f6b3a); } .inline-notice.error { border-color: var(--theme-efc9c2); background: var(--theme-fdf1ee); color: var(--theme-a33b2b); }