:root { color-scheme: dark; /* ── TheCloud dark palette ── */ --bg: #07111d; --surface: #0c1a2b; --elevated: #0d1c2f; --raised: #10243a; --raised-hover: #16304b; --border: rgba(232, 241, 250, 0.16); --border-faint: rgba(232, 241, 250, 0.1); --border-lighter: rgba(232, 241, 250, 0.06); --border-hover: #6cc4ff; --active-nav-bg: #0d2943; --text: #bdd0e3; --text-bright: #e8f1fa; --text-2: #c9d9e8; --text-3: #8aa3bc; --text-muted: var(--text-3); --text-nav: #c6c6cd; --status-ok: #5ce0b0; --status-warn: #ffb547; --status-error: #ff9a9a; --accent: #6cc4ff; --chart-line: #2f9ce0; --accent-tint: rgba(108, 196, 255, 0.16); --accent-tint-faint: rgba(108, 196, 255, 0.07); --accent-tint-border: rgba(108, 196, 255, 0.35); --link: #6cc4ff; --link-tint: rgba(108, 196, 255, 0.08); --link-tint-hover: rgba(108, 196, 255, 0.14); --link-tint-border: rgba(108, 196, 255, 0.3); --hover: rgba(255, 255, 255, 0.04); --hover-md: rgba(255, 255, 255, 0.06); --hover-lg: rgba(255, 255, 255, 0.07); /* 3:1 vs raised so inputs/buttons meet non-text contrast. */ --input-border: rgba(232, 241, 250, 0.28); --input-bg: #0c1a2b; --connection-bg: #091624; --kbd-border: rgba(232, 241, 250, 0.2); --scrollbar-thumb: #48627c; --service-card-bg: #0c1a2b; --service-card-hover: #0d1c2f; --fn-card-hover: #10243a; --bulk-bar-bg: #0d2943; --bulk-bar-border: #6cc4ff; --bulk-bar-text: #e8f1fa; --code-bg: #050d17; /* Workflow Studio: keep canvas surfaces readable independently of state accents. */ --workflow-save-border: #4e628f; --workflow-save-bg: #18233c; --workflow-save-text: #dce7ff; --workflow-save-hover-border: #7498e6; --workflow-save-hover-bg: #21345a; --workflow-canvas-bg: #f2f4f7; --workflow-canvas-dot: rgba(58, 72, 98, .22); --workflow-toolbar-bg: #ffffff; --workflow-node-bg: #ffffff; --workflow-node-text: #162033; --workflow-node-muted: #526077; --workflow-node-border: #73819a; --workflow-node-accent: #6389e8; --workflow-choice-border: #9a7137; --workflow-container-border: #5773a9; --workflow-container-bg: rgba(38, 56, 95, .36); --workflow-warning-border: #bf7b37; --workflow-warning-text: #f3b465; --workflow-task: #5d8dff; --workflow-choice: #d99a3d; --workflow-pass: #76b7a1; --workflow-pass-border: #4f8073; --workflow-wait: #a480df; --workflow-wait-border: #73589b; --workflow-parallel: #d279bd; --workflow-parallel-border: #9d568d; --workflow-map: #45b1bd; --workflow-map-border: #39848d; --workflow-start-border: #4d9d82; --workflow-start-text: #8de0b7; --workflow-end-border: #ab5a67; --workflow-end-text: #f19aa6; --workflow-validation-border: #8f652f; --workflow-validation-bg: rgba(143, 101, 47, .16); --workflow-validation-text: #f2c47e; --workflow-confirmation-border: #657da9; --workflow-confirmation-bg: rgba(42, 61, 96, .34); --workflow-edge: #59677d; /* ── Sidebar geometry ── */ --sidebar-w: 220px; --sidebar-rail-w: 52px; --sidebar-overlay-shadow: 6px 0 32px rgba(0, 0, 0, 0.45); font-family: Sora, Inter, system-ui, sans-serif; background: var(--bg); color: var(--text); } [data-theme="light"] { color-scheme: light; /* ── Warm paper light palette ── */ --paper: #efe7d2; --paper-warm: #ece4cf; --paper-dark: #ddd2b6; --ink: #15140f; --ink-soft: #2a2620; --ink-mute: #5a5448; --ink-faint: #8b8676; --coral: #ed6f5c; --coral-soft: #f08e7c; --mustard: #e9b94a; --olive: #6e7448; --bone: #f7f1de; --line: rgba(21, 20, 15, 0.16); --line-soft: rgba(21, 20, 15, 0.08); --line-faint: rgba(21, 20, 15, 0.05); --shadow: 0 30px 60px -30px rgba(21, 20, 15, 0.18); --serif: 'Playfair Display', 'Times New Roman', serif; --sans: 'Inter Tight', 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; --body: 'Inter', -apple-system, system-ui, sans-serif; --mono: 'JetBrains Mono', 'SF Mono', Menlo, monospace; --bg: var(--paper); --surface: var(--bone); --elevated: #fffaf0; --raised: var(--paper-warm); --raised-hover: var(--paper-dark); --border: var(--line); --border-faint: var(--line-soft); --border-lighter: var(--line-faint); --border-hover: var(--coral); --active-nav-bg: rgba(233, 185, 74, 0.2); --text: var(--ink-soft); --text-bright: var(--ink); --text-2: var(--ink-mute); --text-3: var(--ink-faint); --text-nav: var(--ink-mute); --status-ok: #16803a; --status-warn: #9a6b00; --status-error: #bd3f30; --accent: var(--coral); --chart-line: #d9573f; --accent-tint: rgba(237, 111, 92, 0.14); --accent-tint-faint: rgba(237, 111, 92, 0.07); --accent-tint-border: rgba(237, 111, 92, 0.3); --link: #9d4133; --link-tint: rgba(237, 111, 92, 0.08); --link-tint-hover: rgba(237, 111, 92, 0.14); --link-tint-border: rgba(237, 111, 92, 0.24); --hover: rgba(0, 0, 0, 0.04); --hover-md: rgba(0, 0, 0, 0.05); --hover-lg: rgba(0, 0, 0, 0.06); --input-border: rgba(21, 20, 15, 0.35); --input-bg: rgba(247, 241, 222, 0.72); --connection-bg: rgba(21, 20, 15, 0.025); --kbd-border: var(--line); --scrollbar-thumb: var(--paper-dark); --service-card-bg: var(--bone); --service-card-hover: #fffaf0; --fn-card-hover: var(--paper-warm); --bulk-bar-bg: rgba(233, 185, 74, 0.18); --bulk-bar-border: #b77810; --bulk-bar-text: var(--ink-soft); --code-bg: #282c34; font-family: var(--body); --workflow-save-border: #5565a7; --workflow-save-bg: #e7ecff; --workflow-save-text: #27366e; --workflow-save-hover-border: #3949ab; --workflow-save-hover-bg: #d9e2ff; --workflow-canvas-bg: #f6f7f9; --workflow-canvas-dot: rgba(69, 82, 108, .2); --workflow-toolbar-bg: #ffffff; --workflow-node-bg: #ffffff; --workflow-node-text: #111827; --workflow-node-muted: #4b5565; --workflow-node-border: #7180b0; --workflow-node-accent: #3949ab; --workflow-choice-border: #a76519; --workflow-container-border: #6679ad; --workflow-container-bg: rgba(73, 95, 159, .08); --workflow-warning-border: #a85f13; --workflow-warning-text: #7a3f00; --workflow-task: #1d4ed8; --workflow-choice: #b45309; --workflow-pass: #177a62; --workflow-pass-border: #27806b; --workflow-wait: #7040a6; --workflow-wait-border: #7950a5; --workflow-parallel: #ad3d87; --workflow-parallel-border: #9f4d84; --workflow-map: #147a88; --workflow-map-border: #2d7b86; --workflow-start-border: #24795f; --workflow-start-text: #145a45; --workflow-end-border: #a63b48; --workflow-end-text: #862a35; --workflow-validation-border: #a85f13; --workflow-validation-bg: #fff4df; --workflow-validation-text: #6f3900; --workflow-confirmation-border: #6e7eb3; --workflow-confirmation-bg: #edf1ff; --workflow-edge: #5c6b91; /* 45% black at 32px blur is far too heavy under a white panel. */ --sidebar-overlay-shadow: 6px 0 28px rgba(38, 48, 82, 0.18); } [data-theme="cyber"] { color-scheme: dark; --bg: #02060a; --surface: #050d10; --elevated: #071216; --raised: #0a191d; --raised-hover: #10252a; --border: rgba(78, 255, 150, 0.28); --border-faint: rgba(78, 255, 150, 0.16); --border-lighter: rgba(78, 255, 150, 0.08); --border-hover: #ffea00; --active-nav-bg: rgba(78, 255, 150, 0.14); --text: #8affb8; --text-bright: #d6ffe6; --text-2: #62d992; --text-3: #2f9a68; --text-muted: var(--text-3); --text-nav: #8affb8; --status-ok: #4eff96; --status-warn: #ffea00; --status-error: #ff8da1; --accent: #4eff96; --chart-line: #2fae67; --accent-tint: rgba(78, 255, 150, 0.14); --accent-tint-faint: rgba(78, 255, 150, 0.07); --accent-tint-border: rgba(78, 255, 150, 0.34); --link: #ffea00; --link-tint: rgba(255, 234, 0, 0.08); --link-tint-hover: rgba(255, 234, 0, 0.14); --link-tint-border: rgba(255, 234, 0, 0.3); --hover: rgba(78, 255, 150, 0.06); --hover-md: rgba(78, 255, 150, 0.1); --hover-lg: rgba(78, 255, 150, 0.14); --input-border: rgba(78, 255, 150, 0.42); --input-bg: #030b0d; --connection-bg: #02090c; --kbd-border: rgba(78, 255, 150, 0.35); --scrollbar-thumb: #26784e; --service-card-bg: #050d10; --service-card-hover: #071216; --fn-card-hover: #0a191d; --bulk-bar-bg: #071b13; --bulk-bar-border: #4eff96; --bulk-bar-text: #d6ffe6; --code-bg: #000; } * { box-sizing: border-box; } html, body, #root { height: 100%; margin: 0; overflow: hidden; } body { background: var(--bg); color: var(--text); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } button, input, select { font: inherit; } button { cursor: pointer; } :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } /* Parked off-screen with a fixed offset rather than a percentage transform: translating by its own height cannot clear the focused `top`, which left a 1px edge showing at the top of the viewport. */ .skip-link { position: absolute; left: 12px; top: -100px; z-index: 400; padding: 8px 12px; border: 1px solid var(--input-border); border-radius: 4px; background: var(--surface); color: var(--text-bright); font-size: 13px; font-weight: 600; text-decoration: none; } .skip-link:focus { top: 8px; } .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .copy-value { display: inline-flex; align-items: center; gap: 4px; min-width: 0; } .copy-value-button { flex: 0 0 auto; padding: 2px; } #main-content:focus { outline: none; } code, pre, .mono { font-family: "Space Mono", "JetBrains Mono", "Fira Code", Consolas, monospace; } ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb); border-radius: 3px; } .app { display: flex; height: 100%; width: 100%; overflow: hidden; } /* ─── Collapsible sidebar ────────────────────────────────────────────────── */ /* The