.subPageLayout { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 18px; align-items: start; } .subPageContent { min-width: 0; } .sideTabs { position: sticky; top: 88px; display: grid; gap: 6px; padding: 8px; border: 1px solid var(--border); border-radius: 10px; background: rgba(255, 255, 255, 0.72); } .sideTabs .shTab { justify-content: flex-start; } .modelsPage { display: grid; grid-template-columns: 246px minmax(0, 1fr); gap: 22px; align-items: start; } .modelFilters { position: sticky; top: 88px; display: grid; gap: 22px; padding-right: 18px; border-right: 1px solid var(--border); } .filterGroup { display: grid; gap: 12px; } .filterGroup h3 { color: #1f2937; font-size: 0.875rem; } .filterChips { display: flex; flex-wrap: wrap; gap: 8px; } .filterChip { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 0 10px; border: 1px solid var(--border); border-radius: 999px; background: #fff; color: var(--text-normal); font-size: 0.75rem; font-weight: var(--font-weight-semibold); } .filterChip em { color: var(--text-soft); font-size: 0.6875rem; font-style: normal; font-weight: var(--font-weight-semibold); } .filterChipIcon { display: grid; width: 18px; height: 18px; flex: 0 0 18px; place-items: center; overflow: hidden; border-radius: 50%; background: var(--surface-subtle); color: var(--text-soft); font-size: 0.5625rem; line-height: 1; } .filterChipIcon img { width: 100%; height: 100%; object-fit: contain; } .filterChip[data-active="true"] { border-color: var(--primary); background: var(--primary); color: #fff; } .filterChip[data-active="true"] em { color: rgba(255, 255, 255, 0.76); } .filterChip[data-active="true"] .filterChipIcon { background: rgba(255, 255, 255, 0.18); color: #fff; } .modelsContent { display: grid; min-width: 0; gap: 14px; } .modelsToolbar { display: flex; align-items: center; justify-content: flex-end; gap: 16px; } .modelsToolbar p { margin-right: auto; color: var(--text-soft); font-size: var(--font-size-base); } .searchField { display: grid; width: min(420px, 100%); grid-template-columns: 34px minmax(0, 1fr); align-items: center; border: 1px solid var(--border); border-radius: 999px; background: #fff; color: var(--muted-foreground); } .searchField.modelHeaderSearch { width: min(520px, 42vw); } .searchField svg { margin-left: 12px; } .searchField .shInput { border: 0; border-radius: 999px; box-shadow: none; } .providerLogo, .modelIcon { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 10px; background: #fff; color: var(--text-strong); font-weight: var(--font-weight-semibold); } .modelIconImage { overflow: hidden; padding: 7px; } .modelIconImage img { width: 100%; height: 100%; object-fit: contain; } .modelCards { display: grid; grid-template-columns: repeat(3, minmax(260px, 1fr)); gap: 10px; } .modelCard .shCardContent { display: grid; align-content: start; min-height: 265px; gap: 10px; padding: 14px; } .modelCardTop { display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 10px; align-items: start; } .modelCardTop .modelIcon { width: 38px; height: 38px; } .modelCardTop .modelIconImage { padding: 6px; } .modelCardHeaderText { display: grid; min-width: 0; gap: 4px; } .modelCardTop strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .modelCardIntro { display: grid; align-content: start; gap: 7px; } .modelCardDescription { display: -webkit-box; margin: 0; overflow: hidden; color: var(--text-soft); line-height: 1.48; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .modelTags { display: flex; flex-wrap: wrap; align-content: flex-start; align-items: flex-start; gap: 5px; } .modelTags span { flex: 0 0 auto; padding: 2px 6px; border: 1px solid rgba(37, 99, 235, 0.32); border-radius: 6px; background: rgba(37, 99, 235, 0.06); color: #1d4ed8; font-weight: var(--font-weight-semibold); } .modelTags span:nth-child(4n + 2) { border-color: rgba(5, 150, 105, 0.32); background: rgba(5, 150, 105, 0.07); color: #047857; } .modelTags span:nth-child(4n + 3) { border-color: rgba(124, 58, 237, 0.32); background: rgba(124, 58, 237, 0.07); color: #6d28d9; } .modelTags span:nth-child(4n + 4) { border-color: rgba(217, 119, 6, 0.32); background: rgba(217, 119, 6, 0.07); color: #b45309; } .modelCardFacts { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 0.55fr); gap: 7px 10px; margin: 0; padding: 0.625rem; border-radius: 0.5rem; background: var(--surface-subtle); } .modelCardFacts div { min-width: 0; } .modelCardFacts dt { margin-bottom: 2px; color: var(--muted-foreground); } .modelCardFacts dd { margin: 0; color: var(--text-normal); font-weight: var(--font-weight-semibold); line-height: 1.35; word-break: break-word; } .modelCardFactRateLimit dd { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; word-break: normal; } .modelCardFacts .modelCardFactFull { grid-column: 1 / -1; } .modelPermissionTags { display: flex; flex-wrap: wrap; gap: 0.1875rem; } .modelPermissionTag { display: inline-flex; align-items: center; max-width: 100%; gap: 0.1875rem; padding: 0.0625rem 0.3125rem; border-radius: 999rem; line-height: 1.2; } .modelPermissionTag span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .modelPermissionTagAllow { background: rgba(5, 150, 105, 0.1); color: #047857; } .modelPermissionTagDeny { background: rgba(220, 38, 38, 0.1); color: #b91c1c; } .modelPermissionIcon { width: 0.625rem; height: 0.625rem; flex: 0 0 auto; stroke-width: 2.5; } .providerToolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; } .providerToolbar p { margin: 0; color: var(--muted-foreground); font-size: 0.8125rem; } .inlineActions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; } .identityHeaderTitle { display: flex; min-width: 0; align-items: center; gap: 12px; } .identityHeaderTitle > div:nth-child(2) { min-width: 0; } .identityDataTable { border: 1px solid var(--border-subtle); border-radius: 10px; background: var(--surface); } .identityDataTable .shTableRow { align-items: center; } .accessGroupToolbar, .accessGroupHint { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; } .accessGroupToolbar { justify-content: space-between; } .accessGroupToolbar label { width: min(320px, 100%); } .accessGroupHint { color: var(--muted-foreground); font-size: var(--font-size-sm); } .accessPermissionGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .accessEditorStack { display: grid; gap: 12px; } .accessPermissionPanel .shCardContent { display: grid; gap: 12px; } .accessTreeToolbar { display: grid; grid-template-columns: minmax(180px, 1fr) repeat(5, auto); gap: 8px; align-items: center; } .accessTreeBox { display: grid; align-content: start; min-height: 520px; max-height: min(680px, calc(100vh - 300px)); overflow-x: hidden; overflow-y: auto; padding: 10px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--surface-subtle); scrollbar-width: none; contain: layout paint; } .accessTreeBox::-webkit-scrollbar { width: 0; height: 0; } .accessTreeNode { display: grid; gap: 2px; } .accessTreeRow { display: grid; grid-template-columns: 24px 22px minmax(0, 1fr) auto; align-items: center; min-height: 34px; gap: 6px; padding: 2px 6px; border-radius: var(--radius-sm); color: var(--text-normal); font-size: var(--font-size-sm); } .accessTreeRow:hover { background: var(--surface); } .accessTreeRow > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .accessTreeExpand { display: grid; width: 22px; height: 22px; place-items: center; border: 0; background: transparent; color: var(--muted-foreground); cursor: pointer; } .accessTreeChildren { display: grid; margin-left: 28px; } .accessTreeModel { grid-template-columns: 24px 22px minmax(0, 1fr); } .accessTreeEmpty { padding: 24px; color: var(--muted-foreground); font-size: var(--font-size-sm); text-align: center; } .accessRuleSummary span { display: inline-flex; align-items: center; gap: 6px; padding: 6px 9px; border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); background: var(--surface-subtle); color: var(--text-normal); font-size: var(--font-size-xs); } .accessRuleTable .shTableRow { grid-template-columns: minmax(200px, 1.2fr) minmax(220px, 1.35fr) minmax(82px, 0.45fr) minmax(110px, 0.7fr) minmax(82px, 0.45fr) minmax(150px, 0.9fr); min-width: 900px; } .apiKeyTable { border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--surface); } .apiKeyTable .shTableRow { grid-template-columns: minmax(170px, 1.05fr) minmax(210px, 1.25fr) minmax(150px, 0.9fr) minmax(150px, 0.9fr) minmax(150px, 0.9fr) minmax(96px, 0.55fr) minmax(150px, 0.9fr) minmax(74px, 0.4fr); min-width: 1160px; align-items: center; } .apiKeyNameCell, .apiKeySecretCell { display: grid; min-width: 0; gap: 3px; } .apiKeyNameCell strong, .apiKeyNameCell small, .apiKeySecretCell code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .apiKeyNameCell strong { color: var(--text-strong); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); } .apiKeyNameCell small { color: var(--text-soft); font-size: var(--font-size-xs); } .apiKeySecretCell { grid-template-columns: minmax(0, 1fr) 30px; align-items: center; } .apiKeySecretCell code { min-width: 0; color: var(--text-normal); font-family: var(--font-mono); font-size: var(--font-size-xs); } .apiKeyPolicyButton { display: inline-flex; max-width: 100%; min-height: 30px; align-items: center; gap: 6px; padding: 0 9px; border: 1px solid var(--border); border-radius: var(--control-radius); background: var(--surface); color: var(--text-normal); font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); } .apiKeyPolicyButton span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .apiKeyCreateDialogBody { grid-template-columns: 1fr; } .apiKeyPolicyDialog { width: min(1120px, 100%); } .apiKeyPolicyDialogBody { grid-template-columns: 1fr; background: var(--surface-subtle); } .apiKeyPolicyDialog .accessTreeBox { min-height: 360px; max-height: min(480px, calc(100vh - 360px)); } .tenantTable .shTableRow { grid-template-columns: minmax(210px, 1.35fr) minmax(110px, 0.7fr) minmax(150px, 0.9fr) minmax(110px, 0.7fr) minmax(90px, 0.55fr) minmax(86px, 0.5fr); min-width: 880px; } .userTable .shTableRow { grid-template-columns: minmax(210px, 1.25fr) minmax(100px, 0.55fr) minmax(150px, 0.8fr) minmax(150px, 0.8fr) minmax(120px, 0.65fr) minmax(100px, 0.55fr) minmax(88px, 0.5fr) minmax(112px, 0.6fr); min-width: 1120px; } .groupTable .shTableRow { grid-template-columns: minmax(210px, 1.25fr) minmax(100px, 0.55fr) minmax(150px, 0.8fr) minmax(150px, 0.8fr) minmax(100px, 0.55fr) minmax(88px, 0.5fr) minmax(86px, 0.5fr); min-width: 980px; } .auditLogTable .shTableRow { grid-template-columns: minmax(150px, 0.9fr) minmax(140px, 0.8fr) minmax(140px, 0.8fr) minmax(260px, 1.4fr) minmax(160px, 0.9fr); min-width: 920px; } .identityTableName { display: grid; min-width: 0; gap: 3px; } .identityTableName strong, .identityTableName small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .identityTableName strong { color: var(--text-strong); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); } .identityTableName small { color: var(--muted-foreground); font-size: var(--font-size-xs); } .identityDialog { width: min(820px, 100%); } .formMessage { margin-top: 12px; color: var(--muted-foreground); font-size: 0.8125rem; font-weight: var(--font-weight-medium); } .providerCatalogGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .providerCatalogCard { display: grid; grid-template-columns: 54px minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .providerCatalogLogo { display: grid; width: 54px; height: 54px; place-items: center; overflow: hidden; border: 1px solid var(--border-subtle); border-radius: 10px; background: var(--surface-subtle); color: var(--text-strong); font-weight: var(--font-weight-semibold); } .providerCatalogLogo img { width: 100%; height: 100%; padding: 8px; object-fit: contain; } .providerCatalogBody { display: grid; min-width: 0; gap: 9px; } .providerCatalogBody strong, .providerCatalogBody span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .providerCatalogBody span, .providerCatalogMeta { color: var(--muted-foreground); font-size: 0.75rem; } .providerCatalogMeta, .providerCatalogActions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; } .providerCatalogActions { justify-content: flex-end; } .modelCatalogFilters { display: grid; grid-template-columns: minmax(260px, 1fr) minmax(160px, 220px) minmax(160px, 220px); gap: 10px; margin-top: 14px; } .baseModelGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; } .baseModelCard { display: grid; grid-template-columns: 54px minmax(0, 1fr); gap: 14px; min-height: 184px; padding: 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .baseModelCardBody { display: grid; min-width: 0; gap: 10px; } .baseModelCardBody strong, .baseModelCardBody span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .baseModelCardBody > div:first-child span { margin-top: 4px; color: var(--muted-foreground); font-size: 0.75rem; } .baseModelCard .providerCatalogActions { grid-column: 1 / -1; } .modelAbilityChips { display: flex; flex-wrap: wrap; gap: 6px; } .modelAbilityChips span { padding: 4px 7px; border: 1px solid var(--border-subtle); border-radius: 999px; background: var(--surface-subtle); color: #4b5563; font-size: 0.75rem; font-weight: var(--font-weight-semibold); } .baseModelDialog { width: min(900px, 100%); } .baseModelTypePicker { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; } .baseModelTypeOption { display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 7px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); color: var(--text); font-size: var(--font-size-sm); } .baseModelTypeOption small { margin-left: auto; color: var(--text-muted); font-size: var(--font-size-xs); } .baseModelForm textarea { min-height: 124px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.75rem; } .platformGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .platformCard { display: grid; grid-template-columns: 54px minmax(0, 1fr); gap: 14px; padding: 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .platformCardBody { display: grid; min-width: 0; gap: 10px; } .platformCardBody strong, .platformCardBody span, .platformCardBody p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .platformCardBody > div:first-child span, .platformCardBody p { color: var(--muted-foreground); font-size: 0.75rem; } .platformCardBody p { display: flex; align-items: center; gap: 6px; margin: 0; } .platformViewTabs { display: inline-flex; gap: 4px; margin-bottom: 14px; padding: 4px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-muted); } .platformViewTabs button { min-height: 32px; padding: 0 12px; border: 0; border-radius: 6px; background: transparent; color: var(--text-soft); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); } .platformViewTabs button[data-active="true"] { background: #fff; color: var(--text-strong); box-shadow: 0 1px 2px rgba(16, 24, 40, 0.07); } .platformDataTable { border: 1px solid var(--border-subtle); border-radius: 10px; background: #fff; } .platformDataTable .shTableRow { grid-template-columns: minmax(210px, 1.3fr) minmax(120px, 0.7fr) minmax(150px, 0.9fr) minmax(92px, 0.45fr) minmax(160px, 0.9fr) minmax(76px, 0.4fr) minmax(150px, 0.85fr) minmax(86px, 0.45fr); min-width: 1040px; } .platformModelView .platformDataTable .shTableRow { grid-template-columns: minmax(220px, 1.3fr) minmax(180px, 1fr) minmax(100px, 0.6fr) minmax(170px, 0.9fr) minmax(120px, 0.7fr) minmax(90px, 0.6fr); min-width: 920px; } .platformTableName { display: grid; min-width: 0; gap: 3px; } .platformTableName strong, .platformTableName small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .platformTableName strong { color: var(--text-strong); font-size: var(--font-size-sm); } .platformTableName small { color: var(--muted-foreground); font-size: var(--font-size-xs); } .platformStatusCell { display: grid; min-width: 0; gap: 6px; } .platformStatusCell strong, .platformStatusCell small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .platformStatusCell small { color: var(--muted-foreground); font-size: var(--font-size-xs); } .platformStatusToggle { display: inline-flex; align-items: center; gap: 8px; color: var(--text-strong); font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); } .tableActions { display: flex; align-items: center; gap: 4px; } .tableActions .shButtonIcon { width: 30px; min-height: 30px; } .platformModelView { display: grid; gap: 12px; } .platformLimitView { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 10px; min-height: 0; max-height: calc(100dvh - 220px); overflow: hidden; } .platformLimitHeader { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--muted-foreground); font-size: var(--font-size-xs); } .platformLimitHeader span { display: inline-flex; align-items: center; gap: 6px; color: var(--text-strong); font-weight: var(--font-weight-semibold); } .platformLimitTableViewport { min-width: 0; min-height: 0; max-height: calc(100dvh - 270px); overflow: auto; border: 1px solid var(--border-subtle); border-radius: 10px; background: #fff; overscroll-behavior: contain; } .platformLimitTable { width: max-content; min-width: 100%; overflow: visible; border: 0; border-radius: 0; } .platformLimitTable .shTableHeader { position: sticky; top: 0; z-index: 2; } .platformLimitTable .shTableRow { grid-template-columns: minmax(180px, 1.1fr) minmax(160px, 0.9fr) 160px 132px 150px 170px 140px 132px; min-width: 1224px; } .platformLimitTable .shTableHead, .platformLimitTable .shTableCell { display: grid; align-content: center; min-height: 68px; padding-right: 10px; padding-left: 10px; } .platformLimitTable .shTableHead { min-height: 74px; } .platformLimitMetricHead { display: grid; align-content: center; gap: 3px; white-space: normal; } .platformLimitMetricHead small { overflow: hidden; color: var(--muted-foreground); font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .platformLimitNumberHead, .platformLimitNumberCell { justify-items: start; } .platformLimitStatusHead, .platformLimitStatusCell { justify-items: start; } .rateMetricCell, .rateLoadCell { display: grid; min-width: 0; gap: 4px; width: 100%; align-content: start; font-variant-numeric: tabular-nums; } .rateMetricCell strong, .rateLoadCell strong { color: var(--text-strong); font-size: var(--font-size-sm); line-height: 1.25; } .rateMetricCell small { overflow: hidden; color: var(--muted-foreground); font-size: var(--font-size-xs); text-overflow: ellipsis; white-space: nowrap; } .rateLoadTrack { display: block; height: 6px; width: min(112px, 100%); overflow: hidden; border-radius: 999px; background: #eef2f6; } .rateLoadTrack i { display: block; height: 100%; border-radius: inherit; background: #0f766e; } .rateLoadCell[data-overloaded="true"] strong { color: var(--destructive); } .rateLoadCell[data-overloaded="true"] .rateLoadTrack { background: #fee2e2; } .rateLoadCell[data-overloaded="true"] .rateLoadTrack i { background: var(--destructive); } .platformPriorityCell { display: grid; width: 100%; min-width: 0; gap: 7px; align-content: start; } .platformPriorityCell .rateMetricCell small { overflow: visible; line-height: 1.35; text-overflow: clip; white-space: normal; } .priorityDemotionTrigger { display: grid; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; cursor: default; text-align: left; font: inherit; } .priorityAdjustButton { justify-self: start; min-height: 22px; padding-inline: 8px; border-color: var(--border); color: var(--text-normal); background: #fff; } .priorityDemotionAntPopover { z-index: 1200; } .priorityDemotionPopover { display: grid; width: min(36rem, calc(100vw - 2rem)); gap: 0.6rem; } .priorityDemotionHeader, .priorityDemotionItemHeader { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 0.5rem; } .priorityDemotionHeader { color: var(--text-strong); } .priorityDemotionHeader strong, .priorityDemotionItemHeader strong { min-width: 0; overflow-wrap: anywhere; } .priorityDemotionItem { display: grid; gap: 0.35rem; padding-bottom: 0.6rem; border-bottom: 1px solid var(--border); } .priorityDemotionItem:last-child { padding-bottom: 0; border-bottom: 0; } .priorityDemotionItem small, .priorityDemotionEmpty { color: var(--text-soft); font-size: var(--font-size-xs); line-height: 1.4; } .priorityDemotionError { color: var(--destructive); font-size: var(--font-size-xs); line-height: 1.45; overflow-wrap: anywhere; } .platformPriorityDialog { width: min(30rem, calc(100vw - 2rem)); } .platformPriorityDialogBody { display: grid; gap: 1rem; } .platformPriorityDialogSummary, .platformPriorityDialogMetrics { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 1rem; } .platformPriorityDialogSummary { padding: 0.75rem; border: 1px solid var(--border-subtle); border-radius: 8px; background: #f8fafc; } .platformPriorityDialogSummary span { display: grid; min-width: 0; gap: 3px; } .platformPriorityDialogSummary span:last-child { justify-items: end; font-variant-numeric: tabular-nums; } .platformPriorityDialogSummary strong { color: var(--text-strong); } .platformPriorityDialogSummary small, .platformPriorityDialogMetrics { color: var(--muted-foreground); font-size: var(--font-size-xs); } .platformModelToolbar { display: grid; grid-template-columns: minmax(220px, 0.6fr) minmax(260px, 1fr); gap: 12px; padding: 12px; border: 1px solid var(--border-subtle); border-radius: 10px; background: var(--surface-subtle); } .platformEmptyState { display: grid; min-height: 260px; place-items: center; gap: 12px; padding: 30px; border: 1px dashed #dce2ea; border-radius: 10px; background: var(--surface-subtle); color: var(--muted-foreground); text-align: center; } .platformEmptyState strong { color: var(--text-strong); font-size: 1.125rem; } .platformEmptyState span { max-width: 460px; line-height: 1.7; } .platformEmptyIcon { display: grid; width: 58px; height: 58px; place-items: center; border: 1px solid #e6ebf1; border-radius: 16px; background: #fff; color: var(--text-strong); } .platformModelList { display: grid; gap: 8px; } .platformModelRow { display: grid; grid-template-columns: minmax(160px, 1fr) minmax(160px, 1fr) auto minmax(120px, 0.8fr); gap: 10px; align-items: center; min-height: 48px; padding: 10px 12px; border: 1px solid var(--border-subtle); border-radius: 8px; background: #fff; } .platformModelRow span { overflow: hidden; color: var(--muted-foreground); font-size: 0.75rem; text-overflow: ellipsis; white-space: nowrap; } .platformDialog { width: min(1040px, 100%); } .platformDialogBody { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; background: var(--surface-subtle); } .platformFormSection { display: grid; gap: 14px; padding: 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .platformFormSection header { display: flex; align-items: center; gap: 8px; color: var(--text-strong); } .platformSectionGrid { display: grid; align-items: start; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .platformSectionGrid > .shLabel { align-content: start; } .platformToggle, .platformReadonlyField { min-height: 40px; border: 1px solid var(--input); border-radius: 7px; background: #fff; } .platformToggle { display: flex; align-items: center; gap: 10px; padding: 8px 11px; } .platformToggle input { width: 16px; height: 16px; accent-color: var(--text-strong); } .platformToggle span { display: grid; gap: 3px; } .platformToggle strong { color: var(--text-normal); font-size: 0.8125rem; } .platformToggle small { color: var(--muted-foreground); font-size: 0.75rem; } .platformReadonlyField { display: grid; place-items: center start; padding: 0 11px; color: var(--muted-foreground); font-size: 0.8125rem; font-weight: var(--font-weight-semibold); } .platformProxyStatus { margin: 10px 0 0; color: var(--text-normal); font-size: 0.8125rem; font-weight: var(--font-weight-semibold); word-break: break-all; } .platformCredentialField { gap: 6px; } .platformCredentialLabel { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .platformCredentialLabel code { max-width: min(260px, 58%); overflow: hidden; color: var(--text-normal); font-family: var(--font-sans); font-size: 0.75rem; font-weight: var(--font-weight-medium); text-overflow: ellipsis; white-space: nowrap; } .platformCredentialField small { color: var(--muted-foreground); font-size: 0.75rem; font-weight: var(--font-weight-normal); line-height: 1.4; } .platformTogglePair, .platformModelPolicy, .platformModelSelector { display: grid; gap: 10px; } .platformModelPolicy { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 12px; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--surface-subtle); } .platformModelSelectorHeader { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px; border: 1px solid var(--border-subtle); border-radius: 8px; background: #fff; } .platformModelSelectorHeader > div { display: grid; min-width: 0; gap: 4px; } .platformModelSelectorHeader strong { color: var(--text-strong); font-size: 0.875rem; } .platformModelSelectorHeader span { color: var(--muted-foreground); font-size: 0.75rem; } .platformSegmented { display: inline-flex; width: fit-content; gap: 4px; padding: 4px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-muted); } .platformSegmented button { min-height: 32px; padding: 0 12px; border: 0; border-radius: 6px; background: transparent; color: #667085; font-weight: var(--font-weight-semibold); } .platformSegmented button.active { background: #fff; color: var(--text-strong); box-shadow: 0 1px 2px rgba(16, 24, 40, 0.07); } .platformModelChoices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.625rem; max-height: 19.375rem; overflow: auto; } .platformModelChoices[data-disabled="true"] { opacity: 0.82; } .platformModelChoice { display: grid; grid-template-columns: minmax(10rem, 1fr) minmax(14rem, 1.4fr) auto; gap: 0.625rem; align-items: center; padding: 0.75rem; border: 1px solid var(--border-subtle); border-radius: 0.5rem; background: #fff; } .platformModelChoiceMain { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.625rem; align-items: start; min-width: 0; } .platformModelChoice input { margin-top: 0.1875rem; accent-color: var(--text-strong); } .platformModelChoiceFields { display: grid; grid-template-columns: minmax(0, 1fr) 5.5rem; gap: 0.5rem; align-items: end; min-width: 0; } .platformModelChoiceFields label { gap: 0.25rem; color: var(--muted-foreground); font-size: 0.75rem; min-width: 0; } .platformModelChoiceFields .shInput { margin-top: 0; min-height: 2rem; padding: 0 0.5625rem; font-size: 0.75rem; } .platformModelChoiceMain span { display: grid; min-width: 0; gap: 0.25rem; } .platformModelChoiceMain strong, .platformModelChoiceMain small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .platformModelChoiceMain small, .platformModelEmpty { color: var(--muted-foreground); font-size: 0.75rem; } .platformModelEmpty { padding: 14px; border: 1px dashed #dce2ea; border-radius: 8px; background: #fff; } .modelPickerBackdrop { position: fixed; inset: 0; z-index: 70; display: grid; place-items: center; padding: 24px; background: rgba(15, 23, 42, 0.32); } .modelPickerDialog { display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; width: min(920px, 100%); max-height: min(760px, calc(100vh - 48px)); overflow: hidden; border: 1px solid var(--border); border-radius: 12px; background: #fff; box-shadow: var(--shadow-lg); } .modelPickerHeader, .modelPickerActions { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--border-subtle); } .modelPickerHeader > div { display: grid; gap: 3px; } .modelPickerHeader strong { color: var(--text-strong); font-size: 0.9375rem; } .modelPickerHeader span { color: var(--muted-foreground); font-size: 0.75rem; } .modelPickerToolbar { display: grid; grid-template-columns: 180px minmax(0, 1fr) auto; gap: 12px; align-items: end; padding: 14px 16px; border-bottom: 1px solid var(--border-subtle); background: var(--surface-subtle); } .modelPickerSearch > div { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px; min-height: 36px; padding: 0 10px; border: 1px solid var(--input); border-radius: 8px; background: #fff; } .modelPickerSearch .shInput { min-height: 32px; padding: 0; border: 0; box-shadow: none; } .modelPickerList { display: grid; gap: 8px; align-content: start; overflow: auto; padding: 14px 16px; } .modelPickerItem { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; min-height: 52px; padding: 10px 12px; border: 1px solid var(--border-subtle); border-radius: 8px; background: #fff; } .modelPickerItem input { width: 16px; height: 16px; accent-color: var(--text-strong); } .modelPickerItem span { display: grid; min-width: 0; gap: 4px; } .modelPickerItem strong, .modelPickerItem small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .modelPickerItem strong { color: var(--text-strong); font-size: 0.8125rem; } .modelPickerItem small { color: var(--muted-foreground); font-size: 0.75rem; } .modelPickerActions { justify-content: flex-end; border-top: 1px solid var(--border-subtle); border-bottom: 0; } .runtimePolicyGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .runtimePolicyCard { display: grid; gap: 12px; padding: 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .runtimePolicyCard header, .runtimePolicyCard footer { display: flex; align-items: center; gap: 10px; } .runtimePolicyCard header > div:nth-child(2) { display: grid; min-width: 0; flex: 1; gap: 3px; } .runtimePolicyCard strong, .runtimePolicyCard span, .runtimePolicyCard p { overflow: hidden; text-overflow: ellipsis; } .runtimePolicyCard header span, .runtimePolicyCard p { color: var(--muted-foreground); font-size: 0.75rem; } .runtimePolicySummary { display: grid; gap: 7px; } .runtimePolicySummary span { display: flex; align-items: center; gap: 6px; padding: 7px 9px; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--surface-subtle); color: var(--text-normal); font-size: 0.75rem; white-space: nowrap; } .runtimePolicyCard footer { justify-content: flex-end; } .fileStoragePanel { display: grid; gap: 14px; } .fileStorageToolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .fileStorageSettingsCard { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 380px) auto; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .fileStorageSettingsCard > div { display: grid; gap: 3px; } .fileStorageSettingsCard > label { min-width: 0; } .fileStorageToolbar > div { display: grid; gap: 3px; } .fileStorageToolbar strong { color: var(--text-normal); } .fileStorageToolbar span, .fileStorageSettingsCard span, .fileStorageMeta span { color: var(--muted-foreground); font-size: var(--font-size-xs); line-height: 1.45; } .fileStorageGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .fileStorageCard { display: grid; gap: 12px; padding: 16px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .fileStorageCard header, .fileStorageCard footer { display: flex; align-items: center; gap: 10px; } .fileStorageCard header > div:nth-child(2) { display: grid; min-width: 0; flex: 1; gap: 3px; } .fileStorageCard strong, .fileStorageCard header span, .fileStorageMeta span { overflow: hidden; text-overflow: ellipsis; } .fileStorageMeta { display: grid; gap: 7px; } .fileStorageMeta span { padding: 7px 9px; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--surface-subtle); } .fileStorageCard footer { justify-content: flex-end; } .fileStorageDialogBody { grid-template-columns: repeat(2, minmax(0, 1fr)); } .fileStorageSceneGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .runtimePolicyDialog { width: min(980px, 100%); } .runtimePolicyFormBody { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; background: var(--surface-subtle); } .runtimePolicySection { display: grid; gap: 12px; padding: 14px; border: 1px solid var(--border); border-radius: 10px; background: #fff; } .runtimePolicySection header { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .runtimePolicySection header span { color: var(--muted-foreground); font-size: 0.75rem; } .runtimePolicyRows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .runtimeTagInput { width: 100%; } .runtimeTagInput .ant-select-selector { min-height: 2.375rem; border-color: var(--border) !important; border-radius: 0.5rem !important; background: var(--background) !important; box-shadow: none !important; } .runtimeTagInput .ant-select-selection-placeholder { color: var(--muted-foreground); } .runtimeTagInput .ant-select-selection-item { border-color: var(--border); border-radius: 999px; background: var(--surface-subtle); } .runtimeFieldHint { color: var(--muted-foreground); font-size: var(--font-size-xs); font-weight: var(--font-weight-regular); line-height: 1.45; } .runnerPolicyForm { padding: 0; background: transparent; } .runnerPolicyHeaderText { min-width: 0; } .runnerPolicyHeaderText .mutedText { margin: 4px 0 0; } .runnerPolicyHeaderStatus { min-width: 220px; max-width: 240px; } .runnerPolicyWorkbench { grid-template-columns: 240px minmax(0, 1fr); } .runnerPolicyDetailPanel { min-height: 360px; } .runnerPolicyDetailRows { padding: 8px 10px; } .runnerActionMatrix { display: grid; gap: 10px; } .runnerActionIntro { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; } .runnerActionIntro strong { color: var(--text-normal); } .runnerActionIntro small, .runnerActionGroup small { color: var(--muted-foreground); font-size: var(--font-size-xs); font-weight: var(--font-weight-regular); line-height: 1.4; } .runnerActionGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .runnerActionGroup { display: grid; gap: 8px; padding: 10px; border: 1px solid var(--border); border-radius: 8px; background: #fff; } .runnerActionGroup > span { display: grid; gap: 2px; } .runnerActionGroup strong { color: var(--text-normal); font-size: var(--font-size-sm); } .runnerSupplementalRules { display: grid; gap: 2px; padding-top: 6px; } .runnerSupplementalRules strong { color: var(--text-normal); } .runnerSupplementalRules small { color: var(--muted-foreground); font-size: var(--font-size-xs); line-height: 1.4; } .runtimePolicyActions { display: flex; justify-content: flex-end; } @media (max-width: 1180px) { .modelCards, .providerCatalogGrid, .baseModelGrid, .runtimePolicyGrid, .fileStorageGrid, .platformGrid, .accessPermissionGrid, .platformModelChoices { grid-template-columns: repeat(2, minmax(240px, 1fr)); } } @media (max-width: 860px) { .runnerPolicyHeader { align-items: flex-start; flex-direction: column; } .runnerPolicyHeaderStatus { width: 100%; max-width: none; } .subPageLayout, .modelsPage { grid-template-columns: 1fr; } .sideTabs, .modelFilters { position: static; } .modelCards, .providerCatalogGrid, .baseModelGrid, .modelCatalogFilters, .platformGrid, .platformDialogBody, .platformSectionGrid, .platformModelPolicy, .platformModelChoices, .platformModelRow, .platformModelToolbar, .runtimePolicyGrid, .fileStorageGrid, .fileStorageSettingsCard, .fileStorageSceneGrid, .runtimePolicyFormBody, .fileStorageDialogBody, .runtimePolicyRows, .runnerActionGrid, .accessPermissionGrid, .accessTreeToolbar, .apiKeyCreateDialogBody, .apiKeyPolicyDialogBody { grid-template-columns: 1fr; } .runnerActionIntro { align-items: flex-start; flex-direction: column; } .platformModelChoice { grid-template-columns: 1fr auto; } .platformModelChoiceFields { grid-column: 1 / -1; } .providerCatalogCard { grid-template-columns: 48px minmax(0, 1fr); } .providerToolbar { align-items: flex-start; flex-direction: column; } .modelsToolbar { align-items: flex-start; flex-direction: column; } .searchField.modelHeaderSearch { width: 100%; } .providerCatalogActions { grid-column: 1 / -1; justify-content: flex-start; } }