:root { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif; color: #2d2a26; background: #faf9f5; font-synthesis: none; text-rendering: optimizeLegibility; } * { box-sizing: border-box; } html, body, #root { width: 100%; min-width: 0; height: 100%; margin: 0; } .app-error-boundary { display: grid; min-height: 100vh; place-items: center; padding: 24px; background: #faf9f5; } .app-error-boundary .empty-state { width: min(560px, 100%); } body { margin: 0; } button, input { font: inherit; } button { cursor: pointer; } button:focus-visible, input:focus-visible { outline: 3px solid rgba(45, 42, 38, 0.18); outline-offset: 2px; } .app-shell { display: grid; grid-template-columns: 236px minmax(0, 1fr); min-height: 100vh; background: #faf9f5; } .sidebar { position: sticky; top: 0; display: flex; flex-direction: column; height: 100vh; padding: 18px; background: #f0eee8; color: #2d2a26; } .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 #d5d2cb; border-radius: 8px; background: #2d2a26; color: #fffdf8; font-size: 14px; font-weight: 800; } .brand-logo { display: block; object-fit: cover; } .sidebar-brand strong, .sidebar-brand span { display: block; min-width: 0; } .sidebar-brand strong { overflow: hidden; color: #2d2a26; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; } .sidebar-brand div > span { margin-top: 4px; color: #7a746c; font-size: 12px; } .nav-section { display: grid; gap: 6px; } .nav-section button { display: grid; grid-template-columns: 19px minmax(0, 1fr) 10px; align-items: center; gap: 10px; width: 100%; min-height: 42px; padding: 0 12px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: #2d2a26; text-align: left; } .nav-section button svg { color: #7a746c; } .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: #c77b30; box-shadow: 0 0 0 3px rgba(199, 123, 48, 0.14); } .nav-update-indicator.processing { background: #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: #e8e5dc; color: #2d2a26; } .nav-section button:disabled, .nav-section button.locked { cursor: not-allowed; color: #9a958d; opacity: 0.58; } .nav-section button:disabled:hover, .nav-section button.locked:hover { background: transparent; color: #9a958d; } .nav-section button:disabled svg, .nav-section button.locked svg { color: #aaa49b; } .nav-section button.active { border-color: #d5d2cb; background: #dfdcd4; color: #2d2a26; font-weight: 700; } .nav-section button.active svg { color: #2d2a26; } .sidebar-bottom { display: grid; gap: 10px; margin-top: auto; padding-top: 18px; border-top: 1px solid #e3e1db; } .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: 40px; padding: 0 10px; border: 1px solid #d8d4cc; border-radius: 8px; background: #fffdf8; color: #716b61; text-align: left; } .sidebar-language-trigger:hover, .sidebar-language-trigger[aria-expanded='true'] { border-color: #c7c2b8; background: #e8e5dc; color: #2d2a26; } .sidebar-language-trigger span { min-width: 0; overflow: hidden; font-size: 12px; font-weight: 700; 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 #d8d4cc; border-radius: 9px; background: #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: #5f5a53; font-size: 12px; font-weight: 650; text-align: left; } .sidebar-language-list button:hover { background: #f0eee8; color: #2d2a26; } .sidebar-language-list button.selected { background: #e8e5dc; color: #2d2a26; } .sidebar-language-list button svg { color: #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 #d8d4cc; border-radius: 7px; background: #fffdf8; color: #4f4a43; text-align: left; } .sidebar-contact:hover { border-color: #c7c2b8; background: #e8e5dc; color: #2d2a26; } .sidebar-contact svg { color: #7a746c; } .sidebar-contact span { overflow: hidden; font-size: 12px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .workspace { min-width: 0; } .state-pill { display: inline-flex; align-items: center; justify-content: center; min-height: 28px; padding: 0 10px; border: 1px solid #d5d2cb; border-radius: 999px; background: #fffdf8; color: #5f5a53; font-size: 12px; font-weight: 700; white-space: nowrap; } .state-pill.success { border-color: #b6d3bd; background: #eef7f0; color: #2f6b3f; } .state-pill.error { border-color: #dfb7b0; background: #fff1ee; color: #9f2d20; } .state-pill.update { border-color: #dfbf91; background: #fff7e9; color: #8b5b21; } .content { width: 100%; padding: 24px 40px 42px; container-type: inline-size; container-name: workspace; } .page { width: min(100%, 1180px); margin-inline: auto; } .kernel-page, .config-page, .management-page { display: grid; gap: 18px; } .panel { min-width: 0; padding: 20px; border: 1px solid #e3e1db; border-radius: 8px; background: #fffdf8; box-shadow: 0 1px 2px rgba(45, 42, 38, 0.04); } .quiet-panel { background: #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: #2d2a26; font-size: 16px; line-height: 1.25; } .panel-heading p { min-height: 19px; margin: 5px 0 0; overflow: hidden; color: #5f5a53; font-size: 13px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; } .panel-heading p.success { color: #2f6b3f; } .panel-heading p.error { color: #9f2d20; } .status-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .status-card { display: grid; gap: 4px; min-width: 0; min-height: 72px; padding: 12px 14px; border: 1px solid #e3e1db; border-radius: 8px; background: #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: #7a746c; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .status-card strong { overflow: hidden; color: #2d2a26; font-size: 16px; line-height: 1.25; 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: #817b73; font-size: 10px; font-weight: 600; } .software-version-action span { color: inherit; font-size: 10px; font-weight: 600; } .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: #866b4d; } .software-version-action.error { color: #8a625d; } .status-dot { display: block; width: 12px; height: 12px; border-radius: 999px; background: #9b958c; box-shadow: 0 0 0 5px rgba(155, 149, 140, 0.14); } .status-dot.success { background: #2f6b3f; box-shadow: 0 0 0 5px rgba(47, 107, 63, 0.15); } .status-dot.error { background: #9f2d20; box-shadow: 0 0 0 5px rgba(159, 45, 32, 0.15); } .status-dot.neutral { background: #9b958c; } .kernel-layout { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 18px; } .config-workspace-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.65fr); align-items: stretch; gap: 18px; height: 430px; } .control-panel { grid-column: auto; } .version-panel { grid-column: auto; } .version-heading-inline { display: flex; min-width: 0; align-items: baseline; gap: 10px; } .version-heading-inline h2 { flex: none; } .version-offline-hint { min-width: 0; overflow: hidden; color: #8a847c; font-size: 10px; font-weight: 400; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .kernel-layout > .version-panel > .panel-heading { padding-bottom: 10px; } .client-api-panel { margin-top: 0; } .client-api-heading { min-height: 44px; margin-bottom: 14px; } .client-api-heading .state-pill { flex: none; } .client-api-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr)); gap: 12px; } .client-api-card { display: grid; grid-template-rows: auto auto; gap: 14px; min-width: 0; padding: 16px; border: 1px solid #e3e1db; border-radius: 8px; background: #faf9f5; } .client-api-card-heading { display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: center; gap: 11px; min-width: 0; } .client-api-logo { display: grid; width: 40px; height: 40px; place-items: center; border: 1px solid #e3e1db; border-radius: 8px; background: #fffdf8; } .client-api-logo img { display: block; width: 23px; height: 23px; object-fit: contain; } .client-api-card-heading > div { display: grid; min-width: 0; gap: 4px; } .client-api-card-heading strong, .client-api-card-heading span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .client-api-card-heading strong { color: #2d2a26; font-size: 14px; } .client-api-card-heading > div > span { color: #7a746c; font-size: 11px; } .client-api-values { display: grid; gap: 7px; } .client-api-value-row { display: grid; grid-template-columns: minmax(0, 1fr) 30px; align-items: center; gap: 6px 8px; min-width: 0; min-height: 52px; padding: 8px 10px; border: 1px solid #e3e1db; border-radius: 6px; background: #fffdf8; } .client-api-value-row > span:first-child { grid-column: 1 / -1; color: #7a746c; font-size: 11px; font-weight: 700; } .client-api-value-row code { min-width: 0; color: #2d2a26; font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; white-space: normal; } .client-api-value-row .icon-button { width: 30px; height: 30px; } .client-api-copy-placeholder { display: block; width: 30px; height: 30px; } .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: #7a746c; font-size: 13px; } .panel-detail-row dd { min-width: 0; margin: 0; overflow: hidden; color: #2d2a26; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .panel-detail-row dd.success { color: #2f6b3f; } .panel-detail-row dd.error { color: #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 #d5d2cb; border-radius: 6px; background: #ffffff; color: #2d2a26; text-align: right; } .compact-text-input::placeholder { color: #9b958c; } .compact-text-input.error { border-color: #a83f32; color: #9f2d20; } .compact-text-input:disabled { cursor: not-allowed; background: #f4f1ea; } .control-action-row { grid-template-columns: repeat(auto-fit, minmax(min(120px, 100%), 1fr)); grid-auto-flow: row; } .version-action-row { grid-template-columns: repeat(auto-fit, minmax(min(120px, 100%), 1fr)); grid-auto-flow: row; } .software-update-details { align-content: start; } .software-update-actions { grid-template-columns: repeat(auto-fit, minmax(min(120px, 100%), 1fr)); grid-auto-flow: row; } .software-update-panel .panel-heading p { white-space: normal; } @container workspace (min-width: 840px) { .home-page { grid-template-columns: minmax(320px, 0.8fr) minmax(0, 1.2fr); align-items: start; } .home-page > .home-layout { display: contents; } .home-page > .client-api-panel { grid-column: 2; } .version-management-layout { grid-template-columns: repeat(2, minmax(0, 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: #7a746c; font-size: 13px; } .info-list dd { min-width: 0; margin: 0; overflow: hidden; color: #2d2a26; text-overflow: ellipsis; white-space: nowrap; } .empty-state { display: grid; gap: 6px; padding: 18px; border: 1px dashed #d5d2cb; border-radius: 8px; background: #fffdf8; color: #5f5a53; } .empty-state strong { color: #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: 38px; min-width: 0; overflow: hidden; padding: 0 10px; border-radius: 6px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .primary-button svg, .secondary-button svg, .danger-button svg { flex: none; } .primary-button { border: 1px solid #2d2a26; background: #2d2a26; color: #fffdf8; } .primary-button:hover:not(:disabled) { background: #433f39; } .secondary-button { border: 1px solid #d5d2cb; background: #fffdf8; color: #2d2a26; } .secondary-button:hover:not(:disabled) { background: #f4f1ea; } .danger-button { border: 1px solid #a83f32; background: #fffdf8; color: #9f2d20; } .danger-button:hover:not(:disabled) { background: #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 #d5d2cb; border-radius: 999px; background: #e8e5dc; transition: background 140ms ease, border-color 140ms ease; } .switch-track::after { display: block; width: 18px; height: 18px; margin: 2px; border-radius: 999px; background: #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: #2d2a26; background: #2d2a26; } .switch-control input:checked + .switch-track::after { transform: translateX(20px); } .config-keys-panel, .config-setting-panel { display: grid; min-height: 0; } .config-keys-panel { grid-template-rows: 42px minmax(0, 1fr); gap: 16px; height: 430px; } .config-side-stack { display: grid; grid-template-rows: repeat(2, 206px); gap: 18px; height: 430px; } .config-setting-panel { grid-template-rows: 42px minmax(0, 1fr); gap: 16px; height: 206px; } .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: #6d6760; } .config-heading-title h2 { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .config-heading-actions { gap: 8px; flex: none; } .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 #d5d2cb; border-radius: 6px; background: #f4f1ea; color: #5f5a53; font-size: 12px; font-variant-numeric: tabular-nums; font-weight: 700; } .icon-button { display: inline-flex; width: 34px; height: 34px; flex: none; align-items: center; justify-content: center; padding: 0; border: 1px solid #2d2a26; border-radius: 6px; background: #2d2a26; color: #fffdf8; } .icon-button:hover:not(:disabled) { background: #433f39; } .icon-button.quiet { border-color: #d5d2cb; background: #fffdf8; color: #2d2a26; } .icon-button.quiet:hover:not(:disabled) { background: #f4f1ea; } .icon-button.danger { border-color: #dfb7b0; background: #fffdf8; color: #9f2d20; } .icon-button.danger:hover:not(:disabled) { background: #fff1ee; } .icon-button:disabled { cursor: not-allowed; opacity: 0.5; } .config-key-list { min-height: 0; overflow-x: hidden; overflow-y: auto; border-top: 1px solid #e3e1db; border-bottom: 1px solid #e3e1db; scrollbar-gutter: stable; } .config-key-row { display: grid; grid-template-columns: minmax(0, 1fr) 86px; align-items: center; gap: 12px; min-height: 66px; padding: 0 4px 0 2px; border-bottom: 1px solid #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: #f0eee8; color: #7a746c; font-size: 11px; font-variant-numeric: tabular-nums; font-weight: 800; } .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: #2d2a26; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; } .config-protected-key { display: inline-flex; flex: none; align-items: center; justify-content: center; border: 1px solid #c9c4ba; border-radius: 999px; background: #f4f1ea; color: #6d6760; font-size: 10px; font-weight: 800; } .config-protected-key { width: 40px; height: 28px; } .config-key-details code { min-width: 0; overflow: hidden; color: #7a746c; font-size: 12px; letter-spacing: 0; text-overflow: ellipsis; white-space: nowrap; } .config-key-actions { display: grid; grid-template-columns: 32px 40px; 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: #eeece6; } .config-key-row.skeleton span:last-child { width: 70px; height: 28px; justify-self: end; border-radius: 5px; background: #f4f1ea; } .config-empty-list, .config-unavailable { display: grid; height: 100%; min-height: 0; place-content: center; justify-items: center; gap: 9px; padding: 24px; color: #7a746c; text-align: center; } .config-empty-list strong, .config-unavailable strong { color: #2d2a26; font-size: 14px; } .config-unavailable > span { width: min(360px, 100%); overflow: hidden; color: #9f2d20; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .compact-button { gap: 7px; width: auto; min-height: 34px; margin-top: 3px; padding: 0 12px; font-size: 13px; } .config-single-control { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 16px; padding: 0 4px; } .config-single-control > span { overflow: hidden; color: #2d2a26; font-size: 14px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .routing-segmented { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-self: center; gap: 4px; height: 40px; padding: 4px; border: 1px solid #d5d2cb; border-radius: 7px; background: #f0eee8; } .routing-segmented button { min-width: 0; overflow: hidden; padding: 0 8px; border: 0; border-radius: 5px; background: transparent; color: #6d6760; font-size: 13px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .routing-segmented button:hover:not(:disabled) { background: #e8e5dc; color: #2d2a26; } .routing-segmented button.active { background: #fffdf8; color: #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 #d5d2cb; border-radius: 8px; background: #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: #2d2a26; font-size: 17px; text-overflow: ellipsis; white-space: nowrap; } .config-dialog-field { display: grid; grid-template-rows: 20px 42px; gap: 8px; color: #5f5a53; font-size: 13px; font-weight: 700; } .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 #d5d2cb; border-radius: 6px; background: #ffffff; color: #2d2a26; } .config-dialog-text-input { width: 100%; height: 42px; min-width: 0; padding: 0 12px; border: 1px solid #d5d2cb; border-radius: 6px; background: #ffffff; color: #2d2a26; } .config-dialog-text-input:disabled { cursor: not-allowed; background: #f4f1ea; } .config-secret-input input[aria-invalid='true'] { border-color: #a83f32; } .config-secret-input input:disabled { cursor: not-allowed; background: #f4f1ea; } .config-form-message { min-width: 0; overflow: hidden; color: transparent; font-size: 12px; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; } .config-form-message.error { color: #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 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 { display: grid; gap: 18px; width: min(430px, 100%); padding: 24px; border: 1px solid #d5d2cb; border-radius: 10px; outline: none; background: #fffdf8; box-shadow: 0 22px 60px rgba(45, 42, 38, 0.28); } .close-dialog-heading { display: grid; gap: 5px; } .close-dialog-heading span { color: #7a746c; font-size: 12px; font-weight: 800; letter-spacing: 0.04em; } .close-dialog-heading h2 { margin: 0; color: #2d2a26; font-size: 20px; line-height: 1.25; } .close-dialog > p { margin: 0; color: #5f5a53; font-size: 13px; line-height: 1.6; } .close-dialog-error { padding: 9px 11px; border: 1px solid #dfb7b0; border-radius: 6px; background: #fff1ee; color: #9f2d20; font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; } .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: 13px; } .close-choice-button:focus-visible { outline: 3px solid rgba(66, 99, 127, 0.36); outline-offset: 2px; } @media (max-width: 520px) { .close-dialog-backdrop { padding: 16px; } .close-dialog { padding: 20px; } .close-dialog-actions { grid-template-columns: 1fr; } } .config-delete-dialog { grid-template-rows: 40px 52px 40px; height: 202px; } .config-delete-key { display: flex; min-width: 0; align-items: center; overflow: hidden; padding: 0 14px; border-radius: 6px; background: #f4f1ea; color: #2d2a26; font-size: 14px; letter-spacing: 0; text-overflow: ellipsis; white-space: nowrap; } .config-toast { position: fixed; right: 24px; bottom: 24px; z-index: 90; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 9px; width: min(360px, calc(100vw - 48px)); height: 46px; padding: 0 14px; border: 1px solid #b6d3bd; border-radius: 7px; background: #eef7f0; color: #2f6b3f; box-shadow: 0 10px 30px rgba(45, 42, 38, 0.16); } .config-toast.error { border-color: #dfb7b0; background: #fff1ee; color: #9f2d20; } .config-toast.info { border-color: #c9d6e2; background: #f1f6fa; color: #42637f; } .config-toast span { min-width: 0; overflow: hidden; font-size: 13px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .management-header { display: flex; align-items: end; 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: #7a746c; font-size: 12px; font-weight: 800; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .management-header h1 { margin: 0; overflow: hidden; color: #2d2a26; font-size: 24px; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .oauth-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .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: #2d2a26; font-size: 16px; line-height: 1.25; 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: #7a746c; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .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: #7a746c; font-size: 13px; line-height: 1.5; } .oauth-auth-url-box { display: grid; gap: 8px; min-width: 0; padding: 12px; border: 1px solid #e2ddd3; border-radius: 8px; background: #f8f5ef; } .oauth-auth-url-label { color: #7a746c; font-size: 12px; font-weight: 700; } .oauth-auth-url-value { min-width: 0; overflow: hidden; color: #2d2a26; font-size: 12px; line-height: 1.45; 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-inline-status { min-width: 0; color: #7a746c; font-size: 12px; line-height: 1.4; } .oauth-inline-status.success { color: #2f6b3a; } .oauth-inline-status.error { color: #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 #d5d2cb; border-radius: 6px; background: #ffffff; color: #2d2a26; } .oauth-callback-row input:disabled { cursor: not-allowed; background: #f4f1ea; } .management-dialog textarea { width: 100%; min-width: 0; min-height: 78px; resize: vertical; padding: 9px 12px; border: 1px solid #d5d2cb; border-radius: 6px; background: #ffffff; color: #2d2a26; font: inherit; line-height: 1.45; } .management-dialog label.multiline-field { grid-template-rows: 18px auto; } .oauth-callback-row > span { min-width: 0; overflow: hidden; color: #7a746c; font-size: 13px; 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 #e2ddd3; border-radius: 7px; background: #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: #5f5a53; font-size: 12px; font-weight: 700; } .model-config-heading small { color: #7a746c; font-size: 11px; font-weight: 400; } .model-config-summary { display: grid; gap: 3px; min-width: 0; min-height: 48px; align-content: center; padding: 8px 10px; border: 1px dashed #d5d2cb; border-radius: 6px; background: #fffdf8; } .model-config-summary.has-models { border-style: solid; border-color: #c9d8ca; background: #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: #5f5a53; font-size: 12px; } .model-config-summary span { color: #8a847c; font-size: 11px; } .model-picker-error { color: #9f2d20; font-size: 11px; font-weight: 400; } .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 #d5d2cb; border-radius: 9px; background: #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: #2d2a26; font-size: 18px; } .model-discovery-header span, .model-discovery-toolbar > span { color: #7a746c; font-size: 12px; 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 #d5d2cb; border-radius: 7px; background: #ffffff; color: #8a847c; } .model-discovery-search input { width: 100%; min-width: 0; height: 38px; padding: 0; border: 0; outline: 0; background: transparent; color: #2d2a26; } .model-discovery-search .compact-button { min-height: 30px; } .model-discovery-toolbar > div { display: flex; gap: 7px; } .model-discovery-content { min-height: 0; overflow: hidden; border: 1px solid #e2ddd3; border-radius: 7px; background: #ffffff; } .model-discovery-list { height: 100%; overflow: auto; } .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 #eeece6; color: #5f5a53; cursor: pointer; } .model-discovery-row:last-child { border-bottom: 0; } .model-discovery-row:hover, .model-discovery-row.selected { background: #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: #2d2a26; font-size: 12px; } .model-discovery-row small { color: #8a847c; font-size: 11px; font-weight: 400; } .model-discovery-row > svg { color: #2f6b3a; } .model-discovery-message { display: grid; height: 100%; min-height: 190px; place-content: center; justify-items: center; gap: 8px; padding: 20px; color: #7a746c; font-size: 12px; text-align: center; } .model-discovery-message strong { color: #5f5a53; font-size: 13px; } .model-discovery-message.error, .model-discovery-message.error strong { color: #9f2d20; } .model-discovery-actions { justify-content: flex-end; } .model-discovery-actions button { min-width: 112px; } .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: 54px; min-width: 0; padding: 0 8px; border: 1px solid transparent; border-radius: 7px; background: transparent; color: #2d2a26; } .provider-category-panel button:hover { background: #f4f1ea; } .provider-category-panel button.active { border-color: #d5d2cb; background: #f0eee8; } .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: 1.25; overflow-wrap: anywhere; text-align: left; font-weight: 700; text-overflow: clip; white-space: normal; } .provider-category-panel strong { color: #7a746c; font-size: 12px; 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 #d5d2cb; border-radius: 7px; background: #ffffff; } .management-toolbar input { height: 38px; padding: 0; border: 0; } .resource-table { min-height: 0; overflow: auto; border-top: 1px solid #e3e1db; border-bottom: 1px solid #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 #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: #2d2a26; font-size: 14px; } .resource-main span, .resource-models, .resource-priority { color: #7a746c; font-size: 12px; } .resource-row code { color: #2d2a26; font-size: 12px; } .resource-priority { text-align: right; font-variant-numeric: tabular-nums; font-weight: 700; } .resource-row .state-pill { width: 70px; } .management-empty { display: grid; height: 100%; min-height: 220px; place-content: center; justify-items: center; gap: 10px; color: #7a746c; } .management-empty strong { color: #2d2a26; font-size: 14px; } .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 #d5d2cb; border-radius: 8px; background: #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: #7a746c; font-size: 12px; font-weight: 700; } .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 #e3e1db; border-bottom: 1px solid #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 #eeece6; } .auth-file-row:last-child { border-bottom: 0; } .auth-file-row > span:not(.state-pill) { min-width: 0; overflow: hidden; color: #7a746c; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .muted-summary { color: #7a746c; font-size: 12px; white-space: nowrap; } .management-alert { display: flex; align-items: center; min-height: 38px; padding: 0 12px; border: 1px solid #d5d2cb; border-radius: 7px; background: #fffdf8; color: #5f5a53; font-size: 13px; } .management-alert.error { border-color: #dfb7b0; background: #fff1ee; color: #9f2d20; } .management-alert.success { border-color: #b8d1bb; background: #f1f8f1; color: #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 #e3e1db; } .real-provider-row { display: grid; grid-template-columns: minmax(280px, 1.6fr) minmax(120px, 0.5fr) auto; align-items: start; gap: 16px; min-height: 88px; padding: 14px 0; border-bottom: 1px solid #eeece6; } .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: #7a746c; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .provider-row-main > code { color: #2d2a26; } .provider-row-main > .provider-row-url, .provider-row-main > .provider-row-models { overflow: visible; line-height: 1.45; 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: #2d2a26; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; } .provider-row-title strong { line-height: 1.4; overflow-wrap: anywhere; text-overflow: clip; white-space: normal; } .provider-row-title .state-pill { flex: none; } .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-enabled-control { display: flex; min-width: 108px; align-items: center; justify-content: flex-end; gap: 8px; color: #7a746c; font-size: 11px; 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: #7a746c; } .real-provider-workbench .management-empty { min-height: 360px; } .real-provider-workbench + .config-dialog-backdrop .management-dialog { grid-template-rows: auto repeat(5, minmax(52px, auto)) auto; height: auto; max-height: min(600px, calc(100vh - 32px)); overflow: auto; } .real-provider-workbench + .config-dialog-backdrop .api-provider-dialog { grid-template-rows: auto; grid-auto-rows: auto; width: min(560px, 100%); 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 #e8e4dc; background: #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 #e8e4dc; background: #fffdf8; } .api-provider-dialog label { grid-template-rows: 16px 36px; gap: 4px; } .api-provider-dialog input { height: 36px; } .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; } .provider-preset-summary { display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: center; gap: 10px; min-height: 52px; padding: 9px 11px; border: 1px solid #dce2fb; border-radius: 7px; background: #f5f7ff; } .provider-preset-summary .provider-logo { width: 30px; height: 30px; } .provider-preset-summary > div { display: grid; min-width: 0; gap: 3px; } .provider-preset-summary strong { color: #344ca1; font-size: 12px; } .provider-preset-summary span { color: #66709a; font-size: 11px; overflow-wrap: anywhere; } .thinking-level-config { display: grid; gap: 9px; padding: 11px 12px; border: 1px solid #e2ddd3; border-radius: 7px; background: #faf9f5; } .thinking-level-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; } .thinking-level-heading strong { color: #5f5a53; font-size: 12px; } .thinking-level-heading span { color: #8a847c; font-size: 11px; } .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 #d5d2cb; border-radius: 6px; background: #fff; color: #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 #d5d2cb; border-radius: 999px; background: #fffdf8; color: #6d6760; font-size: 11px; font-weight: 700; } .thinking-level-tags.readonly > span { padding-right: 9px; border-color: #9ca9df; background: #eef1ff; color: #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: #8a847c; } .thinking-level-tags button:hover { background: #eeece6; color: #2d2a26; } .thinking-level-empty { color: #8a847c; font-size: 11px; } .provider-advanced-settings { border: 1px solid #e2ddd3; border-radius: 7px; background: #faf9f5; } .provider-advanced-settings > summary { padding: 11px 12px; color: #5f5a53; font-size: 12px; font-weight: 700; cursor: pointer; } .provider-advanced-fields { display: grid; gap: 14px; padding: 4px 12px 14px; border-top: 1px solid #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: #5f5a53; font-size: 12px; } .provider-advanced-toggle > div > span { color: #8a847c; font-size: 11px; } .provider-advanced-toggle .switch-control { display: inline-block; flex: 0 0 auto; } .provider-cloak-settings { display: grid; gap: 14px; padding: 12px; border: 1px dashed #d5d2cb; border-radius: 6px; background: #fffdf8; } .provider-cloak-settings select { width: 100%; min-width: 0; height: 40px; padding: 0 10px; border: 1px solid #d5d2cb; border-radius: 6px; background: #ffffff; color: #2d2a26; } .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-guide { display: grid; grid-template-columns: 24px minmax(270px, 1fr) minmax(280px, auto); align-items: center; gap: 12px; min-height: 86px; padding: 12px 14px; border: 1px solid #d9d4c9; border-radius: 8px; background: #f8f6f1; color: #655f57; } .thinking-alias-guide > svg { color: #654f91; } .thinking-alias-guide-copy { display: grid; min-width: 0; gap: 4px; } .thinking-alias-guide strong { color: #342f2a; font-size: 12px; } .thinking-alias-guide p { margin: 0; color: #777067; font-size: 10px; line-height: 1.5; } .thinking-alias-guide-copy > span { width: fit-content; padding: 2px 7px; border: 1px solid #b9d5bf; border-radius: 999px; background: #eef7f0; color: #2f6b3f; font-size: 9px; font-weight: 800; } .thinking-alias-guide code { padding: 6px 9px; border: 1px solid #d8d1eb; border-radius: 6px; background: #f5f1ff; color: #654f91; font-size: 10px; white-space: nowrap; } .thinking-alias-flow { display: grid; grid-template-columns: auto 14px minmax(0, auto); align-items: center; gap: 6px; } .thinking-alias-flow > span, .thinking-alias-flow > div > span { display: grid; gap: 3px; } .thinking-alias-flow > div { display: grid; gap: 5px; } .thinking-alias-flow > div > span { grid-template-columns: 54px minmax(0, auto); align-items: center; } .thinking-alias-flow small { color: #8a847c; font-size: 8px; font-weight: 700; text-align: center; } .thinking-alias-flow > svg { color: #aaa49b; } .thinking-alias-workbench { display: grid; grid-template-columns: minmax(330px, 390px) minmax(0, 1fr); gap: 16px; align-items: stretch; } .thinking-alias-builder, .thinking-alias-list-panel { height: clamp(420px, calc(100vh - 270px), 580px); min-height: 420px; } .thinking-alias-builder { position: relative; z-index: 2; display: flex; flex-direction: column; gap: 12px; padding: 16px; overflow: visible; } .thinking-alias-panel-heading { display: flex; align-items: center; gap: 11px; padding-bottom: 11px; border-bottom: 1px solid #e3e1db; } .thinking-alias-panel-heading > span { display: grid; width: 38px; height: 38px; flex: none; place-items: center; border: 1px solid #d8d1eb; border-radius: 8px; background: #f5f1ff; color: #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: #2d2a26; font-size: 15px; } .thinking-alias-panel-heading p, .thinking-alias-list-heading span { margin: 0; color: #8a847c; font-size: 10px; } .thinking-alias-field { display: grid; min-height: 0; gap: 6px; } .thinking-model-field { position: relative; z-index: 10; } .thinking-alias-field > label { color: #6f6961; font-size: 11px; font-weight: 700; } .thinking-field-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .thinking-field-heading strong { color: #6f6961; font-size: 11px; } .thinking-field-heading span { overflow: hidden; color: #918a81; font-size: 9px; 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 #d5d2cb; border-radius: 6px; background: #fff; color: #8a847c; } .thinking-model-search input { flex: 1; min-width: 0; height: 34px; padding: 0; border: 0; outline: 0; background: transparent; color: #2d2a26; font-size: 12px; } .thinking-source-kind { max-width: 105px; overflow: hidden; padding: 3px 6px; border: 1px solid #d8d1eb; border-radius: 999px; background: #f5f1ff; color: #654f91; font-size: 8px; font-weight: 800; 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 #e5e1d9; border-radius: 7px; background: #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 #eeeae2; background: transparent; color: #2d2a26; text-align: left; } .thinking-model-list > button:last-child { border-bottom: 0; } .thinking-model-list > button:hover, .thinking-model-list > button.active { background: #f2efe8; } .thinking-model-list > button.selected { background: #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: 11px; } .thinking-model-option-copy > span:first-child small { color: #8a847c; font-size: 9px; } .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: #eeece6; color: #5f5a53; font-size: 8px; font-style: normal; font-weight: 800; } .thinking-model-source small { color: #8a847c; font-size: 9px; } .thinking-model-list > button > svg { color: #2f6b3f; } .thinking-model-empty { display: flex; min-height: 82px; align-items: center; justify-content: center; gap: 7px; color: #8a847c; font-size: 11px; } .thinking-model-selection { display: flex; min-width: 0; align-items: center; gap: 6px; color: #777067; font-size: 9px; } .thinking-model-selection > span { flex: none; padding: 2px 5px; border-radius: 4px; background: #eeece6; color: #5f5a53; font-weight: 800; } .thinking-model-selection strong { min-width: 0; overflow: hidden; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; } .thinking-model-hint { color: #918a81; font-size: 9px; line-height: 1.4; } .thinking-effort-options { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; } .thinking-effort-options button { height: 34px; padding: 0 4px; border: 1px solid #d5d2cb; border-radius: 6px; background: #fff; color: #7a746c; font-size: 10px; font-weight: 700; } .thinking-effort-options button.active { border-color: #8069ad; background: #f1ecfb; color: #554075; } .thinking-effort-options button.custom { overflow: hidden; border-style: dashed; text-overflow: ellipsis; white-space: nowrap; } .thinking-effort-options button.custom.active { border-style: solid; } .thinking-effort-custom { display: grid; grid-template-columns: minmax(0, 1fr) 30px; align-items: center; gap: 3px; } .thinking-effort-custom input { width: 100%; height: 34px; padding: 0 9px; border: 1px solid #d5d2cb; border-radius: 6px; outline: 0; background: #fff; color: #2d2a26; font-size: 11px; } .thinking-effort-custom input:focus { border-color: #9d8abd; box-shadow: 0 0 0 2px rgba(128, 105, 173, 0.12); } .thinking-effort-custom .icon-button { width: 30px; height: 30px; } .thinking-effort-custom small { grid-column: 1 / -1; color: #918a81; font-size: 9px; } .thinking-alias-input { width: 100%; height: 36px; padding: 0 10px; border: 1px solid #d5d2cb; border-radius: 6px; outline: 0; background: #fff; color: #2d2a26; font-size: 12px; } .thinking-alias-input:focus, .thinking-model-search:focus-within { border-color: #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 #d8d1eb; border-radius: 7px; background: #f8f5ff; color: #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: #3f3550; font-size: 11px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .thinking-alias-preview code { color: #8069ad; font-size: 10px; } .thinking-alias-create { width: 100%; margin-top: auto; } .thinking-alias-list-panel { display: grid; grid-template-rows: 48px minmax(0, 1fr); gap: 12px; padding: 16px; } .thinking-alias-list-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 11px; border-bottom: 1px solid #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: #eeece6; color: #5f5a53; font-size: 11px; } .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: 58px; padding: 8px 7px 8px 10px; border-bottom: 1px solid #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: #7a746c; font-size: 11px; } .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: #eeece6; color: #6f6961; font-size: 7px; font-style: normal; font-weight: 800; } .thinking-alias-route-source > small span { color: #9a938a; font-size: 8px; } .thinking-alias-route strong { color: #2d2a26; font-size: 12px; } .thinking-alias-route svg { color: #aaa49b; } .thinking-effort-badge { min-width: 52px; padding: 5px 8px; border: 1px solid #d8d1eb; border-radius: 999px; background: #f5f1ff; color: #654f91; font-size: 10px; font-weight: 800; text-align: center; text-transform: uppercase; } .thinking-effort-badge.missing { border-color: #e4d0af; background: #fff8eb; color: #805a24; text-transform: none; } .agent-workbench { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 16px; align-items: stretch; } .agent-client-list, .agent-config-panel { height: 540px; min-height: 540px; } .agents-page { grid-template-rows: 54px 42px auto; gap: 14px; } .agent-feedback-slot { min-height: 42px; overflow: hidden; } .agent-feedback-slot .management-alert { min-height: 42px; max-height: 42px; overflow: hidden; } .agent-client-list { display: grid; align-content: start; gap: 14px; padding: 14px; } .agent-list-heading { display: flex; align-items: center; gap: 9px; min-height: 42px; padding: 0 6px 11px; border-bottom: 1px solid #e3e1db; } .agent-list-heading > div, .agent-list-items button > span { display: grid; min-width: 0; gap: 3px; } .agent-list-heading strong, .agent-list-items strong { color: #2d2a26; font-size: 13px; } .agent-list-heading span, .agent-list-items small { overflow: hidden; color: #8a847c; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; } .agent-list-items { display: grid; gap: 6px; } .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: #2d2a26; text-align: left; } .agent-list-items button:hover { background: #f4f1ea; } .agent-list-items button.active { border-color: #d5d2cb; background: #eeece6; } .agent-list-items .provider-logo { width: 26px; height: 26px; } .agent-client-icon { display: grid; width: 28px; height: 28px; place-items: center; color: #5f5a53; } .agent-client-icon .provider-logo { object-fit: contain; } .agent-list-items i { width: 8px; height: 8px; border-radius: 999px; background: #c9c4ba; } .agent-list-items i.configured { background: #bf8a43; } .agent-list-items i.installed { background: #5d9a6c; } .agent-config-panel { display: grid; grid-template-rows: 44px 40px 70px 138px 72px minmax(48px, 1fr); align-content: stretch; gap: 14px; } .agent-config-message-slot { min-height: 40px; overflow: hidden; } .agent-config-message-slot .management-alert, .agent-config-message-slot .agent-warning-line { min-height: 40px; max-height: 40px; overflow: hidden; } .agent-config-message-slot .agent-warning-line { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .agent-config-heading, .agent-config-title, .agent-config-footer, .agent-config-footer > div, .agent-status-grid span { display: flex; align-items: center; } .agent-config-heading, .agent-config-footer { justify-content: space-between; gap: 14px; } .agent-launch-actions { display: flex; flex: none; align-items: center; gap: 8px; } .agent-launch-targets { display: inline-grid; grid-auto-flow: column; gap: 2px; padding: 3px; border: 1px solid #d5d2cb; border-radius: 7px; background: #eeece6; } .agent-launch-targets button { min-width: 44px; height: 30px; padding: 0 9px; border: 0; border-radius: 5px; background: transparent; color: #7a746c; font-size: 11px; font-weight: 700; } .agent-launch-targets button.active { background: #fffdf8; color: #2d2a26; box-shadow: 0 1px 3px rgba(45, 42, 38, 0.14); } .agent-config-heading .state-pill { min-width: 92px; justify-content: center; text-align: center; } .agent-config-title { min-width: 0; gap: 11px; } .agent-logo { display: grid; width: 42px; height: 42px; flex: none; place-items: center; border: 1px solid #e3e1db; border-radius: 8px; background: #fffdf8; } .agent-logo img { width: 24px; height: 24px; } .agent-logo svg { color: #5f5a53; } .agent-config-title > div { display: grid; min-width: 0; gap: 4px; } .agent-config-title h2 { margin: 0; color: #2d2a26; font-size: 17px; } .agent-config-title span { overflow: hidden; color: #7a746c; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .agent-warning-line { padding: 9px 11px; border: 1px solid #e4d0af; border-radius: 7px; background: #fff8eb; color: #805a24; font-size: 11px; line-height: 1.5; } .agent-status-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; height: 70px; } .agent-status-grid > div { display: grid; min-width: 0; gap: 5px; padding: 12px; border: 1px solid #e3e1db; border-radius: 7px; background: #fffdf8; } .agent-status-grid span { gap: 5px; color: #8a847c; font-size: 10px; } .agent-status-grid strong { min-width: 0; overflow: hidden; color: #2d2a26; font-size: 12px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .agent-model-section { display: grid; gap: 9px; min-width: 0; padding: 15px; border: 1px solid #e3e1db; border-radius: 8px; background: #faf9f5; height: 138px; } .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: #2d2a26; font-size: 12px; } .agent-section-heading > div > span, .agent-model-hint { color: #8a847c; font-size: 11px; } .agent-pending-badge { flex: none; padding: 4px 8px; border: 1px solid #e4d0af; border-radius: 999px; background: #fff8eb; color: #805a24; font-size: 10px; font-weight: 700; } .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 #d5d2cb; border-radius: 6px; background: #fff; color: #2d2a26; text-align: left; } .agent-model-trigger:hover:not(:disabled), .agent-model-picker.open .agent-model-trigger { border-color: #aaa49b; background: #fffdf8; } .agent-model-trigger:disabled { cursor: not-allowed; background: #f4f1ea; opacity: 0.62; } .agent-model-trigger > span { display: grid; min-width: 0; gap: 2px; } .agent-model-trigger strong, .agent-model-trigger small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-model-trigger strong { color: #2d2a26; font-size: 12px; } .agent-model-trigger small { color: #8a847c; font-size: 10px; } .agent-model-trigger > svg { color: #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 #e3e1db; border-radius: 8px; background: #fffdf8; box-shadow: 0 14px 34px rgba(45, 42, 38, 0.2); } .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 #d5d2cb; border-radius: 6px; background: #fff; color: #8a847c; } .agent-model-search input { width: 100%; min-width: 0; height: 38px; padding: 0; border: 0; outline: 0; background: transparent; color: #2d2a26; font-size: 12px; } .agent-model-list { min-height: 0; overflow-y: auto; border: 1px solid #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 #eeeae2; background: #fff; color: #2d2a26; text-align: left; } .agent-model-option:last-child { border-bottom: 0; } .agent-model-option:hover, .agent-model-option.active { background: #f4f1ea; } .agent-model-option.selected { background: #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: 12px; } .agent-model-option small { color: #8a847c; font-size: 10px; } .agent-model-option > svg { color: #2f6b3f; } .agent-model-empty { display: grid; min-height: 118px; place-items: center; align-content: center; gap: 6px; padding: 16px; color: #8a847c; font-size: 11px; text-align: center; } .agent-model-empty strong { color: #5f5a53; font-size: 12px; } .agent-model-empty.error, .agent-model-empty.error strong { color: #9f2d20; } .agent-model-dropdown-footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: #8a847c; font-size: 10px; } .agent-model-dropdown-footer .error { color: #9f2d20; } .agent-modification-switch { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 72px; padding: 13px 15px; border: 1px solid #e3e1db; border-radius: 8px; background: #fffdf8; height: 72px; } .agent-modification-switch.enabled { border-color: #b6d3bd; background: #f3f8f4; } .agent-modification-switch > div { display: grid; min-width: 0; gap: 4px; } .agent-modification-switch strong { color: #2d2a26; font-size: 13px; } .agent-modification-switch > div > span { color: #7a746c; font-size: 11px; line-height: 1.45; } .agent-modification-switch .switch-control { flex: none; } .agent-restore-dialog { grid-template-rows: 40px minmax(58px, auto) 40px; height: auto; min-height: 210px; } .agent-restore-dialog .config-dialog-heading > div { display: flex; align-items: center; color: #9f2d20; } .agent-restore-dialog p { margin: 0; color: #5f5a53; font-size: 12px; line-height: 1.65; } .agent-config-footer { min-height: 48px; padding-top: 14px; border-top: 1px solid #e3e1db; } .agent-config-footer > div { min-width: 0; gap: 7px; color: #7a746c; font-size: 11px; } .agent-config-footer > div span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-config-footer .primary-button { min-width: 120px; } .usage-records-page { display: grid; gap: 14px; align-content: start; } .usage-records-header { min-height: 54px; } .usage-collector-state { display: flex; align-items: center; gap: 10px; min-width: 164px; padding: 8px 11px; border: 1px solid #e3e1db; border-radius: 8px; background: #fffdf8; } .usage-collector-state .status-dot { width: 9px; height: 9px; box-shadow: 0 0 0 4px rgba(155, 149, 140, 0.12); } .usage-collector-state.success .status-dot { background: #2f6b3f; box-shadow: 0 0 0 4px rgba(47, 107, 63, 0.12); } .usage-collector-state.error .status-dot { background: #9f2d20; box-shadow: 0 0 0 4px rgba(159, 45, 32, 0.12); } .usage-collector-state > div { display: grid; gap: 2px; } .usage-collector-state strong { color: #2d2a26; font-size: 11px; } .usage-collector-state span { margin: 0; overflow: visible; color: #8a847c; font-size: 10px; font-weight: 400; text-transform: none; white-space: normal; } .usage-tabs { display: inline-grid; grid-auto-flow: column; justify-self: start; gap: 3px; padding: 3px; border: 1px solid #d5d2cb; border-radius: 8px; background: #eeece6; } .usage-tabs button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 104px; height: 34px; padding: 0 12px; border: 0; border-radius: 6px; background: transparent; color: #7a746c; font-size: 11px; font-weight: 700; } .usage-tabs button.active { background: #fffdf8; color: #2d2a26; box-shadow: 0 1px 4px rgba(45, 42, 38, 0.14); } .usage-filter-panel { display: grid; grid-template-columns: repeat(6, minmax(110px, 1fr)); gap: 8px; padding: 10px; } .usage-filter-panel select, .usage-filter-panel input { min-width: 0; height: 36px; padding: 0 9px; border: 1px solid #d5d2cb; border-radius: 6px; background: #fff; color: #2d2a26; font-size: 11px; } .usage-custom-range { display: grid; grid-column: 1 / -1; grid-template-columns: minmax(170px, 1fr) auto minmax(170px, 1fr); align-items: center; gap: 8px; color: #8a847c; font-size: 11px; } .usage-initial-loading, .usage-empty { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 120px; color: #8a847c; font-size: 11px; } .usage-overview-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(260px, 0.6fr); gap: 12px; } .usage-stat-grid { display: grid; grid-column: 1 / -1; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; } .usage-stat-card { display: grid; min-width: 0; gap: 8px; padding: 14px; } .usage-stat-card > span { display: flex; align-items: center; gap: 7px; color: #7a746c; font-size: 11px; } .usage-stat-card > strong { overflow: hidden; color: #2d2a26; font-size: 24px; text-overflow: ellipsis; white-space: nowrap; } .usage-stat-card > small { overflow: hidden; color: #8a847c; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; } .usage-trend-panel, .usage-health-panel, .usage-category-panel, .usage-events-panel { min-width: 0; } .usage-section-heading { display: flex; align-items: center; justify-content: space-between; min-height: 36px; margin-bottom: 10px; } .usage-section-heading > div { display: grid; gap: 3px; } .usage-section-heading strong { color: #2d2a26; font-size: 13px; } .usage-section-heading span { color: #8a847c; font-size: 10px; } .usage-trend { display: grid; gap: 8px; } .usage-trend svg { width: 100%; height: 180px; overflow: visible; border-bottom: 1px solid #e3e1db; background: repeating-linear-gradient(to bottom, transparent 0, transparent 43px, #eeeae2 44px); } .usage-trend polyline { stroke: #3f6f98; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } .usage-trend-labels { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: #8a847c; font-size: 9px; } .usage-trend-labels strong { color: #5f5a53; font-size: 10px; } .usage-token-breakdown, .usage-category-list { display: grid; gap: 12px; } .usage-token-breakdown > div, .usage-category-list > div { display: grid; gap: 6px; } .usage-token-breakdown span, .usage-category-list span { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .usage-token-breakdown strong, .usage-category-list strong { min-width: 0; overflow: hidden; color: #5f5a53; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .usage-token-breakdown small, .usage-category-list small { flex: none; color: #8a847c; font-size: 9px; } .usage-token-breakdown i, .usage-category-list i { display: block; overflow: hidden; height: 5px; border-radius: 999px; background: #eeece6; } .usage-token-breakdown b, .usage-category-list b { display: block; height: 100%; border-radius: inherit; background: #6684a1; } .usage-analysis-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .usage-category-panel { min-height: 290px; } .usage-events-panel { display: grid; gap: 10px; padding: 12px; } .usage-events-summary, .usage-pagination { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: #8a847c; font-size: 10px; } .usage-table-wrap { overflow: auto; min-height: 360px; border: 1px solid #e3e1db; border-radius: 7px; } .usage-events-table { width: 100%; min-width: 1320px; border-collapse: collapse; font-size: 10px; } .usage-events-table th, .usage-events-table td { height: 42px; padding: 7px 9px; border-bottom: 1px solid #eeeae2; color: #5f5a53; text-align: right; white-space: nowrap; } .usage-events-table th { position: sticky; z-index: 1; top: 0; background: #f4f1ea; color: #7a746c; font-weight: 700; } .usage-events-table th:first-child, .usage-events-table th:nth-child(2), .usage-events-table th:nth-child(3), .usage-events-table th:nth-child(4), .usage-events-table th:nth-child(5), .usage-events-table td:first-child, .usage-events-table td:nth-child(2), .usage-events-table td:nth-child(3), .usage-events-table td:nth-child(4), .usage-events-table td:nth-child(5) { text-align: left; } .usage-events-table .usage-stacked-cell { display: grid; align-content: center; max-width: 180px; } .usage-events-table td strong, .usage-events-table td small { overflow: hidden; text-overflow: ellipsis; } .usage-events-table td small { color: #8a847c; font-size: 9px; } .usage-result { display: inline-flex; padding: 3px 7px; border-radius: 999px; font-weight: 700; } .usage-result.success { background: #eef7f0; color: #2f6b3f; } .usage-result.failed { background: #fff1ee; color: #9f2d20; } .usage-pagination { justify-content: flex-end; } .usage-pagination button { min-width: 78px; min-height: 32px; } .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 #e3e1db; border-radius: 0; background: transparent; color: #5f5a53; } .real-auth-file-list { margin-top: 14px; border-top: 1px solid #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 #eeece6; } .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: #7a746c; font-size: 11px; } .auth-file-quota.loading, .auth-file-quota.error { flex-wrap: nowrap; } .auth-file-quota.error { color: #9f2d20; } .auth-file-quota.error small { min-width: 0; overflow: hidden; color: #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: #5f5a53; font-weight: 700; } .auth-file-quota-item { display: inline-flex; align-items: center; gap: 4px; min-width: 0; padding: 2px 7px; border-radius: 999px; background: #f2f0ea; white-space: nowrap; } .auth-file-quota-item strong { color: #2d2a26; } .auth-file-quota-item small { display: inline-block; max-width: 150px; overflow: hidden; color: #9a958d; text-overflow: ellipsis; } .real-auth-file-row.disabled { 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: #7a746c; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .auth-file-meta { justify-content: flex-end; gap: 10px; } .real-auth-file-row .secondary-button { min-width: 52px; } .page-footnote { margin: -6px 0 0; color: #7a746c; font-size: 12px; } .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: #7a746c; font-size: 12px; } .quota-group-heading > div { display: flex; align-items: center; gap: 8px; } .quota-group-heading h2 { margin: 0; color: #2d2a26; font-size: 16px; } .quota-group-heading .provider-logo { width: 24px; height: 24px; } .real-quota-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 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: #7a746c; font-size: 12px; } .quota-row-list { display: grid; gap: 13px; } .quota-reset-credit-summary { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 14px; padding: 8px 10px; border-radius: 6px; background: #f4f2ec; color: #7a746c; font-size: 11px; } .quota-reset-credit-summary span { white-space: nowrap; } .quota-reset-credit-summary strong { color: #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: #5f5a53; font-size: 12px; } .real-quota-row > div:first-child strong { color: #2d2a26; } .real-quota-track { height: 8px; overflow: hidden; border-radius: 999px; background: #e8e5dc; } .real-quota-track span { display: block; height: 100%; border-radius: inherit; background: #2d2a26; } .real-quota-row small { min-height: 15px; color: #9a958d; font-size: 11px; } .quota-card-message, .quota-card-error { display: flex; align-items: center; gap: 8px; min-height: 72px; color: #7a746c; font-size: 13px; } .quota-card-error { align-items: flex-start; color: #9f2d20; } .quota-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; } .quota-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 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: #2d2a26; font-size: 24px; line-height: 1; } .quota-meter-row span { min-width: 0; overflow: hidden; color: #7a746c; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; } .quota-track { height: 10px; overflow: hidden; border-radius: 999px; background: #e8e5dc; } .quota-track span { display: block; height: 100%; border-radius: inherit; background: #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: #f4f1ea; } .quota-meta-grid span, .quota-meta-grid strong { min-width: 0; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .quota-meta-grid span { color: #7a746c; } .quota-meta-grid strong { color: #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 #d5d2cb; border-radius: 8px; outline: none; background: #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: #7a746c; font-size: 12px; font-weight: 700; } .install-dialog-heading h2 { margin: 0; overflow: hidden; color: #2d2a26; font-size: 20px; line-height: 1.25; 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: #f4f1ea; } .install-dialog-phase span { color: #7a746c; font-size: 13px; } .install-dialog-phase strong { overflow: hidden; color: #2d2a26; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .install-progress-track { width: 100%; height: 10px; overflow: hidden; border-radius: 999px; background: #e8e5dc; } .install-progress-fill { display: block; width: 0; height: 100%; border-radius: inherit; background: #2d2a26; transition: width 160ms ease; } .install-dialog.success .install-progress-fill { background: #2f6b3f; } .install-dialog.error .install-progress-fill { background: #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: #6d6760; font-size: 13px; } .install-progress-meta strong, .install-progress-meta span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .install-progress-meta strong { color: #2d2a26; } .install-dialog-message { overflow: auto; padding: 10px 12px; border-radius: 6px; background: #faf9f5; color: #5f5a53; font-size: 13px; line-height: 1.45; overflow-wrap: anywhere; } .install-dialog-message.success { background: #eef7f0; color: #2f6b3f; } .install-dialog-message.error { background: #fff1ee; color: #9f2d20; } .install-dialog > button { width: 100%; height: 40px; } .app-update-dialog { gap: 16px; } .app-update-confirm-copy { margin: 0; color: #5f5a53; font-size: 13px; line-height: 1.65; } .app-update-dialog-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .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%); } } @media (max-width: 1080px) { .app-shell { grid-template-columns: 204px minmax(0, 1fr); } .status-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); } .kernel-layout { grid-template-columns: 1fr; } .config-workspace-grid { grid-template-columns: 1fr; height: auto; } .provider-workbench { grid-template-columns: 1fr; } .provider-category-panel { grid-template-columns: repeat(4, minmax(0, 1fr)); height: auto; } .provider-resource-panel { height: 520px; } .agent-workbench { grid-template-columns: 200px minmax(0, 1fr); } .usage-filter-panel { grid-template-columns: repeat(3, minmax(0, 1fr)); } .usage-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .config-side-stack { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: 206px; height: 206px; } .control-panel, .version-panel { grid-column: auto; } } @media (max-width: 760px) { .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; } .client-api-grid { grid-template-columns: 1fr; } .client-api-card:last-child { grid-column: auto; } .oauth-grid, .quota-grid, .quota-summary-grid { grid-template-columns: 1fr; } .real-quota-grid { grid-template-columns: 1fr; } .real-provider-row { grid-template-columns: minmax(0, 1fr) auto; } .real-auth-file-row { grid-template-columns: 34px minmax(0, 1fr) auto; } .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 #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-overview-layout, .usage-analysis-grid { grid-template-columns: 1fr; } .usage-filter-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); } .thinking-alias-workbench { grid-template-columns: 1fr; } .thinking-alias-guide { grid-template-columns: 24px minmax(0, 1fr); } .thinking-alias-flow { grid-column: 2; justify-self: start; } .thinking-alias-builder, .thinking-alias-list-panel { height: auto; min-height: 0; } .thinking-model-list { max-height: 240px; } .thinking-alias-list { max-height: 460px; } .agent-client-list, .agent-config-panel { height: auto; min-height: 0; } .agents-page, .agent-config-panel { grid-template-rows: auto; } .agent-model-section, .agent-modification-switch { height: auto; } .agent-list-items { grid-template-columns: repeat(3, minmax(0, 1fr)); } .agent-list-items button { grid-template-columns: 26px minmax(0, 1fr); } .agent-list-items i { display: none; } .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) { .config-side-stack { grid-template-columns: 1fr; grid-template-rows: repeat(2, 206px); height: 430px; } } @media (max-width: 520px) { .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%; } .kernel-layout .panel-heading { flex-direction: row; } .management-header { align-items: start; flex-direction: column; } .usage-tabs { width: 100%; grid-auto-columns: 1fr; } .usage-tabs button { min-width: 0; padding: 0 7px; } .usage-filter-panel, .usage-stat-grid { grid-template-columns: 1fr; } .usage-custom-range { grid-template-columns: 1fr; } .provider-category-panel { grid-template-columns: 1fr; } .thinking-effort-options { grid-template-columns: repeat(3, minmax(0, 1fr)); } .thinking-alias-flow { width: 100%; grid-template-columns: auto 14px 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-config-heading, .agent-config-footer, .agent-section-heading, .agent-modification-switch { align-items: stretch; flex-direction: column; } .agent-config-footer .primary-button { width: 100%; } .agent-launch-actions { width: 100%; align-items: stretch; flex-direction: column; } .agent-launch-targets { grid-auto-columns: 1fr; width: 100%; } .oauth-card { grid-template-rows: auto auto auto; min-height: 0; } .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: minmax(0, 1fr); } .real-auth-file-row { grid-template-columns: 30px minmax(0, 1fr); } .provider-row-actions { grid-column: 1; justify-content: flex-start; } .auth-file-actions { grid-column: 2; 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; } } @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 #e2ddd3; border-radius: 8px; background: #f8f5ef; color: #2d2a26; font-size: 13px; line-height: 1.45; } .inline-notice.success { border-color: #c9dfcf; background: #eef7f0; color: #2f6b3a; } .inline-notice.error { border-color: #efc9c2; background: #fdf1ee; color: #a33b2b; }