@chenchaolong/plugin-trade-compliance-workbench 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/adapters/hsbianma.provider.d.ts +6 -8
- package/dist/lib/adapters/hsbianma.provider.d.ts.map +1 -1
- package/dist/lib/adapters/hsbianma.provider.js +159 -53
- package/dist/lib/adapters/hsbianma.provider.js.map +1 -1
- package/dist/lib/adapters/translation.provider.d.ts +7 -1
- package/dist/lib/adapters/translation.provider.d.ts.map +1 -1
- package/dist/lib/adapters/translation.provider.js +15 -5
- package/dist/lib/adapters/translation.provider.js.map +1 -1
- package/dist/lib/domain/catalog-localization.d.ts +14 -0
- package/dist/lib/domain/catalog-localization.d.ts.map +1 -0
- package/dist/lib/domain/catalog-localization.js +19 -0
- package/dist/lib/domain/catalog-localization.js.map +1 -0
- package/dist/lib/domain/file-name.d.ts +8 -0
- package/dist/lib/domain/file-name.d.ts.map +1 -0
- package/dist/lib/domain/file-name.js +111 -0
- package/dist/lib/domain/file-name.js.map +1 -0
- package/dist/lib/domain/import-issues.d.ts +4 -0
- package/dist/lib/domain/import-issues.d.ts.map +1 -1
- package/dist/lib/domain/import-issues.js +14 -3
- package/dist/lib/domain/import-issues.js.map +1 -1
- package/dist/lib/entities/catalog.entity.d.ts +5 -1
- package/dist/lib/entities/catalog.entity.d.ts.map +1 -1
- package/dist/lib/entities/catalog.entity.js +16 -0
- package/dist/lib/entities/catalog.entity.js.map +1 -1
- package/dist/lib/entities/customer.entity.d.ts +3 -0
- package/dist/lib/entities/customer.entity.d.ts.map +1 -1
- package/dist/lib/entities/customer.entity.js +12 -0
- package/dist/lib/entities/customer.entity.js.map +1 -1
- package/dist/lib/entities/shared.entity.d.ts +9 -0
- package/dist/lib/entities/shared.entity.d.ts.map +1 -1
- package/dist/lib/entities/shared.entity.js +33 -0
- package/dist/lib/entities/shared.entity.js.map +1 -1
- package/dist/lib/import-jobs/agent-handoff.dispatcher.d.ts +15 -0
- package/dist/lib/import-jobs/agent-handoff.dispatcher.d.ts.map +1 -0
- package/dist/lib/import-jobs/agent-handoff.dispatcher.js +114 -0
- package/dist/lib/import-jobs/agent-handoff.dispatcher.js.map +1 -0
- package/dist/lib/import-jobs/contracts.d.ts +76 -0
- package/dist/lib/import-jobs/contracts.d.ts.map +1 -0
- package/dist/lib/import-jobs/contracts.js +31 -0
- package/dist/lib/import-jobs/contracts.js.map +1 -0
- package/dist/lib/import-jobs/import-command.builder.d.ts +30 -0
- package/dist/lib/import-jobs/import-command.builder.d.ts.map +1 -0
- package/dist/lib/import-jobs/import-command.builder.js +97 -0
- package/dist/lib/import-jobs/import-command.builder.js.map +1 -0
- package/dist/lib/import-jobs/import-job-callback.processor.d.ts +15 -0
- package/dist/lib/import-jobs/import-job-callback.processor.d.ts.map +1 -0
- package/dist/lib/import-jobs/import-job-callback.processor.js +107 -0
- package/dist/lib/import-jobs/import-job-callback.processor.js.map +1 -0
- package/dist/lib/import-jobs/import-job.coordinator.d.ts +17 -0
- package/dist/lib/import-jobs/import-job.coordinator.d.ts.map +1 -0
- package/dist/lib/import-jobs/import-job.coordinator.js +256 -0
- package/dist/lib/import-jobs/import-job.coordinator.js.map +1 -0
- package/dist/lib/import-jobs/import-job.processor.d.ts +24 -0
- package/dist/lib/import-jobs/import-job.processor.d.ts.map +1 -0
- package/dist/lib/import-jobs/import-job.processor.js +213 -0
- package/dist/lib/import-jobs/import-job.processor.js.map +1 -0
- package/dist/lib/import-jobs/import-timeout.processor.d.ts +12 -0
- package/dist/lib/import-jobs/import-timeout.processor.d.ts.map +1 -0
- package/dist/lib/import-jobs/import-timeout.processor.js +37 -0
- package/dist/lib/import-jobs/import-timeout.processor.js.map +1 -0
- package/dist/lib/import-jobs/organization-lease.d.ts +39 -0
- package/dist/lib/import-jobs/organization-lease.d.ts.map +1 -0
- package/dist/lib/import-jobs/organization-lease.js +136 -0
- package/dist/lib/import-jobs/organization-lease.js.map +1 -0
- package/dist/lib/plugin-context.token.d.ts +4 -0
- package/dist/lib/plugin-context.token.d.ts.map +1 -0
- package/dist/lib/plugin-context.token.js +2 -0
- package/dist/lib/plugin-context.token.js.map +1 -0
- package/dist/lib/public-dto.d.ts +6 -0
- package/dist/lib/public-dto.d.ts.map +1 -0
- package/dist/lib/public-dto.js +33 -0
- package/dist/lib/public-dto.js.map +1 -0
- package/dist/lib/remote-components/trade-compliance-workbench/app.css +1 -1
- package/dist/lib/remote-components/trade-compliance-workbench/app.js +5 -5
- package/dist/lib/remote-ui/action-execution.d.ts +26 -0
- package/dist/lib/remote-ui/action-execution.d.ts.map +1 -0
- package/dist/lib/remote-ui/action-execution.js +85 -0
- package/dist/lib/remote-ui/action-execution.js.map +1 -0
- package/dist/lib/remote-ui/analytics-contracts.d.ts +3 -2
- package/dist/lib/remote-ui/analytics-contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/analytics-contracts.js.map +1 -1
- package/dist/lib/remote-ui/app-source.d.ts.map +1 -1
- package/dist/lib/remote-ui/app-source.js +426 -169
- package/dist/lib/remote-ui/app-source.js.map +1 -1
- package/dist/lib/remote-ui/company-logo-lifecycle.d.ts +14 -0
- package/dist/lib/remote-ui/company-logo-lifecycle.d.ts.map +1 -0
- package/dist/lib/remote-ui/company-logo-lifecycle.js +52 -0
- package/dist/lib/remote-ui/company-logo-lifecycle.js.map +1 -0
- package/dist/lib/remote-ui/components/data-grid.d.ts +9 -4
- package/dist/lib/remote-ui/components/data-grid.d.ts.map +1 -1
- package/dist/lib/remote-ui/components/data-grid.js +41 -9
- package/dist/lib/remote-ui/components/data-grid.js.map +1 -1
- package/dist/lib/remote-ui/components/forms.d.ts +6 -1
- package/dist/lib/remote-ui/components/forms.d.ts.map +1 -1
- package/dist/lib/remote-ui/components/forms.js +6 -1
- package/dist/lib/remote-ui/components/forms.js.map +1 -1
- package/dist/lib/remote-ui/contract-import.d.ts +37 -32
- package/dist/lib/remote-ui/contract-import.d.ts.map +1 -1
- package/dist/lib/remote-ui/contract-import.js +51 -59
- package/dist/lib/remote-ui/contract-import.js.map +1 -1
- package/dist/lib/remote-ui/contracts.d.ts +20 -27
- package/dist/lib/remote-ui/contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/contracts.js +8 -0
- package/dist/lib/remote-ui/contracts.js.map +1 -1
- package/dist/lib/remote-ui/customer-contract-contracts.d.ts +5 -11
- package/dist/lib/remote-ui/customer-contract-contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/customer-contract-contracts.js.map +1 -1
- package/dist/lib/remote-ui/date-time.d.ts +3 -0
- package/dist/lib/remote-ui/date-time.d.ts.map +1 -0
- package/dist/lib/remote-ui/date-time.js +58 -0
- package/dist/lib/remote-ui/date-time.js.map +1 -0
- package/dist/lib/remote-ui/model.d.ts +26 -1
- package/dist/lib/remote-ui/model.d.ts.map +1 -1
- package/dist/lib/remote-ui/model.js +151 -15
- package/dist/lib/remote-ui/model.js.map +1 -1
- package/dist/lib/remote-ui/pages/analytics.d.ts +2 -0
- package/dist/lib/remote-ui/pages/analytics.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/analytics.js +11 -6
- package/dist/lib/remote-ui/pages/analytics.js.map +1 -1
- package/dist/lib/remote-ui/pages/catalogs.d.ts +35 -14
- package/dist/lib/remote-ui/pages/catalogs.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/catalogs.js +132 -85
- package/dist/lib/remote-ui/pages/catalogs.js.map +1 -1
- package/dist/lib/remote-ui/pages/contracts.d.ts +8 -5
- package/dist/lib/remote-ui/pages/contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/contracts.js +23 -22
- package/dist/lib/remote-ui/pages/contracts.js.map +1 -1
- package/dist/lib/remote-ui/pages/files.d.ts +11 -3
- package/dist/lib/remote-ui/pages/files.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/files.js +50 -12
- package/dist/lib/remote-ui/pages/files.js.map +1 -1
- package/dist/lib/remote-ui/pages/procurement.d.ts +6 -4
- package/dist/lib/remote-ui/pages/procurement.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/procurement.js +44 -50
- package/dist/lib/remote-ui/pages/procurement.js.map +1 -1
- package/dist/lib/remote-ui/pages/sales.d.ts +5 -0
- package/dist/lib/remote-ui/pages/sales.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/sales.js +34 -15
- package/dist/lib/remote-ui/pages/sales.js.map +1 -1
- package/dist/lib/remote-ui/pages/settings.d.ts +15 -13
- package/dist/lib/remote-ui/pages/settings.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/settings.js +50 -68
- package/dist/lib/remote-ui/pages/settings.js.map +1 -1
- package/dist/lib/remote-ui/polling.d.ts +41 -0
- package/dist/lib/remote-ui/polling.d.ts.map +1 -0
- package/dist/lib/remote-ui/polling.js +148 -0
- package/dist/lib/remote-ui/polling.js.map +1 -0
- package/dist/lib/remote-ui/procurement-contracts.d.ts +4 -9
- package/dist/lib/remote-ui/procurement-contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/sales-contracts.d.ts +2 -2
- package/dist/lib/remote-ui/sales-contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/settings-contracts.d.ts +9 -1
- package/dist/lib/remote-ui/settings-contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/settings-contracts.js.map +1 -1
- package/dist/lib/remote-ui/toast-queue.d.ts +29 -0
- package/dist/lib/remote-ui/toast-queue.d.ts.map +1 -0
- package/dist/lib/remote-ui/toast-queue.js +71 -0
- package/dist/lib/remote-ui/toast-queue.js.map +1 -0
- package/dist/lib/sales-file.service.d.ts.map +1 -1
- package/dist/lib/sales-file.service.js +5 -5
- package/dist/lib/sales-file.service.js.map +1 -1
- package/dist/lib/types.d.ts +5 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +3 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/workbench-action-contract.d.ts +4 -0
- package/dist/lib/workbench-action-contract.d.ts.map +1 -0
- package/dist/lib/workbench-action-contract.js +43 -0
- package/dist/lib/workbench-action-contract.js.map +1 -0
- package/dist/lib/workbench-view.provider.d.ts +57 -78
- package/dist/lib/workbench-view.provider.d.ts.map +1 -1
- package/dist/lib/workbench-view.provider.js +89 -91
- package/dist/lib/workbench-view.provider.js.map +1 -1
- package/dist/lib/workbench.middleware.d.ts +129 -72
- package/dist/lib/workbench.middleware.d.ts.map +1 -1
- package/dist/lib/workbench.middleware.js +16 -3
- package/dist/lib/workbench.middleware.js.map +1 -1
- package/dist/lib/workbench.plugin.d.ts +3 -1
- package/dist/lib/workbench.plugin.d.ts.map +1 -1
- package/dist/lib/workbench.plugin.js +13 -4
- package/dist/lib/workbench.plugin.js.map +1 -1
- package/dist/lib/workbench.service.d.ts +136 -40
- package/dist/lib/workbench.service.d.ts.map +1 -1
- package/dist/lib/workbench.service.js +985 -71
- package/dist/lib/workbench.service.js.map +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { Inject, Injectable, Optional } from '@nestjs/common';
|
|
4
|
+
import { MANAGED_QUEUE_SERVICE_TOKEN } from '@xpert-ai/plugin-sdk';
|
|
5
|
+
import { TRADE_COMPLIANCE_PLUGIN_CONTEXT } from '../plugin-context.token.js';
|
|
6
|
+
const DEFAULT_TTL_MS = 30_000;
|
|
7
|
+
const DEFAULT_RENEW_INTERVAL_MS = 10_000;
|
|
8
|
+
const RENEW_SCRIPT = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('pexpire', KEYS[1], ARGV[2]) else return 0 end";
|
|
9
|
+
const RELEASE_SCRIPT = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
|
|
10
|
+
export const ORGANIZATION_LEASE_OPTIONS = Symbol('TRADE_COMPLIANCE_ORGANIZATION_LEASE_OPTIONS');
|
|
11
|
+
export function organizationLeaseKey(scope) {
|
|
12
|
+
const tenantId = requireScopeValue(scope.tenantId, 'tenantId');
|
|
13
|
+
const organizationId = requireScopeValue(scope.organizationId, 'organizationId');
|
|
14
|
+
return `trade-compliance:lease:${tenantId}:${organizationId}`;
|
|
15
|
+
}
|
|
16
|
+
export class OrganizationLease {
|
|
17
|
+
constructor(redis, key, token, ttlMs, renewIntervalMs, onLost) {
|
|
18
|
+
this.redis = redis;
|
|
19
|
+
this.key = key;
|
|
20
|
+
this.token = token;
|
|
21
|
+
this.ttlMs = ttlMs;
|
|
22
|
+
this.renewIntervalMs = renewIntervalMs;
|
|
23
|
+
this.onLost = onLost;
|
|
24
|
+
this.renewalTimer = null;
|
|
25
|
+
this.state = 'owned';
|
|
26
|
+
this.startRenewal();
|
|
27
|
+
}
|
|
28
|
+
get lost() {
|
|
29
|
+
return this.state === 'lost';
|
|
30
|
+
}
|
|
31
|
+
assertOwned() {
|
|
32
|
+
if (this.state === 'lost')
|
|
33
|
+
throw new Error('Organization lease ownership lost');
|
|
34
|
+
if (this.state !== 'owned')
|
|
35
|
+
throw new Error('Organization lease is no longer active');
|
|
36
|
+
}
|
|
37
|
+
async renew(token = this.token) {
|
|
38
|
+
if (this.state !== 'owned')
|
|
39
|
+
return false;
|
|
40
|
+
try {
|
|
41
|
+
const renewed = Number(await this.redis.eval(RENEW_SCRIPT, 1, this.key, token, this.ttlMs)) === 1;
|
|
42
|
+
if (!renewed && token === this.token)
|
|
43
|
+
this.markLost(new Error('Organization lease ownership lost'));
|
|
44
|
+
return renewed;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (token === this.token)
|
|
48
|
+
this.markLost(asError(error));
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async release(token = this.token) {
|
|
53
|
+
if (this.state !== 'owned')
|
|
54
|
+
return false;
|
|
55
|
+
const ownerRelease = token === this.token;
|
|
56
|
+
try {
|
|
57
|
+
const released = Number(await this.redis.eval(RELEASE_SCRIPT, 1, this.key, token)) === 1;
|
|
58
|
+
if (!released && ownerRelease)
|
|
59
|
+
this.markLost(new Error('Organization lease ownership lost'));
|
|
60
|
+
return released;
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
if (ownerRelease && this.state === 'owned') {
|
|
64
|
+
this.state = 'released';
|
|
65
|
+
this.stopRenewal();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
startRenewal() {
|
|
70
|
+
this.renewalTimer = setInterval(() => {
|
|
71
|
+
void this.renew().catch((error) => this.markLost(asError(error)));
|
|
72
|
+
}, this.renewIntervalMs);
|
|
73
|
+
this.renewalTimer.unref?.();
|
|
74
|
+
}
|
|
75
|
+
stopRenewal() {
|
|
76
|
+
if (this.renewalTimer)
|
|
77
|
+
clearInterval(this.renewalTimer);
|
|
78
|
+
this.renewalTimer = null;
|
|
79
|
+
}
|
|
80
|
+
markLost(error) {
|
|
81
|
+
if (this.state !== 'owned')
|
|
82
|
+
return;
|
|
83
|
+
this.state = 'lost';
|
|
84
|
+
this.stopRenewal();
|
|
85
|
+
this.onLost(error, this);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
let OrganizationLeaseManager = class OrganizationLeaseManager {
|
|
89
|
+
constructor(pluginContext, options = {}) {
|
|
90
|
+
this.pluginContext = pluginContext;
|
|
91
|
+
this.ttlMs = positiveInteger(options.ttlMs, DEFAULT_TTL_MS, 'ttlMs');
|
|
92
|
+
this.renewIntervalMs = positiveInteger(options.renewIntervalMs, DEFAULT_RENEW_INTERVAL_MS, 'renewIntervalMs');
|
|
93
|
+
if (this.renewIntervalMs >= this.ttlMs)
|
|
94
|
+
throw new Error('renewIntervalMs must be less than ttlMs');
|
|
95
|
+
this.createToken = options.createToken ?? randomUUID;
|
|
96
|
+
this.onLost = options.onLost ?? ((error, lease) => {
|
|
97
|
+
this.pluginContext.logger?.error('Organization lease ownership lost', { error, leaseKey: lease.key });
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
async acquire(scope) {
|
|
101
|
+
const queue = this.pluginContext.resolve(MANAGED_QUEUE_SERVICE_TOKEN);
|
|
102
|
+
const redis = await queue.getRedis();
|
|
103
|
+
const key = organizationLeaseKey(scope);
|
|
104
|
+
const token = this.createToken();
|
|
105
|
+
const acquired = await redis.set(key, token, 'NX', 'PX', this.ttlMs);
|
|
106
|
+
if (acquired !== 'OK')
|
|
107
|
+
return null;
|
|
108
|
+
return new OrganizationLease(redis, key, token, this.ttlMs, this.renewIntervalMs, this.onLost);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
OrganizationLeaseManager = __decorate([
|
|
112
|
+
Injectable(),
|
|
113
|
+
__param(0, Inject(TRADE_COMPLIANCE_PLUGIN_CONTEXT)),
|
|
114
|
+
__param(1, Optional()),
|
|
115
|
+
__param(1, Inject(ORGANIZATION_LEASE_OPTIONS)),
|
|
116
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
117
|
+
], OrganizationLeaseManager);
|
|
118
|
+
export { OrganizationLeaseManager };
|
|
119
|
+
function requireScopeValue(value, field) {
|
|
120
|
+
const normalized = value?.trim();
|
|
121
|
+
if (!normalized)
|
|
122
|
+
throw new Error(`${field} is required`);
|
|
123
|
+
return normalized;
|
|
124
|
+
}
|
|
125
|
+
function positiveInteger(value, fallback, field) {
|
|
126
|
+
if (value === undefined)
|
|
127
|
+
return fallback;
|
|
128
|
+
if (!Number.isFinite(value) || !Number.isInteger(value) || value <= 0) {
|
|
129
|
+
throw new Error(`${field} must be a finite positive integer`);
|
|
130
|
+
}
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
function asError(error) {
|
|
134
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=organization-lease.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization-lease.js","sourceRoot":"","sources":["../../../src/lib/import-jobs/organization-lease.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EACL,2BAA2B,EAG5B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,+BAA+B,EAEhC,MAAM,4BAA4B,CAAA;AAEnC,MAAM,cAAc,GAAG,MAAM,CAAA;AAC7B,MAAM,yBAAyB,GAAG,MAAM,CAAA;AAExC,MAAM,YAAY,GAAG,gHAAgH,CAAA;AACrI,MAAM,cAAc,GAAG,mGAAmG,CAAA;AAE1H,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,6CAA6C,CAAC,CAAA;AAS/F,MAAM,UAAU,oBAAoB,CAAC,KAA+B;IAClE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAC9D,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;IAChF,OAAO,0BAA0B,QAAQ,IAAI,cAAc,EAAE,CAAA;AAC/D,CAAC;AAED,MAAM,OAAO,iBAAiB;IAI5B,YACmB,KAAwB,EAChC,GAAW,EACX,KAAa,EACL,KAAa,EACb,eAAuB,EACvB,MAAwD;QALxD,UAAK,GAAL,KAAK,CAAmB;QAChC,QAAG,GAAH,GAAG,CAAQ;QACX,UAAK,GAAL,KAAK,CAAQ;QACL,UAAK,GAAL,KAAK,CAAQ;QACb,oBAAe,GAAf,eAAe,CAAQ;QACvB,WAAM,GAAN,MAAM,CAAkD;QATnE,iBAAY,GAA0C,IAAI,CAAA;QAC1D,UAAK,GAAkC,OAAO,CAAA;QAUpD,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,KAAK,MAAM,CAAA;IAC9B,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC/E,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACvF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YAAE,OAAO,KAAK,CAAA;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;YACjG,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;YACnG,OAAO,OAAO,CAAA;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;YACvD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YAAE,OAAO,KAAK,CAAA;QACxC,MAAM,YAAY,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,CAAA;QACzC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;YACxF,IAAI,CAAC,QAAQ,IAAI,YAAY;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;YAC5F,OAAO,QAAQ,CAAA;QACjB,CAAC;gBAAS,CAAC;YACT,IAAI,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,GAAG,UAAU,CAAA;gBACvB,IAAI,CAAC,WAAW,EAAE,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACnE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QACxB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAA;IAC7B,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,YAAY;YAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;IAEO,QAAQ,CAAC,KAAY;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YAAE,OAAM;QAClC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;QACnB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;CACF;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAMnC,YAC4D,aAA2C,EACrD,UAAoC,EAAE;QAD5B,kBAAa,GAAb,aAAa,CAA8B;QAGrG,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;QACpE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,yBAAyB,EAAE,iBAAiB,CAAC,CAAA;QAC7G,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAClG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,UAAU,CAAA;QACpD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAChD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QACvG,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAA+B;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAsB,2BAA2B,CAAC,CAAA;QAC1F,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;QACpC,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACpE,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAClC,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAChG,CAAC;CACF,CAAA;AA5BY,wBAAwB;IADpC,UAAU,EAAE;IAQR,WAAA,MAAM,CAAC,+BAA+B,CAAC,CAAA;IACvC,WAAA,QAAQ,EAAE,CAAA;IAAE,WAAA,MAAM,CAAC,0BAA0B,CAAC,CAAA;;GARtC,wBAAwB,CA4BpC;;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,KAAa;IACrD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;IAChC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,CAAA;IACxD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB,EAAE,QAAgB,EAAE,KAAa;IACjF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oCAAoC,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAClE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-context.token.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-context.token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD,eAAO,MAAM,+BAA+B,eAA4C,CAAA;AAExF,MAAM,MAAM,4BAA4B,GAAG,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-context.token.js","sourceRoot":"","sources":["../../src/lib/plugin-context.token.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CustomerContractAnalysisRun, ImportTask } from './entities/index.js';
|
|
2
|
+
export type PublicImportTaskDto = Pick<ImportTask, 'id' | 'documentType' | 'status' | 'sourceFileId' | 'sourceFileName' | 'resultPayload' | 'resultEntityId' | 'retryOfTaskId' | 'errorCode' | 'errorMessage' | 'queuedAt' | 'startedAt' | 'completedAt' | 'createdAt' | 'updatedAt'>;
|
|
3
|
+
export type PublicCustomerContractReanalysisDto = Pick<CustomerContractAnalysisRun, 'id' | 'importTaskId' | 'customerContractId' | 'status' | 'errorCode' | 'errorMessage' | 'startedAt' | 'completedAt' | 'createdAt'>;
|
|
4
|
+
export declare function publicImportTaskDto(task: ImportTask): PublicImportTaskDto;
|
|
5
|
+
export declare function publicCustomerContractReanalysisDto(run: CustomerContractAnalysisRun): PublicCustomerContractReanalysisDto;
|
|
6
|
+
//# sourceMappingURL=public-dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-dto.d.ts","sourceRoot":"","sources":["../../src/lib/public-dto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAElF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAC7C,IAAI,GAAG,cAAc,GAAG,QAAQ,GAAG,cAAc,GAAG,gBAAgB,GACpE,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAAG,WAAW,GAAG,cAAc,GACnF,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CACvE,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,IAAI,CAAC,2BAA2B,EAC9E,IAAI,GAAG,cAAc,GAAG,oBAAoB,GAAG,QAAQ,GAAG,WAAW,GACrE,cAAc,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,CAC7D,CAAA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,mBAAmB,CAkBzE;AAED,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,2BAA2B,GAAG,mCAAmC,CAYzH"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function publicImportTaskDto(task) {
|
|
2
|
+
return {
|
|
3
|
+
id: task.id,
|
|
4
|
+
documentType: task.documentType,
|
|
5
|
+
status: task.status,
|
|
6
|
+
sourceFileId: task.sourceFileId,
|
|
7
|
+
sourceFileName: task.sourceFileName,
|
|
8
|
+
resultPayload: task.resultPayload,
|
|
9
|
+
resultEntityId: task.resultEntityId,
|
|
10
|
+
retryOfTaskId: task.retryOfTaskId,
|
|
11
|
+
errorCode: task.errorCode,
|
|
12
|
+
errorMessage: task.errorMessage,
|
|
13
|
+
queuedAt: task.queuedAt,
|
|
14
|
+
startedAt: task.startedAt,
|
|
15
|
+
completedAt: task.completedAt,
|
|
16
|
+
createdAt: task.createdAt,
|
|
17
|
+
updatedAt: task.updatedAt
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function publicCustomerContractReanalysisDto(run) {
|
|
21
|
+
return {
|
|
22
|
+
id: run.id,
|
|
23
|
+
importTaskId: run.importTaskId,
|
|
24
|
+
customerContractId: run.customerContractId,
|
|
25
|
+
status: run.status,
|
|
26
|
+
errorCode: run.errorCode,
|
|
27
|
+
errorMessage: run.errorMessage,
|
|
28
|
+
startedAt: run.startedAt,
|
|
29
|
+
completedAt: run.completedAt,
|
|
30
|
+
createdAt: run.createdAt
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=public-dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-dto.js","sourceRoot":"","sources":["../../src/lib/public-dto.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,mBAAmB,CAAC,IAAgB;IAClD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,GAAgC;IAClF,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAA;AACH,CAAC"}
|
|
@@ -3265,4 +3265,4 @@
|
|
|
3265
3265
|
.ri-connector-line:before { content: "\f69d"; }
|
|
3266
3266
|
|
|
3267
3267
|
|
|
3268
|
-
.tcw-catalog-page{display:grid;gap:14px}.tcw-main:has(.tcw-catalog-page),.tcw-content:has(.tcw-catalog-page){background:#fff}.tcw-catalog-page--controlled{margin:46px 10px 0 39px}.tcw-catalog-page--sanction{margin:25px 10px 0 39px}.tcw-catalog-page>.tcw-filter-panel,.tcw-catalog-page>.tcw-notice{margin-bottom:0}.tcw-catalog-page>.tcw-filter-panel{padding:24px 22px;border-radius:7px}.tcw-catalog-page .tcw-filter-grid{gap:16px 26px}.tcw-catalog-page--controlled .tcw-filter-grid{grid-template-columns:minmax(150px,.75fr) minmax(190px,1.08fr) minmax(190px,1.02fr) minmax(190px,1.02fr) auto}.tcw-catalog-page--sanction .tcw-filter-grid{grid-template-columns:repeat(4,minmax(150px,1fr)) minmax(250px,1.35fr);row-gap:10px}.tcw-catalog-page--sanction>.tcw-filter-panel{padding-bottom:11px}.tcw-catalog-page--sanction .tcw-filter-actions{grid-column:5;grid-row:2;justify-self:end}.tcw-catalog-page .tcw-filter-control{gap:9px}.tcw-catalog-page .tcw-filter-control>span{color:#182033;font-size:14px;font-weight:650}.tcw-catalog-page .tcw-filter-control input,.tcw-catalog-page .tcw-filter-control select{height:44px}.tcw-catalog-page .tcw-filter-actions .tcw-button{min-height:44px;padding-inline:20px}.tcw-catalog-page>.tcw-notice{min-height:50px;align-items:center;padding:11px 20px;border-radius:7px}.tcw-catalog-page>.tcw-grid-section{margin-top:4px;border-radius:7px}.tcw-catalog-page .tcw-table-scroll{max-height:423px}.tcw-catalog-page .tcw-data-table th,.tcw-catalog-page .tcw-data-table td{height:46px;padding-inline:14px}.tcw-catalog-page .tcw-pagination{min-height:74px;padding-inline:20px}.tcw-catalog-dialog .tcw-field-grid{gap:14px}.tcw-catalog-manual-source{display:flex;align-items:center;gap:10px;margin:-4px 0 20px;padding:0 12px 16px;border-bottom:1px solid #e1e6ee;color:#5e697a}.tcw-catalog-source-badge,.tcw-catalog-type-badge{display:inline-flex;align-items:center;min-height:28px;padding:3px 11px;border-radius:4px;color:#315274;background:#edf3fb;font-weight:600}.tcw-catalog-dialog .tcw-form-field{position:relative}.tcw-catalog-dialog .tcw-form-field input,.tcw-catalog-dialog .tcw-form-field select{height:38px}.tcw-catalog-dialog .tcw-form-field textarea{width:100%;min-height:112px;padding-bottom:9px}.tcw-counted-textarea{display:grid;min-width:0;gap:4px}.tcw-catalog-dialog .tcw-character-count{position:static;justify-self:end;padding-right:2px;color:#7a8598;font-variant-numeric:tabular-nums;line-height:1.2}.tcw-modal:has(.tcw-catalog-dialog--controlled-create){width:min(584px,calc(100vw - 40px));transform:translateY(54px)}.tcw-modal:has(.tcw-catalog-dialog--sanction-create){width:min(576px,calc(100vw - 40px))}.tcw-modal:has(.tcw-catalog-dialog--controlled-review){width:min(848px,calc(100vw - 40px));height:586px;transform:translateY(70px)}.tcw-modal:has(.tcw-catalog-dialog--sanction-review){width:min(856px,calc(100vw - 40px));height:707px;transform:translateY(62px)}.tcw-modal:has(.tcw-catalog-dialog)>header,.tcw-modal:has(.tcw-catalog-replace-dialog)>header{min-height:62px;padding-inline:26px}.tcw-modal:has(.tcw-catalog-dialog)>footer,.tcw-modal:has(.tcw-catalog-replace-dialog)>footer{min-height:70px;padding-inline:28px}.tcw-modal:has(.tcw-catalog-dialog)>.tcw-modal-body{padding:20px 28px}.tcw-modal:has(.tcw-catalog-dialog--review)>.tcw-modal-body{padding:18px 26px 10px}.tcw-catalog-dialog--controlled-create .tcw-form-field,.tcw-catalog-dialog--sanction-create .tcw-form-field{grid-template-columns:112px minmax(0,1fr);align-items:start;column-gap:12px}.tcw-catalog-dialog--controlled-create .tcw-form-field>span,.tcw-catalog-dialog--sanction-create .tcw-form-field>span{padding-top:10px}.tcw-catalog-dialog--controlled-create .tcw-form-field>small:not(.tcw-character-count),.tcw-catalog-dialog--sanction-create .tcw-form-field>small:not(.tcw-character-count){grid-column:2}.tcw-catalog-dialog--controlled-create .tcw-counted-textarea,.tcw-catalog-dialog--sanction-create .tcw-counted-textarea{grid-column:2}.tcw-catalog-dialog--controlled-create .tcw-form-field textarea,.tcw-catalog-dialog--sanction-create .tcw-form-field textarea{min-height:112px}.tcw-catalog-dialog--review .tcw-review-split{min-height:100%}.tcw-catalog-dialog--review .tcw-review-split>section{padding-inline:24px}.tcw-catalog-dialog--review .tcw-review-split>section:first-child{padding-left:0}.tcw-catalog-dialog--review .tcw-review-split>section:last-child{padding-right:0}.tcw-modal:has(.tcw-catalog-replace-dialog){width:min(550px,calc(100vw - 40px));transform:translateY(64px)}.tcw-modal:has(.tcw-catalog-replace-dialog)>.tcw-modal-body{padding:18px 36px 6px}.tcw-catalog-replace-warning{display:flex;gap:14px;align-items:flex-start;margin-bottom:14px;padding:13px 16px;border:1px solid #ff8b81;border-radius:7px;color:#df3c2b;background:#fff8f7;font-weight:600;line-height:1.65}.tcw-catalog-replace-warning>i{margin-top:2px;font-size:22px}.tcw-catalog-replace-summary{display:grid;grid-template-columns:142px minmax(0,1fr);gap:14px 14px;margin:0;padding:18px 20px;border:1px solid #d6dee9;border-radius:7px;line-height:1.45}.tcw-catalog-replace-summary dt,.tcw-catalog-replace-summary dd{margin:0}.tcw-catalog-replace-summary dt{color:#4f5b6d}.tcw-catalog-replace-count{color:#ef3038}.tcw-modal:has(.tcw-catalog-replace-dialog) .tcw-button--danger{min-width:182px;background:#e9252d;border-color:#e9252d}.tcw-modal:has(.tcw-catalog-replace-dialog--sanction){width:min(572px,calc(100vw - 40px));transform:translateY(9px)}.tcw-catalog-replace-dialog--sanction .tcw-catalog-replace-warning{min-height:84px;align-items:center}.tcw-catalog-replace-dialog--sanction .tcw-catalog-replace-summary{min-height:253px;align-content:center;row-gap:19px}.tcw-catalog-replace-dialog--sanction .tcw-catalog-replace-summary:before{grid-column:1 / -1;margin-bottom:2px;color:#253047;content:"\8986\76d6\4fe1\606f";font-size:16px;font-weight:700}.tcw-modal:has(.tcw-catalog-replace-dialog--sanction)>footer{min-height:92px}@media(max-width:1100px){.tcw-catalog-page--controlled,.tcw-catalog-page--sanction{margin:0}.tcw-catalog-page--controlled .tcw-filter-grid,.tcw-catalog-page--sanction .tcw-filter-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}.tcw-catalog-page--sanction .tcw-filter-actions{grid-column:auto;grid-row:auto;justify-self:start}.tcw-catalog-page .tcw-data-table .action-column{width:160px!important;min-width:160px!important;padding-inline:8px}.tcw-catalog-page .tcw-catalog-table-link{display:block;width:100%;min-width:0;max-width:100%;overflow:hidden}.tcw-catalog-page .tcw-catalog-table-link button{position:relative;display:block;width:100%;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcw-catalog-page .tcw-catalog-table-link button>i{position:absolute;inset:0;display:block;overflow:hidden;color:transparent;pointer-events:none}.tcw-catalog-page .action-column>.tcw-row-actions{display:grid;width:100%;min-width:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.tcw-catalog-page .tcw-catalog-operation-button{display:inline-flex;width:100%;min-width:60px;align-items:center;justify-content:center;gap:2px;padding-inline:0;overflow:visible}.tcw-catalog-page .tcw-catalog-operation-button>i{flex:0 0 auto}}@media(max-width:640px){.tcw-catalog-page--controlled .tcw-filter-grid,.tcw-catalog-page--sanction .tcw-filter-grid{grid-template-columns:1fr}.tcw-catalog-page>.tcw-filter-panel{padding:16px}.tcw-catalog-replace-summary{grid-template-columns:1fr;gap:5px}}.tcw-procurement-prototype-surface,.tcw-contract-prototype-surface{--pc-blue: #0868f2;--pc-border: #dbe3ee;--pc-text: #121b31;color:var(--pc-text);font-size:14px}.tcw-procurement-prototype-surface{gap:14px}.tcw-content:has(>.tcw-procurement-prototype-surface){position:relative}.tcw-content:has(>.tcw-procurement-prototype-surface)>.tcw-page-heading{position:absolute;z-index:2;top:18px;right:18px;margin:0}.tcw-content:has(>.tcw-procurement-prototype-surface)>.tcw-page-heading>div:first-child{display:none}.tcw-content:has(>.tcw-procurement-prototype-surface[data-procurement-level=orders])>.tcw-page-heading,.tcw-content:has(>.tcw-procurement-prototype-surface[data-procurement-level=lines])>.tcw-page-heading{display:none}.tcw-procurement-level-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:0}.tcw-procurement-level-heading h2{margin:0;color:#10182b;font-size:29px;line-height:1.3}.tcw-procurement-level-heading p{margin:6px 0 0;color:#5a6577;font-size:15px}.tcw-procurement-prototype-surface .tcw-filter-panel,.tcw-contract-prototype-surface .tcw-filter-panel{margin:0;padding:22px 20px 20px;border-color:var(--pc-border);border-radius:7px;box-shadow:0 3px 12px #162d4e0f}.tcw-procurement-prototype-surface .tcw-filter-grid,.tcw-contract-prototype-surface .tcw-filter-grid{grid-template-columns:repeat(6,minmax(120px,1fr)) auto;gap:18px 20px}.tcw-procurement-prototype-surface[data-procurement-level=suppliers] .tcw-filter-grid,.tcw-procurement-prototype-surface[data-procurement-level=lines] .tcw-filter-grid{grid-template-columns:repeat(5,minmax(140px,1fr)) auto}.tcw-procurement-prototype-surface .tcw-filter-control,.tcw-contract-prototype-surface .tcw-filter-control{gap:9px}.tcw-procurement-prototype-surface .tcw-filter-control>span,.tcw-contract-prototype-surface .tcw-filter-control>span{color:#1c2639;font-size:14px;font-weight:600}.tcw-procurement-prototype-surface .tcw-filter-control input,.tcw-procurement-prototype-surface .tcw-filter-control select,.tcw-contract-prototype-surface .tcw-filter-control input,.tcw-contract-prototype-surface .tcw-filter-control select{height:42px;border-color:#ced8e6;border-radius:5px}.tcw-procurement-prototype-surface .tcw-filter-actions,.tcw-contract-prototype-surface .tcw-filter-actions{align-items:flex-end}.tcw-procurement-prototype-surface .tcw-filter-actions .tcw-button,.tcw-contract-prototype-surface .tcw-filter-actions .tcw-button{height:42px;min-width:58px}.tcw-procurement-prototype-surface .tcw-notice,.tcw-contract-prototype-surface .tcw-notice{min-height:46px;margin:0;padding:10px 16px;border-color:#b9d7ff;border-radius:6px;color:#245fa8;background:#edf5ff}.tcw-procurement-prototype-surface .tcw-grid-section,.tcw-contract-prototype-surface .tcw-grid-section{overflow:hidden;border-color:var(--pc-border);border-radius:7px;box-shadow:0 3px 12px #162d4e0f}.tcw-procurement-prototype-surface .tcw-data-table,.tcw-contract-prototype-surface .tcw-data-table{font-size:13px}.tcw-procurement-prototype-surface .tcw-data-table th,.tcw-contract-prototype-surface .tcw-data-table th{height:48px;color:#172033;background:#fff;font-weight:650}.tcw-procurement-prototype-surface .tcw-data-table td,.tcw-contract-prototype-surface .tcw-data-table td{height:46px}.tcw-procurement-prototype-surface .tcw-row-actions,.tcw-contract-prototype-surface .tcw-row-actions{gap:15px;white-space:nowrap}.tcw-procurement-prototype-surface .tcw-row-actions button,.tcw-contract-prototype-surface .tcw-row-actions button{padding:0;color:var(--pc-blue)}.tcw-procurement-prototype-surface .tcw-pagination,.tcw-contract-prototype-surface .tcw-pagination{min-height:68px;padding:13px 18px}.tcw-procurement-context{min-height:88px;grid-template-columns:150px minmax(260px,1.5fr) 130px 170px auto;border-radius:7px;box-shadow:0 3px 12px #162d4e0f}.tcw-procurement-context--order{grid-template-columns:minmax(300px,1.5fr) 200px 180px 200px auto}.tcw-procurement-context>div:not(.tcw-procurement-context-actions){min-height:88px;padding:15px 24px}.tcw-procurement-context strong{font-size:15px}.tcw-procurement-metrics{grid-template-columns:.8fr 1.2fr .8fr 1.05fr 1.85fr;gap:14px}.tcw-procurement-metrics>div{position:relative;min-height:158px;padding:26px 22px 20px 72px;border-radius:7px}.tcw-procurement-metrics>.tcw-procurement-top{padding:18px 22px}.tcw-procurement-metric-icon{position:absolute;top:35px;left:21px;color:#3b7cff;font-size:42px}.tcw-procurement-metric--green .tcw-procurement-metric-icon{color:#47c87e}.tcw-procurement-metric--orange .tcw-procurement-metric-icon{color:#ff7c43}.tcw-procurement-metric--violet .tcw-procurement-metric-icon{color:#9b61e8}.tcw-procurement-metrics>div>span{color:#2f3a4d;font-size:14px}.tcw-procurement-metrics>div>strong{margin-top:10px;color:#10182b;font-size:25px}.tcw-procurement-top ol{gap:4px;margin-top:8px}.tcw-procurement-top li:before{width:16px;height:16px;flex-basis:16px}.tcw-procurement-top li strong{font-weight:500}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-supplier-review){width:min(812px,calc(100vw - 40px));max-height:calc(100vh - 56px)}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form){width:min(828px,calc(100vw - 40px));height:min(762px,calc(100vh - 48px));max-height:none}.tcw-procurement-prototype-surface .tcw-modal>header,.tcw-contract-prototype-surface .tcw-modal>header{min-height:55px;padding:12px 24px;border-bottom:0}.tcw-procurement-prototype-surface .tcw-modal>footer,.tcw-contract-prototype-surface .tcw-modal>footer{min-height:62px;padding:10px 24px 18px;border-top:0}.tcw-procurement-prototype-surface .tcw-modal-body,.tcw-contract-prototype-surface .tcw-modal-body{padding:0 24px 10px}.tcw-procurement-dialog-kicker{display:flex;gap:24px;margin:-2px 0 16px;color:#52637d;font-size:12px}.tcw-procurement-supplier-review{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(270px,.9fr);gap:20px}.tcw-procurement-supplier-review>.tcw-field-grid{display:grid;gap:7px}.tcw-procurement-supplier-review>.tcw-field-grid .tcw-form-field{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:8px}.tcw-procurement-supplier-review .tcw-form-field input{height:34px}.tcw-procurement-supplier-review aside{padding-left:20px;border-left:1px solid #e5eaf1}.tcw-procurement-supplier-review textarea{height:138px;padding:10px;resize:none}.tcw-procurement-supplier-review dl{margin:16px 0 12px;border:1px solid var(--pc-border);border-radius:5px}.tcw-procurement-supplier-review dl>div{display:grid;grid-template-columns:110px 1fr;min-height:43px;align-items:center;padding:8px 12px;border-bottom:1px solid #e8edf3}.tcw-procurement-supplier-review dl>div:last-child{border-bottom:0}.tcw-procurement-supplier-review dt{font-weight:650}.tcw-procurement-supplier-review dd{margin:0;color:#4b5870}.tcw-procurement-source-label{position:absolute;top:21px;left:132px;color:#6b7585;font-size:13px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form){position:relative}.tcw-procurement-line-form{min-height:620px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form) .tcw-field-grid{gap:12px 22px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form) .tcw-form-field{gap:6px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form) .tcw-form-field input{height:36px}.tcw-procurement-line-status{display:flex;min-height:36px;align-items:center;gap:18px}.tcw-procurement-line-status label{display:flex;align-items:center;gap:6px;color:#344054;white-space:nowrap}.tcw-procurement-prototype-surface .tcw-procurement-line-status input{width:15px;height:15px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-delete-summary.is-order){width:min(544px,calc(100vw - 40px));height:min(560px,calc(100vh - 40px));max-height:none}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-delete-summary.is-order) .tcw-confirm-message,.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-delete-summary) .tcw-confirm-message{display:block;padding:0}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-delete-summary.is-order) .tcw-confirm-message>i,.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-delete-summary) .tcw-confirm-message>i{display:none}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-delete-summary.is-order) .tcw-confirm-message>p,.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-delete-summary) .tcw-confirm-message>p{margin:0}.tcw-procurement-delete-warning,.tcw-procurement-delete-info{display:flex;gap:10px;padding:13px 14px;border:1px solid #ffbaba;border-radius:5px;color:#d92d20;background:#fff4f4;line-height:1.6}.tcw-procurement-delete-warning i,.tcw-procurement-delete-info i{flex:0 0 auto;font-size:20px}.tcw-procurement-delete-details{margin:12px 0;border:1px solid var(--pc-border);border-radius:5px}.tcw-procurement-delete-details>div{display:grid;grid-template-columns:150px 1fr;min-height:42px;align-items:center;padding:5px 14px;border-bottom:1px solid #e7ebf1}.tcw-procurement-delete-details>div:last-child{border-bottom:0}.tcw-procurement-delete-details dt{font-weight:600}.tcw-procurement-delete-details dd{margin:0;font-weight:650}.tcw-procurement-delete-info{margin:0;border-color:#ffd198;color:#b45f06;background:#fff9ef}.tcw-contract-prototype-surface{display:grid;gap:14px}.tcw-contract-prototype-surface .tcw-filter-grid{grid-template-columns:1fr 1.05fr .95fr .95fr 1.25fr auto}.tcw-contract-customer-code{display:inline;margin:0}.tcw-contract-risk-summary{display:grid;justify-items:start;gap:4px}.tcw-contract-sanction-text{color:#697386;font-size:11px;white-space:nowrap}.tcw-contract-sanction-text--hit{color:#d92d20}.tcw-contract-sanction-text--clear{color:#168653}.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-review-summary){width:min(920px,calc(100vw - 64px));height:min(752px,calc(100vh - 48px));max-height:none}.tcw-contract-review-header{grid-template-columns:1.1fr minmax(0,4fr) auto auto;align-items:center;gap:16px;padding:14px 18px;background:#fff}.tcw-contract-review-header .tcw-field-grid{gap:12px}.tcw-contract-review-header .tcw-form-field input{height:30px;padding:0;border:0;background:transparent}.tcw-contract-review-toolbar{min-height:48px;margin:10px 0 0}.tcw-contract-review-layout{grid-template-columns:140px minmax(330px,1fr) minmax(300px,.9fr);min-height:490px}.tcw-contract-clause-tabs{padding:0;background:#fff}.tcw-contract-clause-tabs button{min-height:56px;padding:8px 18px;font-size:14px}.tcw-contract-clause-tabs small{display:none}.tcw-contract-clause-editor,.tcw-contract-source-preview{padding:16px 14px}.tcw-contract-clause-editor{gap:12px}.tcw-contract-clause-editor textarea{min-height:104px;padding:10px}.tcw-contract-source-preview{display:block;background:#fff}.tcw-contract-source-preview>h3{padding-bottom:14px;border-bottom:1px solid #e3e9f1}.tcw-contract-analysis{padding:0;border:0;background:#fff}.tcw-contract-analysis h4{display:none}.tcw-contract-analysis dt{margin-top:17px;color:#273349;font-size:13px}.tcw-contract-analysis dd{min-height:84px;margin-top:8px;padding:11px;border:1px solid var(--pc-border);border-radius:5px;color:#3d495e}.tcw-contract-source-preview>details{margin-top:14px;color:#52637d;font-size:12px}.tcw-contract-source-preview>details iframe,.tcw-contract-source-preview>details pre{min-height:240px;margin-top:10px}.tcw-contract-customer-master{margin-top:10px}.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-delete-summary){width:min(575px,calc(100vw - 40px));height:min(544px,calc(100vh - 40px));max-height:none}.tcw-contract-delete-warning{display:flex;gap:10px;padding:14px;border:1px solid #ffbaba;border-radius:5px;color:#e52a34;background:#fff4f4;line-height:1.65}.tcw-contract-delete-warning i{font-size:20px}.tcw-contract-delete-details{margin:12px 0;padding:10px 16px;border:1px solid var(--pc-border);border-radius:5px}.tcw-contract-delete-details>div{display:grid;grid-template-columns:205px 1fr;min-height:34px;align-items:center}.tcw-contract-delete-summary dt{font-weight:600}.tcw-contract-delete-summary dd{margin:0;font-weight:650}.tcw-contract-delete-info{display:flex;gap:10px;margin:0;padding:13px;border:1px solid #ffd198;border-radius:5px;color:#d36b00;background:#fff9ef;line-height:1.65}@media(max-width:1180px){.tcw-procurement-prototype-surface .tcw-filter-grid,.tcw-contract-prototype-surface .tcw-filter-grid,.tcw-procurement-metrics{grid-template-columns:repeat(2,minmax(180px,1fr))}.tcw-procurement-top{grid-column:1 / -1}}@media(max-width:760px){.tcw-procurement-supplier-review,.tcw-contract-review-layout{grid-template-columns:1fr}.tcw-procurement-supplier-review aside{padding:16px 0 0;border-top:1px solid #e5eaf1;border-left:0}.tcw-procurement-level-heading{flex-direction:column}.tcw-procurement-metrics{grid-template-columns:1fr}.tcw-procurement-top{grid-column:auto}}.tcw-sales-files-page{--sf-blue: #1769ff;--sf-blue-soft: #f1f6ff;--sf-border: #dbe3ef;--sf-text: #172033;color:var(--sf-text)}.tcw-sales-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:0 0 20px}.tcw-sales-heading .tcw-list-heading{margin:0;color:#111b2f;font-size:28px;line-height:1.25;font-weight:700}.tcw-sales-heading p{margin:8px 0 0;color:#687389;font-size:14px;line-height:1.5}.tcw-sales-heading>.tcw-button{min-height:42px;border-color:var(--sf-blue);color:var(--sf-blue);background:#fff}.tcw-sales-files-page .tcw-filter-panel{margin-bottom:18px;padding:22px 20px;border-color:var(--sf-border);border-radius:7px;box-shadow:0 1px 4px #182d4e0a}.tcw-sales-files-page .tcw-filter-grid{gap:18px 28px}.tcw-sales-files-page .tcw-filter-control{gap:8px}.tcw-sales-files-page .tcw-filter-control>span{color:#263147;font-size:14px}.tcw-sales-files-page .tcw-filter-control input,.tcw-sales-files-page .tcw-filter-control select{height:39px;border-color:#cfd8e5;border-radius:4px}.tcw-sales-files-page .tcw-filter-actions .tcw-button{min-height:39px;padding-inline:21px}.tcw-sales-files-page .tcw-button--primary,.tcw-sales-files-page .tcw-pagination button:not(:disabled):hover{border-color:var(--sf-blue);background:var(--sf-blue)}.tcw-sales-files-page .tcw-notice{min-height:47px;margin-bottom:18px;align-items:center;border-color:#9bc0ff;border-radius:6px;color:#1763d7;background:var(--sf-blue-soft)}.tcw-sales-files-page .tcw-grid-section{border-color:var(--sf-border);border-radius:6px}.tcw-sales-files-page .tcw-data-table{color:#1c273a;font-size:12px}.tcw-sales-files-page .tcw-data-table th,.tcw-sales-files-page .tcw-data-table td{height:43px;padding:8px 12px;border-bottom-color:#e2e8f1}.tcw-sales-files-page .tcw-data-table th{color:#283448;background:#f8fafc;font-weight:650}.tcw-sales-files-page .tcw-row-actions{gap:11px}.tcw-sales-files-page .tcw-row-actions button,.tcw-sales-files-page .tcw-table-link{color:#1265e8}.tcw-sales-files-page .tcw-pagination{min-height:62px;border-top:0;color:#1d293c}.tcw-sales-files-page .tcw-tag{min-height:22px;border:0;border-radius:999px;color:#14935a;background:#e5f8ee}.tcw-sales-files-page .tcw-tag--warning{color:#ed7a15;background:#fff0e3}.tcw-sales-page--orders .tcw-context-bar,.tcw-sales-page--lines .tcw-context-bar,.tcw-sales-files-page--history .tcw-context-bar{min-height:58px;margin-bottom:20px;padding:10px 20px;border-color:var(--sf-border);border-radius:7px}.tcw-sales-page--orders .tcw-context-bar strong{margin-right:10px}.tcw-sales-page--orders .tcw-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-bottom:20px}.tcw-sales-page--orders .tcw-metric-grid article{position:relative;min-height:98px;padding:20px 20px 18px 86px;border:1px solid var(--sf-border);border-radius:7px}.tcw-sales-page--orders .tcw-metric-grid article:before{position:absolute;top:21px;left:20px;display:grid;width:48px;height:48px;place-items:center;border-radius:50%;color:var(--sf-blue);background:#eaf1ff;font-family:remixicon;font-size:23px;content:"\ea71"}.tcw-sales-page--orders .tcw-metric-grid article:nth-child(3):before{color:#11a963;background:#e5f8ee;content:"\f0d7"}.tcw-sales-page--orders .tcw-metric-grid article:nth-child(4):before{color:#f17d1d;background:#fff0e3;content:"\ef63"}.tcw-sales-page--orders .tcw-metric-grid article:nth-child(n+5),.tcw-sales-page--orders .tcw-sales-top{display:none}.tcw-sales-page--orders .tcw-metric-grid article strong{font-size:23px}.tcw-sales-page--orders .tcw-metric-grid article small{position:absolute;left:-9999px}.tcw-sales-page--lines .tcw-order-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));min-height:96px}.tcw-sales-page--lines .tcw-order-summary strong,.tcw-sales-page--lines .tcw-order-summary span{display:grid;gap:7px;color:#162136}.tcw-sales-page--lines .tcw-order-summary strong:before{color:#6b7689;font-size:12px;font-weight:400;content:"\9500\552e\8ba2\5355\7f16\53f7"}.tcw-sales-page--lines .tcw-order-summary span:nth-child(2):before{color:#6b7689;font-size:12px;content:"\5ba2\6237\5408\540c\7f16\53f7"}.tcw-sales-page--lines .tcw-order-summary span:nth-child(3):before{color:#6b7689;font-size:12px;content:"\91c7\8d2d\5408\540c\7f16\53f7"}.tcw-sales-files-page--history .tcw-context-bar .tcw-button{order:3;margin-left:auto;border-color:var(--sf-blue);color:var(--sf-blue)}.tcw-modal:has(.tcw-sales-risk-dialog),.tcw-modal:has(.tcw-sales-file-dialog),.tcw-modal:has(.tcw-sales-customer-dialog),.tcw-modal:has(.tcw-sales-order-dialog),.tcw-modal:has(.tcw-sales-bank-dialog),.tcw-modal:has(.tcw-sales-file-delete-dialog){border-radius:8px;box-shadow:0 18px 55px #101c3042}.tcw-modal:has(.tcw-sales-risk-dialog){width:min(865px,calc(100vw - 40px))}.tcw-modal:has(.tcw-sales-file-dialog){width:min(780px,calc(100vw - 40px))}.tcw-modal:has(.tcw-sales-customer-dialog){width:min(950px,calc(100vw - 40px));max-height:min(810px,calc(100vh - 40px))}.tcw-modal:has(.tcw-sales-order-dialog){width:min(920px,calc(100vw - 40px));max-height:min(700px,calc(100vh - 40px))}.tcw-modal:has(.tcw-sales-bank-dialog){width:min(806px,calc(100vw - 40px));max-height:min(714px,calc(100vh - 40px))}.tcw-modal:has(.tcw-sales-file-delete-dialog){width:min(626px,calc(100vw - 40px));min-height:min(500px,calc(100vh - 40px))}.tcw-modal:has(.tcw-sales-risk-dialog)>header,.tcw-modal:has(.tcw-sales-file-dialog)>header,.tcw-modal:has(.tcw-sales-customer-dialog)>header,.tcw-modal:has(.tcw-sales-order-dialog)>header{min-height:64px;padding-inline:26px}.tcw-modal:has(.tcw-sales-bank-dialog)>header,.tcw-modal:has(.tcw-sales-file-delete-dialog)>header{min-height:64px;padding-inline:26px}.tcw-modal:has(.tcw-sales-risk-dialog)>footer,.tcw-modal:has(.tcw-sales-file-dialog)>footer,.tcw-modal:has(.tcw-sales-customer-dialog)>footer,.tcw-modal:has(.tcw-sales-order-dialog)>footer{min-height:72px;padding-inline:26px}.tcw-modal:has(.tcw-sales-bank-dialog)>footer,.tcw-modal:has(.tcw-sales-file-delete-dialog)>footer{min-height:72px;padding-inline:26px}.tcw-sales-bank-dialog{display:grid;gap:18px}.tcw-bank-order-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 28px;margin:0;padding:20px 24px;border:1px solid #a9c7ff;border-radius:7px;background:#f8fbff}.tcw-bank-order-summary div{min-width:0}.tcw-bank-order-summary dt{color:#66738a;font-size:12px}.tcw-bank-order-summary dd{margin:7px 0 0;overflow:hidden;color:#17233a;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.tcw-bank-dialog-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(290px,.9fr);gap:28px}.tcw-bank-dialog-grid>section{display:grid;align-content:start;gap:16px}.tcw-bank-dialog-grid>aside{min-height:190px;padding:18px 20px;border:1px solid var(--sf-border);border-radius:7px}.tcw-bank-dialog-grid h3{margin:0 0 10px;font-size:16px}.tcw-bank-dialog-grid p{margin:0 0 18px;color:#687389}.tcw-bank-preview-file{display:flex;align-items:center;gap:13px;padding:15px;border:1px solid #dfe6f0;border-radius:6px}.tcw-bank-preview-file>i{display:grid;width:38px;height:38px;place-items:center;border-radius:5px;color:#1769ff;background:#eaf2ff;font-size:22px}.tcw-bank-preview-file span{display:grid;gap:5px}.tcw-bank-preview-file small{color:#6b778c}.tcw-sales-bank-dialog>.tcw-notice{margin:0}.tcw-sales-file-delete-dialog{display:grid;gap:18px}.tcw-sales-file-delete-dialog h3{margin:0;font-size:20px}.tcw-delete-critical{display:flex;gap:12px;padding:15px 16px;border:1px solid #ffb8b8;border-radius:6px;color:#e22932;background:#fff1f1;line-height:1.55}.tcw-delete-critical>i{flex:0 0 auto;font-size:21px}.tcw-sales-file-delete-dialog dl{display:grid;grid-template-columns:1fr 1fr;gap:18px 28px;margin:0;padding:18px 20px;border:1px solid var(--sf-border);border-radius:6px}.tcw-sales-file-delete-dialog dt{color:#69758a;font-size:12px}.tcw-sales-file-delete-dialog dd{margin:6px 0 0;overflow-wrap:anywhere;font-weight:650}.tcw-sales-file-delete-dialog>p{margin:0;padding:11px 14px;border:1px solid #f0cf91;border-radius:5px;color:#996816;background:#fff8e8}@media(min-width:981px){.tcw-modal:has(.tcw-sales-customer-dialog){transform:translateY(36px)}.tcw-modal:has(.tcw-sales-order-dialog){max-height:min(658px,calc(100vh - 40px));transform:translateY(13px)}.tcw-modal:has(.tcw-sales-risk-dialog){min-height:767px;transform:translate(67px)}}.tcw-sales-customer-dialog,.tcw-sales-order-dialog{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:0 28px}.tcw-sales-customer-dialog>section,.tcw-sales-order-dialog>section{min-width:0;padding-right:28px;border-right:1px solid var(--sf-border)}.tcw-sales-customer-dialog>aside,.tcw-sales-order-dialog>aside{min-width:0}.tcw-sales-customer-dialog .tcw-field-grid{gap:13px 16px}.tcw-sales-customer-dialog .tcw-form-field,.tcw-sales-order-dialog .tcw-form-field{gap:6px}.tcw-sales-customer-dialog input,.tcw-sales-order-dialog input{height:37px}.tcw-sales-customer-dialog input:disabled,.tcw-sales-order-dialog input:disabled,.tcw-sales-customer-dialog textarea:disabled{color:#41506a;background:#f8fafc;opacity:1}.tcw-sales-customer-dialog aside dl,.tcw-sales-order-dialog aside dl{display:grid;gap:0;margin:0 0 18px}.tcw-sales-customer-dialog aside dl>div,.tcw-sales-order-dialog aside dl>div{display:grid;grid-template-columns:minmax(112px,.85fr) minmax(0,1.15fr);align-items:center;min-height:47px;border-bottom:1px solid #e8edf4}.tcw-sales-customer-dialog dt,.tcw-sales-order-dialog dt{color:#3c485d;font-weight:650}.tcw-sales-customer-dialog dd,.tcw-sales-order-dialog dd{margin:0;color:#18243a}.tcw-sales-customer-dialog>.tcw-notice,.tcw-sales-order-dialog>.tcw-notice{grid-column:1 / -1;margin:20px 0 0}.tcw-sales-order-dialog aside .tcw-notice{margin:18px 0 0}.tcw-sales-risk-dialog{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:18px}.tcw-sales-risk-dialog>section:first-child{grid-column:1 / -1}.tcw-sales-risk-dialog>section{min-width:0}.tcw-sales-risk-dialog h3{margin:0 0 12px;font-size:16px}.tcw-sales-risk-dialog .tcw-preflight-summary{margin:0;border:1px solid var(--sf-border);border-radius:7px;overflow:hidden}.tcw-sales-risk-dialog .tcw-preflight-summary>div{border:0;border-bottom:1px solid #e5eaf1;background:#fff}.tcw-sales-risk-dialog .tcw-grid-section{border-color:var(--sf-border)}.tcw-sales-risk-dialog .tcw-data-table{min-width:560px}.tcw-sales-file-dialog .tcw-preflight-summary{padding:2px;border:1px solid #a9c7ff;border-radius:7px;background:#f8fbff}.tcw-sales-file-dialog .tcw-preflight-summary>div{border:0;background:transparent}.tcw-sales-file-dialog .tcw-notice{margin-bottom:0}@media(max-width:980px){.tcw-sales-heading{flex-direction:column}.tcw-sales-page--orders .tcw-metric-grid{grid-template-columns:1fr 1fr}.tcw-sales-risk-dialog{grid-template-columns:1fr}.tcw-sales-risk-dialog>section:first-child{grid-column:auto}.tcw-sales-customer-dialog,.tcw-sales-order-dialog{grid-template-columns:1fr}.tcw-sales-customer-dialog>section,.tcw-sales-order-dialog>section{padding:0 0 18px;border-right:0;border-bottom:1px solid var(--sf-border)}.tcw-sales-customer-dialog>aside,.tcw-sales-order-dialog>aside{padding-top:18px}}@media(max-width:640px){.tcw-sales-heading .tcw-list-heading{font-size:23px}.tcw-sales-page--orders .tcw-metric-grid,.tcw-sales-page--lines .tcw-order-summary{grid-template-columns:1fr}}.tcw-settings-page[data-settings-page=typed]{display:block;width:100%;min-width:0;min-height:0;grid-template-columns:none;border:0;background:transparent;color:#1f2a3d}.tcw-settings-page[data-settings-page=typed]>.tcw-settings-tabs,.tcw-settings-page[data-settings-page=typed]>.tcw-notice,.tcw-settings-page[data-settings-page=typed]>.tcw-settings-content{width:100%;min-width:0}.tcw-settings-page>.tcw-notice{min-height:40px;margin:0 0 8px;padding:8px 14px}.tcw-settings-tabs{display:flex;height:56px;align-items:stretch;gap:0;border-bottom:1px solid #d8dee8}.tcw-settings-tabs button{position:relative;display:inline-flex;width:122px;align-items:center;justify-content:center;gap:7px;padding:0 16px;border:0;color:#283548;background:transparent;font-size:16px}.tcw-settings-tabs button i{font-size:16px}.tcw-settings-tabs button:after{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:transparent;content:""}.tcw-settings-tabs button.is-active{color:#086bf2;font-weight:650}.tcw-settings-tabs button.is-active:after{background:#0875f7}.tcw-settings-content{min-width:0;padding:20px 0 0}.tcw-settings-card{min-width:0;border:1px solid #d7dee8;border-radius:6px;background:#fff;box-shadow:0 1px 3px #1f2a3d0a}.tcw-settings-company-card{padding:18px 24px 20px}.tcw-settings-company-form{min-width:0}.tcw-settings-row{display:grid;min-width:0;grid-template-columns:178px minmax(0,704px);align-items:center;gap:12px;margin-bottom:13px}.tcw-settings-row:last-child{margin-bottom:0}.tcw-settings-row>span{color:#283548;font-size:15px}.tcw-settings-row>span b{margin-right:5px;color:#f04438}.tcw-settings-row>span i{margin-left:7px;color:#8b98aa}.tcw-settings-row>div{min-width:0}.tcw-settings-row input,.tcw-settings-row select,.tcw-settings-row textarea,.tcw-settings-bank-value input,.tcw-settings-bank-value textarea{width:100%;height:40px;min-width:0;padding:0 12px;border:1px solid #d5dce6;border-radius:4px;outline:0;color:#354156;background:#fff;font:inherit}.tcw-settings-row textarea,.tcw-settings-bank-value textarea{height:52px;padding-top:8px;resize:none}.tcw-settings-row input[readonly],.tcw-settings-row textarea[readonly],.tcw-settings-bank-value input[readonly]{color:#627087;background:#f7f8fa}.tcw-settings-upload{display:flex;width:423px;height:82px;align-items:center;justify-content:center;gap:16px;border:1px dashed #b9c5d5;border-radius:6px;color:#536177;cursor:pointer}.tcw-settings-upload input{display:none}.tcw-settings-upload>i{color:#76849a;font-size:39px}.tcw-settings-upload>span{display:grid;gap:6px}.tcw-settings-upload small{color:#8a96a8;font-size:12px}.tcw-settings-form-actions{display:flex;gap:32px;margin-top:32px}.tcw-settings-form-actions .tcw-button{width:164px;height:44px;justify-content:center}.tcw-settings-bank-list{display:grid;gap:14px}.tcw-settings-bank-card{padding:20px 24px 27px}.tcw-settings-bank-card>header,.tcw-settings-rate-card>header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.tcw-settings-bank-card h2,.tcw-settings-rate-card h2,.tcw-settings-profit-snapshot h2{margin:0;color:#1d2939;font-size:18px}.tcw-settings-bank-card h2 span{margin-left:6px;font-size:15px;font-weight:500}.tcw-settings-bank-card>header>div{display:flex;gap:14px}.tcw-settings-bank-card .tcw-button{min-width:92px;justify-content:center}.tcw-button--outline{border-color:#1680ff;color:#0875f7;background:#fff}.tcw-settings-bank-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:13px 38px}.tcw-settings-bank-value{display:grid;min-width:0;grid-template-columns:118px minmax(0,1fr);align-items:center;gap:12px}.tcw-settings-bank-value>span{font-size:14px}.tcw-settings-bank-value textarea{min-height:54px}.tcw-settings-bank-list>.tcw-notice{margin:4px 0 0}.tcw-settings-profit-snapshot{margin-bottom:18px;padding:18px 22px 22px}.tcw-settings-profit-snapshot>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid #dbe1e9}.tcw-settings-profit-snapshot>header>div{display:flex;gap:8px}.tcw-settings-profit-snapshot>header .tcw-button{justify-content:center}.tcw-settings-profit-snapshot>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin-top:22px}.tcw-settings-profit-snapshot>div>div{display:grid;gap:9px;padding:0 20px;border-right:1px solid #d9dfe7}.tcw-settings-profit-snapshot>div>div:first-child{padding-left:0}.tcw-settings-profit-snapshot>div>div:last-child{border-right:0}.tcw-settings-profit-snapshot span{color:#536075}.tcw-settings-profit-snapshot strong{color:#0875f7;font-size:24px;font-weight:600}.tcw-settings-profit-snapshot strong.is-status{width:fit-content;padding:4px 10px;border-radius:4px;color:#16a34a;background:#dff6e5;font-size:15px}.tcw-settings-rate-card{padding:18px 22px}.tcw-settings-rate-card>header{margin-bottom:12px}.tcw-settings-rate-card>header .tcw-button{min-width:160px;justify-content:center}.tcw-settings-rate-filters{display:flex;gap:34px;margin-bottom:18px}.tcw-settings-rate-filters label{display:flex;align-items:center;gap:12px}.tcw-settings-rate-filters select{width:160px;height:40px;padding:0 12px;border:1px solid #d5dce6;border-radius:4px;color:#475467;background:#fff}.tcw-settings-table-wrap{overflow-x:auto;border:1px solid #d7dee8;border-radius:5px}.tcw-settings-table-wrap table{width:100%;min-width:910px;border-collapse:collapse}.tcw-settings-table-wrap th,.tcw-settings-table-wrap td{height:48px;padding:0 15px;border-right:1px solid #e1e5eb;border-bottom:1px solid #e1e5eb;text-align:left;white-space:nowrap}.tcw-settings-table-wrap th{height:42px;background:#f8f9fb;font-weight:600}.tcw-settings-table-wrap tr:last-child td{border-bottom:0}.tcw-settings-table-wrap th:last-child,.tcw-settings-table-wrap td:last-child{border-right:0}.tcw-settings-table-wrap td button{padding:0 7px;border:0;color:#0875f7;background:transparent}.tcw-settings-table-wrap td button i{margin-right:3px;font-size:14px}.tcw-settings-table-wrap td button.is-danger{color:#e5484d}.tcw-settings-rate-footer{display:flex;min-height:52px;align-items:center;justify-content:space-between}.tcw-settings-rate-footer>span:last-child{display:flex;align-items:center;gap:8px}.tcw-settings-rate-footer button,.tcw-settings-rate-footer b{display:inline-grid;width:30px;height:30px;place-items:center;border:1px solid #d6dee9;border-radius:4px;color:#0875f7;background:#fff}.tcw-settings-rate-footer b{color:#fff;background:#0875f7}.tcw-settings-rate-footer select{height:30px;margin-left:12px;border:1px solid #d6dee9;border-radius:4px}.tcw-settings-rate-card>.tcw-notice{margin:0;line-height:1.75}.tcw-modal-backdrop:has(.tcw-settings-bank-dialog){padding-left:226px}.tcw-modal-backdrop:has(.tcw-settings-restore-dialog){padding-left:198px}.tcw-modal-backdrop:has(.tcw-settings-rate-dialog) .tcw-modal{transform:translateY(70px)}.tcw-modal-backdrop:has(.tcw-settings-restore-dialog) .tcw-modal{transform:translateY(28px)}.tcw-modal-backdrop:has(.tcw-settings-delete-dialog) .tcw-modal{transform:translateY(34px)}.tcw-modal:has(.tcw-settings-bank-dialog){width:min(510px,calc(100vw - 40px));min-height:689px}.tcw-modal:has(.tcw-settings-rate-dialog){width:min(604px,calc(100vw - 40px))}.tcw-modal:has(.tcw-settings-profit-dialog){width:min(604px,calc(100vw - 40px))}.tcw-modal:has(.tcw-settings-restore-dialog){width:min(664px,calc(100vw - 40px))}.tcw-modal:has(.tcw-settings-delete-dialog){width:min(680px,calc(100vw - 40px));min-height:590px}.tcw-modal:has(.tcw-settings-bank-dialog) .tcw-modal-body,.tcw-modal:has(.tcw-settings-rate-dialog) .tcw-modal-body{padding:6px 26px 18px}.tcw-settings-bank-dialog>p{margin:0 0 22px}.tcw-settings-bank-dialog>p b{font-weight:500}.tcw-settings-bank-dialog .tcw-settings-row,.tcw-settings-rate-dialog .tcw-settings-row{grid-template-columns:140px minmax(0,1fr);margin-bottom:13px}.tcw-settings-profit-dialog .tcw-settings-row{grid-template-columns:150px minmax(0,1fr);margin-bottom:13px}.tcw-settings-profit-dialog>.tcw-notice{margin:4px 0 0}.tcw-settings-bank-dialog .tcw-notice{margin:4px 0 0}.tcw-settings-rate-dialog>.tcw-notice{margin:0 0 14px}.tcw-settings-restore-dialog .tcw-notice{margin-bottom:20px;border-color:#f8cf86;color:#755319;background:#fff9ed}.tcw-settings-restore-dialog p{margin:0 0 14px}.tcw-settings-restore-dialog h3{display:flex;align-items:center;gap:12px;margin:0 0 22px;padding:12px;border:1px solid #d8e0eb;border-radius:5px;font-size:15px}.tcw-settings-restore-dialog h3 i{display:inline-grid;width:38px;height:38px;place-items:center;border-radius:50%;color:#0875f7;background:#eaf3ff;font-size:21px}.tcw-settings-restore-dialog h4{margin:0 0 12px}.tcw-settings-restore-dialog dl,.tcw-settings-delete-dialog dl{margin:0 0 12px;border:1px solid #d8e0eb;border-radius:5px}.tcw-settings-restore-dialog dl div,.tcw-settings-delete-dialog dl div{display:grid;grid-template-columns:228px minmax(0,1fr);border-bottom:1px solid #dfe5ed}.tcw-settings-restore-dialog dl div:last-child,.tcw-settings-delete-dialog dl div:last-child{border-bottom:0}.tcw-settings-restore-dialog dt,.tcw-settings-restore-dialog dd,.tcw-settings-delete-dialog dt,.tcw-settings-delete-dialog dd{margin:0;padding:10px 13px}.tcw-settings-restore-dialog small{color:#6c788b}.tcw-settings-restore-dialog small i{margin-right:6px;color:#0875f7}.tcw-settings-delete-dialog p{margin:0 0 18px;line-height:1.7}.tcw-settings-delete-dialog{max-width:552px;margin-left:auto}.tcw-settings-delete-dialog dl div{grid-template-columns:180px minmax(0,1fr)}.tcw-settings-delete-dialog dt,.tcw-settings-delete-dialog dd{padding-block:13px}.tcw-modal:has(.tcw-settings-delete-dialog)>footer .tcw-button--secondary{width:111px}.tcw-modal:has(.tcw-settings-delete-dialog)>footer .tcw-button--danger{width:137px}@media(max-width:760px){.tcw-modal-backdrop:has(.tcw-settings-bank-dialog),.tcw-modal-backdrop:has(.tcw-settings-restore-dialog){padding-left:6px}.tcw-modal-backdrop:has(.tcw-settings-bank-dialog) .tcw-modal,.tcw-modal-backdrop:has(.tcw-settings-restore-dialog) .tcw-modal,.tcw-modal-backdrop:has(.tcw-settings-rate-dialog) .tcw-modal,.tcw-modal-backdrop:has(.tcw-settings-delete-dialog) .tcw-modal{min-height:0;transform:none}.tcw-settings-page[data-settings-page=typed]{display:block;grid-template-columns:none}.tcw-settings-page[data-settings-page=typed]>.tcw-settings-content{padding:16px 0 0}.tcw-settings-tabs{overflow-x:auto}.tcw-settings-tabs button{flex:0 0 112px}.tcw-settings-row{grid-template-columns:1fr;gap:6px}.tcw-settings-upload{width:100%}.tcw-settings-bank-grid{grid-template-columns:1fr}.tcw-settings-profit-snapshot>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 0}.tcw-settings-profit-snapshot>div>div{border-right:0}.tcw-settings-profit-snapshot>header{align-items:flex-start;flex-direction:column}.tcw-settings-rate-filters{align-items:stretch;flex-direction:column;gap:10px}.tcw-settings-rate-filters label{justify-content:space-between}.tcw-settings-bank-card>header{align-items:flex-start;flex-direction:column}.tcw-settings-restore-dialog dl div,.tcw-settings-delete-dialog dl div{grid-template-columns:1fr}}:root{--tcw-primary: #1769c2;--tcw-primary-hover: #1259a6;--tcw-primary-soft: #eaf3ff;--tcw-canvas: #f5f7fa;--tcw-surface: #ffffff;--tcw-text: #172033;--tcw-muted: #69758a;--tcw-border: #dce3ec;--tcw-border-soft: #e9edf3;--tcw-danger: #c73737;--tcw-danger-soft: #fff1f1;--tcw-warning: #a86705;--tcw-success: #247c4c;--tcw-sidebar-width: 226px;--tcw-sidebar-collapsed-width: 56px;--tcw-topbar-height: 64px;--tcw-control-height: 36px}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden}body{margin:0;color:var(--tcw-text);background:var(--tcw-canvas);font-family:Inter,PingFang SC,Microsoft YaHei,Arial,sans-serif;font-size:14px;letter-spacing:0}button,input,select,textarea{font:inherit;letter-spacing:0}button{cursor:pointer}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.55}.tcw-app-frame{display:grid;grid-template-columns:var(--tcw-sidebar-width) minmax(0,1fr);height:100vh;min-height:520px;overflow:hidden;background:var(--tcw-canvas)}.tcw-app-frame.is-sidebar-collapsed{grid-template-columns:var(--tcw-sidebar-collapsed-width) minmax(0,1fr)}.tcw-sidebar{position:relative;display:grid;grid-template-rows:var(--tcw-topbar-height) minmax(0,1fr) 54px;height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;border-right:1px solid #e4e9f1;background:var(--tcw-surface)}.tcw-brand{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:9px;min-height:var(--tcw-topbar-height);padding:0 19px;border-bottom:1px solid var(--tcw-border-soft)}.tcw-brand strong{min-width:0;color:#121722;font-size:20px;line-height:1.25;white-space:nowrap}.tcw-brand-mark{display:grid;width:30px;height:32px;place-items:center;color:#0878f9;background:transparent;font-size:30px;font-weight:400}.tcw-sidebar-toggle{display:flex;width:100%;min-height:54px;align-items:center;gap:14px;padding:0 32px;border:0;border-top:1px solid var(--tcw-border-soft);border-radius:0;color:#121722;background:#fff;font-size:16px;text-align:left}.tcw-sidebar-toggle:hover{border-color:var(--tcw-border);background:#f5f8fc}.tcw-navigation{display:grid;align-content:start;gap:18px;padding:15px}.tcw-nav-row{display:grid;grid-template-columns:1fr;border-left:0;border-radius:6px;overflow:hidden}.tcw-nav-item{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:4px;width:100%;min-height:46px;padding:0 18px;border:0;color:#172033;background:transparent;text-align:left}.tcw-nav-item i:first-child{color:#42506a;font-size:21px;text-align:center}.tcw-nav-label{display:flex;min-width:0;gap:7px;align-items:center;font-size:16px}.tcw-nav-label b{min-width:19px;font-weight:400}.tcw-nav-row:hover{background:#f5f8fc}.tcw-nav-row.is-active{color:#0878f9;background:#eaf3ff;font-weight:650}.tcw-nav-row.is-active .tcw-nav-item,.tcw-nav-row.is-active i{color:var(--tcw-primary)}.tcw-app-frame.is-sidebar-collapsed .tcw-sidebar{grid-template-rows:var(--tcw-topbar-height) minmax(0,1fr) 54px}.tcw-app-frame.is-sidebar-collapsed .tcw-brand{grid-template-columns:1fr;justify-items:center;padding-inline:8px}.tcw-app-frame.is-sidebar-collapsed .tcw-brand strong,.tcw-app-frame.is-sidebar-collapsed .tcw-nav-item span{display:none}.tcw-app-frame.is-sidebar-collapsed .tcw-navigation{padding-inline:7px}.tcw-app-frame.is-sidebar-collapsed .tcw-nav-item{grid-template-columns:1fr;justify-items:center;padding:0}.tcw-app-frame.is-sidebar-collapsed .tcw-sidebar-toggle{justify-content:center;padding:0}.tcw-app-frame.is-sidebar-collapsed .tcw-sidebar-toggle span{display:none}.tcw-main{min-width:0;height:100%;overflow-y:auto;scrollbar-gutter:stable}.tcw-topbar{display:flex;align-items:center;justify-content:space-between;min-height:var(--tcw-topbar-height);padding:0 55px;border-bottom:1px solid #e7ebf1;background:#fff}.tcw-breadcrumbs{display:flex;align-items:center;gap:6px;min-width:0;color:var(--tcw-muted)}.tcw-breadcrumbs button{padding:3px 0;border:0;color:var(--tcw-muted);background:transparent}.tcw-breadcrumbs button:hover{color:var(--tcw-primary)}.tcw-breadcrumbs span[aria-current=page]{color:#131923;font-size:20px;font-weight:650}.tcw-icon-button{display:inline-grid;width:34px;height:34px;place-items:center;border:1px solid transparent;border-radius:4px;color:#5d6b7f;background:transparent;font-size:20px}.tcw-icon-button:hover{border-color:var(--tcw-border);background:var(--tcw-surface)}.tcw-content{padding:28px 18px 24px}.tcw-page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin:0 10px 20px 39px}.tcw-page-heading h1{margin:0;font-size:32px;line-height:1.25}.tcw-page-heading p{margin:7px 0 0;color:var(--tcw-muted);font-size:16px;line-height:1.5}.tcw-page-commands{display:flex;flex-wrap:nowrap;gap:8px;justify-content:flex-end;overflow-x:auto}.tcw-page-commands .tcw-button{min-height:48px;padding-inline:20px;font-size:16px}.tcw-page-home .tcw-content{padding:16px 5px 15px}.tcw-page-home .tcw-page-heading{display:none}.tcw-page-home .tcw-topbar{padding-inline:46px}.tcw-page-home .tcw-topbar .tcw-icon-button{visibility:hidden}.tcw-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tcw-control-height);padding:0 15px;border:1px solid var(--tcw-border);border-radius:4px;white-space:nowrap}.tcw-button--primary{border-color:var(--tcw-primary);color:#fff;background:var(--tcw-primary)}.tcw-button--primary:hover{border-color:var(--tcw-primary-hover);background:var(--tcw-primary-hover)}.tcw-button--secondary{color:#455266;background:var(--tcw-surface)}.tcw-button--secondary:hover{border-color:#aeb9c7;background:#f8fafc}.tcw-button--danger{border-color:var(--tcw-danger);color:#fff;background:var(--tcw-danger)}.tcw-filter-panel{margin-bottom:10px;padding:12px 14px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr)) auto;gap:10px 12px;align-items:end}.tcw-filter-control{display:grid;min-width:0;gap:5px}.tcw-filter-control>span{color:#344054;font-size:13px;font-weight:650}.tcw-filter-control input,.tcw-filter-control select,.tcw-form-field input,.tcw-form-field select,.tcw-form-field textarea{width:100%;height:var(--tcw-control-height);min-width:0;padding:0 11px;border:1px solid #cbd4e0;border-radius:4px;outline:none;color:var(--tcw-text);background:#fff}.tcw-filter-control input:focus,.tcw-filter-control select:focus,.tcw-form-field input:focus,.tcw-form-field select:focus,.tcw-form-field textarea:focus{border-color:var(--tcw-primary);box-shadow:0 0 0 2px #1769c21a}.tcw-filter-control--range>div{display:grid;grid-template-columns:minmax(110px,1fr) auto minmax(110px,1fr);align-items:center;gap:6px}.tcw-filter-control--range em{color:var(--tcw-muted);font-style:normal}.tcw-filter-actions{display:flex;gap:8px}.tcw-notice{display:flex;align-items:flex-start;gap:9px;min-height:40px;margin-bottom:14px;padding:10px 13px;border:1px solid;border-radius:4px;line-height:1.5}.tcw-notice i{margin-top:1px;font-size:17px}.tcw-notice--info{border-color:#bcd6f2;color:#285c91;background:#f0f7ff}.tcw-notice--risk{border-color:#efbaba;color:#9e3030;background:var(--tcw-danger-soft)}.tcw-context-bar{display:flex;align-items:center;gap:14px;min-height:48px;margin-bottom:10px;padding:8px 12px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-context-bar span{min-width:0;overflow:hidden;color:var(--tcw-muted);text-overflow:ellipsis;white-space:nowrap}.tcw-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin-bottom:10px}.tcw-metric-grid article{display:grid;align-content:center;gap:4px;min-height:82px;padding:11px 14px;border:1px solid var(--tcw-border);border-left:3px solid var(--tcw-primary);border-radius:5px;background:var(--tcw-surface)}.tcw-metric-grid article span,.tcw-metric-grid article small{color:var(--tcw-muted)}.tcw-metric-grid article strong{overflow:hidden;font-size:20px;text-overflow:ellipsis;white-space:nowrap}.tcw-sales-top{margin-bottom:10px;padding:11px 13px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-sales-top ol{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:10px 0 0;padding:0;list-style:none}.tcw-sales-top li{display:grid;min-width:0;gap:4px;padding-left:10px;border-left:2px solid var(--tcw-primary)}.tcw-sales-top li span{overflow:hidden;color:var(--tcw-muted);text-overflow:ellipsis;white-space:nowrap}.tcw-sales-top li b{font-size:13px}.tcw-sales-top small{display:block;margin-top:9px;color:var(--tcw-muted)}.tcw-preflight-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 14px}.tcw-preflight-summary>div{padding:10px 12px;border:1px solid var(--tcw-border-soft);background:#f8fafc}.tcw-preflight-summary dt{color:var(--tcw-muted);font-size:12px}.tcw-preflight-summary dd{margin:5px 0 0;font-weight:700}.tcw-tag-list{display:flex;gap:5px}.tcw-tag{display:inline-flex;min-height:23px;align-items:center;padding:2px 7px;border:1px solid #b8c7d9;border-radius:3px;color:#40536b;background:#f5f8fb;font-size:12px;white-space:nowrap}.tcw-tag--warning{border-color:#e7c786;color:#94610d;background:#fff8e8}.tcw-tag--danger{border-color:#efbaba;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-excel-editor{position:fixed;inset:0;z-index:1200;display:flex;flex-direction:column;background:#fff}.tcw-excel-editor>header{display:flex;flex:0 0 62px;align-items:center;justify-content:space-between;gap:20px;padding:0 20px;border-bottom:1px solid var(--tcw-border)}.tcw-excel-editor>header>div{display:flex;gap:8px}.tcw-editor-error{padding:10px 16px;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-excel-editor-canvas{flex:1 1 0;min-width:0;min-height:0}.tcw-grid-section{border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface);overflow:hidden}.tcw-table-scroll{width:100%;overflow-x:auto}.tcw-data-table{width:100%;min-width:920px;border-spacing:0;border-collapse:separate;font-size:13px}.tcw-data-table th,.tcw-data-table td{padding:7px 11px;border-bottom:1px solid var(--tcw-border-soft);text-align:left;vertical-align:middle;white-space:nowrap}.tcw-data-table th{height:48px;color:#435066;background:#f6f8fb;font-weight:650}.tcw-data-table td{height:46px}.tcw-data-table tbody tr:hover td{background:#fafcff}.tcw-data-table tbody tr:last-child td{border-bottom:0}.tcw-data-table .action-column{position:sticky;right:0;z-index:2;background:var(--tcw-surface);box-shadow:-5px 0 9px #2030470f}.tcw-data-table th.action-column{z-index:3;background:#f6f8fb}.tcw-row-actions{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;min-width:max-content;white-space:nowrap}.tcw-row-actions button{padding:2px 3px;border:0;color:var(--tcw-primary);background:transparent;white-space:nowrap}.tcw-row-actions button.is-danger{color:var(--tcw-danger)}.tcw-table-link{display:block;max-width:100%;overflow:hidden;padding:0;border:0;color:var(--tcw-primary);background:transparent;text-align:left;text-overflow:ellipsis;white-space:nowrap}.tcw-table-link:hover{text-decoration:underline}.tcw-ellipsis{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcw-align-center{text-align:center!important}.tcw-align-right{text-align:right!important}.tcw-empty-row td{height:180px;color:var(--tcw-muted);text-align:center}.tcw-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:10px 18px;border-top:1px solid var(--tcw-border-soft);color:var(--tcw-muted)}.tcw-pagination>div{display:flex;align-items:center;gap:7px}.tcw-pagination button{min-height:28px;padding:0 8px;border:1px solid var(--tcw-border);border-radius:3px;color:#46546a;background:#fff}.tcw-pagination strong{color:#344054;font-weight:600}.tcw-modal-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:#00000085}.tcw-modal{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(576px,calc(100vw - 40px));max-height:calc(100vh - 40px);overflow:hidden;border-radius:8px;background:var(--tcw-surface);box-shadow:0 12px 32px #0f172a38}.tcw-modal--wide{width:min(1120px,calc(100vw - 40px))}.tcw-modal--full{width:calc(100vw - 24px);height:calc(100vh - 24px);max-height:none}.tcw-modal>header,.tcw-modal>footer{display:flex;align-items:center;justify-content:space-between;min-height:58px;padding:12px 18px;border-bottom:1px solid var(--tcw-border)}.tcw-modal>footer{justify-content:flex-end;gap:9px;border-top:1px solid var(--tcw-border);border-bottom:0}.tcw-modal h2{margin:0;font-size:20px}.tcw-modal-body{min-height:0;padding:18px;overflow:auto}.tcw-field-grid{display:grid;gap:15px 16px}.tcw-field-grid--1{grid-template-columns:1fr}.tcw-field-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.tcw-field-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.tcw-form-field{display:grid;gap:7px;min-width:0}.tcw-form-field>span{color:#344054;font-size:13px;font-weight:650}.tcw-form-field b{margin-right:3px;color:var(--tcw-danger)}.tcw-form-field textarea{height:auto;min-height:96px;padding:9px 11px;resize:vertical}.tcw-form-field small{color:var(--tcw-muted)}.tcw-form-field--full{grid-column:1 / -1}.tcw-review-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;min-height:520px}.tcw-review-split>section{min-width:0;padding:0 20px}.tcw-review-split>section:first-child{padding-left:0;border-right:1px solid var(--tcw-border)}.tcw-review-split>section:last-child{padding-right:0}.tcw-review-split h3{margin:0 0 14px;font-size:15px}.tcw-upload-zone{display:grid;min-height:220px;place-items:center;align-content:center;gap:9px;padding:30px;border:1px dashed #98abc1;border-radius:4px;color:#43546b;background:#f7faff;text-align:center}.tcw-upload-zone>i{color:var(--tcw-primary);font-size:38px}.tcw-upload-zone>span{color:var(--tcw-muted);font-size:12px}.tcw-upload-zone input{position:absolute;width:1px;height:1px;opacity:0}.tcw-upload-zone.is-disabled{opacity:.6;cursor:not-allowed}.tcw-confirm-message{display:flex;align-items:flex-start;gap:13px;padding:8px 2px;line-height:1.7}.tcw-confirm-message>i{color:var(--tcw-primary);font-size:27px}.tcw-confirm-message p{margin:2px 0 0}.tcw-confirm-message.is-danger>i{color:var(--tcw-danger)}.tcw-loading-blocker{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;gap:12px;background:#ffffffc7}.tcw-spinner{width:24px;height:24px;border:3px solid #cbd8e7;border-top-color:var(--tcw-primary);border-radius:50%;animation:tcw-spin .75s linear infinite}@keyframes tcw-spin{to{transform:rotate(360deg)}}.tcw-toast{position:fixed;z-index:1300;top:22px;right:24px;display:flex;align-items:center;gap:9px;max-width:min(420px,calc(100vw - 32px));padding:11px 14px;border:1px solid;border-radius:4px;background:#fff;box-shadow:0 8px 28px #14233729}.tcw-toast--success{border-color:#add6bf;color:var(--tcw-success);background:#f0faf4}.tcw-toast--info{border-color:#bcd6f2;color:#285c91;background:#f0f7ff}.tcw-toast--warning{border-color:#e7c786;color:var(--tcw-warning);background:#fff8e8}.tcw-toast--error{border-color:#efbaba;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-toast button{display:grid;place-items:center;padding:0;border:0;color:inherit;background:transparent}.tcw-page-placeholder{min-height:320px}.tcw-placeholder-body{min-height:240px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}@media(max-width:1180px){.tcw-filter-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}.tcw-filter-actions{align-self:end}}@media(max-width:900px){.tcw-metric-grid,.tcw-sales-top ol{grid-template-columns:1fr 1fr}.tcw-context-bar{align-items:flex-start;flex-direction:column;gap:6px}.tcw-topbar{margin-inline:14px}.tcw-content{padding:16px 14px}.tcw-page-heading{flex-direction:column}.tcw-page-commands{width:100%;justify-content:flex-start}.tcw-filter-grid,.tcw-field-grid--2,.tcw-field-grid--3,.tcw-review-split{grid-template-columns:1fr}.tcw-review-split>section{padding:18px 0}.tcw-review-split>section:first-child{padding-top:0;border-right:0;border-bottom:1px solid var(--tcw-border)}.tcw-pagination{align-items:flex-start;flex-direction:column}.tcw-modal-backdrop{padding:6px}.tcw-modal,.tcw-modal--wide{width:calc(100vw - 12px);max-height:calc(100vh - 12px)}}@media(max-width:420px){.tcw-filter-control--range>div{grid-template-columns:1fr}.tcw-filter-control--range em{text-align:center}.tcw-pagination>div{flex-wrap:wrap;max-width:100%}}.tcw-home-page{min-width:0}.tcw-home-section{min-width:0;min-height:calc(100vh - 95px);padding:20px 20px 18px;border:1px solid #edf0f5;border-radius:10px;background:var(--tcw-surface);box-shadow:0 2px 12px #1f2f460a}.tcw-home-section-title{display:flex;align-items:center;gap:10px;margin:0 0 20px;color:#10151e;font-size:20px;line-height:1.35}.tcw-home-section-title>i{color:#ef2340;font-size:29px;font-weight:400}.tcw-home-risk-matrix{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));min-height:449px;padding:4px 8px;border:1px solid #ffdadd;border-radius:9px;background:#fff7f7}.tcw-home-risk-item{min-width:0;min-height:218px;padding:20px 18px 12px}.tcw-home-risk-heading{display:flex;align-items:center;gap:12px;color:#dc101c}.tcw-home-risk-heading>i{flex:0 0 auto;font-size:33px}.tcw-home-risk-heading h3{min-width:0;margin:0;overflow-wrap:anywhere;font-size:15px;line-height:1.45}.tcw-home-risk-item>p{margin:14px 0 0;color:#202631;font-size:13px;line-height:1.85;overflow-wrap:anywhere}.tcw-home-workflow-heading{display:flex;align-items:baseline;gap:24px;margin:27px 0 28px}.tcw-home-workflow-heading .tcw-home-section-title{margin:0}.tcw-home-workflow-heading>p{margin:0;color:#7c8492;font-size:14px}.tcw-home-workflow{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-areas:"step-1 step-2 step-3 step-4 step-5 step-6 step-7 step-8";gap:22px;padding:0 0 25px}.tcw-home-workflow-step{--tcw-home-tone: #0878f9;position:relative;display:grid;align-content:start;justify-items:center;min-width:0;min-height:223px;padding:32px 9px 13px;border:1px solid #d7e7fb;border-radius:7px;color:var(--tcw-home-tone);text-align:center}.tcw-home-workflow-step>i:not(.tcw-home-workflow-connector){margin:4px 0 18px;font-size:45px}.tcw-home-workflow-step h3{display:grid;justify-items:center;margin:0;font-size:14px;line-height:1.55}.tcw-home-step-title-line{display:block;max-width:100%;white-space:nowrap}.tcw-home-workflow-step p{margin:13px 0 0;color:#4b5565;font-size:12px;line-height:1.65;overflow-wrap:anywhere}.tcw-home-step-number{position:absolute;top:-13px;left:50%;display:grid;width:27px;height:27px;place-items:center;border:2px solid #fff;border-radius:50%;color:#fff;background:var(--tcw-home-tone);font-size:13px;transform:translate(-50%)}.tcw-home-workflow-step--green{--tcw-home-tone: #14945a;border-color:#d8ebe2}.tcw-home-workflow-step--violet{--tcw-home-tone: #6745ba;border-color:#e2daf3}.tcw-home-workflow-step--orange{--tcw-home-tone: #f0780b;border-color:#f8dfcd}.tcw-home-workflow-connector{position:absolute;color:#111923;font-size:21px}.tcw-home-workflow-connector[data-desktop-direction=right]{inset:50% -23px auto auto;transform:translateY(-50%)}.tcw-home-workflow-connector[data-desktop-direction=down]{inset:auto 50% -28px auto;transform:translate(50%) rotate(90deg)}.tcw-home-workflow-connector[data-desktop-direction=left]{inset:50% auto auto -31px;transform:translateY(-50%) rotate(180deg)}.tcw-home-footer-notice{display:flex;min-height:47px;align-items:center;gap:10px;padding:8px 14px;border:1px solid #cfe3ff;border-radius:6px;color:#344054;background:#f7fbff;font-size:13px}.tcw-home-footer-notice i{color:#0878f9;font-size:18px}@media(max-width:1180px){.tcw-home-workflow{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-areas:"step-1 step-2 step-3 step-4" "step-8 step-7 step-6 step-5";gap:32px 40px}.tcw-home-risk-matrix{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.tcw-home-workflow{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"step-1 step-2" "step-4 step-3" "step-5 step-6" "step-8 step-7"}.tcw-home-workflow-connector[data-tablet-direction=right]{inset:50% -31px auto auto;transform:translateY(-50%)}.tcw-home-workflow-connector[data-tablet-direction=down]{inset:auto 50% -28px auto;transform:translate(50%) rotate(90deg)}.tcw-home-workflow-connector[data-tablet-direction=left]{inset:50% auto auto -31px;transform:translateY(-50%) rotate(180deg)}}@media(max-width:620px){.tcw-home-page{gap:16px}.tcw-home-section{padding:17px 14px}.tcw-home-risk-matrix{grid-template-columns:1fr}.tcw-home-risk-item{min-height:0}.tcw-home-workflow-heading{display:block}.tcw-home-workflow-heading>p{margin-top:7px}.tcw-home-workflow{grid-template-columns:1fr;grid-template-areas:"step-1" "step-2" "step-3" "step-4" "step-5" "step-6" "step-7" "step-8"}.tcw-home-workflow-connector[data-mobile-direction=down]{inset:auto 50% -28px auto;transform:translate(50%) rotate(90deg)}}.tcw-catalog-import-failure{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;border:1px solid #efbaba;border-left:4px solid var(--tcw-danger);border-radius:5px;color:#8f2929;background:var(--tcw-danger-soft)}.tcw-catalog-import-failure p{margin:5px 0 0;line-height:1.6}.tcw-catalog-issue-toolbar{display:inline-flex;margin-bottom:14px;border:1px solid var(--tcw-border);border-radius:4px;overflow:hidden}.tcw-catalog-issue-toolbar button{min-width:88px;min-height:34px;padding:0 14px;border:0;border-right:1px solid var(--tcw-border);color:#455266;background:#fff}.tcw-catalog-issue-toolbar button:last-child{border-right:0}.tcw-catalog-issue-toolbar button.is-active{color:#fff;background:var(--tcw-primary)}.tcw-catalog-issue-toolbar button:disabled{cursor:not-allowed;opacity:.55}.tcw-catalog-issue-status{margin:0;padding:24px;color:var(--tcw-muted);text-align:center}.tcw-catalog-issue-error{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #efbaba;border-radius:4px;color:var(--tcw-danger);background:var(--tcw-danger-soft)}@media(max-width:620px){.tcw-catalog-import-failure{align-items:stretch;flex-direction:column}}.tcw-procurement-page{display:grid;gap:10px;min-width:0}.tcw-procurement-toolbar{display:flex;justify-content:flex-end;min-height:36px}.tcw-procurement-file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.tcw-procurement-feedback{padding:11px 14px;border:1px solid #bcd6f2;border-radius:4px;color:#285c91;background:#f0f7ff}.tcw-procurement-link{padding:2px 0;border:0;color:var(--tcw-primary);background:transparent}.tcw-procurement-status{display:inline-flex;min-height:25px;align-items:center;padding:2px 8px;border-radius:3px;font-size:12px;font-weight:650}.tcw-procurement-status--success{color:#167849;background:#e8f7ef}.tcw-procurement-status--warning{color:#9b6300;background:#fff3d6}.tcw-procurement-status--danger{color:#b52b2b;background:#fdeaea}.tcw-procurement-status--muted{color:#526174;background:#edf1f5}.tcw-procurement-context{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr)) auto;gap:0;align-items:stretch;overflow:hidden;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-procurement-context>div:not(.tcw-procurement-context-actions){display:grid;align-content:center;gap:5px;min-height:68px;padding:10px 14px;border-right:1px solid var(--tcw-border-soft)}.tcw-procurement-context span{color:var(--tcw-muted);font-size:12px}.tcw-procurement-context strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.tcw-procurement-context-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 12px}.tcw-procurement-metrics{display:grid;grid-template-columns:repeat(4,minmax(130px,.8fr)) minmax(260px,1.5fr);gap:10px}.tcw-procurement-metrics>div{display:grid;align-content:center;min-height:88px;padding:12px 14px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-procurement-metrics>div>span{color:var(--tcw-muted);font-size:13px}.tcw-procurement-metrics>div>strong{margin-top:6px;font-size:21px;font-weight:700}.tcw-procurement-top ol{display:grid;gap:5px;margin:9px 0 0;padding:0;list-style:none;counter-reset:procurement-top}.tcw-procurement-top li{display:flex;justify-content:space-between;gap:12px;min-width:0;counter-increment:procurement-top}.tcw-procurement-top li:before{display:inline-grid;flex:0 0 18px;width:18px;height:18px;place-items:center;border-radius:50%;color:#fff;background:var(--tcw-primary);font-size:10px;content:counter(procurement-top)}.tcw-procurement-top li span{flex:1 1 auto;min-width:0;overflow:hidden;color:var(--tcw-text);text-overflow:ellipsis;white-space:nowrap}.tcw-procurement-top li strong{flex:0 0 auto;font-size:12px}.tcw-procurement-top small{display:block;margin-top:16px;color:var(--tcw-muted)}.tcw-procurement-audit-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:18px;padding:13px 15px;border:1px solid var(--tcw-border-soft);background:#f8fafc}.tcw-procurement-source-label{display:inline-flex;margin-bottom:15px;padding:5px 9px;border:1px solid var(--tcw-border);border-radius:3px;color:var(--tcw-muted);background:#f8fafc;font-size:12px}.tcw-procurement-inline-field{display:grid;grid-template-columns:minmax(0,1fr) auto}.tcw-procurement-inline-field input{border-radius:4px 0 0 4px}.tcw-procurement-inline-field button{border-left:0;border-radius:0 4px 4px 0}.tcw-procurement-review-editor{display:grid;gap:20px}.tcw-procurement-review-section{min-width:0;padding-bottom:20px;border-bottom:1px solid var(--tcw-border)}.tcw-procurement-review-section:last-child{padding-bottom:0;border-bottom:0}.tcw-procurement-review-section>h3{margin:0 0 14px;font-size:16px}.tcw-procurement-review-lines{display:grid;gap:14px}.tcw-procurement-review-line{padding:15px;border:1px solid var(--tcw-border);border-radius:5px;background:#fbfcfe}.tcw-procurement-review-line h4{display:flex;align-items:center;gap:9px;margin:0 0 14px;font-size:14px}.tcw-procurement-source{display:grid;grid-template-rows:auto minmax(420px,1fr);gap:12px;height:100%}.tcw-procurement-source iframe,.tcw-procurement-source pre{width:100%;min-height:520px;margin:0;border:1px solid var(--tcw-border);background:#f7f8fa}.tcw-procurement-source iframe{height:100%}.tcw-procurement-source pre{padding:18px;overflow:auto;white-space:pre-wrap}.tcw-procurement-checkbox{display:flex;align-items:center;gap:8px;min-height:var(--tcw-control-height)}.tcw-procurement-checkbox input{width:16px;height:16px}.tcw-procurement-delete-summary{display:grid;gap:8px;width:100%}.tcw-procurement-delete-summary>strong{font-size:15px}.tcw-procurement-delete-summary>span{color:#4d5b70}.tcw-procurement-delete-summary>b{margin-top:5px;padding:10px;color:#9e3030;background:var(--tcw-danger-soft);line-height:1.6}@media(max-width:1320px){.tcw-procurement-context{grid-template-columns:repeat(2,minmax(160px,1fr))}.tcw-procurement-context-actions{grid-column:1 / -1;border-top:1px solid var(--tcw-border-soft)}.tcw-procurement-metrics{grid-template-columns:repeat(2,minmax(160px,1fr))}.tcw-procurement-top{grid-column:1 / -1}}@media(max-width:760px){.tcw-procurement-toolbar{justify-content:flex-start}.tcw-procurement-context,.tcw-procurement-metrics{grid-template-columns:1fr}.tcw-procurement-context-actions,.tcw-procurement-top{grid-column:auto}.tcw-procurement-context-actions{align-items:stretch;flex-direction:column}.tcw-procurement-context>div:not(.tcw-procurement-context-actions){border-right:0;border-bottom:1px solid var(--tcw-border-soft)}.tcw-procurement-inline-field{grid-template-columns:1fr;gap:7px}.tcw-procurement-inline-field input,.tcw-procurement-inline-field button{border:1px solid var(--tcw-border);border-radius:4px}}.tcw-contract-page{min-width:0}.tcw-contract-page .tcw-modal--wide{width:min(1040px,calc(100vw - 64px));max-height:min(820px,calc(100vh - 64px))}.tcw-contract-toolbar{display:flex;justify-content:flex-end;margin-bottom:10px}.tcw-contract-customer-code{display:block;margin-top:3px;color:var(--tcw-muted);font-weight:400}.tcw-contract-import-status,.tcw-contract-page-error,.tcw-contract-dialog-error{margin:0 0 14px;padding:12px 14px;border:1px solid #bcd6f2;border-radius:4px;color:#285c91;background:#f0f7ff}.tcw-contract-page-error,.tcw-contract-dialog-error{border-color:#efbaba;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-contract-selected-file{margin:14px 0 0}.tcw-contract-review-header{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(0,1.8fr) auto auto;align-items:end;gap:12px;padding:12px 14px;border:1px solid var(--tcw-border);border-radius:5px;background:#f8fafc}.tcw-contract-summary-customer{display:grid;align-self:stretch;align-content:center;min-width:0;padding-right:12px;border-right:1px solid var(--tcw-border-soft)}.tcw-contract-summary-customer span,.tcw-contract-summary-customer small{color:var(--tcw-muted);font-size:12px}.tcw-contract-summary-customer strong{margin:5px 0 2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcw-contract-customer-master{margin-top:14px;border:1px solid var(--tcw-border);border-radius:5px}.tcw-contract-customer-master summary{padding:13px 15px;cursor:pointer;font-weight:650}.tcw-contract-customer-master>.tcw-field-grid{padding:2px 15px 16px}.tcw-contract-review-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:50px;margin-top:10px}.tcw-contract-review-layout{display:grid;grid-template-columns:156px minmax(320px,.95fr) minmax(360px,1.05fr);min-height:480px;border:1px solid var(--tcw-border);border-radius:5px;overflow:hidden}.tcw-contract-clause-tabs{padding:10px 0;border-right:1px solid var(--tcw-border);background:#f8fafc}.tcw-contract-clause-tabs button{display:grid;width:100%;min-height:58px;align-content:center;gap:3px;padding:8px 16px;border:0;border-left:3px solid transparent;color:#3e4b60;background:transparent;text-align:left}.tcw-contract-clause-tabs button.is-active{border-left-color:var(--tcw-primary);color:var(--tcw-primary);background:var(--tcw-primary-soft);font-weight:650}.tcw-contract-clause-tabs small{color:var(--tcw-muted);font-size:11px;font-weight:400}.tcw-contract-clause-editor,.tcw-contract-source-preview{min-width:0;padding:18px}.tcw-contract-clause-editor{display:grid;align-content:start;gap:15px;border-right:1px solid var(--tcw-border)}.tcw-contract-clause-editor>h3,.tcw-contract-source-preview>h3{margin:0 0 2px;font-size:15px}.tcw-contract-clause-status{max-width:148px}.tcw-contract-analysis{padding:14px;border:1px solid var(--tcw-border);border-left:3px solid var(--tcw-primary);background:#f8fafc}.tcw-contract-analysis h4{margin:0 0 12px;font-size:14px}.tcw-contract-analysis dl{margin:12px 0 0}.tcw-contract-analysis dt{margin-top:10px;color:var(--tcw-muted);font-size:12px;font-weight:650}.tcw-contract-analysis dd{margin:4px 0 0;line-height:1.65;white-space:normal}.tcw-contract-source-preview{display:grid;grid-template-rows:auto minmax(0,1fr);background:#f3f5f8}.tcw-contract-source-preview iframe{width:100%;min-height:430px;border:1px solid var(--tcw-border);background:#fff}.tcw-contract-source-preview pre{min-height:430px;margin:0;padding:18px;overflow:auto;border:1px solid var(--tcw-border);background:#fff;font:inherit;line-height:1.7;white-space:pre-wrap}.tcw-contract-preview-unavailable{display:grid;min-height:430px;place-items:center;align-content:center;padding:30px;border:1px dashed #aab6c5;color:var(--tcw-muted);background:#fff;text-align:center}.tcw-contract-preview-unavailable i{font-size:38px}.tcw-contract-preview-unavailable p{margin:12px 0 5px;color:#46546a}.tcw-contract-risk,.tcw-contract-sanction{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border:1px solid;border-radius:3px;font-size:12px;white-space:nowrap}.tcw-contract-risk--high,.tcw-contract-sanction--hit{border-color:#efbaba;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-contract-risk--medium,.tcw-contract-sanction--unchecked{border-color:#e7c786;color:#9b650e;background:#fff8e8}.tcw-contract-risk--low,.tcw-contract-sanction--clear{border-color:#add6bf;color:var(--tcw-success);background:#f0faf4}@media(max-width:1180px){.tcw-contract-review-header{grid-template-columns:minmax(150px,.6fr) minmax(0,1.4fr) auto auto}.tcw-contract-review-layout{grid-template-columns:150px minmax(340px,1fr)}.tcw-contract-source-preview{grid-column:1 / -1;border-top:1px solid var(--tcw-border)}}@media(max-width:760px){.tcw-contract-page .tcw-modal--wide{width:calc(100vw - 12px);max-height:calc(100vh - 12px)}.tcw-contract-review-header{grid-template-columns:1fr;align-items:start}.tcw-contract-review-layout{grid-template-columns:1fr}.tcw-contract-clause-tabs{display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--tcw-border)}.tcw-contract-clause-tabs button{flex:0 0 128px;border-bottom:3px solid transparent;border-left:0}.tcw-contract-clause-tabs button.is-active{border-bottom-color:var(--tcw-primary);border-left:0}.tcw-contract-clause-editor{border-right:0}.tcw-contract-source-preview{grid-column:auto}}.tcw-analytics-page{display:grid;min-width:0;gap:10px}.tcw-page-tabs{display:flex;min-height:38px;gap:20px;border-bottom:1px solid var(--tcw-border)}.tcw-page-tabs button{position:relative;padding:0 3px 10px;border:0;color:var(--tcw-muted);background:transparent;font-size:14px;font-weight:650}.tcw-page-tabs button[aria-selected=true]{color:var(--tcw-primary)}.tcw-page-tabs button[aria-selected=true]:after{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:var(--tcw-primary);content:""}.tcw-analytics-year{color:var(--tcw-muted);font-size:12px;font-weight:650}.tcw-analytics-toolbar{display:flex;min-width:0;min-height:36px;align-items:center;gap:14px}.tcw-analytics-toolbar>.tcw-button{margin-left:auto}.tcw-segmented-control{display:inline-flex;flex:0 0 auto;overflow:hidden;border:1px solid var(--tcw-border);border-radius:4px}.tcw-segmented-control button{min-width:90px;min-height:34px;padding:0 13px;border:0;border-right:1px solid var(--tcw-border);color:#4b586b;background:#fff}.tcw-segmented-control button:last-child{border-right:0}.tcw-segmented-control button[aria-pressed=true]{color:var(--tcw-primary);background:var(--tcw-primary-soft);font-weight:650}.tcw-analytics-switches{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.tcw-toggle{display:inline-flex;min-height:32px;align-items:center;gap:7px;color:#46546a;font-size:13px}.tcw-toggle input{width:16px;height:16px;margin:0;accent-color:var(--tcw-primary)}.tcw-inline-loading{display:flex;min-height:42px;align-items:center;justify-content:center;gap:9px;border:1px solid #bcd6f2;color:#285c91;background:#f0f7ff}.tcw-analytics-page .tcw-metric-grid{display:grid;grid-template-columns:repeat(5,minmax(145px,1fr));gap:10px;min-width:0;margin-bottom:0;overflow-x:auto}.tcw-analytics-page .tcw-metric-grid article{display:grid;min-width:145px;min-height:82px;align-content:center;gap:6px;padding:10px 13px;border:1px solid var(--tcw-border);border-left:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-analytics-page .tcw-metric-grid span{color:var(--tcw-muted);font-size:12px}.tcw-analytics-page .tcw-metric-grid strong{min-width:0;overflow:hidden;color:#202b3c;font-size:19px;text-overflow:ellipsis;white-space:nowrap}.tcw-analytics-page .tcw-sales-top{display:grid;min-width:0;gap:10px;margin-bottom:0;padding:13px 15px;border:0;border-top:1px solid var(--tcw-border);border-bottom:1px solid var(--tcw-border);border-radius:0;background:#fbfcfe}.tcw-analytics-page .tcw-sales-top>strong{font-size:13px}.tcw-analytics-page .tcw-sales-top ol{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:0;margin:0;padding:0;overflow-x:auto;list-style:none;counter-reset:analytics-top}.tcw-analytics-page .tcw-sales-top li{display:grid;min-width:150px;grid-template-columns:22px minmax(0,1fr);gap:2px 7px;padding:4px 13px;border-left:0;border-right:1px solid var(--tcw-border-soft);counter-increment:analytics-top}.tcw-analytics-page .tcw-sales-top li:before{grid-row:1 / 3;align-self:center;color:var(--tcw-primary);font-weight:700;content:counter(analytics-top)}.tcw-analytics-page .tcw-sales-top li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.tcw-analytics-page .tcw-sales-top li b{color:#263448;font-size:12px;font-weight:650}.tcw-analytics-page .tcw-sales-top small{color:var(--tcw-muted)}.tcw-settings-page{display:grid;min-width:0;grid-template-columns:238px minmax(0,1fr);min-height:580px;border:1px solid var(--tcw-border);background:var(--tcw-surface)}.tcw-settings-navigation{padding:8px 0;border-right:1px solid var(--tcw-border);background:#f8fafc}.tcw-settings-navigation button{display:grid;width:100%;min-height:54px;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:8px;padding:8px 14px;border:0;border-left:3px solid transparent;color:#3e4b60;background:transparent;text-align:left}.tcw-settings-navigation button:hover{background:#f0f3f7}.tcw-settings-navigation button.is-active{border-left-color:var(--tcw-primary);color:var(--tcw-primary);background:var(--tcw-primary-soft);font-weight:650}.tcw-settings-navigation i{font-size:17px}.tcw-settings-navigation span{min-width:0;overflow-wrap:anywhere}.tcw-settings-navigation small{display:block;margin-top:3px;overflow:hidden;color:var(--tcw-muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400}.tcw-settings-content{min-width:0;padding:16px 18px 20px}.tcw-settings-panel{display:grid;min-width:0;gap:12px}.tcw-settings-panel>header{display:flex;min-height:40px;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid var(--tcw-border)}.tcw-settings-panel>header>div:first-child{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:8px}.tcw-settings-panel h2{margin:0;font-size:17px}.tcw-settings-panel header small{color:var(--tcw-muted);font-size:11px}.tcw-field-error{display:block;margin-top:5px;color:var(--tcw-danger)}@media(max-width:900px){.tcw-analytics-page .tcw-metric-grid{grid-template-columns:repeat(3,minmax(145px,1fr))}.tcw-settings-page{grid-template-columns:190px minmax(0,1fr)}}@media(max-width:680px){.tcw-analytics-toolbar{align-items:flex-start;flex-direction:column}.tcw-analytics-toolbar>.tcw-button{margin-left:0}.tcw-analytics-page .tcw-metric-grid{grid-template-columns:repeat(2,minmax(145px,1fr))}.tcw-settings-page{grid-template-columns:1fr}.tcw-settings-navigation{display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--tcw-border)}.tcw-settings-navigation button{flex:0 0 155px;border-bottom:2px solid transparent;border-left:0}.tcw-settings-navigation button.is-active{border-bottom-color:var(--tcw-primary);border-left:0}.tcw-settings-content{padding:15px}.tcw-settings-panel>header{align-items:flex-start;flex-direction:column}.tcw-settings-panel .tcw-page-commands{width:100%;flex-wrap:wrap}}
|
|
3268
|
+
.tcw-catalog-page{display:grid;gap:14px}.tcw-main:has(.tcw-catalog-page),.tcw-content:has(.tcw-catalog-page){background:#fff}.tcw-catalog-page--controlled{margin:46px 10px 0 39px}.tcw-catalog-page--sanction{margin:25px 10px 0 39px}.tcw-catalog-page>.tcw-filter-panel,.tcw-catalog-page>.tcw-notice{margin-bottom:0}.tcw-catalog-page>.tcw-filter-panel{padding:24px 22px;border-radius:7px}.tcw-catalog-page .tcw-filter-grid{gap:16px 26px}.tcw-catalog-page--controlled .tcw-filter-grid{grid-template-columns:minmax(150px,.75fr) minmax(190px,1.08fr) minmax(190px,1.02fr) minmax(190px,1.02fr) auto}.tcw-catalog-page--sanction .tcw-filter-grid{grid-template-columns:repeat(4,minmax(150px,1fr)) minmax(250px,1.35fr);row-gap:10px}.tcw-catalog-page--sanction>.tcw-filter-panel{padding-bottom:11px}.tcw-catalog-page--sanction .tcw-filter-actions{grid-column:5;grid-row:2;justify-self:end}.tcw-catalog-page .tcw-filter-control{gap:9px}.tcw-catalog-page .tcw-filter-control>span{color:#182033;font-size:14px;font-weight:650}.tcw-catalog-page .tcw-filter-control input,.tcw-catalog-page .tcw-filter-control select{height:44px}.tcw-catalog-page .tcw-filter-actions .tcw-button{min-height:44px;padding-inline:20px}.tcw-catalog-page>.tcw-notice{min-height:50px;align-items:center;padding:11px 20px;border-radius:7px}.tcw-catalog-page>.tcw-grid-section{margin-top:4px;border-radius:7px}.tcw-catalog-page .tcw-table-scroll{max-height:423px}.tcw-catalog-page .tcw-data-table th,.tcw-catalog-page .tcw-data-table td{height:46px;padding-inline:14px}.tcw-catalog-page .tcw-pagination{min-height:74px;padding-inline:20px}.tcw-catalog-dialog .tcw-field-grid{gap:14px}.tcw-catalog-manual-source{display:flex;align-items:center;gap:10px;margin:-4px 0 20px;padding:0 12px 16px;border-bottom:1px solid #e1e6ee;color:#5e697a}.tcw-catalog-source-badge,.tcw-catalog-type-badge{display:inline-flex;align-items:center;min-height:28px;padding:3px 11px;border-radius:4px;color:#315274;background:#edf3fb;font-weight:600}.tcw-catalog-dialog .tcw-form-field{position:relative}.tcw-catalog-dialog .tcw-form-field input,.tcw-catalog-dialog .tcw-form-field select{height:38px}.tcw-catalog-dialog .tcw-form-field textarea{width:100%;min-height:112px;padding-bottom:9px}.tcw-counted-textarea{display:grid;min-width:0;gap:4px}.tcw-catalog-dialog .tcw-character-count{position:static;justify-self:end;padding-right:2px;color:#7a8598;font-variant-numeric:tabular-nums;line-height:1.2}.tcw-modal:has(.tcw-catalog-dialog--controlled-create){width:min(584px,calc(100vw - 40px));transform:translateY(54px)}.tcw-modal:has(.tcw-catalog-dialog--sanction-create){width:min(576px,calc(100vw - 40px))}.tcw-modal:has(.tcw-catalog-dialog--controlled-review){width:min(848px,calc(100vw - 40px));height:586px;transform:translateY(70px)}.tcw-modal:has(.tcw-catalog-dialog--sanction-review){width:min(856px,calc(100vw - 40px));height:707px;transform:translateY(62px)}.tcw-modal:has(.tcw-catalog-dialog)>header,.tcw-modal:has(.tcw-catalog-replace-dialog)>header{min-height:62px;padding-inline:26px}.tcw-modal:has(.tcw-catalog-dialog)>footer,.tcw-modal:has(.tcw-catalog-replace-dialog)>footer{min-height:70px;padding-inline:28px}.tcw-modal:has(.tcw-catalog-dialog)>.tcw-modal-body{padding:20px 28px}.tcw-modal:has(.tcw-catalog-dialog--review)>.tcw-modal-body{padding:18px 26px 10px}.tcw-catalog-dialog--controlled-create .tcw-form-field,.tcw-catalog-dialog--sanction-create .tcw-form-field{grid-template-columns:112px minmax(0,1fr);align-items:start;column-gap:12px}.tcw-catalog-dialog--controlled-create .tcw-form-field>span,.tcw-catalog-dialog--sanction-create .tcw-form-field>span{padding-top:10px}.tcw-catalog-dialog--controlled-create .tcw-form-field>small:not(.tcw-character-count),.tcw-catalog-dialog--sanction-create .tcw-form-field>small:not(.tcw-character-count){grid-column:2}.tcw-catalog-dialog--controlled-create .tcw-counted-textarea,.tcw-catalog-dialog--sanction-create .tcw-counted-textarea{grid-column:2}.tcw-catalog-dialog--controlled-create .tcw-form-field textarea,.tcw-catalog-dialog--sanction-create .tcw-form-field textarea{min-height:112px}.tcw-catalog-dialog--review .tcw-review-split{min-height:100%}.tcw-catalog-dialog--review .tcw-review-split>section{padding-inline:24px}.tcw-catalog-dialog--review .tcw-review-split>section:first-child{padding-left:0}.tcw-catalog-dialog--review .tcw-review-split>section:last-child{padding-right:0}.tcw-modal:has(.tcw-catalog-replace-dialog){width:min(550px,calc(100vw - 40px));transform:translateY(64px)}.tcw-modal:has(.tcw-catalog-replace-dialog)>.tcw-modal-body{padding:18px 36px 6px}.tcw-catalog-replace-warning{display:flex;gap:14px;align-items:flex-start;margin-bottom:14px;padding:13px 16px;border:1px solid #ff8b81;border-radius:7px;color:#df3c2b;background:#fff8f7;font-weight:600;line-height:1.65}.tcw-catalog-replace-warning>i{margin-top:2px;font-size:22px}.tcw-catalog-replace-summary{display:grid;grid-template-columns:142px minmax(0,1fr);gap:14px 14px;margin:0;padding:18px 20px;border:1px solid #d6dee9;border-radius:7px;line-height:1.45}.tcw-catalog-replace-summary dt,.tcw-catalog-replace-summary dd{margin:0}.tcw-catalog-replace-summary dt{color:#4f5b6d}.tcw-catalog-replace-count{color:#ef3038}.tcw-modal:has(.tcw-catalog-replace-dialog) .tcw-button--danger{min-width:182px;background:#e9252d;border-color:#e9252d}.tcw-modal:has(.tcw-catalog-replace-dialog--sanction){width:min(572px,calc(100vw - 40px));transform:translateY(9px)}.tcw-catalog-replace-dialog--sanction .tcw-catalog-replace-warning{min-height:84px;align-items:center}.tcw-catalog-replace-dialog--sanction .tcw-catalog-replace-summary{min-height:253px;align-content:center;row-gap:19px}.tcw-catalog-replace-dialog--sanction .tcw-catalog-replace-summary:before{grid-column:1 / -1;margin-bottom:2px;color:#253047;content:"\8986\76d6\4fe1\606f";font-size:16px;font-weight:700}.tcw-modal:has(.tcw-catalog-replace-dialog--sanction)>footer{min-height:92px}@media(max-width:1100px){.tcw-catalog-page--controlled,.tcw-catalog-page--sanction{margin:0}.tcw-catalog-page--controlled .tcw-filter-grid,.tcw-catalog-page--sanction .tcw-filter-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}.tcw-catalog-page--sanction .tcw-filter-actions{grid-column:auto;grid-row:auto;justify-self:start}.tcw-catalog-page .tcw-data-table .action-column{width:160px!important;min-width:160px!important;padding-inline:8px}.tcw-catalog-page .tcw-catalog-table-link{display:block;width:100%;min-width:0;max-width:100%;overflow:hidden}.tcw-catalog-page .tcw-catalog-table-link button{position:relative;display:block;width:100%;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcw-catalog-page .tcw-catalog-table-link button>i{position:absolute;inset:0;display:block;overflow:hidden;color:transparent;pointer-events:none}.tcw-catalog-page .tcw-catalog-operation-button{display:inline-flex;min-width:60px;align-items:center;justify-content:center;gap:2px;padding-inline:0;overflow:visible}.tcw-catalog-page .tcw-catalog-operation-button>i{flex:0 0 auto}}@media(max-width:640px){.tcw-catalog-page--controlled .tcw-filter-grid,.tcw-catalog-page--sanction .tcw-filter-grid{grid-template-columns:1fr}.tcw-catalog-page>.tcw-filter-panel{padding:16px}.tcw-catalog-replace-summary{grid-template-columns:1fr;gap:5px}}.tcw-procurement-prototype-surface,.tcw-contract-prototype-surface{--pc-blue: #0868f2;--pc-border: #dbe3ee;--pc-text: #121b31;color:var(--pc-text);font-size:14px}.tcw-procurement-prototype-surface{gap:14px}.tcw-content:has(>.tcw-procurement-prototype-surface){position:relative}.tcw-content:has(>.tcw-procurement-prototype-surface)>.tcw-page-heading{position:absolute;z-index:2;top:18px;right:18px;margin:0}.tcw-content:has(>.tcw-procurement-prototype-surface)>.tcw-page-heading>div:first-child{display:none}.tcw-content:has(>.tcw-procurement-prototype-surface[data-procurement-level=orders])>.tcw-page-heading,.tcw-content:has(>.tcw-procurement-prototype-surface[data-procurement-level=lines])>.tcw-page-heading{display:none}.tcw-procurement-level-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:0}.tcw-procurement-level-heading h2{margin:0;color:#10182b;font-size:29px;line-height:1.3}.tcw-procurement-level-heading p{margin:6px 0 0;color:#5a6577;font-size:15px}.tcw-procurement-prototype-surface .tcw-filter-panel,.tcw-contract-prototype-surface .tcw-filter-panel{margin:0;padding:22px 20px 20px;border-color:var(--pc-border);border-radius:7px;box-shadow:0 3px 12px #162d4e0f}.tcw-procurement-prototype-surface .tcw-filter-grid,.tcw-contract-prototype-surface .tcw-filter-grid{grid-template-columns:repeat(6,minmax(120px,1fr)) auto;gap:18px 20px}.tcw-procurement-prototype-surface[data-procurement-level=suppliers] .tcw-filter-grid,.tcw-procurement-prototype-surface[data-procurement-level=lines] .tcw-filter-grid{grid-template-columns:repeat(5,minmax(140px,1fr)) auto}.tcw-procurement-prototype-surface .tcw-filter-control,.tcw-contract-prototype-surface .tcw-filter-control{gap:9px}.tcw-procurement-prototype-surface .tcw-filter-control>span,.tcw-contract-prototype-surface .tcw-filter-control>span{color:#1c2639;font-size:14px;font-weight:600}.tcw-procurement-prototype-surface .tcw-filter-control input,.tcw-procurement-prototype-surface .tcw-filter-control select,.tcw-contract-prototype-surface .tcw-filter-control input,.tcw-contract-prototype-surface .tcw-filter-control select{height:42px;border-color:#ced8e6;border-radius:5px}.tcw-procurement-prototype-surface .tcw-filter-actions,.tcw-contract-prototype-surface .tcw-filter-actions{align-items:flex-end}.tcw-procurement-prototype-surface .tcw-filter-actions .tcw-button,.tcw-contract-prototype-surface .tcw-filter-actions .tcw-button{height:42px;min-width:58px}.tcw-procurement-prototype-surface .tcw-notice,.tcw-contract-prototype-surface .tcw-notice{min-height:46px;margin:0;padding:10px 16px;border-color:#b9d7ff;border-radius:6px;color:#245fa8;background:#edf5ff}.tcw-procurement-prototype-surface .tcw-grid-section,.tcw-contract-prototype-surface .tcw-grid-section{overflow:hidden;border-color:var(--pc-border);border-radius:7px;box-shadow:0 3px 12px #162d4e0f}.tcw-procurement-prototype-surface .tcw-data-table,.tcw-contract-prototype-surface .tcw-data-table{font-size:13px}.tcw-procurement-prototype-surface .tcw-data-table th,.tcw-contract-prototype-surface .tcw-data-table th{height:48px;color:#172033;background:#fff;font-weight:650}.tcw-procurement-prototype-surface .tcw-data-table td,.tcw-contract-prototype-surface .tcw-data-table td{height:46px}.tcw-procurement-prototype-surface .tcw-row-actions,.tcw-contract-prototype-surface .tcw-row-actions{gap:15px;white-space:nowrap}.tcw-procurement-prototype-surface .tcw-row-actions button,.tcw-contract-prototype-surface .tcw-row-actions button{padding:0;color:var(--pc-blue)}.tcw-procurement-prototype-surface .tcw-pagination,.tcw-contract-prototype-surface .tcw-pagination{min-height:68px;padding:13px 18px}.tcw-procurement-context{min-height:88px;grid-template-columns:150px minmax(260px,1.5fr) 130px 170px auto;border-radius:7px;box-shadow:0 3px 12px #162d4e0f}.tcw-procurement-context--order{grid-template-columns:minmax(300px,1.5fr) 200px 180px 200px auto}.tcw-procurement-context>div:not(.tcw-procurement-context-actions){min-height:88px;padding:15px 24px}.tcw-procurement-context strong{font-size:15px}.tcw-procurement-metrics{grid-template-columns:.8fr 1.2fr .8fr 1.05fr 1.85fr;gap:14px}.tcw-procurement-metrics>div{position:relative;min-height:158px;padding:26px 22px 20px 72px;border-radius:7px}.tcw-procurement-metrics>.tcw-procurement-top{padding:18px 22px}.tcw-procurement-metric-icon{position:absolute;top:35px;left:21px;color:#3b7cff;font-size:42px}.tcw-procurement-metric--green .tcw-procurement-metric-icon{color:#47c87e}.tcw-procurement-metric--orange .tcw-procurement-metric-icon{color:#ff7c43}.tcw-procurement-metric--violet .tcw-procurement-metric-icon{color:#9b61e8}.tcw-procurement-metrics>div>span{color:#2f3a4d;font-size:14px}.tcw-procurement-metrics>div>strong{margin-top:10px;color:#10182b;font-size:25px}.tcw-procurement-top ol{gap:4px;margin-top:8px}.tcw-procurement-top li:before{width:16px;height:16px;flex-basis:16px}.tcw-procurement-top li strong{font-weight:500}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-supplier-review){width:min(812px,calc(100vw - 40px));max-height:calc(100vh - 56px)}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form){width:min(828px,calc(100vw - 40px));height:min(762px,calc(100vh - 48px));max-height:none}.tcw-procurement-prototype-surface .tcw-modal>header,.tcw-contract-prototype-surface .tcw-modal>header{min-height:55px;padding:12px 24px;border-bottom:0}.tcw-procurement-prototype-surface .tcw-modal>footer,.tcw-contract-prototype-surface .tcw-modal>footer{min-height:62px;padding:10px 24px 18px;border-top:0}.tcw-procurement-prototype-surface .tcw-modal-body,.tcw-contract-prototype-surface .tcw-modal-body{padding:0 24px 10px}.tcw-procurement-dialog-kicker{display:flex;gap:24px;margin:-2px 0 16px;color:#52637d;font-size:12px}.tcw-procurement-supplier-review{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(270px,.9fr);gap:20px}.tcw-procurement-supplier-review>.tcw-field-grid{display:grid;gap:7px}.tcw-procurement-supplier-review>.tcw-field-grid .tcw-form-field{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:8px}.tcw-procurement-supplier-review .tcw-form-field input{height:34px}.tcw-procurement-supplier-review aside{padding-left:20px;border-left:1px solid #e5eaf1}.tcw-procurement-supplier-review textarea{height:138px;padding:10px;resize:none}.tcw-procurement-supplier-review dl{margin:16px 0 12px;border:1px solid var(--pc-border);border-radius:5px}.tcw-procurement-supplier-review dl>div{display:grid;grid-template-columns:110px 1fr;min-height:43px;align-items:center;padding:8px 12px;border-bottom:1px solid #e8edf3}.tcw-procurement-supplier-review dl>div:last-child{border-bottom:0}.tcw-procurement-supplier-review dt{font-weight:650}.tcw-procurement-supplier-review dd{margin:0;color:#4b5870}.tcw-procurement-source-label{position:absolute;top:21px;left:132px;color:#6b7585;font-size:13px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form){position:relative}.tcw-procurement-line-form{min-height:620px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form) .tcw-field-grid{gap:12px 22px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form) .tcw-form-field{gap:6px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-line-form) .tcw-form-field input{height:36px}.tcw-procurement-line-status{display:flex;min-height:36px;align-items:center;gap:18px}.tcw-procurement-line-status label{display:flex;align-items:center;gap:6px;color:#344054;white-space:nowrap}.tcw-procurement-prototype-surface .tcw-procurement-line-status input{width:15px;height:15px}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-delete-summary.is-order){width:min(544px,calc(100vw - 40px));height:min(560px,calc(100vh - 40px));max-height:none}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-delete-summary.is-order) .tcw-confirm-message,.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-delete-summary) .tcw-confirm-message{display:block;padding:0}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-delete-summary.is-order) .tcw-confirm-message>i,.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-delete-summary) .tcw-confirm-message>i{display:none}.tcw-procurement-prototype-surface .tcw-modal:has(.tcw-procurement-delete-summary.is-order) .tcw-confirm-message>p,.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-delete-summary) .tcw-confirm-message>p{margin:0}.tcw-procurement-delete-warning,.tcw-procurement-delete-info{display:flex;gap:10px;padding:13px 14px;border:1px solid #ffbaba;border-radius:5px;color:#d92d20;background:#fff4f4;line-height:1.6}.tcw-procurement-delete-warning i,.tcw-procurement-delete-info i{flex:0 0 auto;font-size:20px}.tcw-procurement-delete-details{margin:12px 0;border:1px solid var(--pc-border);border-radius:5px}.tcw-procurement-delete-details>div{display:grid;grid-template-columns:150px 1fr;min-height:42px;align-items:center;padding:5px 14px;border-bottom:1px solid #e7ebf1}.tcw-procurement-delete-details>div:last-child{border-bottom:0}.tcw-procurement-delete-details dt{font-weight:600}.tcw-procurement-delete-details dd{margin:0;font-weight:650}.tcw-procurement-delete-info{margin:0;border-color:#ffd198;color:#b45f06;background:#fff9ef}.tcw-contract-prototype-surface{display:grid;gap:14px}.tcw-contract-prototype-surface .tcw-filter-grid{grid-template-columns:1fr 1.05fr .95fr .95fr 1.25fr auto}.tcw-contract-customer-code{display:inline;margin:0}.tcw-contract-risk-summary{display:grid;justify-items:start;gap:4px}.tcw-contract-sanction-text{color:#697386;font-size:11px;white-space:nowrap}.tcw-contract-sanction-text--hit{color:#d92d20}.tcw-contract-sanction-text--clear{color:#168653}.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-review-summary){width:min(920px,calc(100vw - 64px));height:min(752px,calc(100vh - 48px));max-height:none}.tcw-contract-review-header{grid-template-columns:1.1fr minmax(0,4fr) auto auto;align-items:center;gap:16px;padding:14px 18px;background:#fff}.tcw-contract-review-header .tcw-field-grid{gap:12px}.tcw-contract-review-header .tcw-form-field input{height:30px;padding:0;border:0;background:transparent}.tcw-contract-review-toolbar{min-height:48px;margin:10px 0 0}.tcw-contract-review-layout{grid-template-columns:140px minmax(330px,1fr) minmax(300px,.9fr);min-height:490px}.tcw-contract-clause-tabs{padding:0;background:#fff}.tcw-contract-clause-tabs button{min-height:56px;padding:8px 18px;font-size:14px}.tcw-contract-clause-tabs small{display:none}.tcw-contract-clause-editor,.tcw-contract-source-preview{padding:16px 14px}.tcw-contract-clause-editor{gap:12px}.tcw-contract-clause-editor textarea{min-height:104px;padding:10px}.tcw-contract-source-preview{display:block;background:#fff}.tcw-contract-source-preview>h3{padding-bottom:14px;border-bottom:1px solid #e3e9f1}.tcw-contract-analysis{padding:0;border:0;background:#fff}.tcw-contract-analysis h4{display:none}.tcw-contract-analysis dt{margin-top:17px;color:#273349;font-size:13px}.tcw-contract-analysis dd{min-height:84px;margin-top:8px;padding:11px;border:1px solid var(--pc-border);border-radius:5px;color:#3d495e}.tcw-contract-source-preview>details{margin-top:14px;color:#52637d;font-size:12px}.tcw-contract-source-preview>details iframe,.tcw-contract-source-preview>details pre{min-height:240px;margin-top:10px}.tcw-contract-customer-master{margin-top:10px}.tcw-contract-prototype-surface .tcw-modal:has(.tcw-contract-delete-summary){width:min(575px,calc(100vw - 40px));height:min(544px,calc(100vh - 40px));max-height:none}.tcw-contract-delete-warning{display:flex;gap:10px;padding:14px;border:1px solid #ffbaba;border-radius:5px;color:#e52a34;background:#fff4f4;line-height:1.65}.tcw-contract-delete-warning i{font-size:20px}.tcw-contract-delete-details{margin:12px 0;padding:10px 16px;border:1px solid var(--pc-border);border-radius:5px}.tcw-contract-delete-details>div{display:grid;grid-template-columns:205px 1fr;min-height:34px;align-items:center}.tcw-contract-delete-summary dt{font-weight:600}.tcw-contract-delete-summary dd{margin:0;font-weight:650}.tcw-contract-delete-info{display:flex;gap:10px;margin:0;padding:13px;border:1px solid #ffd198;border-radius:5px;color:#d36b00;background:#fff9ef;line-height:1.65}@media(max-width:1180px){.tcw-procurement-prototype-surface .tcw-filter-grid,.tcw-contract-prototype-surface .tcw-filter-grid,.tcw-procurement-metrics{grid-template-columns:repeat(2,minmax(180px,1fr))}.tcw-procurement-top{grid-column:1 / -1}}@media(max-width:760px){.tcw-procurement-supplier-review,.tcw-contract-review-layout{grid-template-columns:1fr}.tcw-procurement-supplier-review aside{padding:16px 0 0;border-top:1px solid #e5eaf1;border-left:0}.tcw-procurement-level-heading{flex-direction:column}.tcw-procurement-metrics{grid-template-columns:1fr}.tcw-procurement-top{grid-column:auto}}.tcw-sales-files-page{--sf-blue: #1769ff;--sf-blue-soft: #f1f6ff;--sf-border: #dbe3ef;--sf-text: #172033;color:var(--sf-text)}.tcw-sales-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:0 0 20px}.tcw-sales-heading .tcw-list-heading{margin:0;color:#111b2f;font-size:28px;line-height:1.25;font-weight:700}.tcw-sales-heading p{margin:8px 0 0;color:#687389;font-size:14px;line-height:1.5}.tcw-sales-heading>.tcw-button{min-height:42px;border-color:var(--sf-blue);color:var(--sf-blue);background:#fff}.tcw-sales-files-page .tcw-filter-panel{margin-bottom:18px;padding:22px 20px;border-color:var(--sf-border);border-radius:7px;box-shadow:0 1px 4px #182d4e0a}.tcw-sales-files-page .tcw-filter-grid{gap:18px 28px}.tcw-sales-files-page .tcw-filter-control{gap:8px}.tcw-sales-files-page .tcw-filter-control>span{color:#263147;font-size:14px}.tcw-sales-files-page .tcw-filter-control input,.tcw-sales-files-page .tcw-filter-control select{height:39px;border-color:#cfd8e5;border-radius:4px}.tcw-sales-files-page .tcw-filter-actions .tcw-button{min-height:39px;padding-inline:21px}.tcw-sales-files-page .tcw-button--primary,.tcw-sales-files-page .tcw-pagination button:not(:disabled):hover{border-color:var(--sf-blue);background:var(--sf-blue)}.tcw-sales-files-page .tcw-notice{min-height:47px;margin-bottom:18px;align-items:center;border-color:#9bc0ff;border-radius:6px;color:#1763d7;background:var(--sf-blue-soft)}.tcw-sales-files-page .tcw-grid-section{border-color:var(--sf-border);border-radius:6px}.tcw-sales-files-page .tcw-data-table{color:#1c273a;font-size:12px}.tcw-sales-files-page .tcw-data-table th,.tcw-sales-files-page .tcw-data-table td{height:43px;padding:8px 12px;border-bottom-color:#e2e8f1}.tcw-sales-files-page .tcw-data-table th{color:#283448;background:#f8fafc;font-weight:650}.tcw-sales-files-page .tcw-row-actions{gap:11px}.tcw-sales-files-page .tcw-row-actions button,.tcw-sales-files-page .tcw-table-link{color:#1265e8}.tcw-sales-files-page .tcw-pagination{min-height:62px;border-top:0;color:#1d293c}.tcw-sales-files-page .tcw-tag{min-height:22px;border:0;border-radius:999px;color:#14935a;background:#e5f8ee}.tcw-sales-files-page .tcw-tag--warning{color:#ed7a15;background:#fff0e3}.tcw-sales-page--orders .tcw-context-bar,.tcw-sales-page--lines .tcw-context-bar,.tcw-sales-files-page--history .tcw-context-bar{min-height:58px;margin-bottom:20px;padding:10px 20px;border-color:var(--sf-border);border-radius:7px}.tcw-sales-page--orders .tcw-context-bar strong{margin-right:10px}.tcw-sales-page--orders .tcw-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-bottom:20px}.tcw-sales-page--orders .tcw-metric-grid article{position:relative;min-height:98px;padding:20px 20px 18px 86px;border:1px solid var(--sf-border);border-radius:7px}.tcw-sales-page--orders .tcw-metric-grid article:before{position:absolute;top:21px;left:20px;display:grid;width:48px;height:48px;place-items:center;border-radius:50%;color:var(--sf-blue);background:#eaf1ff;font-family:remixicon;font-size:23px;content:"\ea71"}.tcw-sales-page--orders .tcw-metric-grid article:nth-child(3):before{color:#11a963;background:#e5f8ee;content:"\f0d7"}.tcw-sales-page--orders .tcw-metric-grid article:nth-child(4):before{color:#f17d1d;background:#fff0e3;content:"\ef63"}.tcw-sales-page--orders .tcw-metric-grid article:nth-child(n+5),.tcw-sales-page--orders .tcw-sales-top{display:none}.tcw-sales-page--orders .tcw-metric-grid article strong{font-size:23px}.tcw-sales-page--orders .tcw-metric-grid article small{position:absolute;left:-9999px}.tcw-sales-page--lines .tcw-order-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));min-height:96px}.tcw-sales-page--lines .tcw-order-summary strong,.tcw-sales-page--lines .tcw-order-summary span{display:grid;gap:7px;color:#162136}.tcw-sales-page--lines .tcw-order-summary strong:before{color:#6b7689;font-size:12px;font-weight:400;content:"\9500\552e\8ba2\5355\7f16\53f7"}.tcw-sales-page--lines .tcw-order-summary span:nth-child(2):before{color:#6b7689;font-size:12px;content:"\5ba2\6237\5408\540c\7f16\53f7"}.tcw-sales-page--lines .tcw-order-summary span:nth-child(3):before{color:#6b7689;font-size:12px;content:"\91c7\8d2d\5408\540c\7f16\53f7"}.tcw-sales-files-page--history .tcw-context-bar .tcw-button{order:3;margin-left:auto;border-color:var(--sf-blue);color:var(--sf-blue)}.tcw-modal:has(.tcw-sales-risk-dialog),.tcw-modal:has(.tcw-sales-file-dialog),.tcw-modal:has(.tcw-sales-customer-dialog),.tcw-modal:has(.tcw-sales-order-dialog),.tcw-modal:has(.tcw-sales-bank-dialog),.tcw-modal:has(.tcw-sales-file-delete-dialog){border-radius:8px;box-shadow:0 18px 55px #101c3042}.tcw-modal:has(.tcw-sales-risk-dialog){width:min(865px,calc(100vw - 40px))}.tcw-modal:has(.tcw-sales-file-dialog){width:min(780px,calc(100vw - 40px))}.tcw-modal:has(.tcw-sales-customer-dialog){width:min(950px,calc(100vw - 40px));max-height:min(810px,calc(100vh - 40px))}.tcw-modal:has(.tcw-sales-order-dialog){width:min(920px,calc(100vw - 40px));max-height:min(700px,calc(100vh - 40px))}.tcw-modal:has(.tcw-sales-bank-dialog){width:min(806px,calc(100vw - 40px));max-height:min(714px,calc(100vh - 40px))}.tcw-modal:has(.tcw-sales-file-delete-dialog){width:min(626px,calc(100vw - 40px));min-height:min(500px,calc(100vh - 40px))}.tcw-modal:has(.tcw-sales-risk-dialog)>header,.tcw-modal:has(.tcw-sales-file-dialog)>header,.tcw-modal:has(.tcw-sales-customer-dialog)>header,.tcw-modal:has(.tcw-sales-order-dialog)>header{min-height:64px;padding-inline:26px}.tcw-modal:has(.tcw-sales-bank-dialog)>header,.tcw-modal:has(.tcw-sales-file-delete-dialog)>header{min-height:64px;padding-inline:26px}.tcw-modal:has(.tcw-sales-risk-dialog)>footer,.tcw-modal:has(.tcw-sales-file-dialog)>footer,.tcw-modal:has(.tcw-sales-customer-dialog)>footer,.tcw-modal:has(.tcw-sales-order-dialog)>footer{min-height:72px;padding-inline:26px}.tcw-modal:has(.tcw-sales-bank-dialog)>footer,.tcw-modal:has(.tcw-sales-file-delete-dialog)>footer{min-height:72px;padding-inline:26px}.tcw-sales-bank-dialog{display:grid;gap:18px}.tcw-bank-order-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 28px;margin:0;padding:20px 24px;border:1px solid #a9c7ff;border-radius:7px;background:#f8fbff}.tcw-bank-order-summary div{min-width:0}.tcw-bank-order-summary dt{color:#66738a;font-size:12px}.tcw-bank-order-summary dd{margin:7px 0 0;overflow:hidden;color:#17233a;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.tcw-bank-dialog-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(290px,.9fr);gap:28px}.tcw-bank-dialog-grid>section{display:grid;align-content:start;gap:16px}.tcw-bank-dialog-grid>aside{min-height:190px;padding:18px 20px;border:1px solid var(--sf-border);border-radius:7px}.tcw-bank-dialog-grid h3{margin:0 0 10px;font-size:16px}.tcw-bank-dialog-grid p{margin:0 0 18px;color:#687389}.tcw-bank-preview-file{display:flex;align-items:center;gap:13px;padding:15px;border:1px solid #dfe6f0;border-radius:6px}.tcw-bank-preview-file>i{display:grid;width:38px;height:38px;place-items:center;border-radius:5px;color:#1769ff;background:#eaf2ff;font-size:22px}.tcw-bank-preview-file span{display:grid;gap:5px}.tcw-bank-preview-file small{color:#6b778c}.tcw-sales-bank-dialog>.tcw-notice{margin:0}.tcw-sales-file-delete-dialog{display:grid;gap:18px}.tcw-sales-file-delete-dialog h3{margin:0;font-size:20px}.tcw-delete-critical{display:flex;gap:12px;padding:15px 16px;border:1px solid #ffb8b8;border-radius:6px;color:#e22932;background:#fff1f1;line-height:1.55}.tcw-delete-critical>i{flex:0 0 auto;font-size:21px}.tcw-sales-file-delete-dialog dl{display:grid;grid-template-columns:1fr 1fr;gap:18px 28px;margin:0;padding:18px 20px;border:1px solid var(--sf-border);border-radius:6px}.tcw-sales-file-delete-dialog dt{color:#69758a;font-size:12px}.tcw-sales-file-delete-dialog dd{margin:6px 0 0;overflow-wrap:anywhere;font-weight:650}.tcw-sales-file-delete-dialog>p{margin:0;padding:11px 14px;border:1px solid #f0cf91;border-radius:5px;color:#996816;background:#fff8e8}@media(min-width:981px){.tcw-modal:has(.tcw-sales-customer-dialog){transform:translateY(36px)}.tcw-modal:has(.tcw-sales-order-dialog){max-height:min(658px,calc(100vh - 40px));transform:translateY(13px)}.tcw-modal:has(.tcw-sales-risk-dialog){min-height:767px;transform:translate(67px)}}.tcw-sales-customer-dialog,.tcw-sales-order-dialog{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:0 28px}.tcw-sales-customer-dialog>section,.tcw-sales-order-dialog>section{min-width:0;padding-right:28px;border-right:1px solid var(--sf-border)}.tcw-sales-customer-dialog>aside,.tcw-sales-order-dialog>aside{min-width:0}.tcw-sales-customer-dialog .tcw-field-grid{gap:13px 16px}.tcw-sales-customer-dialog .tcw-form-field,.tcw-sales-order-dialog .tcw-form-field{gap:6px}.tcw-sales-customer-dialog input,.tcw-sales-order-dialog input{height:37px}.tcw-sales-customer-dialog input:disabled,.tcw-sales-order-dialog input:disabled,.tcw-sales-customer-dialog textarea:disabled{color:#41506a;background:#f8fafc;opacity:1}.tcw-sales-customer-dialog aside dl,.tcw-sales-order-dialog aside dl{display:grid;gap:0;margin:0 0 18px}.tcw-sales-customer-dialog aside dl>div,.tcw-sales-order-dialog aside dl>div{display:grid;grid-template-columns:minmax(112px,.85fr) minmax(0,1.15fr);align-items:center;min-height:47px;border-bottom:1px solid #e8edf4}.tcw-sales-customer-dialog dt,.tcw-sales-order-dialog dt{color:#3c485d;font-weight:650}.tcw-sales-customer-dialog dd,.tcw-sales-order-dialog dd{margin:0;color:#18243a}.tcw-sales-customer-dialog>.tcw-notice,.tcw-sales-order-dialog>.tcw-notice{grid-column:1 / -1;margin:20px 0 0}.tcw-sales-order-dialog aside .tcw-notice{margin:18px 0 0}.tcw-sales-risk-dialog{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:18px}.tcw-sales-risk-dialog>section:first-child{grid-column:1 / -1}.tcw-sales-risk-dialog>section{min-width:0}.tcw-sales-risk-dialog h3{margin:0 0 12px;font-size:16px}.tcw-sales-risk-dialog .tcw-preflight-summary{margin:0;border:1px solid var(--sf-border);border-radius:7px;overflow:hidden}.tcw-sales-risk-dialog .tcw-preflight-summary>div{border:0;border-bottom:1px solid #e5eaf1;background:#fff}.tcw-sales-risk-dialog .tcw-grid-section{border-color:var(--sf-border)}.tcw-sales-risk-dialog .tcw-data-table{min-width:560px}.tcw-sales-file-dialog .tcw-preflight-summary{padding:2px;border:1px solid #a9c7ff;border-radius:7px;background:#f8fbff}.tcw-sales-file-dialog .tcw-preflight-summary>div{border:0;background:transparent}.tcw-sales-file-dialog .tcw-notice{margin-bottom:0}@media(max-width:980px){.tcw-sales-heading{flex-direction:column}.tcw-sales-page--orders .tcw-metric-grid{grid-template-columns:1fr 1fr}.tcw-sales-risk-dialog{grid-template-columns:1fr}.tcw-sales-risk-dialog>section:first-child{grid-column:auto}.tcw-sales-customer-dialog,.tcw-sales-order-dialog{grid-template-columns:1fr}.tcw-sales-customer-dialog>section,.tcw-sales-order-dialog>section{padding:0 0 18px;border-right:0;border-bottom:1px solid var(--sf-border)}.tcw-sales-customer-dialog>aside,.tcw-sales-order-dialog>aside{padding-top:18px}}@media(max-width:640px){.tcw-sales-heading .tcw-list-heading{font-size:23px}.tcw-sales-page--orders .tcw-metric-grid,.tcw-sales-page--lines .tcw-order-summary{grid-template-columns:1fr}}.tcw-settings-page[data-settings-page=typed]{display:block;width:100%;min-width:0;min-height:0;grid-template-columns:none;border:0;background:transparent;color:#1f2a3d}.tcw-settings-page[data-settings-page=typed]>.tcw-settings-tabs,.tcw-settings-page[data-settings-page=typed]>.tcw-notice,.tcw-settings-page[data-settings-page=typed]>.tcw-settings-content{width:100%;min-width:0}.tcw-settings-page>.tcw-notice{min-height:40px;margin:0 0 8px;padding:8px 14px}.tcw-settings-tabs{display:flex;height:56px;align-items:stretch;gap:0;border-bottom:1px solid #d8dee8}.tcw-settings-tabs button{position:relative;display:inline-flex;width:122px;align-items:center;justify-content:center;gap:7px;padding:0 16px;border:0;color:#283548;background:transparent;font-size:16px}.tcw-settings-tabs button i{font-size:16px}.tcw-settings-tabs button:after{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:transparent;content:""}.tcw-settings-tabs button.is-active{color:#086bf2;font-weight:650}.tcw-settings-tabs button.is-active:after{background:#0875f7}.tcw-settings-content{min-width:0;padding:20px 0 0}.tcw-settings-card{min-width:0;border:1px solid #d7dee8;border-radius:6px;background:#fff;box-shadow:0 1px 3px #1f2a3d0a}.tcw-settings-company-card{padding:18px 24px 20px}.tcw-settings-company-form{min-width:0}.tcw-settings-row{display:grid;min-width:0;grid-template-columns:178px minmax(0,704px);align-items:center;gap:12px;margin-bottom:13px}.tcw-settings-row:last-child{margin-bottom:0}.tcw-settings-row>span{color:#283548;font-size:15px}.tcw-settings-row>span b{margin-right:5px;color:#f04438}.tcw-settings-row>span i{margin-left:7px;color:#8b98aa}.tcw-settings-row>div{min-width:0}.tcw-settings-row input,.tcw-settings-row select,.tcw-settings-row textarea,.tcw-settings-bank-value input,.tcw-settings-bank-value textarea{width:100%;height:40px;min-width:0;padding:0 12px;border:1px solid #d5dce6;border-radius:4px;outline:0;color:#354156;background:#fff;font:inherit}.tcw-settings-row textarea,.tcw-settings-bank-value textarea{height:52px;padding-top:8px;resize:none}.tcw-settings-row input[readonly],.tcw-settings-row textarea[readonly],.tcw-settings-bank-value input[readonly]{color:#627087;background:#f7f8fa}.tcw-settings-upload{display:flex;width:423px;height:82px;align-items:center;justify-content:center;gap:16px;border:1px dashed #b9c5d5;border-radius:6px;color:#536177;cursor:pointer}.tcw-settings-upload input{display:none}.tcw-settings-upload>i{color:#76849a;font-size:39px}.tcw-settings-upload>span{display:grid;gap:6px}.tcw-settings-upload small{color:#8a96a8;font-size:12px}.tcw-settings-form-actions{display:flex;gap:32px;margin-top:32px}.tcw-settings-form-actions .tcw-button{width:164px;height:44px;justify-content:center}.tcw-settings-bank-list{display:grid;gap:14px}.tcw-settings-bank-card{padding:20px 24px 27px}.tcw-settings-bank-card>header,.tcw-settings-rate-card>header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.tcw-settings-bank-card h2,.tcw-settings-rate-card h2,.tcw-settings-profit-snapshot h2{margin:0;color:#1d2939;font-size:18px}.tcw-settings-bank-card h2 span{margin-left:6px;font-size:15px;font-weight:500}.tcw-settings-bank-card>header>div{display:flex;gap:14px}.tcw-settings-bank-card .tcw-button{min-width:92px;justify-content:center}.tcw-button--outline{border-color:#1680ff;color:#0875f7;background:#fff}.tcw-settings-bank-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:13px 38px}.tcw-settings-bank-value{display:grid;min-width:0;grid-template-columns:118px minmax(0,1fr);align-items:center;gap:12px}.tcw-settings-bank-value>span{font-size:14px}.tcw-settings-bank-value textarea{min-height:54px}.tcw-settings-bank-list>.tcw-notice{margin:4px 0 0}.tcw-settings-profit-snapshot{margin-bottom:18px;padding:18px 22px 22px}.tcw-settings-profit-snapshot>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid #dbe1e9}.tcw-settings-profit-snapshot>header>div{display:flex;gap:8px}.tcw-settings-profit-snapshot>header .tcw-button{justify-content:center}.tcw-settings-profit-snapshot>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin-top:22px}.tcw-settings-profit-snapshot>div>div{display:grid;gap:9px;padding:0 20px;border-right:1px solid #d9dfe7}.tcw-settings-profit-snapshot>div>div:first-child{padding-left:0}.tcw-settings-profit-snapshot>div>div:last-child{border-right:0}.tcw-settings-profit-snapshot span{color:#536075}.tcw-settings-profit-snapshot strong{color:#0875f7;font-size:24px;font-weight:600}.tcw-settings-profit-snapshot strong.is-status{width:fit-content;padding:4px 10px;border-radius:4px;color:#16a34a;background:#dff6e5;font-size:15px}.tcw-settings-rate-card{padding:18px 22px}.tcw-settings-rate-card>header{margin-bottom:12px}.tcw-settings-rate-card>header .tcw-button{min-width:160px;justify-content:center}.tcw-settings-rate-filters{display:flex;gap:34px;margin-bottom:18px}.tcw-settings-rate-filters label{display:flex;align-items:center;gap:12px}.tcw-settings-rate-filters select{width:160px;height:40px;padding:0 12px;border:1px solid #d5dce6;border-radius:4px;color:#475467;background:#fff}.tcw-settings-table-wrap{overflow-x:auto;border:1px solid #d7dee8;border-radius:5px}.tcw-settings-table-wrap table{width:100%;min-width:910px;border-collapse:collapse}.tcw-settings-table-wrap th,.tcw-settings-table-wrap td{height:48px;padding:0 15px;border-right:1px solid #e1e5eb;border-bottom:1px solid #e1e5eb;text-align:left;white-space:nowrap}.tcw-settings-table-wrap th{height:42px;background:#f8f9fb;font-weight:600}.tcw-settings-table-wrap tr:last-child td{border-bottom:0}.tcw-settings-table-wrap th:last-child,.tcw-settings-table-wrap td:last-child{border-right:0}.tcw-settings-table-wrap td button{padding:0 7px;border:0;color:#0875f7;background:transparent}.tcw-settings-table-wrap td button i{margin-right:3px;font-size:14px}.tcw-settings-table-wrap td button.is-danger{color:#e5484d}.tcw-settings-rate-footer{display:flex;min-height:52px;align-items:center;justify-content:space-between}.tcw-settings-rate-footer>span:last-child{display:flex;align-items:center;gap:8px}.tcw-settings-rate-footer button,.tcw-settings-rate-footer b{display:inline-grid;width:30px;height:30px;place-items:center;border:1px solid #d6dee9;border-radius:4px;color:#0875f7;background:#fff}.tcw-settings-rate-footer b{color:#fff;background:#0875f7}.tcw-settings-rate-footer select{height:30px;margin-left:12px;border:1px solid #d6dee9;border-radius:4px}.tcw-settings-rate-card>.tcw-notice{margin:0;line-height:1.75}.tcw-modal-backdrop:has(.tcw-settings-bank-dialog){padding-left:226px}.tcw-modal-backdrop:has(.tcw-settings-restore-dialog){padding-left:198px}.tcw-modal-backdrop:has(.tcw-settings-rate-dialog) .tcw-modal{transform:translateY(70px)}.tcw-modal-backdrop:has(.tcw-settings-restore-dialog) .tcw-modal{transform:translateY(28px)}.tcw-modal-backdrop:has(.tcw-settings-delete-dialog) .tcw-modal{transform:translateY(34px)}.tcw-modal:has(.tcw-settings-bank-dialog){width:min(510px,calc(100vw - 40px));min-height:689px}.tcw-modal:has(.tcw-settings-rate-dialog){width:min(604px,calc(100vw - 40px))}.tcw-modal:has(.tcw-settings-profit-dialog){width:min(604px,calc(100vw - 40px))}.tcw-modal:has(.tcw-settings-restore-dialog){width:min(664px,calc(100vw - 40px))}.tcw-modal:has(.tcw-settings-delete-dialog){width:min(680px,calc(100vw - 40px));min-height:590px}.tcw-modal:has(.tcw-settings-bank-dialog) .tcw-modal-body,.tcw-modal:has(.tcw-settings-rate-dialog) .tcw-modal-body{padding:6px 26px 18px}.tcw-settings-bank-dialog>p{margin:0 0 22px}.tcw-settings-bank-dialog>p b{font-weight:500}.tcw-settings-bank-dialog .tcw-settings-row,.tcw-settings-rate-dialog .tcw-settings-row{grid-template-columns:140px minmax(0,1fr);margin-bottom:13px}.tcw-settings-profit-dialog .tcw-settings-row{grid-template-columns:150px minmax(0,1fr);margin-bottom:13px}.tcw-settings-profit-dialog>.tcw-notice{margin:4px 0 0}.tcw-settings-bank-dialog .tcw-notice{margin:4px 0 0}.tcw-settings-rate-dialog>.tcw-notice{margin:0 0 14px}.tcw-settings-restore-dialog .tcw-notice{margin-bottom:20px;border-color:#f8cf86;color:#755319;background:#fff9ed}.tcw-settings-restore-dialog p{margin:0 0 14px}.tcw-settings-restore-dialog h3{display:flex;align-items:center;gap:12px;margin:0 0 22px;padding:12px;border:1px solid #d8e0eb;border-radius:5px;font-size:15px}.tcw-settings-restore-dialog h3 i{display:inline-grid;width:38px;height:38px;place-items:center;border-radius:50%;color:#0875f7;background:#eaf3ff;font-size:21px}.tcw-settings-restore-dialog h4{margin:0 0 12px}.tcw-settings-restore-dialog dl,.tcw-settings-delete-dialog dl{margin:0 0 12px;border:1px solid #d8e0eb;border-radius:5px}.tcw-settings-restore-dialog dl div,.tcw-settings-delete-dialog dl div{display:grid;grid-template-columns:228px minmax(0,1fr);border-bottom:1px solid #dfe5ed}.tcw-settings-restore-dialog dl div:last-child,.tcw-settings-delete-dialog dl div:last-child{border-bottom:0}.tcw-settings-restore-dialog dt,.tcw-settings-restore-dialog dd,.tcw-settings-delete-dialog dt,.tcw-settings-delete-dialog dd{margin:0;padding:10px 13px}.tcw-settings-restore-dialog small{color:#6c788b}.tcw-settings-restore-dialog small i{margin-right:6px;color:#0875f7}.tcw-settings-delete-dialog p{margin:0 0 18px;line-height:1.7}.tcw-settings-delete-dialog{max-width:552px;margin-left:auto}.tcw-settings-delete-dialog dl div{grid-template-columns:180px minmax(0,1fr)}.tcw-settings-delete-dialog dt,.tcw-settings-delete-dialog dd{padding-block:13px}.tcw-modal:has(.tcw-settings-delete-dialog)>footer .tcw-button--secondary{width:111px}.tcw-modal:has(.tcw-settings-delete-dialog)>footer .tcw-button--danger{width:137px}@media(max-width:760px){.tcw-modal-backdrop:has(.tcw-settings-bank-dialog),.tcw-modal-backdrop:has(.tcw-settings-restore-dialog){padding-left:6px}.tcw-modal-backdrop:has(.tcw-settings-bank-dialog) .tcw-modal,.tcw-modal-backdrop:has(.tcw-settings-restore-dialog) .tcw-modal,.tcw-modal-backdrop:has(.tcw-settings-rate-dialog) .tcw-modal,.tcw-modal-backdrop:has(.tcw-settings-delete-dialog) .tcw-modal{min-height:0;transform:none}.tcw-settings-page[data-settings-page=typed]{display:block;grid-template-columns:none}.tcw-settings-page[data-settings-page=typed]>.tcw-settings-content{padding:16px 0 0}.tcw-settings-tabs{overflow-x:auto}.tcw-settings-tabs button{flex:0 0 112px}.tcw-settings-row{grid-template-columns:1fr;gap:6px}.tcw-settings-upload{width:100%}.tcw-settings-bank-grid{grid-template-columns:1fr}.tcw-settings-profit-snapshot>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 0}.tcw-settings-profit-snapshot>div>div{border-right:0}.tcw-settings-profit-snapshot>header{align-items:flex-start;flex-direction:column}.tcw-settings-rate-filters{align-items:stretch;flex-direction:column;gap:10px}.tcw-settings-rate-filters label{justify-content:space-between}.tcw-settings-bank-card>header{align-items:flex-start;flex-direction:column}.tcw-settings-restore-dialog dl div,.tcw-settings-delete-dialog dl div{grid-template-columns:1fr}}:root{--tcw-primary: #1769c2;--tcw-primary-hover: #1259a6;--tcw-primary-soft: #eaf3ff;--tcw-canvas: #f5f7fa;--tcw-surface: #ffffff;--tcw-text: #172033;--tcw-muted: #69758a;--tcw-border: #dce3ec;--tcw-border-soft: #e9edf3;--tcw-danger: #c73737;--tcw-danger-soft: #fff1f1;--tcw-warning: #a86705;--tcw-success: #247c4c;--tcw-sidebar-width: 226px;--tcw-sidebar-collapsed-width: 56px;--tcw-topbar-height: 64px;--tcw-control-height: 36px}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden}body{margin:0;color:var(--tcw-text);background:var(--tcw-canvas);font-family:Inter,PingFang SC,Microsoft YaHei,Arial,sans-serif;font-size:14px;letter-spacing:0}button,input,select,textarea{font:inherit;letter-spacing:0}button{cursor:pointer}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.55}.tcw-app-frame{display:grid;grid-template-columns:var(--tcw-sidebar-width) minmax(0,1fr);height:100vh;min-height:520px;overflow:hidden;background:var(--tcw-canvas)}.tcw-app-frame.is-sidebar-collapsed{grid-template-columns:var(--tcw-sidebar-collapsed-width) minmax(0,1fr)}.tcw-sidebar{position:relative;display:grid;grid-template-rows:var(--tcw-topbar-height) minmax(0,1fr) 54px;height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;border-right:1px solid #e4e9f1;background:var(--tcw-surface)}.tcw-brand{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:9px;min-height:var(--tcw-topbar-height);padding:0 19px;border-bottom:1px solid var(--tcw-border-soft)}.tcw-brand strong{min-width:0;color:#121722;font-size:20px;line-height:1.25;white-space:nowrap}.tcw-brand-mark{display:grid;width:30px;height:32px;place-items:center;color:#0878f9;background:transparent;font-size:30px;font-weight:400}.tcw-sidebar-toggle{display:flex;width:100%;min-height:54px;align-items:center;gap:14px;padding:0 32px;border:0;border-top:1px solid var(--tcw-border-soft);border-radius:0;color:#121722;background:#fff;font-size:16px;text-align:left}.tcw-sidebar-toggle:hover{border-color:var(--tcw-border);background:#f5f8fc}.tcw-navigation{display:grid;align-content:start;gap:18px;padding:15px}.tcw-nav-row{display:grid;grid-template-columns:1fr;border-left:0;border-radius:6px;overflow:hidden}.tcw-nav-item{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:4px;width:100%;min-height:46px;padding:0 18px;border:0;color:#172033;background:transparent;text-align:left}.tcw-nav-item i:first-child{color:#42506a;font-size:21px;text-align:center}.tcw-nav-label{display:flex;min-width:0;gap:7px;align-items:center;font-size:16px}.tcw-nav-label b{min-width:19px;font-weight:400}.tcw-nav-row:hover{background:#f5f8fc}.tcw-nav-row.is-active{color:#0878f9;background:#eaf3ff;font-weight:650}.tcw-nav-row.is-active .tcw-nav-item,.tcw-nav-row.is-active i{color:var(--tcw-primary)}.tcw-app-frame.is-sidebar-collapsed .tcw-sidebar{grid-template-rows:var(--tcw-topbar-height) minmax(0,1fr) 54px}.tcw-app-frame.is-sidebar-collapsed .tcw-brand{grid-template-columns:1fr;justify-items:center;padding-inline:8px}.tcw-app-frame.is-sidebar-collapsed .tcw-brand strong,.tcw-app-frame.is-sidebar-collapsed .tcw-nav-item span{display:none}.tcw-app-frame.is-sidebar-collapsed .tcw-navigation{padding-inline:7px}.tcw-app-frame.is-sidebar-collapsed .tcw-nav-item{grid-template-columns:1fr;justify-items:center;padding:0}.tcw-app-frame.is-sidebar-collapsed .tcw-sidebar-toggle{justify-content:center;padding:0}.tcw-app-frame.is-sidebar-collapsed .tcw-sidebar-toggle span{display:none}.tcw-main{min-width:0;height:100%;overflow-y:auto;scrollbar-gutter:stable}.tcw-topbar{display:flex;align-items:center;justify-content:space-between;min-height:var(--tcw-topbar-height);padding:0 55px;border-bottom:1px solid #e7ebf1;background:#fff}.tcw-breadcrumbs{display:flex;align-items:center;gap:6px;min-width:0;color:var(--tcw-muted)}.tcw-breadcrumbs button{padding:3px 0;border:0;color:var(--tcw-muted);background:transparent}.tcw-breadcrumbs button:hover{color:var(--tcw-primary)}.tcw-breadcrumbs span[aria-current=page]{color:#131923;font-size:20px;font-weight:650}.tcw-icon-button{display:inline-grid;width:34px;height:34px;place-items:center;border:1px solid transparent;border-radius:4px;color:#5d6b7f;background:transparent;font-size:20px}.tcw-icon-button:hover{border-color:var(--tcw-border);background:var(--tcw-surface)}.tcw-content{padding:28px 18px 24px}.tcw-page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin:0 10px 20px 39px}.tcw-page-heading h1{margin:0;font-size:32px;line-height:1.25}.tcw-page-heading p{margin:7px 0 0;color:var(--tcw-muted);font-size:16px;line-height:1.5}.tcw-page-commands{display:flex;flex-wrap:nowrap;gap:8px;justify-content:flex-end;overflow-x:auto}.tcw-page-commands .tcw-button{min-height:48px;padding-inline:20px;font-size:16px}.tcw-page-home .tcw-content{padding:16px 5px 15px}.tcw-page-home .tcw-page-heading{display:none}.tcw-page-home .tcw-topbar{padding-inline:46px}.tcw-page-home .tcw-topbar .tcw-icon-button{visibility:hidden}.tcw-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tcw-control-height);padding:0 15px;border:1px solid var(--tcw-border);border-radius:4px;white-space:nowrap}.tcw-button--primary{border-color:var(--tcw-primary);color:#fff;background:var(--tcw-primary)}.tcw-button--primary:hover{border-color:var(--tcw-primary-hover);background:var(--tcw-primary-hover)}.tcw-button--secondary{color:#455266;background:var(--tcw-surface)}.tcw-button--secondary:hover{border-color:#aeb9c7;background:#f8fafc}.tcw-button--danger{border-color:var(--tcw-danger);color:#fff;background:var(--tcw-danger)}.tcw-filter-panel{margin-bottom:10px;padding:12px 14px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr)) auto;gap:10px 12px;align-items:end}.tcw-filter-control{display:grid;min-width:0;gap:5px}.tcw-filter-control>span{color:#344054;font-size:13px;font-weight:650}.tcw-filter-control input,.tcw-filter-control select,.tcw-form-field input,.tcw-form-field select,.tcw-form-field textarea{width:100%;height:var(--tcw-control-height);min-width:0;padding:0 11px;border:1px solid #cbd4e0;border-radius:4px;outline:none;color:var(--tcw-text);background:#fff}.tcw-filter-control input:focus,.tcw-filter-control select:focus,.tcw-form-field input:focus,.tcw-form-field select:focus,.tcw-form-field textarea:focus{border-color:var(--tcw-primary);box-shadow:0 0 0 2px #1769c21a}.tcw-filter-control--range>div{display:grid;grid-template-columns:minmax(110px,1fr) auto minmax(110px,1fr);align-items:center;gap:6px}.tcw-filter-control--range em{color:var(--tcw-muted);font-style:normal}.tcw-filter-actions{display:flex;gap:8px}.tcw-notice{display:flex;align-items:flex-start;gap:9px;min-height:40px;margin-bottom:14px;padding:10px 13px;border:1px solid;border-radius:4px;line-height:1.5}.tcw-notice i{margin-top:1px;font-size:17px}.tcw-notice--info{border-color:#bcd6f2;color:#285c91;background:#f0f7ff}.tcw-notice--risk{border-color:#efbaba;color:#9e3030;background:var(--tcw-danger-soft)}.tcw-context-bar{display:flex;align-items:center;gap:14px;min-height:48px;margin-bottom:10px;padding:8px 12px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-context-bar span{min-width:0;overflow:hidden;color:var(--tcw-muted);text-overflow:ellipsis;white-space:nowrap}.tcw-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin-bottom:10px}.tcw-metric-grid article{display:grid;align-content:center;gap:4px;min-height:82px;padding:11px 14px;border:1px solid var(--tcw-border);border-left:3px solid var(--tcw-primary);border-radius:5px;background:var(--tcw-surface)}.tcw-metric-grid article span,.tcw-metric-grid article small{color:var(--tcw-muted)}.tcw-metric-grid article strong{overflow:hidden;font-size:20px;text-overflow:ellipsis;white-space:nowrap}.tcw-sales-top{margin-bottom:10px;padding:11px 13px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-sales-top ol{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:10px 0 0;padding:0;list-style:none}.tcw-sales-top li{display:grid;min-width:0;gap:4px;padding-left:10px;border-left:2px solid var(--tcw-primary)}.tcw-sales-top li span{overflow:hidden;color:var(--tcw-muted);text-overflow:ellipsis;white-space:nowrap}.tcw-sales-top li b{font-size:13px}.tcw-sales-top small{display:block;margin-top:9px;color:var(--tcw-muted)}.tcw-preflight-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 14px}.tcw-preflight-summary>div{padding:10px 12px;border:1px solid var(--tcw-border-soft);background:#f8fafc}.tcw-preflight-summary dt{color:var(--tcw-muted);font-size:12px}.tcw-preflight-summary dd{margin:5px 0 0;font-weight:700}.tcw-tag-list{display:flex;gap:5px}.tcw-tag{display:inline-flex;min-height:23px;align-items:center;padding:2px 7px;border:1px solid #b8c7d9;border-radius:3px;color:#40536b;background:#f5f8fb;font-size:12px;white-space:nowrap}.tcw-tag--warning{border-color:#e7c786;color:#94610d;background:#fff8e8}.tcw-tag--danger{border-color:#efbaba;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-excel-editor{position:fixed;inset:0;z-index:1200;display:flex;flex-direction:column;background:#fff}.tcw-excel-editor>header{display:flex;flex:0 0 62px;align-items:center;justify-content:space-between;gap:20px;padding:0 20px;border-bottom:1px solid var(--tcw-border)}.tcw-excel-editor>header>div{display:flex;gap:8px}.tcw-editor-error{padding:10px 16px;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-excel-editor-canvas{flex:1 1 0;min-width:0;min-height:0}.tcw-grid-section{border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface);overflow:hidden}.tcw-table-scroll{width:100%;overflow-x:auto}.tcw-data-table{width:100%;min-width:920px;border-spacing:0;border-collapse:separate;font-size:13px}.tcw-data-table th,.tcw-data-table td{padding:7px 11px;border-bottom:1px solid var(--tcw-border-soft);text-align:left;vertical-align:middle;white-space:nowrap}.tcw-data-table th{height:48px;color:#435066;background:#f6f8fb;font-weight:650}.tcw-data-table td{height:46px}.tcw-data-table tbody tr:hover td{background:#fafcff}.tcw-data-table tbody tr:last-child td{border-bottom:0}.tcw-data-table .action-column{position:sticky;right:0;z-index:2;overflow:hidden;background:var(--tcw-surface);box-shadow:-5px 0 9px #2030470f}.tcw-data-table th.action-column{z-index:3;background:#f6f8fb}.tcw-row-actions{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;min-width:max-content;white-space:nowrap}.tcw-row-actions button{padding:2px 3px;border:0;color:var(--tcw-primary);background:transparent;white-space:nowrap}.tcw-row-actions button.is-danger{color:var(--tcw-danger)}.tcw-table-link{display:block;max-width:100%;overflow:hidden;padding:0;border:0;color:var(--tcw-primary);background:transparent;text-align:left;text-overflow:ellipsis;white-space:nowrap}.tcw-table-link:hover{text-decoration:underline}.tcw-grid-cell-text{min-width:0}.tcw-ellipsis{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcw-ellipsis>*,.tcw-ellipsis .tcw-row-actions{min-width:0;max-width:100%}.tcw-ellipsis button{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcw-ellipsis .tcw-tag-list{min-width:0;max-width:100%;overflow:hidden;flex-wrap:nowrap}.tcw-ellipsis .tcw-tag{min-width:0;overflow:hidden;text-overflow:ellipsis}.tcw-align-center{text-align:center!important}.tcw-align-right{text-align:right!important}.tcw-empty-row td{height:180px;color:var(--tcw-muted);text-align:center}.tcw-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:10px 18px;border-top:1px solid var(--tcw-border-soft);color:var(--tcw-muted)}.tcw-pagination>div{display:flex;align-items:center;gap:7px}.tcw-pagination-pages{display:flex;align-items:center;gap:4px}.tcw-pagination button{min-height:28px;padding:0 8px;border:1px solid var(--tcw-border);border-radius:3px;color:#46546a;background:#fff}.tcw-pagination button:disabled{cursor:default;opacity:.55}.tcw-pagination-page-button{min-width:30px;justify-content:center;padding-inline:6px!important}.tcw-pagination-page-button[aria-current=page]{border-color:var(--tcw-primary);color:var(--tcw-primary);background:var(--tcw-primary-soft);opacity:1}.tcw-pagination-page-button i{font-size:10px}.tcw-pagination-ellipsis{display:inline-grid;min-width:22px;place-items:center;color:#667085}.tcw-pagination select{min-height:30px;border:1px solid var(--tcw-border);border-radius:3px;color:#46546a;background:#fff}.tcw-modal-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:#00000085}.tcw-modal{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(576px,calc(100vw - 40px));max-height:calc(100vh - 40px);overflow:hidden;border-radius:8px;background:var(--tcw-surface);box-shadow:0 12px 32px #0f172a38}.tcw-modal--wide{width:min(1120px,calc(100vw - 40px))}.tcw-modal--full{width:calc(100vw - 24px);height:calc(100vh - 24px);max-height:none}.tcw-modal>header,.tcw-modal>footer{display:flex;align-items:center;justify-content:space-between;min-height:58px;padding:12px 18px;border-bottom:1px solid var(--tcw-border)}.tcw-modal>footer{justify-content:flex-end;gap:9px;border-top:1px solid var(--tcw-border);border-bottom:0}.tcw-modal h2{margin:0;font-size:20px}.tcw-modal-body{min-height:0;padding:18px;overflow:auto}.tcw-field-grid{display:grid;gap:15px 16px}.tcw-field-grid--1{grid-template-columns:1fr}.tcw-field-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.tcw-field-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.tcw-form-field{display:grid;gap:7px;min-width:0}.tcw-form-field>span{color:#344054;font-size:13px;font-weight:650}.tcw-form-field b{margin-right:3px;color:var(--tcw-danger)}.tcw-form-field textarea{height:auto;min-height:96px;padding:9px 11px;resize:vertical}.tcw-form-field small{color:var(--tcw-muted)}.tcw-form-field--full{grid-column:1 / -1}.tcw-review-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;min-height:520px}.tcw-review-split>section{min-width:0;padding:0 20px}.tcw-review-split>section:first-child{padding-left:0;border-right:1px solid var(--tcw-border)}.tcw-review-split>section:last-child{padding-right:0}.tcw-review-split h3{margin:0 0 14px;font-size:15px}.tcw-upload-zone{display:grid;min-height:220px;place-items:center;align-content:center;gap:9px;padding:30px;border:1px dashed #98abc1;border-radius:4px;color:#43546b;background:#f7faff;text-align:center}.tcw-upload-zone>i{color:var(--tcw-primary);font-size:38px}.tcw-upload-zone>span{color:var(--tcw-muted);font-size:12px}.tcw-upload-zone input{position:absolute;width:1px;height:1px;opacity:0}.tcw-upload-zone.is-disabled{opacity:.6;cursor:not-allowed}.tcw-confirm-message{display:flex;align-items:flex-start;gap:13px;padding:8px 2px;line-height:1.7}.tcw-confirm-message>i{color:var(--tcw-primary);font-size:27px}.tcw-confirm-message p{margin:2px 0 0}.tcw-confirm-message.is-danger>i{color:var(--tcw-danger)}.tcw-loading-blocker{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;gap:12px;background:#ffffffc7}.tcw-spinner{width:24px;height:24px;border:3px solid #cbd8e7;border-top-color:var(--tcw-primary);border-radius:50%;animation:tcw-spin .75s linear infinite}@keyframes tcw-spin{to{transform:rotate(360deg)}}.tcw-toast-stack{position:fixed;z-index:1300;top:22px;right:24px;display:grid;gap:10px;width:min(420px,calc(100vw - 32px));pointer-events:none}.tcw-toast{position:fixed;z-index:1300;top:22px;right:24px;display:flex;align-items:center;gap:9px;width:min(420px,calc(100vw - 32px));padding:11px 14px;border:1px solid;border-radius:4px;background:#fff;box-shadow:0 8px 28px #14233729;pointer-events:auto}.tcw-toast-stack .tcw-toast{position:static;z-index:auto;width:100%}.tcw-toast>span{min-width:0;flex:1;overflow-wrap:anywhere}.tcw-toast--success{border-color:#add6bf;color:var(--tcw-success);background:#f0faf4}.tcw-toast--info{border-color:#bcd6f2;color:#285c91;background:#f0f7ff}.tcw-toast--warning{border-color:#e7c786;color:var(--tcw-warning);background:#fff8e8}.tcw-toast--error{border-color:#efbaba;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-toast button{display:grid;flex:0 0 auto;place-items:center;padding:0;border:0;color:inherit;background:transparent}.tcw-page-placeholder{min-height:320px}.tcw-placeholder-body{min-height:240px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}@media(max-width:1180px){.tcw-filter-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}.tcw-filter-actions{align-self:end}}@media(max-width:900px){.tcw-metric-grid,.tcw-sales-top ol{grid-template-columns:1fr 1fr}.tcw-context-bar{align-items:flex-start;flex-direction:column;gap:6px}.tcw-topbar{margin-inline:14px}.tcw-content{padding:16px 14px}.tcw-page-heading{flex-direction:column}.tcw-page-commands{width:100%;justify-content:flex-start}.tcw-filter-grid,.tcw-field-grid--2,.tcw-field-grid--3,.tcw-review-split{grid-template-columns:1fr}.tcw-review-split>section{padding:18px 0}.tcw-review-split>section:first-child{padding-top:0;border-right:0;border-bottom:1px solid var(--tcw-border)}.tcw-pagination{align-items:flex-start;flex-direction:column}.tcw-modal-backdrop{padding:6px}.tcw-modal,.tcw-modal--wide{width:calc(100vw - 12px);max-height:calc(100vh - 12px)}}@media(max-width:420px){.tcw-filter-control--range>div{grid-template-columns:1fr}.tcw-filter-control--range em{text-align:center}.tcw-pagination>div{flex-wrap:wrap;max-width:100%}}.tcw-home-page{min-width:0}.tcw-home-section{min-width:0;min-height:calc(100vh - 95px);padding:20px 20px 18px;border:1px solid #edf0f5;border-radius:10px;background:var(--tcw-surface);box-shadow:0 2px 12px #1f2f460a}.tcw-home-section-title{display:flex;align-items:center;gap:10px;margin:0 0 20px;color:#10151e;font-size:20px;line-height:1.35}.tcw-home-section-title>i{color:#ef2340;font-size:29px;font-weight:400}.tcw-home-risk-matrix{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));min-height:449px;padding:4px 8px;border:1px solid #ffdadd;border-radius:9px;background:#fff7f7}.tcw-home-risk-item{min-width:0;min-height:218px;padding:20px 18px 12px}.tcw-home-risk-heading{display:flex;align-items:center;gap:12px;color:#dc101c}.tcw-home-risk-heading>i{flex:0 0 auto;font-size:33px}.tcw-home-risk-heading h3{min-width:0;margin:0;overflow-wrap:anywhere;font-size:15px;line-height:1.45}.tcw-home-risk-item>p{margin:14px 0 0;color:#202631;font-size:13px;line-height:1.85;overflow-wrap:anywhere}.tcw-home-workflow-heading{display:flex;align-items:baseline;gap:24px;margin:27px 0 28px}.tcw-home-workflow-heading .tcw-home-section-title{margin:0}.tcw-home-workflow-heading>p{margin:0;color:#7c8492;font-size:14px}.tcw-home-workflow{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-areas:"step-1 step-2 step-3 step-4 step-5 step-6 step-7 step-8";gap:22px;padding:0 0 25px}.tcw-home-workflow-step{--tcw-home-tone: #0878f9;position:relative;display:grid;align-content:start;justify-items:center;min-width:0;min-height:223px;padding:32px 9px 13px;border:1px solid #d7e7fb;border-radius:7px;color:var(--tcw-home-tone);text-align:center}.tcw-home-workflow-step>i:not(.tcw-home-workflow-connector){margin:4px 0 18px;font-size:45px}.tcw-home-workflow-step h3{display:grid;justify-items:center;margin:0;font-size:14px;line-height:1.55}.tcw-home-step-title-line{display:block;max-width:100%;white-space:nowrap}.tcw-home-workflow-step p{margin:13px 0 0;color:#4b5565;font-size:12px;line-height:1.65;overflow-wrap:anywhere}.tcw-home-step-number{position:absolute;top:-13px;left:50%;display:grid;width:27px;height:27px;place-items:center;border:2px solid #fff;border-radius:50%;color:#fff;background:var(--tcw-home-tone);font-size:13px;transform:translate(-50%)}.tcw-home-workflow-step--green{--tcw-home-tone: #14945a;border-color:#d8ebe2}.tcw-home-workflow-step--violet{--tcw-home-tone: #6745ba;border-color:#e2daf3}.tcw-home-workflow-step--orange{--tcw-home-tone: #f0780b;border-color:#f8dfcd}.tcw-home-workflow-connector{position:absolute;color:#111923;font-size:21px}.tcw-home-workflow-connector[data-desktop-direction=right]{inset:50% -23px auto auto;transform:translateY(-50%)}.tcw-home-workflow-connector[data-desktop-direction=down]{inset:auto 50% -28px auto;transform:translate(50%) rotate(90deg)}.tcw-home-workflow-connector[data-desktop-direction=left]{inset:50% auto auto -31px;transform:translateY(-50%) rotate(180deg)}.tcw-home-footer-notice{display:flex;min-height:47px;align-items:center;gap:10px;padding:8px 14px;border:1px solid #cfe3ff;border-radius:6px;color:#344054;background:#f7fbff;font-size:13px}.tcw-home-footer-notice i{color:#0878f9;font-size:18px}@media(max-width:1180px){.tcw-home-workflow{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-areas:"step-1 step-2 step-3 step-4" "step-8 step-7 step-6 step-5";gap:32px 40px}.tcw-home-risk-matrix{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.tcw-home-workflow{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"step-1 step-2" "step-4 step-3" "step-5 step-6" "step-8 step-7"}.tcw-home-workflow-connector[data-tablet-direction=right]{inset:50% -31px auto auto;transform:translateY(-50%)}.tcw-home-workflow-connector[data-tablet-direction=down]{inset:auto 50% -28px auto;transform:translate(50%) rotate(90deg)}.tcw-home-workflow-connector[data-tablet-direction=left]{inset:50% auto auto -31px;transform:translateY(-50%) rotate(180deg)}}@media(max-width:620px){.tcw-home-page{gap:16px}.tcw-home-section{padding:17px 14px}.tcw-home-risk-matrix{grid-template-columns:1fr}.tcw-home-risk-item{min-height:0}.tcw-home-workflow-heading{display:block}.tcw-home-workflow-heading>p{margin-top:7px}.tcw-home-workflow{grid-template-columns:1fr;grid-template-areas:"step-1" "step-2" "step-3" "step-4" "step-5" "step-6" "step-7" "step-8"}.tcw-home-workflow-connector[data-mobile-direction=down]{inset:auto 50% -28px auto;transform:translate(50%) rotate(90deg)}}.tcw-catalog-import-failure{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;border:1px solid #efbaba;border-left:4px solid var(--tcw-danger);border-radius:5px;color:#8f2929;background:var(--tcw-danger-soft)}.tcw-catalog-import-failure p{margin:5px 0 0;line-height:1.6}.tcw-catalog-issue-toolbar{display:inline-flex;margin-bottom:14px;border:1px solid var(--tcw-border);border-radius:4px;overflow:hidden}.tcw-catalog-issue-toolbar button{min-width:88px;min-height:34px;padding:0 14px;border:0;border-right:1px solid var(--tcw-border);color:#455266;background:#fff}.tcw-catalog-issue-toolbar button:last-child{border-right:0}.tcw-catalog-issue-toolbar button.is-active{color:#fff;background:var(--tcw-primary)}.tcw-catalog-issue-toolbar button:disabled{cursor:not-allowed;opacity:.55}.tcw-catalog-issue-status{margin:0;padding:24px;color:var(--tcw-muted);text-align:center}.tcw-catalog-issue-error{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #efbaba;border-radius:4px;color:var(--tcw-danger);background:var(--tcw-danger-soft)}@media(max-width:620px){.tcw-catalog-import-failure{align-items:stretch;flex-direction:column}}.tcw-procurement-page{display:grid;gap:10px;min-width:0}.tcw-procurement-toolbar{display:flex;justify-content:flex-end;min-height:36px}.tcw-procurement-file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.tcw-procurement-import-failure{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border:1px solid #efb4b4;border-radius:4px;color:#9d2929;background:#fff4f4}.tcw-procurement-link{padding:2px 0;border:0;color:var(--tcw-primary);background:transparent}.tcw-procurement-status{display:inline-flex;min-height:25px;align-items:center;padding:2px 8px;border-radius:3px;font-size:12px;font-weight:650}.tcw-procurement-status--success{color:#167849;background:#e8f7ef}.tcw-procurement-status--warning{color:#9b6300;background:#fff3d6}.tcw-procurement-status--danger{color:#b52b2b;background:#fdeaea}.tcw-procurement-status--muted{color:#526174;background:#edf1f5}.tcw-procurement-context{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr)) auto;gap:0;align-items:stretch;overflow:hidden;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-procurement-context>div:not(.tcw-procurement-context-actions){display:grid;align-content:center;gap:5px;min-height:68px;padding:10px 14px;border-right:1px solid var(--tcw-border-soft)}.tcw-procurement-context span{color:var(--tcw-muted);font-size:12px}.tcw-procurement-context strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.tcw-procurement-context-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 12px}.tcw-procurement-metrics{display:grid;grid-template-columns:repeat(4,minmax(130px,.8fr)) minmax(260px,1.5fr);gap:10px}.tcw-procurement-metrics>div{display:grid;align-content:center;min-height:88px;padding:12px 14px;border:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-procurement-metrics>div>span{color:var(--tcw-muted);font-size:13px}.tcw-procurement-metrics>div>strong{margin-top:6px;font-size:21px;font-weight:700}.tcw-procurement-top ol{display:grid;gap:5px;margin:9px 0 0;padding:0;list-style:none;counter-reset:procurement-top}.tcw-procurement-top li{display:flex;justify-content:space-between;gap:12px;min-width:0;counter-increment:procurement-top}.tcw-procurement-top li:before{display:inline-grid;flex:0 0 18px;width:18px;height:18px;place-items:center;border-radius:50%;color:#fff;background:var(--tcw-primary);font-size:10px;content:counter(procurement-top)}.tcw-procurement-top li span{flex:1 1 auto;min-width:0;overflow:hidden;color:var(--tcw-text);text-overflow:ellipsis;white-space:nowrap}.tcw-procurement-top li strong{flex:0 0 auto;font-size:12px}.tcw-procurement-top small{display:block;margin-top:16px;color:var(--tcw-muted)}.tcw-procurement-audit-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:18px;padding:13px 15px;border:1px solid var(--tcw-border-soft);background:#f8fafc}.tcw-procurement-source-label{display:inline-flex;margin-bottom:15px;padding:5px 9px;border:1px solid var(--tcw-border);border-radius:3px;color:var(--tcw-muted);background:#f8fafc;font-size:12px}.tcw-procurement-inline-field{display:grid;grid-template-columns:minmax(0,1fr) auto}.tcw-procurement-inline-field input{border-radius:4px 0 0 4px}.tcw-procurement-inline-field button{border-left:0;border-radius:0 4px 4px 0}.tcw-procurement-review-editor{display:grid;gap:20px}.tcw-procurement-review-section{min-width:0;padding-bottom:20px;border-bottom:1px solid var(--tcw-border)}.tcw-procurement-review-section:last-child{padding-bottom:0;border-bottom:0}.tcw-procurement-review-section>h3{margin:0 0 14px;font-size:16px}.tcw-procurement-review-lines{display:grid;gap:14px}.tcw-procurement-review-line{padding:15px;border:1px solid var(--tcw-border);border-radius:5px;background:#fbfcfe}.tcw-procurement-review-line h4{display:flex;align-items:center;gap:9px;margin:0 0 14px;font-size:14px}.tcw-procurement-source{display:grid;grid-template-rows:auto minmax(420px,1fr);gap:12px;height:100%}.tcw-procurement-source iframe,.tcw-procurement-source pre{width:100%;min-height:520px;margin:0;border:1px solid var(--tcw-border);background:#f7f8fa}.tcw-procurement-source iframe{height:100%}.tcw-procurement-source pre{padding:18px;overflow:auto;white-space:pre-wrap}.tcw-procurement-checkbox{display:flex;align-items:center;gap:8px;min-height:var(--tcw-control-height)}.tcw-procurement-checkbox input{width:16px;height:16px}.tcw-procurement-delete-summary{display:grid;gap:8px;width:100%}.tcw-procurement-delete-summary>strong{font-size:15px}.tcw-procurement-delete-summary>span{color:#4d5b70}.tcw-procurement-delete-summary>b{margin-top:5px;padding:10px;color:#9e3030;background:var(--tcw-danger-soft);line-height:1.6}@media(max-width:1320px){.tcw-procurement-context{grid-template-columns:repeat(2,minmax(160px,1fr))}.tcw-procurement-context-actions{grid-column:1 / -1;border-top:1px solid var(--tcw-border-soft)}.tcw-procurement-metrics{grid-template-columns:repeat(2,minmax(160px,1fr))}.tcw-procurement-top{grid-column:1 / -1}}@media(max-width:760px){.tcw-procurement-toolbar{justify-content:flex-start}.tcw-procurement-context,.tcw-procurement-metrics{grid-template-columns:1fr}.tcw-procurement-context-actions,.tcw-procurement-top{grid-column:auto}.tcw-procurement-context-actions{align-items:stretch;flex-direction:column}.tcw-procurement-context>div:not(.tcw-procurement-context-actions){border-right:0;border-bottom:1px solid var(--tcw-border-soft)}.tcw-procurement-inline-field{grid-template-columns:1fr;gap:7px}.tcw-procurement-inline-field input,.tcw-procurement-inline-field button{border:1px solid var(--tcw-border);border-radius:4px}}.tcw-contract-page{min-width:0}.tcw-contract-page .tcw-modal--wide{width:min(1040px,calc(100vw - 64px));max-height:min(820px,calc(100vh - 64px))}.tcw-contract-toolbar{display:flex;justify-content:flex-end;margin-bottom:10px}.tcw-contract-customer-code{display:block;margin-top:3px;color:var(--tcw-muted);font-weight:400}.tcw-contract-import-status,.tcw-contract-page-error,.tcw-contract-dialog-error{margin:0 0 14px;padding:12px 14px;border:1px solid #bcd6f2;border-radius:4px;color:#285c91;background:#f0f7ff}.tcw-contract-page-error,.tcw-contract-dialog-error{border-color:#efbaba;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-contract-selected-file{margin:14px 0 0}.tcw-contract-review-header{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(0,1.8fr) auto auto;align-items:end;gap:12px;padding:12px 14px;border:1px solid var(--tcw-border);border-radius:5px;background:#f8fafc}.tcw-contract-summary-customer{display:grid;align-self:stretch;align-content:center;min-width:0;padding-right:12px;border-right:1px solid var(--tcw-border-soft)}.tcw-contract-summary-customer span,.tcw-contract-summary-customer small{color:var(--tcw-muted);font-size:12px}.tcw-contract-summary-customer strong{margin:5px 0 2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcw-contract-customer-master{margin-top:14px;border:1px solid var(--tcw-border);border-radius:5px}.tcw-contract-customer-master summary{padding:13px 15px;cursor:pointer;font-weight:650}.tcw-contract-customer-master>.tcw-field-grid{padding:2px 15px 16px}.tcw-contract-review-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:50px;margin-top:10px}.tcw-contract-review-layout{display:grid;grid-template-columns:156px minmax(320px,.95fr) minmax(360px,1.05fr);min-height:480px;border:1px solid var(--tcw-border);border-radius:5px;overflow:hidden}.tcw-contract-clause-tabs{padding:10px 0;border-right:1px solid var(--tcw-border);background:#f8fafc}.tcw-contract-clause-tabs button{display:grid;width:100%;min-height:58px;align-content:center;gap:3px;padding:8px 16px;border:0;border-left:3px solid transparent;color:#3e4b60;background:transparent;text-align:left}.tcw-contract-clause-tabs button.is-active{border-left-color:var(--tcw-primary);color:var(--tcw-primary);background:var(--tcw-primary-soft);font-weight:650}.tcw-contract-clause-tabs small{color:var(--tcw-muted);font-size:11px;font-weight:400}.tcw-contract-clause-editor,.tcw-contract-source-preview{min-width:0;padding:18px}.tcw-contract-clause-editor{display:grid;align-content:start;gap:15px;border-right:1px solid var(--tcw-border)}.tcw-contract-clause-editor>h3,.tcw-contract-source-preview>h3{margin:0 0 2px;font-size:15px}.tcw-contract-clause-status{max-width:148px}.tcw-contract-analysis{padding:14px;border:1px solid var(--tcw-border);border-left:3px solid var(--tcw-primary);background:#f8fafc}.tcw-contract-analysis h4{margin:0 0 12px;font-size:14px}.tcw-contract-analysis dl{margin:12px 0 0}.tcw-contract-analysis dt{margin-top:10px;color:var(--tcw-muted);font-size:12px;font-weight:650}.tcw-contract-analysis dd{margin:4px 0 0;line-height:1.65;white-space:normal}.tcw-contract-source-preview{display:grid;grid-template-rows:auto minmax(0,1fr);background:#f3f5f8}.tcw-contract-source-preview iframe{width:100%;min-height:430px;border:1px solid var(--tcw-border);background:#fff}.tcw-contract-source-preview pre{min-height:430px;margin:0;padding:18px;overflow:auto;border:1px solid var(--tcw-border);background:#fff;font:inherit;line-height:1.7;white-space:pre-wrap}.tcw-contract-preview-unavailable{display:grid;min-height:430px;place-items:center;align-content:center;padding:30px;border:1px dashed #aab6c5;color:var(--tcw-muted);background:#fff;text-align:center}.tcw-contract-preview-unavailable i{font-size:38px}.tcw-contract-preview-unavailable p{margin:12px 0 5px;color:#46546a}.tcw-contract-risk,.tcw-contract-sanction{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border:1px solid;border-radius:3px;font-size:12px;white-space:nowrap}.tcw-contract-risk--high,.tcw-contract-sanction--hit{border-color:#efbaba;color:var(--tcw-danger);background:var(--tcw-danger-soft)}.tcw-contract-risk--medium,.tcw-contract-sanction--unchecked{border-color:#e7c786;color:#9b650e;background:#fff8e8}.tcw-contract-risk--low,.tcw-contract-sanction--clear{border-color:#add6bf;color:var(--tcw-success);background:#f0faf4}@media(max-width:1180px){.tcw-contract-review-header{grid-template-columns:minmax(150px,.6fr) minmax(0,1.4fr) auto auto}.tcw-contract-review-layout{grid-template-columns:150px minmax(340px,1fr)}.tcw-contract-source-preview{grid-column:1 / -1;border-top:1px solid var(--tcw-border)}}@media(max-width:760px){.tcw-contract-page .tcw-modal--wide{width:calc(100vw - 12px);max-height:calc(100vh - 12px)}.tcw-contract-review-header{grid-template-columns:1fr;align-items:start}.tcw-contract-review-layout{grid-template-columns:1fr}.tcw-contract-clause-tabs{display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--tcw-border)}.tcw-contract-clause-tabs button{flex:0 0 128px;border-bottom:3px solid transparent;border-left:0}.tcw-contract-clause-tabs button.is-active{border-bottom-color:var(--tcw-primary);border-left:0}.tcw-contract-clause-editor{border-right:0}.tcw-contract-source-preview{grid-column:auto}}.tcw-analytics-page{display:grid;min-width:0;gap:10px}.tcw-page-tabs{display:flex;min-height:38px;gap:20px;border-bottom:1px solid var(--tcw-border)}.tcw-page-tabs button{position:relative;padding:0 3px 10px;border:0;color:var(--tcw-muted);background:transparent;font-size:14px;font-weight:650}.tcw-page-tabs button[aria-selected=true]{color:var(--tcw-primary)}.tcw-page-tabs button[aria-selected=true]:after{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:var(--tcw-primary);content:""}.tcw-analytics-year{color:var(--tcw-muted);font-size:12px;font-weight:650}.tcw-analytics-toolbar{display:flex;min-width:0;min-height:36px;align-items:center;gap:14px}.tcw-analytics-toolbar>.tcw-button{margin-left:auto}.tcw-segmented-control{display:inline-flex;flex:0 0 auto;overflow:hidden;border:1px solid var(--tcw-border);border-radius:4px}.tcw-segmented-control button{min-width:90px;min-height:34px;padding:0 13px;border:0;border-right:1px solid var(--tcw-border);color:#4b586b;background:#fff}.tcw-segmented-control button:last-child{border-right:0}.tcw-segmented-control button[aria-pressed=true]{color:var(--tcw-primary);background:var(--tcw-primary-soft);font-weight:650}.tcw-analytics-switches{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.tcw-toggle{display:inline-flex;min-height:32px;align-items:center;gap:7px;color:#46546a;font-size:13px}.tcw-toggle input{width:16px;height:16px;margin:0;accent-color:var(--tcw-primary)}.tcw-inline-loading{display:flex;min-height:42px;align-items:center;justify-content:center;gap:9px;border:1px solid #bcd6f2;color:#285c91;background:#f0f7ff}.tcw-analytics-page .tcw-metric-grid{display:grid;grid-template-columns:repeat(5,minmax(145px,1fr));gap:10px;min-width:0;margin-bottom:0;overflow-x:auto}.tcw-analytics-page .tcw-metric-grid article{display:grid;min-width:145px;min-height:82px;align-content:center;gap:6px;padding:10px 13px;border:1px solid var(--tcw-border);border-left:1px solid var(--tcw-border);border-radius:5px;background:var(--tcw-surface)}.tcw-analytics-page .tcw-metric-grid span{color:var(--tcw-muted);font-size:12px}.tcw-analytics-page .tcw-metric-grid strong{min-width:0;overflow:hidden;color:#202b3c;font-size:19px;text-overflow:ellipsis;white-space:nowrap}.tcw-analytics-page .tcw-sales-top{display:grid;min-width:0;gap:10px;margin-bottom:0;padding:13px 15px;border:0;border-top:1px solid var(--tcw-border);border-bottom:1px solid var(--tcw-border);border-radius:0;background:#fbfcfe}.tcw-analytics-page .tcw-sales-top>strong{font-size:13px}.tcw-analytics-page .tcw-sales-top ol{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:0;margin:0;padding:0;overflow-x:auto;list-style:none;counter-reset:analytics-top}.tcw-analytics-page .tcw-sales-top li{display:grid;min-width:150px;grid-template-columns:22px minmax(0,1fr);gap:2px 7px;padding:4px 13px;border-left:0;border-right:1px solid var(--tcw-border-soft);counter-increment:analytics-top}.tcw-analytics-page .tcw-sales-top li:before{grid-row:1 / 3;align-self:center;color:var(--tcw-primary);font-weight:700;content:counter(analytics-top)}.tcw-analytics-page .tcw-sales-top li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.tcw-analytics-page .tcw-sales-top li b{color:#263448;font-size:12px;font-weight:650}.tcw-analytics-page .tcw-sales-top small{color:var(--tcw-muted)}.tcw-settings-page{display:grid;min-width:0;grid-template-columns:238px minmax(0,1fr);min-height:580px;border:1px solid var(--tcw-border);background:var(--tcw-surface)}.tcw-settings-navigation{padding:8px 0;border-right:1px solid var(--tcw-border);background:#f8fafc}.tcw-settings-navigation button{display:grid;width:100%;min-height:54px;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:8px;padding:8px 14px;border:0;border-left:3px solid transparent;color:#3e4b60;background:transparent;text-align:left}.tcw-settings-navigation button:hover{background:#f0f3f7}.tcw-settings-navigation button.is-active{border-left-color:var(--tcw-primary);color:var(--tcw-primary);background:var(--tcw-primary-soft);font-weight:650}.tcw-settings-navigation i{font-size:17px}.tcw-settings-navigation span{min-width:0;overflow-wrap:anywhere}.tcw-settings-navigation small{display:block;margin-top:3px;overflow:hidden;color:var(--tcw-muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400}.tcw-settings-content{min-width:0;padding:16px 18px 20px}.tcw-settings-panel{display:grid;min-width:0;gap:12px}.tcw-settings-panel>header{display:flex;min-height:40px;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid var(--tcw-border)}.tcw-settings-panel>header>div:first-child{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:8px}.tcw-settings-panel h2{margin:0;font-size:17px}.tcw-settings-panel header small{color:var(--tcw-muted);font-size:11px}.tcw-field-error{display:block;margin-top:5px;color:var(--tcw-danger)}@media(max-width:900px){.tcw-analytics-page .tcw-metric-grid{grid-template-columns:repeat(3,minmax(145px,1fr))}.tcw-settings-page{grid-template-columns:190px minmax(0,1fr)}}@media(max-width:680px){.tcw-analytics-toolbar{align-items:flex-start;flex-direction:column}.tcw-analytics-toolbar>.tcw-button{margin-left:0}.tcw-analytics-page .tcw-metric-grid{grid-template-columns:repeat(2,minmax(145px,1fr))}.tcw-settings-page{grid-template-columns:1fr}.tcw-settings-navigation{display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--tcw-border)}.tcw-settings-navigation button{flex:0 0 155px;border-bottom:2px solid transparent;border-left:0}.tcw-settings-navigation button.is-active{border-bottom-color:var(--tcw-primary);border-left:0}.tcw-settings-content{padding:15px}.tcw-settings-panel>header{align-items:flex-start;flex-direction:column}.tcw-settings-panel .tcw-page-commands{width:100%;flex-wrap:wrap}}
|