@telepath-computer/television 1.4.14 → 1.4.16
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/canonical/v2/styles.css +24 -2
- package/dist/cli.cjs +26 -9
- package/dist/skills/television/SKILL.md +8 -1
- package/dist/skills/television/theming.md +21 -17
- package/dist/web/assets/main-kmht3QeW.css +1 -0
- package/dist/web/assets/main-tAq-Xbek.js +826 -0
- package/dist/web/index.html +2 -2
- package/dist/web/views/url-unsupported/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/main-FbuXtkKu.css +0 -1
- package/dist/web/assets/main-nG2AR2Sh.js +0 -843
|
@@ -422,13 +422,16 @@
|
|
|
422
422
|
--text-4xl: round(calc(var(--text-base) * 30 / 14), 1px);
|
|
423
423
|
|
|
424
424
|
/* The control lines: the line-height a control's label uses, and the one
|
|
425
|
-
input its height derives from — the line, plus the
|
|
425
|
+
input its height derives from — the line, plus the size's padding step
|
|
426
426
|
top and bottom, plus a 1px border each side, gives every control the
|
|
427
|
-
same height: 18 + 4 + 2 = 24px
|
|
427
|
+
same height at each size: 18 + 4 + 2 = 24px at the default size (the
|
|
428
|
+
space-2 step), 14 + 4 + 2 = 20px at the small step (space-2), and
|
|
429
|
+
22 + 16 + 2 = 40px at the large step (space-8).
|
|
428
430
|
Stated in pixels, not a ratio: a control's cell is tighter than prose,
|
|
429
431
|
immune to the leading around it, and lands on even pixels in any font. */
|
|
430
432
|
--line-control: 18px;
|
|
431
433
|
--line-control-sm: 14px;
|
|
434
|
+
--line-control-lg: 22px;
|
|
432
435
|
}
|
|
433
436
|
|
|
434
437
|
:where(:root) {
|
|
@@ -855,6 +858,16 @@
|
|
|
855
858
|
padding: var(--space-2);
|
|
856
859
|
}
|
|
857
860
|
|
|
861
|
+
:where(button[size="lg"]) {
|
|
862
|
+
font-size: var(--text-lg);
|
|
863
|
+
line-height: var(--line-control-lg);
|
|
864
|
+
padding: var(--space-8) var(--space-20);
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
:where(button[size="lg"][icon]) {
|
|
868
|
+
padding: var(--space-8);
|
|
869
|
+
}
|
|
870
|
+
|
|
858
871
|
/* A sized control sizes the icon it holds: whatever size the composer put on
|
|
859
872
|
the icon, the control's own wins — `tv-icon[size]` names a fixed pixel
|
|
860
873
|
size, so left alone the icon would ignore the control shrinking around it.
|
|
@@ -900,6 +913,15 @@
|
|
|
900
913
|
resize: vertical;
|
|
901
914
|
}
|
|
902
915
|
|
|
916
|
+
/* The large size matches a large button beside the field
|
|
917
|
+
([[ui/foundation/button/button.css]]): the same text step, line and
|
|
918
|
+
vertical padding step, so the two are the same height. */
|
|
919
|
+
:where(:is(input:not([type]), input[type=""], input[type="text"], input[type="email"], input[type="url"], input[type="tel"], input[type="password"], input[type="number"], textarea)[data-size="lg"]) {
|
|
920
|
+
font-size: var(--text-lg);
|
|
921
|
+
line-height: var(--line-control-lg);
|
|
922
|
+
padding: var(--space-8) var(--space-12);
|
|
923
|
+
}
|
|
924
|
+
|
|
903
925
|
/* Shared error-message styling; validation and announcement belong to the surface. */
|
|
904
926
|
:where(.tv-error) {
|
|
905
927
|
margin: 0;
|
package/dist/cli.cjs
CHANGED
|
@@ -53345,7 +53345,7 @@ function disabledTelemetryRuntime() {
|
|
|
53345
53345
|
|
|
53346
53346
|
// ../server/src/updates/version.ts
|
|
53347
53347
|
function readVersionStamp() {
|
|
53348
|
-
if ("1.4.
|
|
53348
|
+
if ("1.4.16".length > 0) return "1.4.16";
|
|
53349
53349
|
return void 0;
|
|
53350
53350
|
}
|
|
53351
53351
|
function resolveUpdateReleaseVersion(env = process.env, stamp = readVersionStamp()) {
|
|
@@ -53887,8 +53887,8 @@ var Server = class {
|
|
|
53887
53887
|
};
|
|
53888
53888
|
};
|
|
53889
53889
|
function readServerPackageVersion() {
|
|
53890
|
-
if ("1.4.
|
|
53891
|
-
return telemetryVersion("1.4.
|
|
53890
|
+
if ("1.4.16".length > 0) {
|
|
53891
|
+
return telemetryVersion("1.4.16");
|
|
53892
53892
|
}
|
|
53893
53893
|
const packageJsonPath = import_node_path13.default.resolve(import_node_path13.default.dirname((0, import_node_url.fileURLToPath)(import_meta.url)), "..", "package.json");
|
|
53894
53894
|
if (!(0, import_node_fs11.existsSync)(packageJsonPath)) return telemetryVersion("0.0.0");
|
|
@@ -56073,15 +56073,15 @@ function writeLine(output, line) {
|
|
|
56073
56073
|
output.write(`${line}
|
|
56074
56074
|
`);
|
|
56075
56075
|
}
|
|
56076
|
-
function
|
|
56077
|
-
|
|
56076
|
+
function formatConnectURL(output, serverURL, token) {
|
|
56077
|
+
const url2 = buildConnectURL(serverURL, token);
|
|
56078
|
+
return output.isTTY === true ? `\x1B]8;;${url2}\x1B\\${url2}\x1B]8;;\x1B\\` : url2;
|
|
56078
56079
|
}
|
|
56079
56080
|
function writeConnectURLs(output, urls, options = {}) {
|
|
56080
56081
|
writeLine(output, options.installed ? "Television service installed." : "Television server running.");
|
|
56081
56082
|
writeLine(output, "Open Television:");
|
|
56082
56083
|
for (const url2 of urls) {
|
|
56083
|
-
|
|
56084
|
-
writeLine(output, ` ${terminalHyperlink(connectURL)}`);
|
|
56084
|
+
writeLine(output, ` ${formatConnectURL(output, url2, options.token)}`);
|
|
56085
56085
|
}
|
|
56086
56086
|
}
|
|
56087
56087
|
async function bestEffortWithinTimeout2(operation, timeoutMs) {
|
|
@@ -56119,8 +56119,8 @@ function resolveVercelSkillsInstallerBin() {
|
|
|
56119
56119
|
return localRequire.resolve("skills/bin/cli.mjs");
|
|
56120
56120
|
}
|
|
56121
56121
|
function readCLIVersion() {
|
|
56122
|
-
if ("1.4.
|
|
56123
|
-
return "1.4.
|
|
56122
|
+
if ("1.4.16".length > 0) {
|
|
56123
|
+
return "1.4.16";
|
|
56124
56124
|
}
|
|
56125
56125
|
const devPackageJsonPath = import_node_path20.default.join(getDevPackageDir(), "package.json");
|
|
56126
56126
|
if (!(0, import_node_fs18.existsSync)(devPackageJsonPath)) {
|
|
@@ -57041,6 +57041,23 @@ function createProgram(env, invocation = { argv: [] }) {
|
|
|
57041
57041
|
program2.command("stop").description("Stop the Television system service").action(async () => {
|
|
57042
57042
|
await uninstallPersistedService(resolveHome());
|
|
57043
57043
|
});
|
|
57044
|
+
program2.command("links").description("Print connect links for the running Television server").option("--port <number>", "Server port; required when the config file sets port 0", parseClientPortOption).action(async (opts) => {
|
|
57045
|
+
const serverURL = resolveServerURL(opts.port);
|
|
57046
|
+
const token = readAuthToken(resolveHome());
|
|
57047
|
+
const client = env.createClient(serverURL, token);
|
|
57048
|
+
const health = await client.health();
|
|
57049
|
+
await client.display.get();
|
|
57050
|
+
let requiresToken = false;
|
|
57051
|
+
try {
|
|
57052
|
+
await env.createClient(serverURL, void 0).display.get();
|
|
57053
|
+
} catch (error48) {
|
|
57054
|
+
if (typeof error48 !== "object" || error48 === null || !("status" in error48) || error48.status !== HTTP_UNAUTHORIZED_STATUS2) throw error48;
|
|
57055
|
+
requiresToken = true;
|
|
57056
|
+
}
|
|
57057
|
+
for (const address of health.bindAddresses) {
|
|
57058
|
+
writeLine(env.stdout, formatConnectURL(env.stdout, buildServerURL(address, health.port), requiresToken ? token : null));
|
|
57059
|
+
}
|
|
57060
|
+
});
|
|
57044
57061
|
program2.command("status").description("Print the selected home, server health, version, telemetry state, and service status as JSON").option("--port <number>", "Server port; required when the config file sets port 0", parseClientPortOption).action(async (opts) => {
|
|
57045
57062
|
const home = resolveHome();
|
|
57046
57063
|
const serverURL = resolveServerURL(opts.port);
|
|
@@ -577,7 +577,7 @@ documented token with a literal fallback where appropriate.
|
|
|
577
577
|
|
|
578
578
|
### Type
|
|
579
579
|
|
|
580
|
-
`--control-font-size`, `--text-base`, `--text-sm`, `--text-md`, `--text-lg`, `--text-xl`, `--text-2xl`, `--text-3xl`, `--text-4xl`, `--line-control`, `--line-control-sm`.
|
|
580
|
+
`--control-font-size`, `--text-base`, `--text-sm`, `--text-md`, `--text-lg`, `--text-xl`, `--text-2xl`, `--text-3xl`, `--text-4xl`, `--line-control`, `--line-control-sm`, `--line-control-lg`.
|
|
581
581
|
|
|
582
582
|
### Spacing and radii
|
|
583
583
|
|
|
@@ -593,6 +593,13 @@ documented token with a literal fallback where appropriate.
|
|
|
593
593
|
|
|
594
594
|
## Canonical components
|
|
595
595
|
|
|
596
|
+
### Large controls
|
|
597
|
+
|
|
598
|
+
Use `<button size="lg">Connect</button>` for a large button and
|
|
599
|
+
`<input data-size="lg" aria-label="Server link">` for a matching text field.
|
|
600
|
+
The same `data-size="lg"` applies to textareas. Their line height comes from
|
|
601
|
+
`--line-control-lg`; an ordinary control omits the size attribute.
|
|
602
|
+
|
|
596
603
|
### Native inputs and errors
|
|
597
604
|
|
|
598
605
|
Native text-entry inputs and textareas receive shared styling automatically.
|
|
@@ -460,13 +460,16 @@ These four tokens are enough to replace the main surfaces and text, but they do
|
|
|
460
460
|
--text-4xl: round(calc(var(--text-base) * 30 / 14), 1px);
|
|
461
461
|
|
|
462
462
|
/* The control lines: the line-height a control's label uses, and the one
|
|
463
|
-
input its height derives from — the line, plus the
|
|
463
|
+
input its height derives from — the line, plus the size's padding step
|
|
464
464
|
top and bottom, plus a 1px border each side, gives every control the
|
|
465
|
-
same height: 18 + 4 + 2 = 24px
|
|
465
|
+
same height at each size: 18 + 4 + 2 = 24px at the default size (the
|
|
466
|
+
space-2 step), 14 + 4 + 2 = 20px at the small step (space-2), and
|
|
467
|
+
22 + 16 + 2 = 40px at the large step (space-8).
|
|
466
468
|
Stated in pixels, not a ratio: a control's cell is tighter than prose,
|
|
467
469
|
immune to the leading around it, and lands on even pixels in any font. */
|
|
468
470
|
--line-control: 18px;
|
|
469
471
|
--line-control-sm: 14px;
|
|
472
|
+
--line-control-lg: 22px;
|
|
470
473
|
}
|
|
471
474
|
|
|
472
475
|
/* Foundation tokens — spacing and corners */
|
|
@@ -635,6 +638,9 @@ These four tokens are enough to replace the main surfaces and text, but they do
|
|
|
635
638
|
--navbar-border-color: transparent;
|
|
636
639
|
--navbar-border-width: 1px;
|
|
637
640
|
--navbar-border: var(--navbar-border-width) solid var(--navbar-border-color);
|
|
641
|
+
/* Space between the navbar's controls, and on each side of the line
|
|
642
|
+
between the sidebar titlebar's buttons; tabs follow it by default. */
|
|
643
|
+
--toolbar-gap: var(--space-3);
|
|
638
644
|
|
|
639
645
|
/* The ground behind the stage: one background value, composed from an
|
|
640
646
|
optional image URL over the light or dark neutral ground. The image token
|
|
@@ -663,7 +669,7 @@ These four tokens are enough to replace the main surfaces and text, but they do
|
|
|
663
669
|
/* The tab pill's own dials ([[ui/app/tab-strip/tab.frame]] and the strip
|
|
664
670
|
consume them). */
|
|
665
671
|
--tab-radius: var(--control-radius);
|
|
666
|
-
--tab-gap: var(--
|
|
672
|
+
--tab-gap: var(--toolbar-gap); /* between tabs in the strip */
|
|
667
673
|
--tab-border: var(--wallpaper-overlay-border);
|
|
668
674
|
/* Transparent at rest; pointer states use the shared control tints. */
|
|
669
675
|
--tab-background: var(--wallpaper-overlay-background);
|
|
@@ -685,10 +691,6 @@ These four tokens are enough to replace the main surfaces and text, but they do
|
|
|
685
691
|
--drag-item-shadow: var(--shadow-md);
|
|
686
692
|
--drag-action-shadow: var(--shadow-sm);
|
|
687
693
|
|
|
688
|
-
|
|
689
|
-
/* The shared top band supplies equal air above and below the tabs. */
|
|
690
|
-
--navbar-gap: 0px;
|
|
691
|
-
|
|
692
694
|
/* The artifact frame's radius ([[ui/app/artifact-frame/artifact-frame.frame]]);
|
|
693
695
|
artifact documents also apply it by reference
|
|
694
696
|
([[ui/app/artifact-frame/index.md#^af-document-corners]]). */
|
|
@@ -730,6 +732,8 @@ An artifact frame belongs to the application document. The document inside its i
|
|
|
730
732
|
|
|
731
733
|
`#app` owns the application layout and suppresses ordinary text selection in its contents; readable regions can explicitly restore selection. `.app-sidebar` holds the channel list. The sidebar defaults to 260 pixels wide, resizes between 160 and 350 pixels, and remembers the chosen width per browser; it can also collapse entirely, the navbar then opening with an expand control and — while a channel is open — a channel-switcher popover, with the collapsed state remembered per browser. `.app-main` holds the wallpaper, navbar and stage. `.app-main > .top-bar` supplies the horizontal control inset; stage padding is separate. Preserve the shell width constraints so overflowing tabs and pages scroll inside their regions without widening the document. `#app:focus` suppresses a ring on the container itself. The wallpaper region establishes a backdrop boundary so overlay blur samples the wallpaper rather than adjacent content, while fixed popovers retain viewport positioning.
|
|
732
734
|
|
|
735
|
+
While Television cannot use its server, one connection dialog is shown. Disconnected and unreachable states keep an established shell and its artifact documents mounted; first connection, authorization and upgrade-gate states have no shell behind them. Three failed unreachable reconnects change Disconnected to Can’t connect with server; the displayed upgrade gate stays until reload.
|
|
736
|
+
|
|
733
737
|
During collapse or expansion, `#app[data-sidebar-motion]` contains both resting layouts and one travelling control:
|
|
734
738
|
|
|
735
739
|
```html
|
|
@@ -853,7 +857,7 @@ An empty channel adds `.stage-empty`, containing an artifact `tv-icon` and a par
|
|
|
853
857
|
</div>
|
|
854
858
|
```
|
|
855
859
|
|
|
856
|
-
`.artifact-frame` owns the border, curve, surface and broad shadow. Its `::before` paints the sharp rim and its `::after` paints a pointer-transparent masked inner highlight over document and titlebar. Background pages suppress the broad shadow while retaining the exterior rim. `.artifact-frame-clip > :is(iframe, webview)` fills the document area through the one-pixel padding track. `.artifact-frame-clip` clips the document and titlebar while the outer frame lets both shadows extend outward. `.artifact-title-bar` paints the lower band, `.artifact-title-bar .artifact-title` takes the remaining width and truncates, and `.artifact-bar-divider` separates navigation from the menu trigger. The two direction buttons use `disabled` to show unavailable history. In browser demo mode, the frame of an external web page wraps its artifact `tv-icon` in `button.artifact-return` (`icon`, ghost, `sm`) and shows no direction controls. The document repeats the top clipping radius where required for composited iframe/webview rendering.
|
|
860
|
+
`.artifact-frame` owns the border, curve, surface and broad shadow. Its `::before` paints the sharp rim and its `::after` paints a pointer-transparent masked inner highlight over document and titlebar. Background pages suppress the broad shadow while retaining the exterior rim. `.artifact-frame-clip > :is(iframe, webview)` fills the document area through the one-pixel padding track. `.artifact-frame-clip` clips the document and titlebar while the outer frame lets both shadows extend outward. `.artifact-title-bar` paints the lower band, `.artifact-title-bar .artifact-title` takes the remaining width and truncates, and `.artifact-bar-divider` separates navigation from the menu trigger. The two direction buttons use `disabled` to show unavailable history. In browser demo mode, the frame of an external web page wraps its artifact `tv-icon` in `button.artifact-return` (`icon`, ghost, `sm`) and shows no direction controls. The document repeats the top clipping radius where required for composited iframe/webview rendering. A frame can also hold static `.artifact-frame-content` in place of a document and omit its menu when it has no artifact to act on. That content fills the clipping region above the title bar.
|
|
857
861
|
|
|
858
862
|
The artifact menu uses the same shared menu elements and placement as channel menus. Deletion uses the shared dialog outline below.
|
|
859
863
|
|
|
@@ -904,7 +908,7 @@ An executable active theme adds `.settings-javascript-consent`, with `.settings-
|
|
|
904
908
|
|
|
905
909
|
The update control is `button.update-bell#update-bell[icon][intent="alert"]` paired with `tv-popover.update-popover[manual][trigger="update-bell"][role="status"]`. `.update-popover` contains readable notice text and `.update-actions` with `button.update-later` and an optional primary copy action. The desktop self-update notice has `button.update-restart[size="sm"][intent="primary"]` in place of the copy action; it carries `[disabled]` while the app restarts. The manual panel stays open until the composing surface closes it.
|
|
906
910
|
|
|
907
|
-
The reusable copy control is `button.copy-button[
|
|
911
|
+
The reusable copy control is `button.copy-button[prompt]`, optionally carrying `intent` and `size`, containing `.copy-button-idle` and `.copy-button-done`. Both contain an icon and label. The default Copy size is `sm`; callers can omit the rendered size attribute for a standard button or request `size="lg"`. `.copy-button[copied] .copy-button-idle` hides the idle content without changing its occupied space; `.copy-button[copied] .copy-button-done` overlays the confirmation. `.copy-button-status` is a separate visually hidden live announcement. Preserve that status region and stable button size when restyling confirmation.
|
|
908
912
|
|
|
909
913
|
### Dialogs, connection states and upgrade gate
|
|
910
914
|
|
|
@@ -923,19 +927,19 @@ The reusable copy control is `button.copy-button[size="sm"][prompt]`, optionally
|
|
|
923
927
|
|
|
924
928
|
The scrolling `.dialog-content` wrapper may contain ordinary content instead of an alert. Ambient selectors `:where(.dialog-overlay)`, `:where(dialog)`, and `:where(dialog:focus-visible)` define dimming, centering, panel chrome and container focus treatment. `:where(.dialog-alert)`, `:where(.dialog-alert h2)`, `:where(.dialog-alert p)`, and `:where(.dialog-actions)` define the shared confirmation interior. Keep the modal input boundary and focus behavior intact.
|
|
925
929
|
|
|
926
|
-
Connection
|
|
930
|
+
Connection dialogs use `.system-modal`, with a heading and supporting text where applicable. `.system-modal h2` and `.system-modal p:not(.tv-error)` set their hierarchy. Connecting has a spinning icon and title; Disconnected adds the reconnect countdown or in-flight line. Can’t connect with server has no icon, adds `.server-url` and recovery guidance, and keeps the reconnect line. Access token required uses the lock icon and guidance for obtaining a current link. The browser directs the person to its address bar; the desktop's served interface directs them to Disconnect from Server in the app menu.
|
|
931
|
+
|
|
932
|
+
Only the local desktop page adds `button.system-modal-disconnect[intent="danger"]` to unauthorized and error dialogs:
|
|
927
933
|
|
|
928
934
|
```html
|
|
929
|
-
<
|
|
935
|
+
<div class="system-modal">
|
|
930
936
|
<tv-icon name="locked" size="xl"></tv-icon>
|
|
931
937
|
<h2>…</h2><p>…</p>
|
|
932
|
-
<
|
|
933
|
-
|
|
934
|
-
<button class="auth-submit" intent="primary">…</button>
|
|
935
|
-
</form>
|
|
938
|
+
<button class="system-modal-disconnect" intent="danger">…</button>
|
|
939
|
+
</div>
|
|
936
940
|
```
|
|
937
941
|
|
|
938
|
-
|
|
942
|
+
Connection dialogs leave only when their owner's state changes. Served dialogs wear the server's theme; local dialogs wear Clouds. In the desktop app a `.window-drag-strip[electron-draggable]` spans the top 36 pixels while no shell is rendered, including on the local page. It sits inside `dialog`, outside `.dialog-content`, so native modality leaves it interactive. A retained shell supplies its own drag areas, including with its sidebar collapsed.
|
|
939
943
|
|
|
940
944
|
Upgrade instructions use `.desktop-upgrade-gate > .dialog-overlay > dialog > .dialog-content > .upgrade-gate-body`. The gate fills the halted page; the body scrolls within the panel. `.upgrade-gate-body h1`, `.upgrade-gate-body p`, `.upgrade-gate-body pre`, and `.upgrade-gate-body :last-child` restore local reading rhythm and command formatting. When the app has downloaded an update, `.upgrade-gate-actions` follows the body inside `.dialog-content` and places `button.upgrade-gate-restart[intent="primary"]` trailing below the message; the button carries `[disabled]` while the app restarts.
|
|
941
945
|
|
|
@@ -950,7 +954,7 @@ Upgrade instructions use `.desktop-upgrade-gate > .dialog-overlay > dialog > .di
|
|
|
950
954
|
</main>
|
|
951
955
|
```
|
|
952
956
|
|
|
953
|
-
`.artifact-error` paints the document ground; `.artifact-error-body` limits the reading column. `.artifact-error h1`, `.artifact-error p`, and `.artifact-error-block` arrange its text. A missing artifact can include a path chip. An unsupported URL can include a link or `.plain-address`, followed by a link to the admin guide. `.artifact-error a`, `.artifact-error .plain-address`, and `.artifact-error code` wrap long content; the path chip is selected whole for copying. Optional host-supplied content may carry `[hidden]`.
|
|
957
|
+
`.artifact-error` paints the document ground; `.artifact-error-body` limits the reading column. `.artifact-error h1`, `.artifact-error p`, and `.artifact-error-block` arrange its text. A missing artifact can include a path chip. An unsupported URL can include a link or `.plain-address`, followed by a link to the admin guide for installing the Mac desktop app. `.artifact-error a`, `.artifact-error .plain-address`, and `.artifact-error code` wrap long content; the path chip is selected whole for copying. Optional host-supplied content may carry `[hidden]`.
|
|
954
958
|
|
|
955
959
|
## Panels and surface edges
|
|
956
960
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.sidebar{min-height:100vh;height:100%;box-sizing:border-box;display:flex;flex-direction:column;position:relative;background:var(--sidebar-background);background-clip:border-box;color:var(--sidebar-text-color);border-right:var(--sidebar-border);padding-right:1px;box-shadow:var(--sidebar-shadow)}.sidebar:after{content:"";position:absolute;top:0;bottom:0;right:0;width:1px;background:var(--panel-edge-highlight);font-size:0;background-size:100% calc(100% + 2px);background-position:bottom;pointer-events:none}.sidebar-titlebar{flex:none;height:var(--app-bar-height);padding-top:1px;padding-left:var(--traffic-light-x-reserve);padding-right:var(--app-bar-padding-inline);display:flex;align-items:center;justify-content:flex-end;-webkit-app-region:drag;border-bottom:1px solid transparent}.sidebar:has(.sidebar-body[continues-start]) .sidebar-titlebar{border-bottom-color:var(--sidebar-border-color)}.sidebar-body{flex:1;min-height:0;overflow-y:auto}.sidebar-titlebar>button{-webkit-app-region:no-drag}.toolbar-separator{flex:none;width:1px;height:16px;background:var(--color-border);margin:0 var(--toolbar-gap)}.channel-list{padding:var(--space-4) var(--space-8) var(--space-12)}.channel-group+.channel-group{margin-top:var(--space-24)}.channel-group-label{margin:0 0 var(--space-4);padding:0 var(--space-8);font-size:var(--sidebar-heading-font-size);font-weight:var(--font-weight-medium);color:var(--sidebar-heading-text-color)}.channel-row{position:relative;overflow:clip}.channel{display:block;width:100%;box-sizing:border-box;font-size:var(--text-md);line-height:var(--line-control);cursor:default;padding:var(--space-4) calc(2 * var(--space-4) + 20px) var(--space-4) var(--space-8);border:1px solid transparent;border-radius:var(--channel-radius);background:var(--channel-background);color:var(--channel-text-color);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:where(.channel-row:hover,.channel-row:has(.channel-menu-trigger[aria-expanded=true])) .channel:not([aria-selected=true]){background:var(--channel-background-hover)}:where(.channel-row:active) .channel:not([aria-selected=true]){background:var(--channel-background-active)}.channel[aria-selected=true]{background:var(--channel-background-selected);color:var(--channel-text-color-selected)}.channel-row:has(>.channel[aria-selected=true]) .channel-menu-trigger{color:var(--channel-text-color-selected)}.channel-menu-trigger{position:absolute;top:50%;right:var(--space-4);translate:0 -50%;opacity:0}.channel-row:hover .channel-menu-trigger,.channel-menu-trigger:focus-visible,.channel-row:has(.channel-menu-trigger[aria-expanded=true]) .channel-menu-trigger,.channel-row:has(>.channel[aria-selected=true]) .channel-menu-trigger{opacity:1}.channel-rename{display:block;width:100%;padding:var(--space-4) calc(2 * var(--space-4) + 20px) var(--space-4) var(--space-8)}.channel-row:has(.channel-rename){overflow:visible}.channel-rename-commit{position:absolute;top:50%;right:var(--space-4);translate:0 -50%}.channel-row.dragged{z-index:calc(var(--layer-ground) + 1);overflow:visible;width:fit-content;min-width:160px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--channel-radius);box-shadow:var(--drag-item-shadow)}.channel-row.dragged .channel{padding-right:var(--space-8)}.channel-drag-action{display:flex;align-items:center;gap:var(--space-4);position:absolute;top:-10px;right:-10px;height:20px;padding:0 var(--space-8) 0 var(--space-6);border-radius:10px;background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--drag-action-shadow);font-size:var(--text-sm)}.channel-drag-action tv-icon{font-size:12px}.channel-placeholder{display:block;height:calc(var(--line-control) + 2 * var(--space-4) + 2 * 1px);border-radius:var(--control-radius);background:var(--drag-placeholder-background)}:where(.dialog-overlay){position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--layer-overlay);display:flex;align-items:center;justify-content:center;padding:var(--space-16);background:var(--color-overlay)}:where(.dialog-alert){width:min(384px,90vw);box-sizing:border-box;padding:var(--space-24);display:flex;flex-direction:column;gap:var(--space-8)}:where(.dialog-alert h2){font-size:var(--text-lg);font-weight:var(--font-weight-semibold);overflow-wrap:break-word}:where(.dialog-alert p){color:var(--color-text-muted)}:where(.dialog-actions){margin-top:var(--space-16);display:flex;justify-content:flex-end;gap:var(--space-8)}.dialog-overlay>dialog::backdrop{background:transparent}.sidebar[dragging] .sidebar-body,.channel-switcher-pop[dragging] .channel-switcher-pop-body{overflow-anchor:none}.channel-group[drag-collapsed]{height:0;margin-top:0;overflow:visible}.channel-group[drag-collapsed]>.channel-group-label{display:none}.channel-group[drag-collapsed]+.channel-group{margin-top:0}.channel-group-withdrawal{position:fixed;z-index:2;margin:0;overflow:hidden;pointer-events:none}.channel-placeholder{width:100%}.channel-row.dragged{position:fixed;z-index:3;margin:0;overflow:visible;pointer-events:none}.channel-row.dragged :where(.channel-menu-trigger,tv-menu){display:none}.artifact-view .artifact-content{flex:1;min-height:0;overflow:auto;overscroll-behavior-y:contain;background:var(--color-surface)}.artifact-view[data-embed-loaded] .artifact-content{background:transparent}.artifact-view iframe.artifact-content,.artifact-view webview.artifact-content{margin-bottom:-1px;border:0;width:calc(100% + 2px);border-radius:var(--frame-radius) var(--frame-radius) 0 0}.artifact-view iframe.artifact-content{display:block}.artifact-view .artifact-placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-text-muted, #888);font-size:12px}.artifact-view .artifact-missing{display:grid;place-items:center;box-sizing:border-box;padding:24px;color:#222;background:#dadada}.artifact-view .artifact-missing-wrapper{width:100%;max-width:520px;margin:0 auto}.artifact-view .artifact-missing h1{margin:0 0 .75rem;font-size:1.125rem;line-height:1.25}.artifact-view .artifact-missing p{margin:0;font-size:.875rem;line-height:1.45}.artifact-view .artifact-missing-path{margin:1rem 0}.artifact-view .artifact-missing-path-label{margin-bottom:.375rem}.artifact-view .artifact-missing code{display:inline-block;max-width:100%;overflow-wrap:anywhere;padding:.125rem .3rem;border-radius:.35rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.85em;color:#253040;background:#cbcbcb;-webkit-user-select:all;user-select:all}.artifact-frame{position:relative;isolation:isolate;display:flex;flex-direction:column;padding:0;box-sizing:border-box;height:100%;min-width:0;min-height:0;background:var(--frame-background);background-clip:border-box;box-shadow:var(--artifact-frame-shadow);border:var(--frame-border);border-radius:var(--frame-radius)}.artifact-frame-clip{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;padding:1px;overflow:hidden;border-radius:inherit}.artifact-frame:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:var(--panel-edge-shadow);pointer-events:none}.artifact-frame:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;padding:1px;pointer-events:none;z-index:calc(var(--layer-ground) + 2);background:var(--panel-edge-highlight);font-size:var(--frame-radius);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude}.artifact-frame-clip>:is(iframe,webview){margin:-1px;width:calc(100% + 2px);flex:1;min-width:0;min-height:0;border:0}.artifact-frame-clip>.artifact-frame-content{flex:1;min-width:0;min-height:0}.artifact-title-bar{position:relative;flex:none;display:flex;align-items:center;gap:var(--space-6);padding:var(--frame-titlebar-padding);background:var(--frame-titlebar-background);color:var(--frame-titlebar-text-color);border-top:var(--frame-titlebar-border);margin:0 -1px -1px;border-left:1px solid transparent;border-right:1px solid transparent;border-bottom:1px solid transparent;background-clip:border-box}.artifact-title-bar .artifact-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.artifact-bar-divider{width:1px;height:14px;margin:0 var(--space-2);background:var(--frame-titlebar-divider-color)}.artifact-view{width:100%}.artifact-view>.artifact-frame-clip>.artifact-content{flex:1;height:auto;min-width:0;min-height:0;padding:0;border:0}.artifact-view>.artifact-frame-clip>iframe.artifact-content{display:block}body>.stage{height:100%}.stage{position:relative;flex:1;min-width:0;min-height:0;display:flex;container-type:size;background:transparent;overflow:hidden}.filmstrip{flex:1;min-width:0;min-height:0;overflow:hidden;overscroll-behavior:none;touch-action:none}.filmstrip-inner{height:100%;min-width:max-content;display:flex;align-items:center;gap:var(--page-gap);padding-bottom:var(--page-inset)}.filmstrip-inner:before,.filmstrip-inner:after{content:"";flex:none;width:50cqw}.page{flex:none;max-width:calc(100cqw - var(--page-inset) - var(--page-inset));max-height:calc(100cqh - var(--page-inset))}.page[full-screen]{width:calc(100cqw - var(--page-inset) - var(--page-inset));height:calc(100cqh - var(--page-inset))}.page>.artifact-frame{width:100%}.page{position:relative;transition:backdrop-filter .28s ease,scale .28s ease,width .28s ease,height .28s ease}.page:not([selected]){-webkit-backdrop-filter:blur(var(--page-inactive-backdrop-blur));backdrop-filter:blur(var(--page-inactive-backdrop-blur));border-radius:var(--frame-radius);scale:var(--page-inactive-scale)}.page>.artifact-frame{transition:filter .28s ease,opacity .28s ease}.page:not([selected])>.artifact-frame{filter:blur(var(--page-inactive-blur));opacity:var(--page-inactive-opacity)}.page:has(~.page[selected]){transform-origin:right center}.page[selected]~.page{transform-origin:left center}.page[selected]{z-index:calc(var(--layer-ground) + 1)}.page:not([selected]) .artifact-frame{box-shadow:none;pointer-events:none}@media(prefers-reduced-motion:reduce){.page,.page>.artifact-frame{transition:none}}.snap-outline{position:absolute;top:0;left:var(--page-inset);right:var(--page-inset);bottom:var(--page-inset);border:var(--page-snap-preview-border);border-radius:var(--page-snap-preview-radius);background:var(--page-snap-preview-background);pointer-events:none;z-index:calc(var(--layer-ground) + 2)}.stage-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-sizing:border-box;width:max-content;min-height:160px;max-width:calc(100% - var(--page-inset) - var(--page-inset));padding:var(--space-24);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-8);text-align:center;color:var(--wallpaper-overlay-text-color);background:var(--wallpaper-overlay-background);border:var(--wallpaper-overlay-border);outline:var(--wallpaper-overlay-outline);outline-offset:0;border-radius:var(--panel-radius);-webkit-backdrop-filter:blur(var(--wallpaper-overlay-blur));backdrop-filter:blur(var(--wallpaper-overlay-blur))}.stage-empty p{margin:0}.page>.artifact-view{width:100%;height:100%}.page:not([selected]) .artifact-view{pointer-events:none}.page-handle{position:absolute;z-index:2;touch-action:none}.page-handle.left,.page-handle.right{top:0;bottom:0;width:var(--handle-band);cursor:ew-resize}.page-handle.top,.page-handle.bottom{left:0;right:0;height:var(--handle-band);cursor:ns-resize}.page-handle.left{left:calc(var(--handle-band) / -2)}.page-handle.right{right:calc(var(--handle-band) / -2)}.page-handle.top{top:calc(var(--handle-band) / -2)}.page-handle.bottom{bottom:calc(var(--handle-band) / -2)}.page-handle.top-left,.page-handle.top-right,.page-handle.bottom-left,.page-handle.bottom-right{width:var(--handle-reach);height:var(--handle-reach);z-index:3}.page-handle.top-left{left:calc(var(--handle-band) / 2 - var(--handle-thickness));top:calc(var(--handle-band) / 2 - var(--handle-thickness));cursor:nwse-resize;clip-path:polygon(0 0,100% 0,100% var(--handle-thickness),var(--handle-thickness) var(--handle-thickness),var(--handle-thickness) 100%,0 100%)}.page-handle.bottom-right{right:calc(var(--handle-band) / 2 - var(--handle-thickness));bottom:calc(var(--handle-band) / 2 - var(--handle-thickness));cursor:nwse-resize;clip-path:polygon(calc(100% - var(--handle-thickness)) 0,100% 0,100% 100%,0 100%,0 calc(100% - var(--handle-thickness)),calc(100% - var(--handle-thickness)) calc(100% - var(--handle-thickness)))}.page-handle.top-right{right:calc(var(--handle-band) / 2 - var(--handle-thickness));top:calc(var(--handle-band) / 2 - var(--handle-thickness));cursor:nesw-resize;clip-path:polygon(0 0,100% 0,100% 100%,calc(100% - var(--handle-thickness)) 100%,calc(100% - var(--handle-thickness)) var(--handle-thickness),0 var(--handle-thickness))}.page-handle.bottom-left{left:calc(var(--handle-band) / 2 - var(--handle-thickness));bottom:calc(var(--handle-band) / 2 - var(--handle-thickness));cursor:nesw-resize;clip-path:polygon(0 0,var(--handle-thickness) 0,var(--handle-thickness) calc(100% - var(--handle-thickness)),100% calc(100% - var(--handle-thickness)),100% 100%,0 100%)}.stage[resizing] iframe,.stage[resizing] webview{pointer-events:none}.stage[resizing] .page,.stage[window-tracking] .page{transition:none}.system-modal{width:min(400px,90vw);padding:var(--space-32) var(--space-24);display:flex;flex-direction:column;align-items:center;gap:var(--space-8);text-align:center}.system-modal h2{font-size:var(--text-lg);font-weight:var(--font-weight-semibold)}.system-modal p:not(.tv-error){color:var(--color-text-muted)}.system-modal .server-url{font-family:var(--font-mono);font-size:var(--text-sm)}.system-modal .system-modal-disconnect{margin-top:var(--space-8)}.window-drag-strip{position:fixed;inset:0 0 auto 0;height:36px}.system-modal-host{display:contents}.desktop-upgrade-gate{position:fixed;top:0;right:0;bottom:0;left:0}.upgrade-gate-body{box-sizing:border-box;width:min(560px,calc(100vw - 2 * var(--space-16)));max-height:calc(100vh - 2 * var(--space-16));overflow-y:auto;padding:var(--space-32) var(--space-24)}.upgrade-gate-body h1{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);margin:0 0 var(--space-12)}.upgrade-gate-body p{margin:0 0 var(--space-12)}.upgrade-gate-body pre{margin:0 0 var(--space-12);padding:var(--space-12);background:var(--color-surface-muted);border-radius:var(--control-radius);overflow-x:auto;font-family:var(--font-mono);font-size:var(--text-sm)}.upgrade-gate-body :last-child{margin-bottom:0}.upgrade-gate-actions{display:flex;justify-content:flex-end;padding:0 var(--space-24) var(--space-32)}.copy-button{position:relative}.copy-button .copy-button-idle,.copy-button .copy-button-done{display:inline-flex;align-items:center;gap:var(--space-6)}.copy-button .copy-button-done{display:none}.copy-button[copied] .copy-button-idle{visibility:hidden}.copy-button[copied] .copy-button-done{display:flex;position:absolute;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center}.copy-button-status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.update-popover{width:360px;padding:var(--space-16);-webkit-user-select:text;user-select:text}.update-actions{display:flex;justify-content:flex-end;gap:var(--space-8);margin-top:var(--space-12)}.skill-popover{width:500px;padding:var(--space-16)}.skill-heading{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text);padding:0 var(--space-2) var(--space-4)}.skill-intro{margin:0;padding:0 var(--space-2) var(--space-12);font-size:var(--text-sm);line-height:1.4;color:var(--color-text-muted)}.skill-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-20)}.skill-card{display:flex;flex-direction:column;min-width:0}.skill-thumb{position:relative;aspect-ratio:1 / 1;border-radius:var(--panel-radius);overflow:hidden;background:var(--color-surface-muted)}.skill-thumb img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block}.skill-name{font-size:var(--text-md);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-top:var(--space-6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skill-desc{font-size:var(--text-sm);line-height:1.35;color:var(--color-text-muted);margin:var(--space-2) 0 var(--space-6)}.skill-card button.copy-button{align-self:flex-start;margin-top:auto;height:auto;min-height:0;padding:var(--space-2) var(--space-6);font-size:var(--text-sm)}.settings-popover{width:320px;padding:var(--space-16)}.settings-heading{padding:0 var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text)}.settings-field{display:grid;gap:var(--space-4);margin-top:var(--space-12);font-size:var(--text-sm);color:var(--color-text-muted)}.settings-theme-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-8);align-items:center}.settings-field button[aria-haspopup=listbox]{width:100%;min-width:0;color:var(--color-text)}.settings-javascript-consent{display:grid;gap:var(--space-8);margin-top:var(--space-12);font-size:var(--text-sm)}.settings-javascript-disclosure{margin:0;color:var(--color-text-muted)}.settings-javascript-toggle{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-8);align-items:center;color:var(--color-text)}.settings-javascript-toggle input{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:32px;height:18px;margin:0;padding:2px;border:var(--control-border);border-radius:var(--radius-pill);background:var(--control-background)}.settings-javascript-toggle input:before{content:"";display:block;width:12px;height:12px;border-radius:50%;background:var(--color-text-muted);transition:transform .12s ease}.settings-javascript-toggle input:checked{border-color:var(--color-primary);background:var(--color-primary)}.settings-javascript-toggle input:checked:before{background:var(--color-text-reversed);transform:translate(14px)}.settings-javascript-toggle input:focus-visible{outline:var(--outline-focus);outline-offset:2px}.settings-status,.settings-failure,.settings-errors{margin:var(--space-12) 0 0;font-size:var(--text-sm)}.settings-status{color:var(--color-text-muted)}.settings-failure{color:var(--color-danger)}.settings-errors{display:grid;gap:var(--space-8);color:var(--color-text-muted)}.settings-errors p{margin:0}.settings-errors strong{color:var(--color-text)}.tab-strip{display:flex;align-items:center;gap:var(--tab-gap);overflow-x:auto;scrollbar-width:none;padding:var(--space-4);margin:calc(-1 * var(--space-4))}.tab{position:relative;display:grid;align-items:center;font-size:var(--tab-font-size);line-height:var(--line-control);cursor:default;border:var(--tab-border);outline:var(--tab-outline);outline-offset:0;border-radius:var(--tab-radius);max-width:220px;flex:0 1 auto;padding:0 var(--space-8);background:var(--tab-background);background-clip:border-box;color:var(--tab-text-color)}.tab[data-compression=hugging]{min-width:max-content}.tab[data-compression=capped]{min-width:90px}.tab-label{min-width:0;padding:var(--space-4) 0;overflow:hidden;text-overflow:clip;white-space:nowrap}.tab-label[data-overflow]{-webkit-mask-image:linear-gradient(to right,black calc(100% - 16px),transparent);mask-image:linear-gradient(to right,black calc(100% - 16px),transparent)}.tab:not([aria-selected=true]){-webkit-backdrop-filter:blur(var(--wallpaper-overlay-blur));backdrop-filter:blur(var(--wallpaper-overlay-blur))}.tab:hover:not([aria-selected=true]){background:var(--tab-background-hover);background-clip:border-box}.tab:active:not([aria-selected=true]){background:var(--tab-background-active);background-clip:border-box}.tab[aria-selected=true]{border:var(--tab-border-selected);outline:var(--tab-outline-selected);background:var(--tab-background-selected);background-clip:border-box;color:var(--tab-text-color-selected)}.tab[aria-selected=true]:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:inherit;box-shadow:var(--panel-edge-shadow);pointer-events:none}.tab[aria-selected=true]:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:inherit;padding:1px;font-size:var(--tab-radius);background:var(--panel-edge-highlight);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.tab:focus-visible{outline:var(--outline-focus)}.tab[data-item-edge-fade]{-webkit-mask-image:linear-gradient(to right,transparent var(--item-fade-start),black calc(var(--item-fade-start) + var(--item-fade-left)),black calc(var(--item-fade-end) - var(--item-fade-right)),transparent var(--item-fade-end));mask-image:linear-gradient(to right,transparent var(--item-fade-start),black calc(var(--item-fade-start) + var(--item-fade-left)),black calc(var(--item-fade-end) - var(--item-fade-right)),transparent var(--item-fade-end));-webkit-mask-origin:border-box;mask-origin:border-box;mask-clip:border-box;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.tab.dragged{position:relative;z-index:calc(var(--layer-ground) + 1)}.tab-placeholder{display:block;flex:none;height:calc(var(--line-control) + 2 * var(--space-4) + 2 * 1px);box-sizing:border-box;border:var(--tab-border);border-radius:var(--tab-radius);background:var(--drag-placeholder-background)}.tab-strip{width:100%;min-width:0}.tab-strip>.tab[dragging]{position:fixed;z-index:calc(var(--layer-ground) + 2);flex:none;margin:0}.top-bar{background:var(--navbar-background);border-bottom:var(--navbar-border);color:var(--navbar-text-color);height:var(--app-bar-height);padding-top:var(--navbar-border-width);flex-shrink:0;display:grid;-webkit-app-region:drag;grid-template-columns:minmax(0,1fr) minmax(0,auto) minmax(max-content,1fr);align-items:center;column-gap:var(--space-8)}.top-bar>.tab-strip{grid-column:2;min-width:0;margin-inline:0}.top-bar:has(>.tab-strip[data-overflow]){grid-template-columns:0 minmax(0,1fr) max-content}.top-bar-controls{grid-column:3;justify-self:end;margin-left:calc(48px - var(--space-8));display:flex;align-items:center;gap:var(--toolbar-gap)}.top-bar :is(.top-bar-controls,.top-bar-lead)>button:not([intent]){color:var(--navbar-text-color)}.top-bar :is(.top-bar-controls,.top-bar-lead)>button[variant=ghost]:not([intent]){background:var(--wallpaper-overlay-background);background-clip:border-box;border:var(--wallpaper-overlay-border);outline:var(--wallpaper-overlay-outline);outline-offset:0;-webkit-backdrop-filter:blur(var(--wallpaper-overlay-blur));backdrop-filter:blur(var(--wallpaper-overlay-blur))}.top-bar :is(.top-bar-controls,.top-bar-lead)>button[variant=ghost]:not([intent]):hover:not(:disabled){background:var(--wallpaper-overlay-background-hover)}.top-bar :is(.top-bar-controls,.top-bar-lead)>button[variant=ghost]:not([intent]):is(:active,[aria-expanded=true]):not(:disabled){background:var(--wallpaper-overlay-background-active)}.top-bar :is(.top-bar-controls,.top-bar-lead)>button[variant=ghost]:not([intent]):focus-visible{outline:var(--outline-focus);outline-offset:1px}.top-bar>.tab-strip,.top-bar>.top-bar-controls{-webkit-app-region:no-drag}.top-bar:has(>.top-bar-lead){grid-template-columns:minmax(max-content,1fr) minmax(0,auto) minmax(max-content,1fr)}.top-bar:has(>.top-bar-lead):has(>.tab-strip[data-overflow]){grid-template-columns:max-content minmax(0,1fr) max-content}.top-bar:has(>.top-bar-lead)>.tab-strip[data-overflow]{grid-column:2}.top-bar:has(>.top-bar-lead):has(>.tab-strip[data-overflow])>.top-bar-controls{grid-column:3}.top-bar-lead{grid-column:1;justify-self:start;display:flex;align-items:center;gap:var(--toolbar-gap);padding-left:var(--traffic-light-x-reserve);min-width:0}.top-bar-lead>button{-webkit-app-region:no-drag}.channel-switcher{display:inline-flex;align-items:center;gap:var(--space-4);font-weight:var(--font-weight-medium);max-width:220px}.channel-switcher>.channel-switcher-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-bar tv-popover{max-height:600px}.channel-switcher-pop{--sidebar-text-color: var(--panel-text-color);--sidebar-heading-text-color: var(--color-text-muted);--channel-background: transparent;--channel-text-color: var(--panel-text-color);--channel-background-hover: var(--option-background-highlighted);--channel-background-active: var(--option-background-active);--channel-background-selected: var(--color-primary);--channel-text-color-selected: var(--color-primary-text);width:260px;display:flex;flex-direction:column}.channel-switcher-pop .channel:not([aria-selected=true]){background:var(--channel-background)}.channel-switcher-pop:not(:has(:focus-visible)) .channel-row:hover>.channel:not([aria-selected=true]),.channel-switcher-pop .channel:focus-visible:not([aria-selected=true]),.channel-switcher-pop .channel-row:has(>.channel-menu-trigger[aria-expanded=true])>.channel:not([aria-selected=true]){background:var(--channel-background-hover)}.channel-switcher-pop .channel-row:active>.channel:not([aria-selected=true]){background:var(--channel-background-active)}.channel-switcher-pop .channel:focus-visible{outline:none}.channel-switcher-pop-body{flex:1;min-height:0;overflow-y:auto;padding-top:var(--space-8)}.channel-switcher-pop-footer{display:flex;align-items:center;justify-content:flex-end;border-top:1px solid var(--color-border);padding:var(--space-4) var(--space-8)}#theme-iframe-background,#foreground-overlay,#theme-iframe-overlay{position:fixed;top:0;right:0;bottom:0;left:0;box-sizing:border-box;width:100%;height:100%;margin:0;padding:0;pointer-events:none!important}#theme-iframe-background,#theme-iframe-overlay{border:0;background:transparent}:root[data-theme=light] #theme-iframe-background,:root[data-theme=light] #theme-iframe-overlay{color-scheme:light!important}:root[data-theme=dark] #theme-iframe-background,:root[data-theme=dark] #theme-iframe-overlay{color-scheme:dark!important}#theme-iframe-background{z-index:0!important}#foreground-overlay{z-index:2147483646!important}#theme-iframe-overlay{z-index:2147483647!important}#app{position:relative;z-index:1!important;display:flex;height:100%;min-width:0}#app:focus{outline:none}.app-sidebar{flex:none;width:var(--sidebar-width);min-width:0}.app-main{border-left:1px solid transparent;position:relative;flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--app-wallpaper);will-change:opacity}.app-main:before{content:"";position:absolute;top:0;bottom:0;left:-1px;width:1px;box-shadow:var(--panel-edge-shadow);clip-path:inset(0 -1px 0 1px);translate:-1px;pointer-events:none}.app-main>.top-bar{min-width:0;padding-inline:var(--app-bar-padding-inline);padding-left:calc(var(--app-bar-padding-inline) - 1px)}#app{-webkit-user-select:none;user-select:none}.sidebar-motion-toggle{display:none}#app[data-sidebar-motion]{overflow:clip}#app[data-sidebar-motion] *{transition:none!important;animation:none!important}#app[data-sidebar-motion]>.app-sidebar{margin-left:calc(var(--motion-boundary) - var(--sidebar-width))}#app[data-sidebar-motion] :is(.sidebar-collapse,.sidebar-expand){visibility:hidden}#app[data-sidebar-motion] .sidebar-titlebar>:not(.sidebar-collapse){opacity:var(--motion-titlebar-opacity)}#app[data-sidebar-motion] .top-bar{position:relative}#app[data-sidebar-motion] .top-bar-lead{width:var(--motion-lead-reservation);padding-left:0}#app[data-sidebar-motion] .channel-switcher{position:absolute;left:var(--motion-switcher-left);opacity:var(--motion-switcher-opacity);pointer-events:none}#app[data-sidebar-motion] .sidebar-motion-toggle{display:inline-grid;place-items:center;position:absolute;z-index:3;top:var(--motion-toggle-top);left:var(--motion-toggle-left);width:var(--motion-toggle-width);height:var(--motion-toggle-height);padding:0;border:0;background:transparent;color:var(--sidebar-text-color);-webkit-app-region:no-drag}.sidebar-motion-toggle>span{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;border-radius:var(--control-radius)}.sidebar-motion-toggle>.expanded-paint{clip-path:inset(0 calc(100% - var(--motion-toggle-wipe)) 0 0)}.sidebar-motion-toggle>.collapsed-paint{color:var(--navbar-text-color);background:var(--wallpaper-overlay-background);border:var(--wallpaper-overlay-border);outline:var(--wallpaper-overlay-outline);outline-offset:0;-webkit-backdrop-filter:blur(var(--wallpaper-overlay-blur));backdrop-filter:blur(var(--wallpaper-overlay-blur));clip-path:inset(0 0 0 var(--motion-toggle-wipe))}#app{width:100%;height:100%;min-width:0;overflow:hidden}#app>.app-main{overflow:hidden}.app-sidebar-resize{position:absolute;z-index:2;top:0;bottom:0;left:var(--sidebar-width);width:6px;translate:-3px 0;border:0;background:transparent;cursor:col-resize;touch-action:none}.sidebar-toggle-seat{flex:none;width:24px;height:24px}#app[data-sidebar-transition]>:is(.app-sidebar,.app-main){pointer-events:none}#app[data-sidebar-transition]>.sidebar-motion-toggle{pointer-events:auto}.sidebar-toggle-paint{pointer-events:none}*,*:before,*:after{box-sizing:border-box}:where(html,body){margin:0;padding:0}:where(body){font-family:var(--font-sans);font-size:var(--text-md);font-weight:var(--font-weight-normal);line-height:normal;color:var(--color-text)}:where(h1,h2,h3,h4,h5,h6,p,ul,ol,blockquote,pre,hr){margin:0}:where(button,input,select,textarea){font:inherit;color:inherit}:where(dialog,[popover]){border:0;padding:0}@font-face{font-family:Hind;src:url(./Hind-Variable-C47b_dt9.woff2) format("woff2-variations");font-weight:300 700;font-display:block}:where(:root){--font-sans: "Hind", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600}:where(:root){--panel-edge-highlight: linear-gradient(to bottom, rgb(255 255 255 / .36) 0 .5px, rgb(255 255 255 / .28) .5px 1px, rgb(255 255 255 / .2) 1em);--panel-edge-shadow: 0 0 0 .5px rgb(0 0 0 / .205);--panel-background: var(--color-surface);--panel-text-color: var(--color-text);--panel-border-color: var(--color-border);--panel-border: none;--option-background-highlighted: color-mix(in oklch, transparent, var(--option-background-active) var(--hover-mix));--option-background-active: var(--tint-active);--checkbox-color: var(--color-primary);--control-text-color: var(--color-text);--control-border-color: var(--color-border);--control-border-width: 1px;--control-border: var(--control-border-width) solid var(--control-border-color);--input-placeholder-text-color: var(--color-text-muted);--neutral: oklch(.556 0 0);--red: oklch(.637 .237 25.331);--orange: oklch(.705 .213 47.604);--yellow: oklch(.852 .199 91.936);--green: oklch(.723 .219 149.579);--cyan: oklch(.715 .143 215.221);--blue: oklch(.623 .214 259.815);--purple: oklch(.627 .265 303.9);--pink: oklch(.656 .241 354.308);--accent: var(--blue);--neutral-50: oklch(from var(--neutral) .985 c h);--neutral-100: oklch(from var(--neutral) .97 c h);--neutral-200: oklch(from var(--neutral) .922 c h);--neutral-300: oklch(from var(--neutral) .87 c h);--neutral-400: oklch(from var(--neutral) .708 c h);--neutral-500: var(--neutral);--neutral-600: oklch(from var(--neutral) .439 c h);--neutral-700: oklch(from var(--neutral) .371 c h);--neutral-800: oklch(from var(--neutral) .269 c h);--neutral-900: oklch(from var(--neutral) .205 c h);--neutral-950: oklch(from var(--neutral) .145 c h);--red-50: oklch(from var(--red) calc(l + (1 - l)*.92) calc(c*.055) h);--red-100: oklch(from var(--red) calc(l + (1 - l)*.824) calc(c*.135) h);--red-200: oklch(from var(--red) calc(l + (1 - l)*.683) calc(c*.262) h);--red-300: oklch(from var(--red) calc(l + (1 - l)*.471) calc(c*.481) h);--red-400: oklch(from var(--red) calc(l + (1 - l)*.185) calc(c*.806) h);--red-500: var(--red);--red-600: oklch(from var(--red) calc(l*.906) calc(c*1.034) h);--red-700: oklch(from var(--red) calc(l*.793) calc(c*.899) h);--red-800: oklch(from var(--red) calc(l * (1 - .303)) calc(c*.747) h);--red-900: oklch(from var(--red) calc(l*.622) calc(c*.595) h);--red-950: oklch(from var(--red) calc(l*.405) calc(c*.435) h);--orange-50: oklch(from var(--orange) calc(l + (1 - l)*.92) calc(c*.055) h);--orange-100: oklch(from var(--orange) calc(l + (1 - l)*.824) calc(c*.135) h);--orange-200: oklch(from var(--orange) calc(l + (1 - l)*.683) calc(c*.262) h);--orange-300: oklch(from var(--orange) calc(l + (1 - l)*.471) calc(c*.481) h);--orange-400: oklch(from var(--orange) calc(l + (1 - l)*.185) calc(c*.806) h);--orange-500: var(--orange);--orange-600: oklch(from var(--orange) calc(l*.906) calc(c*1.034) h);--orange-700: oklch(from var(--orange) calc(l*.793) calc(c*.899) h);--orange-800: oklch(from var(--orange) calc(l * (1 - .303)) calc(c*.747) h);--orange-900: oklch(from var(--orange) calc(l*.622) calc(c*.595) h);--orange-950: oklch(from var(--orange) calc(l*.405) calc(c*.435) h);--yellow-50: oklch(from var(--yellow) calc(l + (1 - l)*.937) calc(c*.141) calc(h + 10) );--yellow-100: oklch(from var(--yellow) calc(l + (1 - l)*.868) calc(c*.386) calc(h + 11) );--yellow-200: oklch(from var(--yellow) calc(l + (1 - l)*.732) calc(c*.701) calc(h + 10) );--yellow-300: oklch(from var(--yellow) calc(l + (1 - l)*.537) calc(c*.989) calc(h + 6) );--yellow-400: oklch(from var(--yellow) calc(l + (1 - l)*.278) calc(c*1.082) calc(h + 3) );--yellow-500: var(--yellow);--yellow-600: oklch(from var(--yellow) calc(l*.92) calc(c*.95) calc(h - 6) );--yellow-700: oklch(from var(--yellow) calc(l*.81) calc(c*.8) calc(h - 14) );--yellow-800: oklch(from var(--yellow) calc(l * (1 - .33)) calc(c*.65) calc(h - 26) );--yellow-900: oklch(from var(--yellow) calc(l*.54) calc(c*.52) calc(h - 32) );--yellow-950: oklch(from var(--yellow) calc(l*.36) calc(c*.359) calc(h - 38) );--green-50: oklch(from var(--green) calc(l + (1 - l)*.92) calc(c*.055) h);--green-100: oklch(from var(--green) calc(l + (1 - l)*.824) calc(c*.135) h);--green-200: oklch(from var(--green) calc(l + (1 - l)*.683) calc(c*.262) h);--green-300: oklch(from var(--green) calc(l + (1 - l)*.471) calc(c*.481) h);--green-400: oklch(from var(--green) calc(l + (1 - l)*.185) calc(c*.806) h);--green-500: var(--green);--green-600: oklch(from var(--green) calc(l*.906) calc(c*1.034) h);--green-700: oklch(from var(--green) calc(l*.793) calc(c*.899) h);--green-800: oklch(from var(--green) calc(l * (1 - .303)) calc(c*.747) h);--green-900: oklch(from var(--green) calc(l*.622) calc(c*.595) h);--green-950: oklch(from var(--green) calc(l*.405) calc(c*.435) h);--cyan-50: oklch(from var(--cyan) calc(l + (1 - l)*.92) calc(c*.055) h);--cyan-100: oklch(from var(--cyan) calc(l + (1 - l)*.824) calc(c*.135) h);--cyan-200: oklch(from var(--cyan) calc(l + (1 - l)*.683) calc(c*.262) h);--cyan-300: oklch(from var(--cyan) calc(l + (1 - l)*.471) calc(c*.481) h);--cyan-400: oklch(from var(--cyan) calc(l + (1 - l)*.185) calc(c*.806) h);--cyan-500: var(--cyan);--cyan-600: oklch(from var(--cyan) calc(l*.906) calc(c*1.034) h);--cyan-700: oklch(from var(--cyan) calc(l*.793) calc(c*.899) h);--cyan-800: oklch(from var(--cyan) calc(l * (1 - .303)) calc(c*.747) h);--cyan-900: oklch(from var(--cyan) calc(l*.622) calc(c*.595) h);--cyan-950: oklch(from var(--cyan) calc(l*.405) calc(c*.435) h);--blue-50: oklch(from var(--blue) calc(l + (1 - l)*.92) calc(c*.055) h);--blue-100: oklch(from var(--blue) calc(l + (1 - l)*.824) calc(c*.135) h);--blue-200: oklch(from var(--blue) calc(l + (1 - l)*.683) calc(c*.262) h);--blue-300: oklch(from var(--blue) calc(l + (1 - l)*.471) calc(c*.481) h);--blue-400: oklch(from var(--blue) calc(l + (1 - l)*.185) calc(c*.806) h);--blue-500: var(--blue);--blue-600: oklch(from var(--blue) calc(l*.906) calc(c*1.034) h);--blue-700: oklch(from var(--blue) calc(l*.793) calc(c*.899) h);--blue-800: oklch(from var(--blue) calc(l * (1 - .303)) calc(c*.747) h);--blue-900: oklch(from var(--blue) calc(l*.622) calc(c*.595) h);--blue-950: oklch(from var(--blue) calc(l*.405) calc(c*.435) h);--purple-50: oklch(from var(--purple) calc(l + (1 - l)*.92) calc(c*.055) h);--purple-100: oklch(from var(--purple) calc(l + (1 - l)*.824) calc(c*.135) h);--purple-200: oklch(from var(--purple) calc(l + (1 - l)*.683) calc(c*.262) h);--purple-300: oklch(from var(--purple) calc(l + (1 - l)*.471) calc(c*.481) h);--purple-400: oklch(from var(--purple) calc(l + (1 - l)*.185) calc(c*.806) h);--purple-500: var(--purple);--purple-600: oklch(from var(--purple) calc(l*.906) calc(c*1.034) h);--purple-700: oklch(from var(--purple) calc(l*.793) calc(c*.899) h);--purple-800: oklch(from var(--purple) calc(l * (1 - .303)) calc(c*.747) h);--purple-900: oklch(from var(--purple) calc(l*.622) calc(c*.595) h);--purple-950: oklch(from var(--purple) calc(l*.405) calc(c*.435) h);--pink-50: oklch(from var(--pink) calc(l + (1 - l)*.92) calc(c*.055) h);--pink-100: oklch(from var(--pink) calc(l + (1 - l)*.824) calc(c*.135) h);--pink-200: oklch(from var(--pink) calc(l + (1 - l)*.683) calc(c*.262) h);--pink-300: oklch(from var(--pink) calc(l + (1 - l)*.471) calc(c*.481) h);--pink-400: oklch(from var(--pink) calc(l + (1 - l)*.185) calc(c*.806) h);--pink-500: var(--pink);--pink-600: oklch(from var(--pink) calc(l*.906) calc(c*1.034) h);--pink-700: oklch(from var(--pink) calc(l*.793) calc(c*.899) h);--pink-800: oklch(from var(--pink) calc(l * (1 - .303)) calc(c*.747) h);--pink-900: oklch(from var(--pink) calc(l*.622) calc(c*.595) h);--pink-950: oklch(from var(--pink) calc(l*.405) calc(c*.435) h);--accent-50: oklch(from var(--accent) calc(l + (1 - l)*.92) calc(c*.055) h);--accent-100: oklch(from var(--accent) calc(l + (1 - l)*.824) calc(c*.135) h);--accent-200: oklch(from var(--accent) calc(l + (1 - l)*.683) calc(c*.262) h);--accent-300: oklch(from var(--accent) calc(l + (1 - l)*.471) calc(c*.481) h);--accent-400: oklch(from var(--accent) calc(l + (1 - l)*.185) calc(c*.806) h);--accent-500: var(--accent);--accent-600: oklch(from var(--accent) calc(l*.906) calc(c*1.034) h);--accent-700: oklch(from var(--accent) calc(l*.793) calc(c*.899) h);--accent-800: oklch(from var(--accent) calc(l * (1 - .303)) calc(c*.747) h);--accent-900: oklch(from var(--accent) calc(l*.622) calc(c*.595) h);--accent-950: oklch(from var(--accent) calc(l*.405) calc(c*.435) h);--neutral-alpha-5: oklch(from var(--neutral) l c h / var(--alpha-5));--neutral-alpha-10: oklch(from var(--neutral) l c h / var(--alpha-10));--neutral-alpha-15: oklch(from var(--neutral) l c h / var(--alpha-15));--neutral-alpha-25: oklch(from var(--neutral) l c h / var(--alpha-25));--neutral-alpha-50: oklch(from var(--neutral) l c h / var(--alpha-50));--neutral-alpha-75: oklch(from var(--neutral) l c h / var(--alpha-75));--red-alpha-5: oklch(from var(--red) l c h / var(--alpha-5));--red-alpha-10: oklch(from var(--red) l c h / var(--alpha-10));--red-alpha-15: oklch(from var(--red) l c h / var(--alpha-15));--red-alpha-25: oklch(from var(--red) l c h / var(--alpha-25));--red-alpha-50: oklch(from var(--red) l c h / var(--alpha-50));--red-alpha-75: oklch(from var(--red) l c h / var(--alpha-75));--orange-alpha-5: oklch(from var(--orange) l c h / var(--alpha-5));--orange-alpha-10: oklch(from var(--orange) l c h / var(--alpha-10));--orange-alpha-15: oklch(from var(--orange) l c h / var(--alpha-15));--orange-alpha-25: oklch(from var(--orange) l c h / var(--alpha-25));--orange-alpha-50: oklch(from var(--orange) l c h / var(--alpha-50));--orange-alpha-75: oklch(from var(--orange) l c h / var(--alpha-75));--yellow-alpha-5: oklch(from var(--yellow) l c h / var(--alpha-5));--yellow-alpha-10: oklch(from var(--yellow) l c h / var(--alpha-10));--yellow-alpha-15: oklch(from var(--yellow) l c h / var(--alpha-15));--yellow-alpha-25: oklch(from var(--yellow) l c h / var(--alpha-25));--yellow-alpha-50: oklch(from var(--yellow) l c h / var(--alpha-50));--yellow-alpha-75: oklch(from var(--yellow) l c h / var(--alpha-75));--green-alpha-5: oklch(from var(--green) l c h / var(--alpha-5));--green-alpha-10: oklch(from var(--green) l c h / var(--alpha-10));--green-alpha-15: oklch(from var(--green) l c h / var(--alpha-15));--green-alpha-25: oklch(from var(--green) l c h / var(--alpha-25));--green-alpha-50: oklch(from var(--green) l c h / var(--alpha-50));--green-alpha-75: oklch(from var(--green) l c h / var(--alpha-75));--cyan-alpha-5: oklch(from var(--cyan) l c h / var(--alpha-5));--cyan-alpha-10: oklch(from var(--cyan) l c h / var(--alpha-10));--cyan-alpha-15: oklch(from var(--cyan) l c h / var(--alpha-15));--cyan-alpha-25: oklch(from var(--cyan) l c h / var(--alpha-25));--cyan-alpha-50: oklch(from var(--cyan) l c h / var(--alpha-50));--cyan-alpha-75: oklch(from var(--cyan) l c h / var(--alpha-75));--blue-alpha-5: oklch(from var(--blue) l c h / var(--alpha-5));--blue-alpha-10: oklch(from var(--blue) l c h / var(--alpha-10));--blue-alpha-15: oklch(from var(--blue) l c h / var(--alpha-15));--blue-alpha-25: oklch(from var(--blue) l c h / var(--alpha-25));--blue-alpha-50: oklch(from var(--blue) l c h / var(--alpha-50));--blue-alpha-75: oklch(from var(--blue) l c h / var(--alpha-75));--purple-alpha-5: oklch(from var(--purple) l c h / var(--alpha-5));--purple-alpha-10: oklch(from var(--purple) l c h / var(--alpha-10));--purple-alpha-15: oklch(from var(--purple) l c h / var(--alpha-15));--purple-alpha-25: oklch(from var(--purple) l c h / var(--alpha-25));--purple-alpha-50: oklch(from var(--purple) l c h / var(--alpha-50));--purple-alpha-75: oklch(from var(--purple) l c h / var(--alpha-75));--pink-alpha-5: oklch(from var(--pink) l c h / var(--alpha-5));--pink-alpha-10: oklch(from var(--pink) l c h / var(--alpha-10));--pink-alpha-15: oklch(from var(--pink) l c h / var(--alpha-15));--pink-alpha-25: oklch(from var(--pink) l c h / var(--alpha-25));--pink-alpha-50: oklch(from var(--pink) l c h / var(--alpha-50));--pink-alpha-75: oklch(from var(--pink) l c h / var(--alpha-75));--accent-alpha-5: oklch(from var(--accent) l c h / var(--alpha-5));--accent-alpha-10: oklch(from var(--accent) l c h / var(--alpha-10));--accent-alpha-15: oklch(from var(--accent) l c h / var(--alpha-15));--accent-alpha-25: oklch(from var(--accent) l c h / var(--alpha-25));--accent-alpha-50: oklch(from var(--accent) l c h / var(--alpha-50));--accent-alpha-75: oklch(from var(--accent) l c h / var(--alpha-75));--alpha-3: 3%;--alpha-5: 5%;--alpha-10: 10%;--alpha-15: 15%;--alpha-20: 20%;--alpha-25: 25%;--alpha-40: 40%;--alpha-50: 50%;--alpha-75: 75%;--hover-mix: 50%;--alpha-active: 8%;--tint-hover: color-mix(in oklch, transparent, var(--tint-active) var(--hover-mix));--tint-active: oklch(from currentColor l c h / var(--alpha-active));--icon-check: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12"><path d="M10.2 3.1 5.1 8.2 2.4 5.5" fill="none" stroke="black" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>');--color-surface: white;--color-surface-muted: var(--neutral-100);--color-text: var(--neutral-900);--color-text-muted: var(--neutral-500);--color-text-reversed: white;--color-border: oklch(from var(--color-text) l c h / 12%);--tint-surface: oklch(from var(--color-surface) l c h / var(--alpha-50));--tint-surface-muted: oklch(from var(--color-surface-muted) l c h / var(--alpha-50));--control-background: var(--color-surface);--color-danger: var(--red-500);--tint-danger: oklch(from var(--color-danger) l c h / var(--alpha-10));--tint-danger-hover: color-mix(in oklch, transparent, var(--tint-danger-active) var(--hover-mix));--tint-danger-active: oklch(from var(--color-danger) l c h / var(--alpha-active));--color-alert: var(--yellow-500);--tint-alert: oklch(from var(--color-alert) l c h / var(--alpha-10));--tint-alert-hover: color-mix(in oklch, transparent, var(--tint-alert-active) var(--hover-mix));--tint-alert-active: oklch(from var(--color-alert) l c h / var(--alpha-active));--color-success: var(--green-500);--tint-success: oklch(from var(--color-success) l c h / var(--alpha-10));--color-primary: var(--accent-500);--tint-primary: oklch(from var(--color-primary) l c h / var(--alpha-10));--tint-primary-hover: color-mix(in oklch, transparent, var(--tint-primary-active) var(--hover-mix));--tint-primary-active: oklch(from var(--color-primary) l c h / var(--alpha-active));--color-primary-text: oklch(from var(--color-primary) clamp(.2, (var(--contrast-flip) - l) * 1e6, .98) 0 h);--outline-focus: 2px solid var(--color-primary);--control-background-hover: color-mix(in oklch, var(--control-background), var(--control-background-active) var(--hover-mix));--control-background-active: color-mix(in oklch, var(--control-background), oklch(from var(--control-background) clamp(0, (var(--state-flip) - l) * 1e6, 1) 0 h) var(--alpha-active));--color-primary-hover: color-mix(in oklch, var(--color-primary), var(--color-primary-active) var(--hover-mix));--color-primary-active: color-mix(in oklch, var(--color-primary), oklch(from var(--color-primary) clamp(0, (var(--state-flip) - l) * 1e6, 1) 0 h) var(--alpha-active));--color-danger-hover: color-mix(in oklch, var(--color-danger), var(--color-danger-active) var(--hover-mix));--color-danger-active: color-mix(in oklch, var(--color-danger), oklch(from var(--color-danger) clamp(0, (var(--state-flip) - l) * 1e6, 1) 0 h) var(--alpha-active));--color-alert-hover: color-mix(in oklch, var(--color-alert), var(--color-alert-active) var(--hover-mix));--color-alert-active: color-mix(in oklch, var(--color-alert), oklch(from var(--color-alert) clamp(0, (var(--state-flip) - l) * 1e6, 1) 0 h) var(--alpha-active));--color-link: currentColor;--color-overlay: oklch(from var(--neutral-950) l c h / var(--alpha-40));--state-flip: .35;--contrast-flip: .66;color-scheme:light}:where([data-theme=dark]){--panel-edge-shadow: 0 0 0 .5px rgb(0 0 0 / .912);--alpha-active: 12%;--red: oklch(.704 .191 22.216);--orange: oklch(.75 .183 55.934);--yellow: oklch(.879 .169 91.5);--green: oklch(.792 .209 151.711);--cyan: oklch(.789 .154 211.53);--blue: oklch(.707 .165 254.624);--purple: oklch(.714 .203 305.504);--pink: oklch(.718 .202 349.761);--color-surface: var(--neutral-900);--color-surface-muted: var(--neutral-800);--color-text: var(--neutral-100);--color-text-muted: var(--neutral-400);--color-border: oklch(from var(--color-text) l c h / 18%);color-scheme:dark}:where(:root){--control-font-size: var(--text-md);--text-base: 14px;--text-sm: round(calc(var(--text-base) * 12 / 14), 1px);--text-md: var(--text-base);--text-lg: round(calc(var(--text-base) * 16 / 14), 1px);--text-xl: round(calc(var(--text-base) * 18 / 14), 1px);--text-2xl: round(calc(var(--text-base) * 20 / 14), 1px);--text-3xl: round(calc(var(--text-base) * 24 / 14), 1px);--text-4xl: round(calc(var(--text-base) * 30 / 14), 1px);--line-control: 18px;--line-control-sm: 14px;--line-control-lg: 22px}:where(:root){--control-padding: var(--space-2) var(--space-16);--space-2: 2px;--space-3: 3px;--space-4: 4px;--space-6: 6px;--space-8: 8px;--space-10: 10px;--space-12: 12px;--space-16: 16px;--space-20: 20px;--space-24: 24px;--space-32: 32px;--space-48: 48px;--space-64: 64px;--control-radius: 6px;--radius-pill: 9999px;--panel-radius: 8px;--popover-distance: var(--space-4)}:where(:root){--shadow-sm: 0 1px 4px oklch(from var(--neutral-950) l c h / var(--alpha-15));--shadow-md: 0 4px 12px oklch(from var(--neutral-950) l c h / var(--alpha-15));--shadow-lg: 0 8px 24px oklch(from var(--neutral-950) l c h / var(--alpha-10)), 0 2px 8px oklch(from var(--neutral-950) l c h / var(--alpha-5));--shadow-xl: 0 24px 48px oklch(from var(--neutral-950) l c h / var(--alpha-15)), 0 4px 12px oklch(from var(--neutral-950) l c h / 7.5%);--popover-shadow: var(--shadow-md);--dialog-shadow: var(--shadow-lg)}:where([data-theme=dark]){--shadow-sm: 0 1px 4px oklch(from var(--neutral-950) l c h / var(--alpha-40));--shadow-md: 0 4px 12px oklch(from var(--neutral-950) l c h / var(--alpha-40));--shadow-lg: 0 8px 24px oklch(from var(--neutral-950) l c h / var(--alpha-40)), 0 2px 8px oklch(from var(--neutral-950) l c h / var(--alpha-25));--shadow-xl: 0 24px 48px oklch(from var(--neutral-950) l c h / 30%), 0 4px 12px oklch(from var(--neutral-950) l c h / 18.75%)}:where(:root){--layer-ground: 0;--layer-panel: 100;--layer-overlay: 200}:where([text-display=prose]){font-size:var(--text-md);font-weight:var(--font-weight-medium);line-height:1.5;-webkit-font-smoothing:antialiased}:where([text-display=prose] h1){font-size:var(--text-3xl);font-weight:var(--font-weight-semibold);line-height:1.25;margin:0 0 var(--space-12)}:where([text-display=prose] h2){font-size:var(--text-xl);font-weight:var(--font-weight-semibold);line-height:1.3;margin:var(--space-24) 0 var(--space-8)}:where([text-display=prose] h3,[text-display=prose] h4,[text-display=prose] h5,[text-display=prose] h6){font-size:var(--text-lg);font-weight:var(--font-weight-semibold);margin:var(--space-16) 0 var(--space-4)}:where([text-display=prose] p,[text-display=prose] ul,[text-display=prose] ol,[text-display=prose] blockquote,[text-display=prose] pre,[text-display=prose] hr,[text-display=prose] table,[text-display=prose] figure){margin:0 0 var(--space-12)}:where([text-display=prose]>:last-child){margin-bottom:0}:where([text-display=prose] a){color:var(--color-link);text-decoration:underline;text-underline-offset:2px}:where([text-display=prose] ul,[text-display=prose] ol){padding-left:var(--space-24)}:where([text-display=prose] li+li){margin-top:var(--space-4)}:where([text-display=prose] blockquote){border-left:2px solid var(--color-border);padding-left:var(--space-12);color:var(--color-text-muted)}:where([text-display=prose] code,[text-display=prose] kbd,[text-display=prose] samp){font-family:var(--font-mono);font-size:var(--text-sm);background:var(--color-surface-muted);border-radius:var(--control-radius);padding:1px var(--space-4)}:where([text-display=prose] pre){font-family:var(--font-mono);font-size:var(--text-sm);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--control-radius);padding:var(--space-12);overflow-x:auto}:where([text-display=prose] pre code){background:none;border-radius:0;padding:0}:where([text-display=prose] hr){border:0;border-top:1px solid var(--color-border)}:where([text-display=prose] table){border-collapse:collapse;width:100%}:where([text-display=prose] th){text-align:left;font-weight:var(--font-weight-semibold);background:var(--color-surface-muted)}:where([text-display=prose] th,[text-display=prose] td){padding:var(--space-4) var(--space-12) var(--space-4) 0;border-bottom:1px solid var(--color-border)}:where([text-display=prose] img){max-width:100%;height:auto}:where([text-display=prose] header p){color:var(--color-text-muted)}:where(header :is(h1,h2,h3,h4,h5,h6):has(+p)){margin-bottom:0}:where(header :is(h1,h2,h3,h4,h5,h6)+p){margin-top:var(--space-4)}:where(button){display:inline-flex;align-items:center;justify-content:center;gap:var(--space-6);padding:var(--control-padding);border:var(--control-border);border-radius:var(--control-radius);background:var(--control-background);color:var(--control-text-color);cursor:default}:where(button[intent]){border-color:transparent;color:var(--color-text-reversed)}:where(button[intent=primary]){background:var(--color-primary);color:var(--color-primary-text)}:where(button[intent=danger]){background:var(--color-danger);color:oklch(from var(--color-danger) clamp(.2,(var(--contrast-flip) - l) * 1e6,.98) 0 h)}:where(button[intent=alert]){background:var(--color-alert);color:oklch(from var(--color-alert) clamp(.2,(var(--contrast-flip) - l) * 1e6,.98) 0 h)}:where(button:active:not(:disabled)){background:var(--control-background-active)}:where(button[intent=primary]:active:not(:disabled)){background:var(--color-primary-active)}:where(button[intent=danger]:active:not(:disabled)){background:var(--color-danger-active)}:where(button[intent=alert]:active:not(:disabled)){background:var(--color-alert-active)}:where(button:focus-visible){outline:var(--outline-focus);outline-offset:1px}:where(button:disabled){opacity:.4}:where(button[icon]){padding:var(--space-2);display:inline-grid;place-items:center}:where(button[target]:not([icon])){padding:var(--space-2) var(--space-6)}:where(button[aria-expanded=true]:not(:disabled):not([variant=ghost])){background:var(--control-background-active)}:where(button[intent=primary][aria-expanded=true]:not(:disabled):not([variant=ghost])){background:var(--color-primary-active)}:where(button[intent=danger][aria-expanded=true]:not(:disabled):not([variant=ghost])){background:var(--color-danger-active)}:where(button[intent=alert][aria-expanded=true]:not(:disabled):not([variant=ghost])){background:var(--color-alert-active)}:where(button[variant=ghost]){border-color:transparent;background:transparent;color:inherit}:where(button[variant=ghost][intent=primary]){color:var(--color-primary)}:where(button[variant=ghost][intent=danger]){color:var(--color-danger)}:where(button[variant=ghost][intent=alert]){color:var(--color-alert)}:where(button[variant=ghost]:hover:not(:disabled)){background:var(--tint-hover)}:where(button[variant=ghost]:is(:active,[aria-expanded=true]):not(:disabled)){background:var(--tint-active);background-clip:border-box}:where(button[variant=ghost][intent=primary]:hover:not(:disabled)){background:var(--tint-primary-hover)}:where(button[variant=ghost][intent=primary]:is(:active,[aria-expanded=true]):not(:disabled)){background:var(--tint-primary-active)}:where(button[variant=ghost][intent=danger]:hover:not(:disabled)){background:var(--tint-danger-hover)}:where(button[variant=ghost][intent=danger]:is(:active,[aria-expanded=true]):not(:disabled)){background:var(--tint-danger-active)}:where(button[variant=ghost][intent=alert]:hover:not(:disabled)){background:var(--tint-alert-hover)}:where(button[variant=ghost][intent=alert]:is(:active,[aria-expanded=true]):not(:disabled)){background:var(--tint-alert-active)}:where(button[icon]):before{content:"";inline-size:1lh;block-size:1lh;grid-area:1 / 1}:where(button[icon]>*){grid-area:1 / 1}:where(button){font-size:var(--control-font-size);line-height:var(--line-control)}:where(button[size=sm]){font-size:var(--text-sm);line-height:var(--line-control-sm);padding:var(--space-2) var(--space-8)}:where(button[size=sm][icon]){padding:var(--space-2)}:where(button[size=lg]){font-size:var(--text-lg);line-height:var(--line-control-lg);padding:var(--space-8) var(--space-20)}:where(button[size=lg][icon]){padding:var(--space-8)}:where(button[size=sm] tv-icon){font-size:12px}:where(:is(input:not([type]),input[type=""],input[type=text],input[type=email],input[type=url],input[type=tel],input[type=password],input[type=number],textarea)){box-sizing:border-box;font-family:var(--font-sans);font-size:var(--control-font-size);line-height:var(--line-control);color:var(--control-text-color);background:var(--control-background);border:var(--control-border);border-radius:var(--control-radius);padding:var(--control-padding)}:where(:is(input:not([type]),input[type=""],input[type=text],input[type=email],input[type=url],input[type=tel],input[type=password],input[type=number],textarea))::placeholder{color:var(--input-placeholder-text-color);opacity:1}:where(:is(input:not([type]),input[type=""],input[type=text],input[type=email],input[type=url],input[type=tel],input[type=password],input[type=number],textarea):focus-visible){outline:var(--outline-focus);outline-offset:0}:where(:is(input:not([type]),input[type=""],input[type=text],input[type=email],input[type=url],input[type=tel],input[type=password],input[type=number],textarea)[aria-invalid=true]){border-color:var(--color-danger)}:where(:is(input:not([type]),input[type=""],input[type=text],input[type=email],input[type=url],input[type=tel],input[type=password],input[type=number],textarea):disabled){background:var(--color-surface-muted);opacity:.4}:where(textarea){line-height:1.5;resize:vertical}:where(:is(input:not([type]),input[type=""],input[type=text],input[type=email],input[type=url],input[type=tel],input[type=password],input[type=number],textarea)[data-size=lg]){font-size:var(--text-lg);line-height:var(--line-control-lg);padding:var(--space-8) var(--space-12)}:where(.tv-error){margin:0;color:var(--color-danger);font-size:var(--text-sm);line-height:1.5;overflow-wrap:anywhere}:where(tv-popover,tv-menu,tv-select){position:relative;isolation:isolate;width:max-content;background:var(--panel-background);background-clip:border-box;color:var(--panel-text-color);font-family:var(--font-sans);border:var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--popover-shadow)}:where(tv-popover,tv-menu,tv-select):before{content:"";position:var(--_panel-edge-position, absolute);inset:var(--_panel-edge-inset, 0);width:var(--_panel-edge-width, auto);height:var(--_panel-edge-height, auto);box-sizing:border-box;border-radius:inherit;box-shadow:var(--panel-edge-shadow);pointer-events:none}:where(tv-popover,tv-menu,tv-select):after{content:"";position:var(--_panel-edge-position, absolute);inset:var(--_panel-edge-inset, 0);width:var(--_panel-edge-width, auto);height:var(--_panel-edge-height, auto);box-sizing:border-box;border-radius:inherit;padding:1px;font-size:var(--panel-radius);background:var(--panel-edge-highlight);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:1}tv-popover:not([open]),tv-menu:not([open]),tv-select:not([open]){display:none}:where(tv-popover[open],tv-menu[open],tv-select[open]){display:block}:where(dialog){position:relative;isolation:isolate;background:var(--panel-background);background-clip:border-box;color:var(--panel-text-color);border:var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--dialog-shadow)}:where(dialog):before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:var(--panel-edge-shadow);pointer-events:none}:where(dialog):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;padding:1px;font-size:var(--panel-radius);background:var(--panel-edge-highlight);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:1}:where(dialog:focus-visible){outline:none}:where(dialog:has(>.dialog-content)){overflow:visible}:where(dialog[open]:has(>.dialog-content)){display:flex;flex-direction:column}:where(dialog>.dialog-content){height:100%;min-height:0;max-width:calc(100vw - 2 * var(--space-16));max-height:calc(100vh - 2 * var(--space-16));overflow:auto;border-radius:inherit}:where(tv-menu){min-width:180px;padding:var(--space-4)}:where(tv-menu-item){display:flex;align-items:center;font-size:var(--text-md);line-height:var(--line-control);padding:var(--space-3) var(--space-10);border-radius:calc(var(--panel-radius) - var(--space-4));cursor:default}:where(tv-menu:not(:has(:focus-visible)) tv-menu-item:hover),:where(tv-menu-item:focus-visible){background:var(--option-background-highlighted);outline:none}:where(tv-menu-item:active){background:var(--option-background-active)}:where(tv-menu-item[intent=danger]){color:var(--color-danger)}:where(tv-menu:not(:has(:focus-visible)) tv-menu-item[intent=danger]:hover),:where(tv-menu-item[intent=danger]:focus-visible){background:var(--tint-danger-hover)}:where(tv-menu-item[intent=danger]:active){background:var(--tint-danger-active)}:where(tv-menu hr){border:0;border-top:1px solid var(--color-border);margin:var(--space-4) calc(-1 * var(--space-4))}:where(button[aria-haspopup=listbox]){justify-content:space-between;text-align:left;padding-inline:var(--space-8) var(--space-4)}:where(tv-select){padding:var(--space-4)}:where(tv-option){position:relative;display:flex;align-items:center;font-size:var(--text-md);line-height:var(--line-control);padding:var(--space-3) var(--space-12) var(--space-3) var(--space-20);border-radius:calc(var(--panel-radius) - var(--space-4));cursor:default}:where(tv-option[highlighted]){background:var(--option-background-highlighted)}:where(tv-option:active){background:var(--option-background-active)}:where(tv-option[selected]):before{content:"";position:absolute;left:var(--space-4);top:50%;translate:0 -50%;width:1em;height:1em;background:currentColor;mask:var(--icon-check) center / 80% no-repeat}checkbox-list{display:grid;gap:var(--space-6);margin:var(--space-12) 0}checkbox-item{position:relative;display:grid;grid-template-columns:1em minmax(0,1fr);gap:var(--space-8);align-items:baseline}checkbox-item:before{content:"";width:1em;height:1em;align-self:start;translate:0 .12em;background:transparent;border:var(--control-border);border-radius:var(--control-radius);box-sizing:border-box;cursor:not-allowed}checkbox-item[checked]:before{background:var(--checkbox-color);border-color:var(--checkbox-color)}checkbox-item[checked]:after{content:"";position:absolute;left:0;top:.12em;width:1em;height:1em;background:var(--color-surface);mask:var(--icon-check) center / 80% no-repeat}checkbox-item[checked]{color:var(--color-text-muted);text-decoration:line-through;text-decoration-thickness:.08em}@property --app-wallpaper-image{syntax: "<url> | none"; inherits: true; initial-value: none;}:where(:root){--sidebar-background: var(--color-surface-muted);--sidebar-text-color: var(--color-text);--sidebar-shadow: none;--sidebar-border-color: var(--color-border);--sidebar-border: var(--panel-border);--sidebar-heading-text-color: var(--color-text-muted);--sidebar-heading-font-size: var(--text-md);--channel-background: transparent;--channel-text-color: var(--sidebar-text-color);--channel-background-hover: color-mix(in oklch, var(--channel-background), var(--channel-background-active) var(--hover-mix));--channel-background-active: color-mix(in oklch, var(--channel-background), oklch(from currentColor l c h / 1) var(--alpha-active));--channel-background-selected: var(--color-primary);--channel-text-color-selected: var(--color-primary-text);--channel-radius: var(--control-radius);--tab-text-color: oklch(from var(--navbar-text-color) l c h / var(--alpha-75));--tab-text-color-selected: var(--color-text);--tab-font-size: var(--text-md);--artifact-frame-shadow: var(--shadow-xl);--frame-background: var(--color-surface);--frame-border-color: var(--color-border);--frame-border: var(--panel-border);--frame-titlebar-background: var(--color-surface-muted);--frame-titlebar-text-color: var(--color-text);--frame-titlebar-border-color: transparent;--frame-titlebar-border-width: 1px;--frame-titlebar-border: var(--frame-titlebar-border-width) solid var(--frame-titlebar-border-color);--frame-titlebar-padding: var(--space-4) var(--space-10) var(--space-6);--frame-titlebar-divider-color: var(--color-border);--wallpaper-overlay-text-color: var(--color-text);--wallpaper-overlay-background: transparent;--wallpaper-overlay-background-hover: color-mix(in oklch, var(--wallpaper-overlay-background), var(--wallpaper-overlay-background-active) var(--hover-mix));--wallpaper-overlay-background-active: color-mix(in oklch, var(--wallpaper-overlay-background), oklch(from currentColor l c h / 1) var(--alpha-active));--wallpaper-overlay-border: 1px solid transparent;--wallpaper-overlay-outline: none;--wallpaper-overlay-blur: 0px;--app-bar-height: 44px;--app-bar-padding-inline: 10px;--traffic-light-x-reserve: 0px;--navbar-background: transparent;--navbar-text-color: var(--wallpaper-overlay-text-color);--navbar-border-color: transparent;--navbar-border-width: 1px;--navbar-border: var(--navbar-border-width) solid var(--navbar-border-color);--toolbar-gap: var(--space-3);--app-wallpaper-image: none;--app-wallpaper: var(--app-wallpaper-image) center / cover no-repeat, var(--neutral-200);--page-gap: var(--space-24);--page-inset: var(--space-8);--page-inactive-blur: 0px;--page-inactive-backdrop-blur: var(--wallpaper-overlay-blur);--page-inactive-opacity: .55;--page-inactive-scale: .94;--page-snap-preview-border-color: oklch(from currentColor l c h / var(--alpha-25));--page-snap-preview-background: transparent;--page-snap-preview-border-width: 3px;--page-snap-preview-border: var(--page-snap-preview-border-width) solid var(--page-snap-preview-border-color);--page-snap-preview-radius: 12px;--tab-radius: var(--control-radius);--tab-gap: var(--toolbar-gap);--tab-border: var(--wallpaper-overlay-border);--tab-background: var(--wallpaper-overlay-background);--tab-background-hover: color-mix(in oklch, var(--tab-background), var(--tab-background-active) var(--hover-mix));--tab-background-active: var(--wallpaper-overlay-background-active);--tab-background-selected: var(--color-surface-muted);--tab-border-selected: 1px solid transparent;--tab-outline: var(--wallpaper-overlay-outline);--tab-outline-selected: none;--drag-placeholder-background: oklch(from var(--color-text) l c h / var(--alpha-10));--drag-item-shadow: var(--shadow-md);--drag-action-shadow: var(--shadow-sm);--frame-radius: 12px}:where([data-theme=dark]){--app-wallpaper: var(--app-wallpaper-image) center / cover no-repeat, var(--neutral-950)}:root[data-platform=electron]{--traffic-light-x-reserve: 72px}html,body{width:100%;height:100%;overflow-x:hidden;overscroll-behavior-x:none}[electron-draggable]{-webkit-app-region:drag}[electron-draggable] :where(button,input,textarea,select,a,[role=button],[role=combobox]){-webkit-app-region:no-drag}
|