livedesk 0.1.63 → 0.1.65
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/bin/livedesk.js +1 -1
- package/hub/src/remote-hub.js +36 -1
- package/hub/src/server.js +9 -0
- package/package.json +2 -2
- package/web/dist/assets/index-Bh1AWooK.css +1 -0
- package/web/dist/assets/index-CGP3dDwQ.js +38 -0
- package/web/dist/index.html +2 -2
- package/web/dist/assets/index-DmsX7itz.js +0 -38
- package/web/dist/assets/index-DpdKbFs8.css +0 -1
package/bin/livedesk.js
CHANGED
|
@@ -55,7 +55,7 @@ Usage:
|
|
|
55
55
|
npx -y livedesk client 3
|
|
56
56
|
|
|
57
57
|
Default flow:
|
|
58
|
-
Opens
|
|
58
|
+
Opens a LiveDesk connection page with Google sign-in or a 6-digit PIN.
|
|
59
59
|
Omit the number for first-available placement, or pass 1-999 to pin a slot.
|
|
60
60
|
|
|
61
61
|
Common options:
|
package/hub/src/remote-hub.js
CHANGED
|
@@ -157,6 +157,10 @@ function safeString(value, maxLength = 200) {
|
|
|
157
157
|
return String(value ?? '').replace(/[\r\n\t]/g, ' ').trim().slice(0, maxLength);
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
function generatePairingPin() {
|
|
161
|
+
return crypto.randomInt(0, 1000000).toString().padStart(6, '0');
|
|
162
|
+
}
|
|
163
|
+
|
|
160
164
|
function normalizeRemoteFrameMode(value, fallback = DEFAULT_REMOTE_FRAME_MODE, { allowUnimplemented = false } = {}) {
|
|
161
165
|
const requested = safeString(value, 80).toLowerCase();
|
|
162
166
|
const fallbackMode = REMOTE_FRAME_MODE_PROFILES[fallback] ? fallback : DEFAULT_REMOTE_FRAME_MODE;
|
|
@@ -1179,6 +1183,10 @@ export function createRemoteHub(options = {}) {
|
|
|
1179
1183
|
const pairToken = safeString(
|
|
1180
1184
|
options.pairToken || env.REMOTE_HUB_PAIR_TOKEN || env.LIVEDESK_CLIENT_PAIR_TOKEN || env.MINDEXEC_REMOTE_PAIR_TOKEN || crypto.randomBytes(6).toString('hex'),
|
|
1181
1185
|
256);
|
|
1186
|
+
let pairingPin = /^\d{6}$/.test(String(options.pairingPin || env.LIVEDESK_PAIRING_PIN || '').trim())
|
|
1187
|
+
? String(options.pairingPin || env.LIVEDESK_PAIRING_PIN).trim()
|
|
1188
|
+
: generatePairingPin();
|
|
1189
|
+
let pairingPinUpdatedAt = new Date().toISOString();
|
|
1182
1190
|
const duplicateDeviceLogThrottleMs = clampNumber(
|
|
1183
1191
|
env.MINDEXEC_REMOTE_DUPLICATE_DEVICE_LOG_MS || env.REMOTE_HUB_DUPLICATE_DEVICE_LOG_MS,
|
|
1184
1192
|
5000,
|
|
@@ -1511,6 +1519,8 @@ export function createRemoteHub(options = {}) {
|
|
|
1511
1519
|
agentEndpointCandidateDetails: routeInfo.candidateDetails,
|
|
1512
1520
|
pairToken: includeSecrets ? pairToken : undefined,
|
|
1513
1521
|
pairTokenPreview: maskToken(pairToken),
|
|
1522
|
+
pairingPin: includeSecrets ? pairingPin : '',
|
|
1523
|
+
pairingPinUpdatedAt,
|
|
1514
1524
|
deviceCount: devices.size,
|
|
1515
1525
|
connectedDeviceCount: connectedDevices,
|
|
1516
1526
|
canvasDeviceListMode: 'all-devices',
|
|
@@ -1532,6 +1542,19 @@ export function createRemoteHub(options = {}) {
|
|
|
1532
1542
|
};
|
|
1533
1543
|
}
|
|
1534
1544
|
|
|
1545
|
+
function rotatePairingPin() {
|
|
1546
|
+
pairingPin = generatePairingPin();
|
|
1547
|
+
pairingPinUpdatedAt = new Date().toISOString();
|
|
1548
|
+
emitRemoteEvent('RemotePairingPinRotated', null, {
|
|
1549
|
+
pairingPinUpdatedAt
|
|
1550
|
+
});
|
|
1551
|
+
return {
|
|
1552
|
+
ok: true,
|
|
1553
|
+
pairingPin,
|
|
1554
|
+
pairingPinUpdatedAt
|
|
1555
|
+
};
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1535
1558
|
function listDevices(options = {}) {
|
|
1536
1559
|
const serializeOptions = {
|
|
1537
1560
|
includeDataUrl: options.includeDataUrl === true
|
|
@@ -2602,6 +2625,8 @@ export function createRemoteHub(options = {}) {
|
|
|
2602
2625
|
commandId: safeString(message.commandId, 128),
|
|
2603
2626
|
width: Number.isFinite(Number(message.width)) ? Number(message.width) : 0,
|
|
2604
2627
|
height: Number.isFinite(Number(message.height)) ? Number(message.height) : 0,
|
|
2628
|
+
sourceWidth: Number.isFinite(Number(message.sourceWidth)) ? Number(message.sourceWidth) : Number(message.width || 0),
|
|
2629
|
+
sourceHeight: Number.isFinite(Number(message.sourceHeight)) ? Number(message.sourceHeight) : Number(message.height || 0),
|
|
2605
2630
|
mimeType,
|
|
2606
2631
|
format: mimeType,
|
|
2607
2632
|
frameMode: transfer.frameMode,
|
|
@@ -2692,6 +2717,8 @@ export function createRemoteHub(options = {}) {
|
|
|
2692
2717
|
handshake: transfer.handshake,
|
|
2693
2718
|
width: Number.isFinite(Number(message.width)) ? Number(message.width) : Number(device.activeLiveStream.width || 0),
|
|
2694
2719
|
height: Number.isFinite(Number(message.height)) ? Number(message.height) : Number(device.activeLiveStream.height || 0),
|
|
2720
|
+
sourceWidth: Number.isFinite(Number(message.sourceWidth)) ? Number(message.sourceWidth) : Number(device.activeLiveStream.sourceWidth || 0),
|
|
2721
|
+
sourceHeight: Number.isFinite(Number(message.sourceHeight)) ? Number(message.sourceHeight) : Number(device.activeLiveStream.sourceHeight || 0),
|
|
2695
2722
|
monitorIndex: Number.isFinite(Number(message.monitorIndex)) ? normalizeMonitorIndex(message.monitorIndex) : Number(device.activeLiveStream.monitorIndex || 0),
|
|
2696
2723
|
monitorCount: Number.isFinite(Number(message.monitorCount)) ? clampNumber(message.monitorCount, 1, 64, 1) : Number(device.activeLiveStream.monitorCount || 1),
|
|
2697
2724
|
openedFrameSeq: Number.isFinite(Number(message.frameSeq)) ? Number(message.frameSeq) : Number(device.activeLiveStream.openedFrameSeq || 0)
|
|
@@ -2779,6 +2806,8 @@ export function createRemoteHub(options = {}) {
|
|
|
2779
2806
|
commandId,
|
|
2780
2807
|
width: Number.isFinite(Number(message.width)) ? Number(message.width) : 0,
|
|
2781
2808
|
height: Number.isFinite(Number(message.height)) ? Number(message.height) : 0,
|
|
2809
|
+
sourceWidth: Number.isFinite(Number(message.sourceWidth)) ? Number(message.sourceWidth) : Number(message.width || 0),
|
|
2810
|
+
sourceHeight: Number.isFinite(Number(message.sourceHeight)) ? Number(message.sourceHeight) : Number(message.height || 0),
|
|
2782
2811
|
mimeType,
|
|
2783
2812
|
format: mimeType,
|
|
2784
2813
|
mode: transfer.mode,
|
|
@@ -2838,6 +2867,10 @@ export function createRemoteHub(options = {}) {
|
|
|
2838
2867
|
device.activeLiveStream.transferProtocol = transfer.transferProtocol;
|
|
2839
2868
|
device.activeLiveStream.transferProtocolVersion = transfer.transferProtocolVersion;
|
|
2840
2869
|
device.activeLiveStream.handshake = transfer.handshake;
|
|
2870
|
+
device.activeLiveStream.width = device.latestLiveFrame.width;
|
|
2871
|
+
device.activeLiveStream.height = device.latestLiveFrame.height;
|
|
2872
|
+
device.activeLiveStream.sourceWidth = device.latestLiveFrame.sourceWidth;
|
|
2873
|
+
device.activeLiveStream.sourceHeight = device.latestLiveFrame.sourceHeight;
|
|
2841
2874
|
device.activeLiveStream.monitorIndex = device.latestLiveFrame.monitorIndex;
|
|
2842
2875
|
device.activeLiveStream.monitorCount = device.latestLiveFrame.monitorCount;
|
|
2843
2876
|
device.counters.liveFramesReceived += 1;
|
|
@@ -4111,6 +4144,7 @@ export function createRemoteHub(options = {}) {
|
|
|
4111
4144
|
requestAgentTask,
|
|
4112
4145
|
requestAgentTaskBatch,
|
|
4113
4146
|
setHostTarget,
|
|
4147
|
+
rotatePairingPin,
|
|
4114
4148
|
requestThumbnail,
|
|
4115
4149
|
startLiveStream,
|
|
4116
4150
|
stopLiveStream,
|
|
@@ -4121,7 +4155,8 @@ export function createRemoteHub(options = {}) {
|
|
|
4121
4155
|
getFramePayload,
|
|
4122
4156
|
seedSyntheticFleet,
|
|
4123
4157
|
clearSyntheticFleet,
|
|
4124
|
-
getPairToken: () => pairToken
|
|
4158
|
+
getPairToken: () => pairToken,
|
|
4159
|
+
getPairingPin: () => pairingPin
|
|
4125
4160
|
};
|
|
4126
4161
|
}
|
|
4127
4162
|
|
package/hub/src/server.js
CHANGED
|
@@ -395,6 +395,15 @@ app.get('/api/remote/status', (_req, res) => {
|
|
|
395
395
|
});
|
|
396
396
|
});
|
|
397
397
|
|
|
398
|
+
app.post('/api/remote/pairing-pin', (_req, res) => {
|
|
399
|
+
noStore(res);
|
|
400
|
+
try {
|
|
401
|
+
res.json(remoteHub.rotatePairingPin());
|
|
402
|
+
} catch (err) {
|
|
403
|
+
res.status(500).json({ ok: false, error: err instanceof Error ? err.message : String(err) });
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
|
|
398
407
|
app.get('/api/remote/devices', (req, res) => {
|
|
399
408
|
noStore(res);
|
|
400
409
|
const includeDataUrl = /^(1|true|yes|on|data|base64)$/i.test(String(req.query?.includeDataUrl ?? ''));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livedesk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.65",
|
|
4
4
|
"description": "LiveDesk Hub and client launcher",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"node": ">=20"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@livedesk/client": "0.1.
|
|
33
|
+
"@livedesk/client": "0.1.50",
|
|
34
34
|
"cors": "^2.8.5",
|
|
35
35
|
"express": "^4.21.2",
|
|
36
36
|
"ws": "^8.18.3"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#0b0c0e;color:#f7f7f4;letter-spacing:0;font-synthesis:none;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{background:linear-gradient(135deg,#2a303a8a,#0b0c0e00 34%),linear-gradient(180deg,#17191d,#0b0c0e 46%,#08090a)}button,textarea,code{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}h1,h2,p{margin:0}.app-shell{min-height:100vh;display:grid;grid-template-columns:72px minmax(0,1fr);color:#f7f7f4}.tool-rail{position:sticky;top:0;height:100vh;min-height:100vh;max-height:100vh;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:18px;padding:10px 8px;border-right:1px solid rgba(255,255,255,.08);background:#121417e6;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:1300}.rail-brand{width:40px;height:40px;margin:0 auto;display:grid;place-items:center;border-radius:8px;background:#f7f7f4;color:#111214;box-shadow:0 14px 32px #0000006b}.rail-tools,.rail-footer{display:flex;flex-direction:column;align-items:center;gap:8px}.rail-footer{position:relative}.rail-tools{scrollbar-width:none}.rail-tools::-webkit-scrollbar{display:none}.rail-tool{width:56px;min-height:56px;display:grid;place-items:center;gap:4px;border:1px solid transparent;border-radius:8px;background:transparent;color:#a9adb5;padding:7px 4px;transition:background .16s ease,color .16s ease,border-color .16s ease,transform .16s ease}.rail-tool:hover{color:#fff;background:#ffffff14}.rail-tool.active{color:#fff;background:#ffffff1f;border-color:#ffffff24;transform:translateY(-1px)}.rail-tool span{max-width:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:1;font-weight:700}.rail-tool.accent-mint.active svg{color:#5eead4}.rail-tool.accent-blue.active svg{color:#60a5fa}.rail-tool.accent-red.active svg{color:#fb7185}.rail-tool.accent-violet.active svg{color:#a78bfa}.rail-tool.accent-amber.active svg{color:#fbbf24}.rail-tool.accent-green.active svg{color:#34d399}.rail-tool.compact{min-height:48px}.rail-tool.sync-server span{white-space:normal;line-height:1.05}.rail-account{width:56px;min-height:60px;display:grid;place-items:center;gap:5px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:#ffffff14;color:#f7f7f4;padding:6px 4px;transition:background .16s ease,border-color .16s ease,transform .16s ease}.rail-account:hover{background:#ffffff21;border-color:#fff3;transform:translateY(-1px)}.rail-account img,.avatar-fallback{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;overflow:hidden}.rail-account img{object-fit:cover;background:#0b0c0e;box-shadow:0 0 0 2px #2dd4bf7a}.avatar-fallback{background:linear-gradient(145deg,#2dd4bf,#60a5fa);color:#061012;font-size:14px;font-weight:900}.rail-account span:last-child{max-width:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:1;font-weight:800}.rail-account.signed-in{background:#2dd4bf17;border-color:#2dd4bf33}.account-popover{position:fixed;left:78px;bottom:14px;z-index:1400;width:min(304px,calc(100vw - 92px));padding:14px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#121417f5;color:#f7f7f4;box-shadow:0 22px 50px #0000006b}.account-popover-head{display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;align-items:center;margin-bottom:12px}.account-popover-avatar{width:42px;height:42px;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:linear-gradient(145deg,#2dd4bf,#60a5fa);color:#061012;font-weight:900}.account-popover-avatar img{width:100%;height:100%;object-fit:cover}.account-popover-head strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:900}.account-popover-head p{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#a9adb5;font-size:12px;font-weight:700}.account-popover-facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 12px;margin:0 0 13px;padding:11px 0 12px;border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1);font-size:12px}.account-popover-facts dt{color:#a9adb5;font-weight:800}.account-popover-facts dd{margin:0;min-width:0;overflow-wrap:anywhere;color:#fff;font-weight:900;text-align:right}.account-popover-action{width:100%;min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#fff;color:#111827;font-size:12px;font-weight:900;box-shadow:0 12px 26px #00000038}.local-settings-popover{position:fixed;left:78px;bottom:86px;z-index:1400;width:min(328px,calc(100vw - 92px));max-height:min(640px,calc(100vh - 28px));overflow:auto;display:grid;gap:12px;padding:14px;border:1px solid rgba(148,163,184,.28);border-radius:8px;background:linear-gradient(180deg,#fffffff7,#f9fafbf0),#fff;color:#111827;box-shadow:0 24px 58px #0f172a29,0 3px 9px #0f172a14,0 1px #fffffffa inset}.local-settings-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px}.local-settings-head strong{display:block;font-size:14px;font-weight:900}.local-settings-head p{color:#667085;font-size:12px;font-weight:700}.local-setting-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.local-setting-row{display:grid;gap:6px;min-width:0}.local-setting-row span,.local-setting-toggle span{color:#667085;font-size:11px;line-height:1.15;font-weight:900;text-transform:uppercase}.local-setting-row select{width:100%;min-width:0;height:38px;border:1px solid rgba(148,163,184,.32);border-radius:8px;background:#f8fafc;color:#111827;padding:0 10px;font-size:12px;font-weight:800}.local-setting-row select:focus{outline:none;border-color:#60a5fab8;box-shadow:0 0 0 3px #60a5fa24}.local-setting-toggle{min-height:38px;display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;padding:8px 10px;border:1px solid rgba(148,163,184,.24);border-radius:8px;background:#f8fafc}.local-setting-toggle input{width:16px;height:16px;margin:0;accent-color:#60a5fa}.local-settings-summary{display:grid;gap:4px;padding:10px;border:1px solid rgba(96,165,250,.22);border-radius:8px;background:#eff6ffeb}.local-settings-summary span{color:#2563eb;font-size:11px;line-height:1.1;font-weight:900;text-transform:uppercase}.local-settings-summary strong{min-width:0;overflow-wrap:anywhere;color:#111827;font-size:13px;font-weight:900}.local-settings-reset{min-height:36px;border:1px solid rgba(148,163,184,.28);border-radius:8px;background:#fff;color:#111827;font-size:12px;font-weight:900}.local-settings-reset:hover{background:#f8fafc;border-color:#60a5fa5c}.desk-stage{min-width:0;display:flex;flex-direction:column;gap:14px;padding:18px 22px 24px}.topbar{min-height:50px;display:grid;grid-template-columns:minmax(180px,1fr) auto;align-items:center;gap:16px;transition:padding-right .18s ease}.desk-stage.dock-open .topbar{padding-right:calc(var(--dock-width) + 18px)}.brand,.top-actions,.status-item,.deck-actions,.panel-title{display:flex;align-items:center}.brand{gap:10px;min-width:0}.brand-mark{width:36px;height:36px;display:grid;place-items:center;border-radius:8px;background:linear-gradient(145deg,#2dd4bf,#60a5fa);color:#061012;box-shadow:0 16px 34px #2dd4bf2e;flex:0 0 auto}h1{color:#fff;font-size:18px;line-height:1.08;font-weight:800}.brand p{color:#8d939d;font-size:12px;font-weight:700}.top-actions{min-width:0;gap:8px;justify-content:flex-end;justify-self:end}.top-actions .segmented-control{flex:0 0 auto}.icon-button,.text-button{height:36px;border:1px solid rgba(255,255,255,.13);background:#ffffff14;color:#f7f7f4;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:none;transition:background .16s ease,border-color .16s ease,transform .16s ease}.icon-button:hover,.text-button:hover{background:#ffffff21;border-color:#fff3;transform:translateY(-1px)}.icon-button{width:36px;padding:0}.text-button{padding:0 12px;white-space:nowrap;font-size:12px;font-weight:800}.text-button.full{width:100%}.text-button.primary{background:#f7f7f4;border-color:#f7f7f4;color:#0c0d0f}.text-button.primary:hover{background:#fff;border-color:#fff}.text-button.ghost{background:#ffffff0a;border-color:#ffffff1a}.text-button.compact{height:32px;padding:0 10px;font-size:11px}.text-button.active{background:#60a5fa2e;border-color:#60a5fa8c;color:#bfdbfe}.text-button.buy{background:#14b8a6;border-color:#14b8a6;color:#02120f}.notice-band{border:1px solid rgba(251,191,36,.35);background:#fbbf241f;color:#fde68a;border-radius:8px;padding:10px 12px;font-size:13px;font-weight:700}.notice-band.compact{display:grid;gap:8px;padding:9px 10px;font-size:12px}.transfer-bar{position:fixed;left:50%;right:auto;bottom:12px;transform:translate(-50%);z-index:1200;display:grid;grid-template-columns:minmax(120px,1fr) auto;align-items:center;gap:8px;width:min(420px,calc(100vw - 32px));padding:0;border:0;background:transparent;color:#475569;box-shadow:none;pointer-events:none}.transfer-bar-track{position:relative;height:2px;overflow:hidden;border-radius:999px;background:#94a3b847}.transfer-bar-track span{position:absolute;inset:0 auto 0 0;width:0;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#14b8a6);transition:width .18s ease}.transfer-bar p{margin:0;max-width:min(180px,38vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit;font-size:11px;font-weight:650}.transfer-bar.state-failed{color:#b91c1c}.transfer-bar.state-failed .transfer-bar-track span{background:#ef4444}.pricing-page{min-width:0;width:60%;margin:0 auto;display:grid;gap:14px}.pricing-hero{min-width:0;display:grid;grid-template-columns:1fr;gap:14px;align-items:stretch}.pricing-hero-copy,.license-card,.ltd-card,.pricing-panel{min-width:0;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:linear-gradient(180deg,#ffffff0f,#ffffff05),#080a0dbd;box-shadow:inset 0 1px #ffffff12,0 18px 38px #0000003d}.pricing-hero-copy{display:grid;gap:10px;padding:24px;align-content:center;background:linear-gradient(135deg,#14b8a62e,#60a5fa14 52%,#ffffff05),#080a0dc7}.pricing-eyebrow,.plan-badge{width:fit-content;display:inline-flex;align-items:center;gap:7px;color:#5eead4;font-size:11px;font-weight:900;text-transform:uppercase}.pricing-hero-copy h2{color:#fff;font-size:clamp(28px,4vw,52px);line-height:.98;font-weight:950}.pricing-hero-copy p{max-width:680px;color:#aeb5c0;font-size:15px;line-height:1.5;font-weight:700}.license-card{display:grid;gap:8px;padding:18px;align-content:center}.license-card.active{border-color:#2dd4bf70;background:linear-gradient(135deg,#14b8a62e,#ffffff09),#080a0dcc}.license-card span{color:#8d939d;font-size:11px;font-weight:900;text-transform:uppercase}.license-card strong{color:#fff;font-size:24px;font-weight:950}.license-card p{color:#8d939d;font-size:12px;line-height:1.45;font-weight:700}.pricing-grid{min-width:0;display:grid;grid-template-columns:1fr;gap:14px;align-items:stretch}.ltd-card,.pricing-panel{padding:16px}.ltd-card{display:grid;gap:16px;align-content:start;border-color:#14b8a642}.ltd-card.active{border-color:#2dd4bf94}.ltd-card-head{display:grid;gap:7px}.ltd-card-head strong{color:#fff;font-size:58px;line-height:.94;font-weight:950}.ltd-card-head p,.ltd-title span{color:#8d939d;font-size:12px;font-weight:800}.ltd-title{display:grid;gap:5px}.ltd-title h3{margin:0;color:#fff;font-size:19px;line-height:1.1;font-weight:950}.pricing-cta{width:100%;height:44px}.pricing-panel{display:grid;gap:12px;align-content:start}.feature-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.feature-list li{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;padding:10px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:#ffffff0b}.feature-list svg{color:#5eead4;margin-top:2px}.feature-list span,.feature-list strong,.feature-list small{min-width:0;display:block}.feature-list strong{color:#fff;font-size:13px;font-weight:900}.feature-list small{margin-top:2px;color:#8d939d;font-size:12px;line-height:1.38;font-weight:700}.pricing-facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 14px;margin:0;font-size:12px}.pricing-facts.compact{padding-top:2px}.pricing-facts dt{color:#8d939d;font-weight:900}.pricing-facts dd{margin:0;min-width:0;overflow-wrap:anywhere;color:#f7f7f4;font-weight:850}.doc-page{min-width:0;width:60%;margin:0 auto;display:grid;gap:14px}.doc-hero{min-width:0;display:grid;grid-template-columns:1fr;gap:14px;align-items:stretch}.doc-hero-copy,.doc-language-picker,.doc-card,.doc-sync,.doc-firewall,.doc-command-panel{min-width:0;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:linear-gradient(180deg,#ffffff0f,#ffffff05),#080a0dbd;box-shadow:inset 0 1px #ffffff12,0 18px 38px #0000003d}.doc-hero-copy{display:grid;gap:10px;padding:24px;align-content:center;background:linear-gradient(135deg,#14b8a62e,#60a5fa14 52%,#ffffff05),#080a0dc7}.doc-hero-copy h2{color:#fff;font-size:clamp(28px,4vw,52px);line-height:.98;font-weight:950}.doc-hero-copy p,.doc-card p,.doc-sync p,.doc-firewall p,.doc-command-head p{color:#aeb5c0;line-height:1.5;font-weight:700}.doc-hero-copy p{max-width:720px;font-size:15px}.doc-language-picker{display:grid;gap:10px;padding:18px;align-content:center}.doc-language-picker span{display:inline-flex;align-items:center;gap:8px;color:#8d939d;font-size:12px;font-weight:900;text-transform:uppercase}.doc-language-picker select{width:100%;min-width:0;height:42px;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:#00000038;color:#f7f7f4;padding:0 12px;font-size:14px;font-weight:850;outline:0}.doc-grid{min-width:0;display:grid;grid-template-columns:1fr;gap:14px}.doc-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:13px;padding:16px}.doc-card-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:8px;background:#14b8a61f;color:#5eead4}.doc-card h3,.doc-sync h3,.doc-firewall h3,.doc-command-panel h3{color:#fff;font-size:16px;line-height:1.2;font-weight:950}.doc-card p,.doc-sync p,.doc-firewall p,.doc-command-head p{margin-top:6px;font-size:13px}.doc-card ul,.doc-sync ul,.doc-firewall ul{display:grid;gap:7px;margin:12px 0 0;padding-left:18px;color:#8d939d;font-size:12px;line-height:1.45;font-weight:750}.doc-page[dir=rtl] .doc-card ul,.doc-page[dir=rtl] .doc-sync ul,.doc-page[dir=rtl] .doc-firewall ul{padding-left:0;padding-right:18px}.doc-firewall,.doc-sync,.doc-command-panel{display:grid;gap:14px;padding:16px}.doc-firewall{border-color:#f59e0b4d}.doc-sync{border-color:#60a5fa4d}.doc-firewall-head,.doc-sync-head,.doc-command-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:11px;align-items:start}.doc-firewall-head svg{color:#f59e0b;margin-top:1px}.doc-sync-head svg{color:#93c5fd;margin-top:1px}.doc-command-head svg{color:#5eead4;margin-top:1px}.doc-command-list{display:grid;gap:9px}.doc-command-row{min-width:0;display:grid;grid-template-columns:1fr;gap:10px;align-items:stretch;padding:10px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:#ffffff0b}.doc-command-row span{color:#8d939d;font-size:12px;font-weight:900}.doc-command-row code{min-width:0;overflow-x:auto;color:#5eead4;font-size:12px;font-weight:800;white-space:nowrap}.monitor-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px;align-items:start;min-width:0;transition:grid-template-columns .18s ease}.monitor-layout.dock-collapsed{grid-template-columns:minmax(0,1fr) 44px}.right-dock{position:sticky;top:18px;min-width:0;display:flex;flex-direction:column;gap:12px;transition:transform .18s ease,opacity .18s ease}.right-dock.collapsed{width:44px}.dock-toggle{width:36px;height:36px;margin-left:auto;display:grid;place-items:center;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:#ffffff14;color:#c8d0db;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.dock-toggle:hover{color:#fff;background:#ffffff21;border-color:#fff3;transform:translateY(-1px)}.right-dock.collapsed .dock-toggle{width:44px;height:76px;margin-left:0}.action-dock{min-width:0;display:grid;gap:12px}.action-context{min-width:0;display:grid;gap:4px;padding:13px 14px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:linear-gradient(135deg,#2dd4bf1f,#ffffff09 48%),#ffffff0e;box-shadow:inset 0 1px #ffffff12}.action-context span{color:#8d939d;font-size:11px;font-weight:900;text-transform:uppercase}.action-context strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;font-size:16px;font-weight:900}.action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.action-tile{min-width:0;min-height:76px;display:grid;place-items:center;align-content:center;gap:8px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff0f;color:#c8d0db;box-shadow:inset 0 1px #fff1;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.action-tile:hover:not(:disabled){transform:translateY(-1px);color:#fff;background:#ffffff1a;border-color:#ffffff2e}.action-tile.primary{background:#2dd4bf24;border-color:#2dd4bf47;color:#a7f3d0}.action-tile.active{background:#60a5fa2e;border-color:#60a5fa7a;color:#bfdbfe}.action-tile span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900}.command-deck{display:grid;grid-template-columns:minmax(320px,1fr) auto;gap:12px;align-items:center}.setup-card{min-width:0;display:grid;gap:10px;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:12px;background:#fff1;box-shadow:inset 0 1px #ffffff12}.settings-card{min-width:0;display:grid;gap:9px;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:12px;background:#fff1;box-shadow:inset 0 1px #ffffff12}.field-row{min-width:0;display:grid;gap:7px}.field-row span{color:#8d939d;font-size:12px;font-weight:900}.field-row input{width:100%;height:38px;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:0 10px;background:#00000038;color:#f7f7f4;outline:0;font-size:12px;font-weight:800}.field-row input:focus{border-color:#2dd4bfb3;box-shadow:0 0 0 2px #2dd4bf24}.hidden-file-input{display:none}.setup-head{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center}.setup-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:8px;background:#2dd4bf24;color:#5eead4}.setup-head strong,.setup-head span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setup-head strong{color:#fff;font-size:14px;font-weight:900}.setup-head span{margin-top:2px;color:#8d939d;font-size:12px;font-weight:700}.setup-pin-row{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:9px 10px;background:#00000029}.setup-pin-row div{min-width:0}.setup-pin-row span,.setup-pin-row strong{display:block}.setup-pin-row span{color:#8d939d;font-size:10px;font-weight:950;letter-spacing:.04em;text-transform:uppercase}.setup-pin-row strong{margin-top:2px;color:#fff;font-family:Cascadia Code,SFMono-Regular,Consolas,monospace;font-size:18px;letter-spacing:.08em;line-height:1}.setup-disclosure{height:30px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:8px;background:transparent;color:#8d939d;font-size:12px;font-weight:800}.setup-disclosure:hover{background:#ffffff14;color:#fff}.setup-code-row{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px;background:#0003}.setup-code-row code{min-width:0;overflow-wrap:anywhere;color:#9fe6d7;font-family:Cascadia Code,SFMono-Regular,Consolas,monospace;font-size:11px;line-height:1.45}.deck-actions{gap:8px;justify-content:flex-end}.right-dock .command-deck{grid-template-columns:1fr;gap:10px}.right-dock .deck-actions{display:grid;grid-template-columns:1fr;gap:8px}.right-dock .deck-actions .text-button{width:100%}.status-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.status-item{min-width:0;gap:9px;min-height:58px;padding:11px 12px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#fff1;box-shadow:inset 0 1px #ffffff12}.status-item svg{color:#9ca3af}.status-item span{min-width:0;color:#8d939d;font-size:12px;font-weight:800}.status-item strong{margin-left:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;font-size:13px;font-weight:900}.status-item.state-online svg,.dot.green{color:#34d399}.right-dock .status-strip{grid-template-columns:1fr;gap:8px}.right-dock .status-item{min-height:50px}.screen-wall-panel{position:relative;min-width:0;display:flex;flex-direction:column;gap:12px}.screen-wall-panel.drop-active:after{content:"";position:absolute;inset:-6px 12px 6px -6px;border:2px solid rgba(45,212,191,.58);border-radius:12px;pointer-events:none;box-shadow:0 0 0 4px #2dd4bf14}.control-focus{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px;min-height:calc(100vh - 92px)}.control-focus-head{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px}.control-focus-head div{min-width:0;display:grid;gap:3px}.control-focus-head span{color:#8d939d;font-size:11px;font-weight:900;text-transform:uppercase}.control-focus-head strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;font-size:18px;font-weight:900}.control-wall{--control-screen-height: calc(100vh - 170px) ;min-height:0;height:100%;grid-template-columns:minmax(0,1fr);align-content:center;justify-content:center;place-items:center}.control-wall .device-tile{width:min(100%,var(--screen-max-width, calc(var(--control-screen-height) * 16 / 9)));max-width:100%}.segmented-control{min-width:0;display:inline-flex;gap:4px;padding:4px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff0e}.segmented-control button{height:30px;min-width:62px;border:0;border-radius:6px;background:transparent;color:#8d939d;padding:0 10px;font-size:12px;font-weight:900}.segmented-control button:hover{color:#fff;background:#ffffff14}.segmented-control button.active{background:#f7f7f4;color:#0c0d0f}.screen-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:14px;min-width:0}.screen-wall.size-large{grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:12px}.screen-wall.size-medium{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.screen-wall.size-small{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.device-tile{position:relative;min-width:0;overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff0f;box-shadow:inset 0 1px #ffffff12,0 18px 38px #0000003d}.device-tile.selected{border-color:#2dd4bfc7;box-shadow:inset 0 1px #ffffff1a,0 0 0 2px #2dd4bf2e,0 18px 44px #00000061}.device-tile.selected:before{display:none}.device-tile.selected:after{content:"";position:absolute;top:12px;right:12px;z-index:5;display:grid;place-items:center;width:24px;height:24px;border-radius:999px;background:#14b8a6;color:#fff;font-size:15px;font-weight:900;box-shadow:0 8px 18px #0f172a3d;pointer-events:none}.tile-screen{position:relative;width:100%;aspect-ratio:var(--screen-aspect, 16 / 9);display:block;border:0;padding:1px;overflow:hidden;background:linear-gradient(135deg,#ffffff14,#fff0 44%),#111317;line-height:0}.tile-screen.has-frame{background:#000}.tile-screen:after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 0 40px #00000080}.device-tile.selected .tile-screen:before{content:none;display:none}.tile-health-pill{position:absolute;top:10px;left:10px;z-index:3;display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:#080a0da8;color:#f7f7f4;font-size:11px;line-height:1;font-weight:950;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none}.tile-health-pill.state-online,.machine-health.state-online{color:#6ee7b7}.tile-health-pill.state-busy,.machine-health.state-busy{color:#93c5fd}.tile-health-pill.state-warn,.machine-health.state-warn{color:#fbbf24}.tile-health-pill.state-critical,.machine-health.state-critical{color:#fb7185}.tile-health-pill.state-stale,.machine-health.state-stale,.tile-health-pill.state-offline,.machine-health.state-offline{color:#cbd5e1}.tile-workload{position:absolute;left:10px;right:10px;bottom:10px;z-index:3;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px 9px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#080a0d9e;color:#f7f7f4;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none}.tile-workload span,.tile-workload strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-workload span{color:#cbd5e1;font-size:11px;font-weight:800}.tile-workload strong{justify-self:end;max-width:45%;color:#fff;font-size:11px;font-weight:950}.remote-canvas{position:relative;z-index:1;width:100%;height:100%;display:block;object-fit:contain;object-position:center;background:#000;border-radius:6px;outline:0}.remote-canvas.is-empty{opacity:0}.monitor-cycle{position:absolute;inset:0;z-index:6;opacity:0;pointer-events:none;transition:opacity .14s ease}.tile-screen:hover .monitor-cycle,.tile-screen:focus-within .monitor-cycle{opacity:1}.monitor-cycle-button{position:absolute;top:50%;width:32px;height:32px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:#080a0db8;color:#fff;box-shadow:0 8px 18px #00000042;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;pointer-events:auto;transform:translateY(-50%)}.monitor-cycle-button svg{width:16px;height:16px;stroke-width:2.5}.monitor-cycle-button:hover{background:#080a0de0}.monitor-cycle-button.previous{left:10px}.monitor-cycle-button.next{right:10px}.monitor-cycle-count{position:absolute;top:10px;left:50%;min-height:24px;display:inline-flex;align-items:center;padding:0 10px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:#080a0dad;color:#fff;font-size:11px;line-height:1;font-weight:900;white-space:nowrap;box-shadow:0 10px 22px #00000038;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;transform:translate(-50%)}.slot-grid{position:absolute;inset:1px;border-radius:6px;background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:34px 34px;-webkit-mask-image:linear-gradient(180deg,#000000d9,#00000040);mask-image:linear-gradient(180deg,#000000d9,#00000040)}.empty-screen{position:absolute;inset:1px;display:grid;place-items:center;align-content:center;gap:6px;color:#7c828d;text-align:center;z-index:1}.empty-screen strong{color:#f7f7f4;font-size:13px;font-weight:900}.tile-meta{min-height:54px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px 11px}.tile-metrics{position:absolute;left:10px;right:10px;bottom:10px;z-index:3;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;line-height:1;pointer-events:none}.tile-metric{position:relative;min-width:0;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;align-items:center;min-height:25px;padding:4px 7px;border:1px solid rgba(255,255,255,.08);border-radius:7px;background:#080a0d9e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.tile-metric b,.tile-metric em{position:relative;z-index:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal}.tile-metric b{color:#8d939d;font-size:10px;line-height:1;font-weight:950}.tile-metric em{color:#f7f7f4;font-size:11px;line-height:1;font-weight:950}.tile-metric i{position:absolute;left:0;bottom:0;height:2px;max-width:100%;border-radius:999px;background:#34d399}.tile-metric.state-warn i{background:#f59e0b}.tile-metric.state-critical i{background:#f43f5e}.tile-metric.state-unknown i{display:none}.screen-wall.size-small .tile-meta{min-height:40px;padding:7px 8px}.screen-wall.size-small .tile-meta strong{font-size:11px}.screen-wall.size-small .tile-meta span{font-size:10px}.screen-wall.size-small .empty-screen strong{font-size:11px}.screen-wall.size-small .tile-workload{display:none}.screen-wall.size-small .tile-health-pill{top:6px;left:6px;min-height:19px;padding:0 6px;font-size:9px}.screen-wall.size-small .tile-metrics{left:6px;right:6px;bottom:6px;gap:4px}.screen-wall.size-small .tile-metric{min-height:20px;padding:3px 4px;grid-template-columns:1fr;gap:1px}.screen-wall.size-small .tile-metric b,.screen-wall.size-small .tile-metric em{text-align:center;font-size:8px}.side-panel{min-width:0;padding:12px 14px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:linear-gradient(180deg,#ffffff0b,#ffffff04),#060709b8;box-shadow:inset 0 1px #fff1}.side-panel.selected-panel,.side-panel.account-panel{display:flex;flex-direction:column}.side-panel.selected-panel .text-button{width:100%;align-self:stretch}.machine-detail-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.machine-detail-head .panel-title{margin-bottom:0}.machine-health{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border:1px solid rgba(255,255,255,.1);border-radius:999px;background:#ffffff0f;color:#f7f7f4;font-size:11px;font-weight:950}.machine-title{display:grid;gap:3px;margin:7px 0 11px}.machine-title strong,.machine-title span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.machine-title strong{color:#fff;font-size:18px;font-weight:950}.machine-title span{color:#8d939d;font-size:12px;font-weight:850}.machine-metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}.machine-metric{min-width:0;display:grid;gap:5px;padding:10px;border:1px solid rgba(255,255,255,.09);border-radius:8px;background:#ffffff0b}.machine-metric span,.machine-metric strong,.machine-metric small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.machine-metric span{color:#8d939d;font-size:10px;font-weight:950}.machine-metric strong{color:#fff;font-size:19px;font-weight:950}.machine-metric small{color:#8d939d;font-size:11px;font-weight:750}.machine-metric i{position:relative;height:3px;overflow:hidden;border-radius:999px;background:#94a3b82e}.machine-metric i b{position:absolute;inset:0 auto 0 0;display:block;max-width:100%;border-radius:inherit;background:#34d399}.machine-metric.state-warn i b{background:#f59e0b}.machine-metric.state-critical i b{background:#f43f5e}.machine-section{display:grid;gap:8px;padding-top:10px;margin-top:10px;border-top:1px solid rgba(255,255,255,.08)}.machine-section-title{display:flex;gap:7px;align-items:center;color:#8d939d;font-size:11px;font-weight:950;text-transform:uppercase}.tool-probe-list{display:grid;gap:7px}.tool-probe{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;min-height:30px;padding:7px 9px;border:1px solid rgba(255,255,255,.08);border-radius:7px;background:#ffffff0a}.tool-probe b,.tool-probe em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-probe b{color:#f7f7f4;font-size:12px;font-weight:900}.tool-probe em{color:#8d939d;font-size:11px;font-style:normal;font-weight:800}.tool-probe.state-online em,.tool-probe.state-busy em{color:#6ee7b7}.tool-probe.state-offline em{color:#cbd5e1}.workload-card{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;padding:9px;border:1px solid rgba(255,255,255,.08);border-radius:7px;background:#ffffff0a}.workload-card strong,.workload-card span,.workload-card p{min-width:0;overflow:hidden;text-overflow:ellipsis}.workload-card strong{white-space:nowrap;color:#f7f7f4;font-size:12px;font-weight:950}.workload-card span{justify-self:end;color:#8d939d;font-size:11px;font-weight:950}.workload-card p{grid-column:1 / -1;color:#8d939d;font-size:11px;line-height:1.35;font-weight:750}.facts.compact{margin-bottom:0;gap:5px 10px}.panel-warning{margin-top:10px;color:#fb7185;font-size:12px;font-weight:800}.tile-meta strong,.tile-meta span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-meta strong{color:#fff;font-size:13px;font-weight:900}.tile-meta span{color:#8d939d;font-size:12px;font-weight:700}.placeholder-tile{border-style:dashed;background:#ffffff0a}.dot{width:9px;height:9px;border-radius:50%;background:#69707b;box-shadow:0 0 0 4px #69707b1f}.dot.green{background:#34d399;box-shadow:0 0 0 4px #34d39924}.dot.gray{background:#69707b}.operator-console{display:grid;grid-template-columns:minmax(220px,.82fr) minmax(360px,1.35fr) minmax(280px,.92fr);gap:0;align-items:stretch;overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:linear-gradient(180deg,#ffffff0b,#ffffff04),#060709b8;box-shadow:inset 0 1px #fff1,0 16px 34px #0003}.console-panel{min-width:0;min-height:118px;padding:12px 14px;border-right:1px solid rgba(255,255,255,.09);background:transparent}.console-panel:last-child{border-right:0}.panel-title{gap:7px;margin-bottom:9px;color:#8d939d}.panel-title h2{color:#c6cad2;font-size:11px;font-weight:900;text-transform:uppercase}.selected-panel,.account-panel{display:flex;flex-direction:column}.selected-panel .text-button{margin-top:auto;width:auto;min-width:142px;align-self:flex-start}.facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;margin:0 0 10px;font-size:12px}.facts dt{color:#8d939d;font-weight:800}.facts dd{margin:0;min-width:0;overflow-wrap:anywhere;color:#f7f7f4;font-weight:800}.task-panel{display:grid;grid-template-columns:minmax(0,1fr) 160px;grid-template-rows:auto minmax(58px,1fr);gap:9px 10px;align-items:stretch}.task-panel .panel-title{grid-column:1 / -1;margin-bottom:0}.task-panel .text-button{height:auto;min-height:58px;align-self:stretch}.side-panel.task-panel{grid-template-columns:1fr;grid-template-rows:auto minmax(74px,1fr) auto}.side-panel.task-panel .text-button{grid-column:1;min-height:42px}.plan-summary{display:grid;gap:4px;margin-bottom:0}.plan-summary strong{color:#fff;font-size:14px;font-weight:900}.plan-summary span{color:#5eead4;font-weight:900;font-size:13px}.plan-summary p{color:#8d939d;font-size:12px;line-height:1.45;font-weight:700}textarea{width:100%;resize:none;min-height:58px;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:9px 10px;background:#00000038;color:#f7f7f4;margin-bottom:0;outline:0}textarea:focus{border-color:#2dd4bfb3;box-shadow:0 0 0 2px #2dd4bf24}textarea::placeholder{color:#6f7681}.muted{color:#8d939d;font-size:12px;font-weight:700}@media(max-width:1180px){.topbar{grid-template-columns:1fr auto}.pricing-hero,.pricing-grid,.doc-hero,.doc-grid{grid-template-columns:1fr}.pricing-page,.doc-page{width:100%}.monitor-layout,.operator-console{grid-template-columns:1fr}.operator-console{grid-template-columns:repeat(2,minmax(0,1fr))}.console-panel{border-right:1px solid rgba(255,255,255,.09);border-bottom:1px solid rgba(255,255,255,.09)}.console-panel:nth-child(2n){border-right:0}.console-panel:nth-child(n+3){border-bottom:0}.right-dock{position:static;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,300px);align-items:start}.right-dock.actions-mode{grid-template-columns:1fr}.right-dock .action-dock{grid-column:1 / -1}.right-dock .notice-band,.right-dock .command-deck{grid-column:1}.right-dock .status-strip{grid-column:2;grid-row:1 / span 2}.deck-actions{justify-content:flex-start;flex-wrap:wrap}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.tool-rail{position:sticky;top:0;height:auto;min-height:auto;max-height:none;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:auto;align-items:center;gap:10px;padding:8px;border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}.rail-tools,.rail-footer{flex-direction:row;overflow-x:auto;justify-content:flex-start}.rail-tool,.rail-account{width:54px;min-height:48px;flex:0 0 auto}.rail-account img,.avatar-fallback{width:26px;height:26px}.account-popover{inset:74px 8px auto auto;width:min(320px,calc(100vw - 16px))}.desk-stage{padding:14px 12px 18px}.pricing-hero-copy,.license-card,.ltd-card,.pricing-panel,.doc-hero-copy,.doc-language-picker,.doc-card,.doc-firewall,.doc-command-panel{padding:14px}.ltd-card-head strong{font-size:46px}.topbar{grid-template-columns:minmax(0,1fr) auto}.status-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.right-dock{display:flex}.action-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.operator-console{grid-template-columns:1fr}.console-panel,.console-panel:nth-child(2n),.console-panel:nth-child(n+3){border-right:0;border-bottom:1px solid rgba(255,255,255,.09)}.console-panel:last-child{border-bottom:0}.task-panel{grid-template-columns:1fr}.task-panel .text-button{grid-column:1;grid-row:auto;min-width:0}.right-dock .status-strip{grid-template-columns:1fr}.command-deck{gap:10px}}@media(max-width:480px){.topbar{gap:10px}.topbar .segmented-control button{min-width:54px;padding:0 8px}.status-strip{grid-template-columns:1fr}.deck-actions .text-button,.top-actions .text-button{flex:1 1 auto}.action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.action-tile{min-height:68px}.facts,.doc-card,.doc-sync-head,.doc-firewall-head,.doc-command-head,.doc-command-row{grid-template-columns:1fr}.doc-command-row .icon-button{width:100%}}:root{color-scheme:light;background:#f3f6fb;color:#172033}body{background:radial-gradient(circle at 18% 0%,#cbd5e138,#cbd5e100 28%),linear-gradient(180deg,#f8fafc,#eef3f9 46%,#e9eef6)}.app-shell{color:#172033}.tool-rail{background:#ffffffdb;border-right-color:#94a3b847;box-shadow:10px 0 28px #0f172a14}.rail-brand{background:#111827;color:#fff;box-shadow:0 14px 28px #0f172a2e}.rail-tool{color:#667085}.rail-tool:hover,.rail-tool.active{color:#111827;background:#fff;border-color:#94a3b852;box-shadow:0 10px 22px #0f172a1a}.rail-account{background:#fff;color:#111827;border-color:#94a3b857;box-shadow:0 12px 24px #0f172a1a}.rail-account.signed-in{background:#ecfdf5;border-color:#14b8a652}.account-popover{background:#fffffffa;color:#111827;border-color:#94a3b847;box-shadow:0 22px 46px #0f172a2e}.account-popover-head p,.account-popover-facts dt{color:#667085}.account-popover-facts{border-top-color:#94a3b833;border-bottom-color:#94a3b833}.account-popover-facts dd{color:#111827}.account-popover-action{background:#111827;color:#fff;border-color:#0f172a29;box-shadow:0 14px 28px #0f172a29}.account-popover-action.primary{background:#111827;color:#fff}.desk-stage{--dock-width: 360px;--dock-gutter: 0px;--dock-tab-size: 54px;--dock-tab-half: 27px}h1,.action-context strong,.control-focus-head strong,.setup-head strong,.tile-meta strong,.empty-screen strong,.panel-title h2,.facts dd,.pricing-hero-copy h2,.doc-hero-copy h2,.doc-card h3,.doc-sync h3,.doc-firewall h3,.doc-command-panel h3,.license-card strong,.ltd-card-head strong,.ltd-title h3,.feature-list strong,.pricing-facts dd,.plan-summary strong,.status-item strong{color:#111827}.brand p,.action-context span,.control-focus-head span,.setup-head span,.field-row span,.setup-disclosure,.tile-meta span,.panel-title,.facts dt,.muted,.license-card span,.license-card p,.ltd-card-head p,.ltd-title span,.feature-list small,.pricing-facts dt,.doc-hero-copy p,.doc-card p,.doc-sync p,.doc-firewall p,.doc-command-head p,.doc-language-picker span,.doc-card ul,.doc-sync ul,.doc-firewall ul,.doc-command-row span,.plan-summary p,.status-item span{color:#667085}.brand-mark,.avatar-fallback{background:linear-gradient(145deg,#10b981,#3b82f6);color:#fff;box-shadow:0 14px 30px #2563eb33}.icon-button,.text-button,.dock-toggle{background:#fff;border-color:#94a3b857;color:#1f2937;box-shadow:0 9px 22px #0f172a1a,0 1px #ffffffe6 inset}.icon-button:hover,.text-button:hover,.dock-toggle:hover{background:#fff;border-color:#47556952;box-shadow:0 14px 30px #0f172a24,0 1px #ffffffeb inset}.text-button.primary,.segmented-control button.active{background:#111827;border-color:#111827;color:#fff}.text-button.buy{background:#10b981;border-color:#10b981;color:#fff;box-shadow:0 14px 28px #10b9813d}.notice-band{background:#fff7ed;border-color:#f59e0b61;color:#9a3412;box-shadow:0 12px 24px #f59e0b1c}.monitor-layout{position:relative;grid-template-columns:minmax(0,1fr) var(--dock-width);gap:0}.screen-wall-panel{padding-right:18px}.monitor-layout.dock-collapsed{grid-template-columns:minmax(0,1fr) 0;gap:0}.monitor-layout.dock-collapsed .screen-wall-panel{padding-right:0}.right-dock{position:fixed;top:0;right:0;bottom:0;width:var(--dock-width);min-width:0;overflow:visible;overflow-y:auto;z-index:900;height:100vh;min-height:100vh;padding:18px 12px 18px 24px;border-left:1px solid rgba(203,213,225,.72);border-radius:0;background:linear-gradient(180deg,#fffffffa,#f9fafbf2),#fff;box-shadow:-12px 0 22px #0f172a21,-3px 0 8px #0f172a14,1px 0 #fffffff2 inset;isolation:isolate}.right-dock.collapsed{width:0;min-width:0;height:0;min-height:0;bottom:auto;padding:0;border-left-width:0;border-left-color:transparent;border-radius:0;background:transparent;box-shadow:none;pointer-events:none}.dock-toggle{position:fixed;top:50vh;right:var(--dock-width);z-index:1000;pointer-events:auto;width:var(--dock-tab-half);height:var(--dock-tab-size);margin:0;border-radius:999px 0 0 999px;color:#475467;transform:translateY(-50%);overflow:hidden;background:#fff;border-color:#cbd5e1eb;border-right-color:#fff0;box-shadow:-8px 0 16px #0f172a29,-2px 0 5px #0f172a1a,0 1px #fffffffa inset}.dock-toggle:after{display:none}.dock-toggle svg{position:relative;z-index:2;transform:translate(1px)}.dock-toggle:hover{color:#475467;background:#fff;border-color:#cbd5e1eb;box-shadow:-8px 0 16px #0f172a29,-2px 0 5px #0f172a1a,0 1px #fffffffa inset;transform:translateY(-50%) scale(1.03)}.dock-toggle:focus-visible{outline:0;color:#475467;box-shadow:-8px 0 16px #0f172a29,-2px 0 5px #0f172a1a,0 0 0 3px #4755692e}.right-dock.collapsed .dock-toggle{right:0;width:var(--dock-tab-half);height:var(--dock-tab-size);pointer-events:auto;border-radius:999px 0 0 999px;box-shadow:-8px 0 18px #0f172a2e,-2px 0 6px #0f172a1a,0 1px #fffffff5 inset}.right-dock.collapsed .dock-toggle:hover{box-shadow:-8px 0 18px #0f172a2e,-2px 0 6px #0f172a1a,0 1px #fffffff5 inset}.right-dock.collapsed .dock-toggle:focus-visible{box-shadow:-8px 0 18px #0f172a2e,-2px 0 6px #0f172a1a,0 0 0 3px #4755692e}.action-context,.setup-card,.settings-card,.status-item,.side-panel,.pricing-hero-copy,.license-card,.ltd-card,.pricing-panel,.doc-hero-copy,.doc-language-picker,.doc-card,.doc-sync,.doc-firewall,.doc-command-panel{background:linear-gradient(180deg,#fffffff5,#f9fafbeb),#fff;border-color:#94a3b847;box-shadow:0 18px 38px #0f172a1c,0 2px 6px #0f172a0f,0 1px #fffffffa inset}.segmented-control{background:#ffffffdb;border-color:#94a3b852;box-shadow:0 12px 26px #0f172a1a,0 1px #ffffffe6 inset}.segmented-control button{color:#667085}.segmented-control button:hover{color:#111827;background:#0f172a0d}.doc-language-picker select{background:#f8fafc;border-color:#94a3b852;color:#111827}.doc-card-icon{background:#ecfdf5;color:#10b981}.doc-firewall{border-color:#f59e0b57}.doc-firewall-head svg{color:#d97706}.doc-command-head svg,.doc-command-row code{color:#047857}.doc-command-row{background:#f8fafc;border-color:#94a3b83d}.device-tile{background:#fff;border-color:#94a3b83d;box-shadow:0 20px 42px #0f172a24,0 3px 9px #0f172a0f,0 1px #fffffff5 inset}.device-tile.selected{border-color:#14b8a6b8;box-shadow:0 0 0 3px #14b8a624,0 24px 48px #0f172a2e,0 3px 9px #0f172a14}.device-tile.selected:before{border-color:#0d9488eb;box-shadow:0 0 0 2px #ffffffdb,0 0 18px #0d948833}.device-tile.selected:after{background:#0d9488;color:#fff}.tile-screen{background:linear-gradient(rgba(17,24,39,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(17,24,39,.045) 1px,transparent 1px),linear-gradient(180deg,#fff,#f8fafc);background-size:34px 34px,34px 34px,auto}.tile-screen.has-frame{background:#000;background-size:auto}.tile-screen:after{border-color:#94a3b847;box-shadow:inset 0 0 0 1px #ffffffa3,inset 0 -24px 40px #0f172a09}.monitor-cycle-button{border-color:#94a3b85c;background:#ffffffe6;color:#111827;box-shadow:0 8px 18px #0f172a29,0 1px #ffffffe6 inset}.monitor-cycle-button:hover{background:#fff}.monitor-cycle-count{border-color:#94a3b847;background:#ffffffe0;color:#111827;box-shadow:0 10px 24px #0f172a1f,0 1px #ffffffe6 inset}.slot-grid{background-image:linear-gradient(rgba(17,24,39,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(17,24,39,.045) 1px,transparent 1px)}.placeholder-tile{border-style:solid;background:#fff}.empty-screen{color:#98a2b3}.dot.gray{background:#cbd5e1}.dot.green{background:#10b981;box-shadow:0 0 0 4px #10b98124}.machine-metric,.tool-probe,.workload-card{background:#f8fafc;border-color:#94a3b83d}.tile-metric{background:#ffffffd1;border-color:#94a3b857;box-shadow:0 8px 18px #0f172a1f}.tile-metric b,.machine-metric span,.machine-metric small,.machine-section-title,.tool-probe em,.workload-card span,.workload-card p,.machine-title span{color:#667085}.tile-metric em,.machine-metric strong,.machine-title strong,.tool-probe b,.workload-card strong{color:#111827}.machine-health{background:#fff;border-color:#94a3b847;color:#111827}.machine-section{border-top-color:#94a3b838}.machine-metric i{background:#94a3b838}.setup-icon{background:#ecfdf5;color:#10b981}.field-row input,.setup-code-row,textarea{background:#f8fafc;border-color:#94a3b852;color:#111827}.setup-code-row code{color:#047857}.field-row input:focus,textarea:focus{border-color:#10b981b8;box-shadow:0 0 0 3px #10b98121}textarea::placeholder{color:#98a2b3}.feature-list li{background:#f8fafc;border-color:#94a3b83d}.feature-list svg,.pricing-eyebrow,.plan-badge,.plan-summary span{color:#10b981}.action-tile{background:#fff;border-color:#94a3b847;color:#475467;box-shadow:0 14px 28px #0f172a1a,0 1px #fffffff5 inset}.action-tile:hover:not(:disabled){color:#111827;background:#fff;border-color:#4755694d;box-shadow:0 18px 34px #0f172a24,0 1px #fffffff5 inset}.action-tile.primary{background:#ecfdf5;border-color:#10b98147;color:#047857}.action-tile.active{background:#eff6ff;border-color:#3b82f65c;color:#1d4ed8}.transfer-bar{color:#475569}.transfer-bar-track{background:#94a3b83d}.transfer-bar.state-failed{color:#991b1b}.pricing-page{width:min(620px,calc(100vw - 130px));min-height:calc(100vh - 112px);place-items:center}.pricing-offer{position:relative;width:100%;min-width:0;display:grid;gap:16px;padding:26px;overflow:hidden;border:1px solid rgba(148,163,184,.28);border-radius:10px;background:radial-gradient(circle at 58% 9%,#ffffff1a,#fff0 16%),linear-gradient(180deg,#1f2937fa,#111827fa 45%,#030712fc);color:#f8fafc;box-shadow:0 30px 70px #0f172a38,0 0 0 1px #ffffff0a inset,0 22px 48px #0f172a38}.pricing-close{position:absolute;top:18px;right:18px;z-index:2;display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:#ffffff14;color:#ffffffdb;box-shadow:none}.pricing-close:hover{background:#ffffff24;color:#fff}.pricing-offer-head{display:grid;gap:10px;padding-right:42px}.pricing-offer .pricing-eyebrow{color:#d1d5db;letter-spacing:.08em}.deal-price-line{min-width:0;display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}.deal-price-line strong,.deal-original{color:#fff;font-size:clamp(42px,8vw,64px);line-height:.9;font-weight:950}.deal-original{opacity:.9;text-decoration:line-through;text-decoration-thickness:3px;text-decoration-color:#d1d5dbb8}.deal-arrow{color:#ffffffdb;font-size:clamp(30px,5vw,44px);line-height:1;font-weight:900}.deal-badge{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:8px;background:#e5e7eb;color:#111827;font-size:12px;font-weight:950;box-shadow:0 14px 28px #0f172a38}.pricing-offer-head p{max-width:520px;margin:0;color:#e5e7ebb8;font-size:15px;line-height:1.5;font-weight:750}.deal-table,.deal-module,.deal-open-price{border:1px solid rgba(255,255,255,.14);border-radius:10px;background:#02061747;box-shadow:0 1px #ffffff14 inset}.deal-table{overflow:hidden}.deal-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(160px,1.3fr) minmax(76px,auto);gap:12px;align-items:center;padding:12px 16px;border-top:1px solid rgba(255,255,255,.09);color:#f3f4f6e0;font-size:13px;font-weight:800}.deal-row:first-child{border-top:0}.deal-row-head{padding-block:10px;background:#ffffff14;color:#d1d5db94;font-size:11px;text-transform:uppercase;letter-spacing:.04em}.deal-row-highlight{background:linear-gradient(90deg,#4b55638f,#11182729)}.deal-row strong{color:#fff;font-size:14px;font-weight:950}.deal-row s{color:#ffffff7a;font-weight:950}.deal-row>:last-child{justify-self:end;color:#f9fafb}.deal-module{display:grid;gap:12px;padding:14px}.deal-module-title{display:flex;justify-content:space-between;gap:12px;align-items:center}.deal-module-title strong{color:#fff;font-size:13px;font-weight:950;text-transform:uppercase;letter-spacing:.04em}.deal-module-title span{color:#d1d5db;font-size:12px;font-weight:900}.deal-feature-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.deal-feature-list li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;align-items:center;color:#f3f4f6e0;font-size:13px;font-weight:850}.deal-feature-list svg{color:#d1d5db}.deal-feature-list b{padding:4px 8px;border:1px solid rgba(209,213,219,.28);border-radius:999px;color:#e5e7eb;font-size:11px}.deal-open-price{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 16px;align-items:center;padding:16px;border-color:#94a3b83d;background:#1118277a}.deal-open-price>span{color:#d1d5dba8;font-size:12px;font-weight:950;text-transform:uppercase}.deal-open-price strong{justify-self:end;color:#fff;font-size:24px;line-height:1;font-weight:950}.deal-open-price small{grid-column:1 / -1;color:#d1d5db9e;font-size:12px;line-height:1.45;font-weight:800}.deal-note{display:inline-flex;justify-content:center;gap:8px;align-items:center;margin:2px 0 0;color:#d1d5dbb8;font-size:12px;line-height:1.4;font-weight:850;text-align:center}.deal-note svg{color:#d1d5db;flex:0 0 auto}.deal-cta{display:inline-flex;justify-content:center;align-items:center;gap:9px;width:100%;min-height:58px;border:0;border-radius:10px;background:linear-gradient(90deg,#111827,#374151);color:#fff;font-size:16px;font-weight:950;box-shadow:0 18px 40px #0f172a52,0 1px #ffffff57 inset}.deal-cta:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 24px 48px #0f172a61,0 1px #fff6 inset}.deal-cta:disabled{cursor:not-allowed;opacity:.68}.deal-later{justify-self:center;border:0;background:transparent;color:#d1d5db8f;font-size:13px;font-weight:900}.deal-later:hover{color:#fff}@media(max-width:1180px){.dock-toggle{right:var(--dock-width);top:50vh;bottom:auto}.right-dock.collapsed .dock-toggle{right:0;top:50vh;bottom:auto}.monitor-layout.dock-collapsed{grid-template-columns:1fr}}@media(max-width:760px){.pricing-page{width:min(100%,calc(100vw - 84px));min-height:auto;align-items:start}.pricing-offer{padding:20px;gap:13px}.deal-price-line strong,.deal-original{font-size:42px}.deal-badge{width:fit-content}.deal-row{grid-template-columns:1fr auto;gap:7px 10px}.deal-row span:nth-child(2){grid-column:1 / -1;order:3}.deal-open-price{grid-template-columns:1fr}.deal-open-price strong{justify-self:start}.transfer-bar{left:50%;right:auto;width:min(320px,calc(100vw - 32px));grid-template-columns:minmax(100px,1fr) auto;gap:6px}.transfer-bar p{max-width:120px}.desk-stage{--dock-width: min(360px, calc(100vw - 24px) )}.desk-stage.dock-open .topbar{padding-right:0}.monitor-layout:not(.dock-collapsed){grid-template-columns:1fr}}
|