("POST", "/models/signin/start", {
+ provider,
+ region: region || null,
+ });
+ setSignIn(flow);
+ await external(flow.url);
+ } else {
+ const body =
+ tab === "custom"
+ ? {
+ kind: "custom",
+ label,
+ key,
+ endpoints: { chat: endpoint },
+ models: customModel
+ .split(",")
+ .map((s) => s.trim())
+ .filter(Boolean),
+ }
+ : {
+ kind: "api_key",
+ preset: provider,
+ key,
+ label: label || null,
+ region: region || null,
+ };
+ await api.call("POST", "/models/accounts", body);
+ setKey("");
+ setSheet(null);
+ await refresh();
+ }
+ } catch (error) {
+ setSubscriptionError(
+ String(error instanceof Error ? error.message : error),
+ );
+ } finally {
+ setBusy(false);
+ }
+ }
+ const currentDevice = devices.find((d) => d.badges.includes("this"));
+ const available = models.filter((m) => m.availability.kind !== "unavailable");
+ const dsh = agents.find((a) => a.id === "deepseek-harness");
+ const agentPicker = (
+
+ {agents.map((agent) => (
+
+
+
+
+
+
{agentNames[agent.id] || agent.id}
+
+ {agent.recommended && (
+
+ {t("推荐 · 默认", "Recommended · Default")}
+
+ )}
+
+ {agent.installed
+ ? t("已安装", "Installed")
+ : t("未安装", "Not installed")}
+
+
+
+
+
+ ))}
+
+ );
+ const pairContent = (
+ <>
+ {!accepted ? (
+ <>
+
+ {[
+ ["owner_device", t("我的设备", "My device")],
+ ["guest", t("访客设备", "Guest device")],
+ ].map(([value, label]) => (
+
+ ))}
+
+
+ {purpose === "guest"
+ ? t(
+ "访客只能使用你允许的功能,无法访问模型订阅。",
+ "Guests can use only the capabilities you allow. Model subscriptions stay private.",
+ )
+ : t(
+ "你的设备共享设备名单,并接收加密的模型订阅。",
+ "Your devices share a device list and receive encrypted model subscriptions.",
+ )}
+
+ {purpose === "guest" && (
+
+ {t(
+ "配对完成后,在访客设备卡片上选择允许的功能。",
+ "After pairing, choose allowed capabilities on the guest device card.",
+ )}
+
+ )}
+ {invite ? (
+
+ ) : (
+
+ )}
+
+ {t("或打开收到的邀请", "Or open an invitation")}
+
+
+ >
+ ) : (
+
+
+
+ {t(
+ "两台设备上的数字一致吗?",
+ "Do the codes match on both devices?",
+ )}
+
+
+ {t(
+ "请在另一台设备上查看,确认每一位都相同。",
+ "Check the other device. Every digit must match.",
+ )}
+
+
{accepted.sas}
+
+
+
+
+
+ )}
+ {pairError && (
+
+ {pairError}
+
+ )}
+ >
+ );
+ return (
+
+ {page !== "advanced" && (
+
{
+ e.preventDefault();
+ document.getElementById("pa-main")?.focus();
+ }}
+ >
+ {t("跳至主要内容", "Skip to main content")}
+
+ )}
+ {page === "advanced" ? (
+
+
+
+
+ {t(
+ "高级功能 · 面向熟悉网络和命令行的用户",
+ "Advanced · For users familiar with networks and the command line",
+ )}
+
+
+ {advanced || (
+
+ {t(
+ "此环境未提供高级工具。",
+ "Advanced tools are not available in this environment.",
+ )}
+
+ )}
+
+ ) : (
+ <>
+
+ {navOpen && (
+
+ );
+}
diff --git a/addons/control-center/ui/src/personal/api.ts b/addons/control-center/ui/src/personal/api.ts
new file mode 100644
index 0000000..f94196c
--- /dev/null
+++ b/addons/control-center/ui/src/personal/api.ts
@@ -0,0 +1,112 @@
+export type Api = {
+ call(method: string, path: string, body?: unknown): Promise;
+ subscribe?(refresh: () => void): () => void;
+};
+export type TaskSummary = {
+ id: string;
+ title: string;
+ direction: "incoming" | "outgoing";
+ state: string;
+ progress: string | null;
+ result: string | null;
+ questions: { id: string; text: string; answer: string | null }[] | null;
+ updated_at: number;
+};
+export type Pill = {
+ state: "connected" | "local" | "attention" | "no_models" | "offline";
+ text_key: string;
+ hub: string | null;
+ models_available: number;
+ approvals_pending: number;
+};
+export type Device = {
+ node_id: string;
+ name: string;
+ kind: string;
+ online: boolean;
+ path: string;
+ rtt_ms: number | null;
+ badges: string[];
+ guest: boolean;
+ caps: Record;
+};
+export type Approval = {
+ id: string;
+ kind: string;
+ from_node: string | null;
+ on_node: string;
+ agent: string | null;
+ title_key: string;
+ title_args: Record;
+ detail: string | null;
+ risk: string;
+ created_at: number;
+ expires_at: number | null;
+ actions: string[];
+};
+export type Agent = {
+ id: string;
+ installed: boolean;
+ managed: boolean;
+ model: string | null;
+ recommended: boolean;
+};
+export type Model = {
+ id: string;
+ display: string;
+ availability: { kind: string; node?: string; code?: string };
+};
+export type Account = {
+ id: string;
+ provider: string;
+ label: string;
+ kind: string;
+ home_node: string;
+ sync: boolean;
+ enabled_on: string[];
+ all_nodes: boolean;
+ state: { kind: string; message?: string };
+};
+export type Preset = { id: string; label: string; region: string[] };
+export type Invite = { link: string; qr_svg: string; expires_at: number };
+export type Accepted = { flow_id: string; sas: string };
+export type SignIn = {
+ kind: string;
+ flow_id: string;
+ url: string;
+ code?: string;
+ expires_at?: number;
+};
+export const agentNames: Record = {
+ "deepseek-harness": "DeepSeek Harness",
+ codex: "Codex",
+ "claude-code": "Claude Code",
+ pi: "Pi",
+ hermes: "Hermes",
+ openclaw: "OpenClaw",
+};
+export function httpApi(csrf: string): Api {
+ return {
+ async call(method: string, path: string, body?: unknown) {
+ const response = await fetch("/api/v1/app" + path, {
+ method,
+ credentials: "same-origin",
+ headers: {
+ "content-type": "application/json",
+ "x-workspace-csrf": csrf,
+ },
+ body: body === undefined ? undefined : JSON.stringify(body),
+ });
+ const value = await response.json();
+ if (!response.ok)
+ throw Error(value.message || value.code || "Request failed");
+ return value as T;
+ },
+ subscribe(refresh) {
+ const events = new EventSource("/api/v1/app/events");
+ for (const type of ["status", "approval", "device", "account"])
+ events.addEventListener(type, refresh);
+ return () => events.close();
+ },
+ };
+}
diff --git a/addons/control-center/ui/src/personal/components.tsx b/addons/control-center/ui/src/personal/components.tsx
new file mode 100644
index 0000000..b9bfdb2
--- /dev/null
+++ b/addons/control-center/ui/src/personal/components.tsx
@@ -0,0 +1,233 @@
+import { Bell, Check, Circle, X } from "lucide-react";
+import { useEffect, useRef, useId, type ReactNode } from "react";
+import type { Approval, Invite, Pill as Status } from "./api";
+export type Translate = (zh: string, en: string) => string;
+export function Card({
+ children,
+ className = "",
+}: {
+ children: ReactNode;
+ className?: string;
+}) {
+ return ;
+}
+export function Pill({
+ children,
+ tone = "",
+}: {
+ children: ReactNode;
+ tone?: string;
+}) {
+ return {children};
+}
+export function StatusPill({
+ status,
+ t,
+ onClick,
+}: {
+ status: Status | null;
+ t: Translate;
+ onClick: () => void;
+}) {
+ const labels = {
+ connected: t("已连接", "Connected"),
+ local: t("在本机运行", "Running locally"),
+ attention: t("需要你确认", "Needs your attention"),
+ no_models: t("添加模型即可开始", "Add a model to begin"),
+ offline: t("暂时离线", "Offline"),
+ };
+ return (
+
+
+ {status ? labels[status.state] : t("正在读取状态…", "Checking status…")}
+
+ );
+}
+export function Sheet({
+ title,
+ children,
+ onClose,
+ t,
+}: {
+ title: string;
+ children: ReactNode;
+ onClose: () => void;
+ t: Translate;
+}) {
+ const dialog = useRef(null);
+ const titleId = useId();
+ useEffect(() => {
+ const el = dialog.current;
+ el?.showModal();
+ return () => el?.close();
+ }, []);
+ return (
+
+ );
+}
+export function QrPanel({ invite, t }: { invite: Invite; t: Translate }) {
+ const canvas = useRef(null);
+ const [copied, setCopied] = useState(false);
+ // SVG is decoded as an image: scripts and foreignObject never enter the page DOM.
+ useEffect(() => {
+ let alive = true;
+ const image = new Image();
+ image.onload = () => {
+ if (alive) {
+ const ctx = canvas.current?.getContext("2d");
+ ctx?.clearRect(0, 0, 240, 240);
+ ctx?.drawImage(image, 0, 0, 240, 240);
+ }
+ };
+ image.src =
+ "data:image/svg+xml;charset=utf-8," + encodeURIComponent(invite.qr_svg);
+ return () => {
+ alive = false;
+ };
+ }, [invite.qr_svg]);
+ return (
+
+
+
+ {
+ try {
+ await navigator.clipboard.writeText(invite.link);
+ setCopied(true);
+ } catch {
+ setCopied(false);
+ }
+ }}
+ >
+ {copied ? t("已复制", "Copied") : t("复制链接", "Copy link")}
+
+
+ {t(
+ "15 分钟内有效,仅可使用一次。",
+ "Valid for 15 minutes. Can be used once.",
+ )}
+
+
+ );
+}
+import { useState } from "react";
+export function ApprovalCard({
+ card,
+ t,
+ busy,
+ onDecide,
+}: {
+ card: Approval;
+ t: Translate;
+ busy: boolean;
+ onDecide: (action: string) => void;
+}) {
+ const kinds: Record = {
+ pairing: t("核对设备", "Verify a device"),
+ message: t("一条设备消息等待确认", "A device message needs your approval"),
+ capability: t("设备请求新的权限", "A device requests access"),
+ agent_tool: t("Agent 请求使用工具", "Agent requests a tool"),
+ computer_use: t("允许操作你的屏幕?", "Allow access to your screen?"),
+ model_write: t("确认修改模型配置", "Confirm model settings"),
+ };
+ const expired = !!card.expires_at && card.expires_at * 1000 <= Date.now();
+ return (
+
+
+
+
+
+
+
{kinds[card.kind] || t("需要你确认", "Needs your attention")}
+ {card.from_node || card.agent || card.on_node}
+
+
+ {card.risk === "high"
+ ? t("高风险", "High risk")
+ : t("待确认", "Pending")}
+
+
+ {Object.entries(card.title_args).map(([key, value]) => (
+
+ {key === "command" ? (
+ {value}
+ ) : key === "code" ? (
+ {value}
+ ) : (
+ value
+ )}
+
+ ))}
+ {card.detail && {card.detail}
}
+
+
+ {expired
+ ? t("已过期,默认拒绝", "Expired. Denied by default.")
+ : t("仅在你同意后继续。", "Continues only with your permission.")}
+
+
+ {card.actions.map((action) => (
+ onDecide(action)}
+ >
+ {action === "deny" ? (
+
+ ) : (
+
+ )}
+ {action === "deny"
+ ? t("拒绝", "Deny")
+ : action === "allow_always"
+ ? t("始终允许", "Always allow")
+ : card.kind === "pairing"
+ ? t("两边一致", "Codes match")
+ : t("允许一次", "Allow once")}
+
+ ))}
+
+
+
+ );
+}
diff --git a/addons/control-center/ui/src/personal/personal.css b/addons/control-center/ui/src/personal/personal.css
new file mode 100644
index 0000000..f4a8cba
--- /dev/null
+++ b/addons/control-center/ui/src/personal/personal.css
@@ -0,0 +1,955 @@
+.personal,
+.pa-legacy,
+.pa-sheet {
+ --pa-bg: #f8faf9;
+ --pa-surface: #fff;
+ --pa-fg: #172b28;
+ --pa-muted: #576b66;
+ --pa-line: #dce6e1;
+ --pa-soft: #edf3ef;
+ --pa-brand: #166548;
+ --pa-on-brand: #fff;
+ --pa-danger: #a82e35;
+ --pa-warn: #81520b;
+ color: var(--pa-fg);
+ font:
+ 400 1rem/1.6 Inter,
+ ui-sans-serif,
+ system-ui,
+ -apple-system,
+ BlinkMacSystemFont,
+ "Segoe UI",
+ sans-serif;
+ color-scheme: light;
+}
+.personal[data-theme="dark"],
+.pa-legacy[data-theme="dark"],
+html[data-theme="dark"] .pa-sheet {
+ --pa-bg: #101b19;
+ --pa-surface: #182723;
+ --pa-fg: #e9f3ec;
+ --pa-muted: #a8beb4;
+ --pa-line: #354b41;
+ --pa-soft: #23382e;
+ --pa-brand: #81d7aa;
+ --pa-on-brand: #102b1b;
+ --pa-danger: #ffabb0;
+ --pa-warn: #f6ce87;
+ color-scheme: dark;
+}
+.personal {
+ background: var(--pa-bg);
+ min-height: 100dvh;
+ display: flex;
+ isolation: isolate;
+ text-align: left;
+}
+.personal *,
+.pa-sheet * {
+ box-sizing: border-box;
+}
+.personal button,
+.pa-sheet button,
+.pa-advanced-bar button {
+ font: inherit;
+ cursor: pointer;
+ background: var(--pa-surface);
+ color: var(--pa-fg);
+ border: 1px solid var(--pa-line);
+ border-radius: 10px;
+ min-height: 44px;
+ padding: 9px 15px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ transition:
+ background 0.15s,
+ color 0.15s;
+}
+.personal button:hover,
+.pa-sheet button:hover {
+ background: var(--pa-soft);
+}
+.personal button:disabled,
+.pa-sheet button:disabled {
+ opacity: 0.5;
+ cursor: wait;
+}
+.personal .pa-primary,
+.pa-sheet .pa-primary {
+ background: var(--pa-brand);
+ color: var(--pa-on-brand);
+ border-color: var(--pa-brand);
+}
+.personal .pa-primary:hover,
+.pa-sheet .pa-primary:hover {
+ filter: brightness(1.1);
+ background: var(--pa-brand);
+}
+.personal :focus-visible,
+.pa-sheet :focus-visible {
+ outline: 3px solid var(--pa-brand);
+ outline-offset: 3px;
+}
+.personal h1,
+.personal h2,
+.personal h3,
+.pa-sheet h2,
+.pa-sheet h3 {
+ color: var(--pa-fg);
+ line-height: 1.3;
+ letter-spacing: -0.025em;
+ text-wrap: balance;
+}
+.personal h1 {
+ font-size: clamp(1.7rem, 2.5vw, 2.35rem);
+ font-weight: 600;
+ margin: 0 0 12px;
+}
+.personal h2,
+.pa-sheet h2 {
+ font-size: 1.2rem;
+ font-weight: 600;
+ margin: 0 0 12px;
+}
+.personal h3 {
+ font-size: 1rem;
+ font-weight: 600;
+ margin: 0;
+}
+.personal p,
+.pa-sheet p {
+ margin: 8px 0 18px;
+}
+.personal small,
+.pa-sheet small {
+ font-size: 0.8125rem;
+ color: var(--pa-muted);
+}
+.personal a {
+ color: inherit;
+}
+.personal input,
+.personal select,
+.pa-sheet input,
+.pa-sheet select {
+ font: inherit;
+ min-height: 44px;
+ max-width: 100%;
+ background: var(--pa-surface);
+ color: var(--pa-fg);
+ border: 1px solid var(--pa-line);
+ border-radius: 9px;
+ padding: 10px 12px;
+}
+.personal label,
+.pa-sheet label {
+ font-size: 0.9375rem;
+ display: block;
+ margin: 14px 0;
+}
+.pa-sheet label input:not([type="checkbox"]),
+.pa-sheet label select {
+ display: block;
+ width: 100%;
+ margin: 7px 0;
+}
+.personal fieldset,
+.pa-sheet fieldset {
+ border: 1px solid var(--pa-line);
+ border-radius: 12px;
+ padding: 12px 16px;
+ margin: 16px 0;
+}
+.personal summary,
+.pa-sheet summary {
+ cursor: pointer;
+ min-height: 44px;
+ padding: 10px 0;
+}
+.pa-sr {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border: 0;
+}
+.personal .pa-skip {
+ position: fixed;
+ top: -100px;
+ left: 16px;
+ z-index: 100;
+ padding: 12px;
+ background: var(--pa-surface);
+ border: 2px solid var(--pa-brand);
+}
+.personal .pa-skip:focus {
+ top: 12px;
+}
+.pa-sidebar {
+ width: 236px;
+ padding: 32px 20px;
+ position: fixed;
+ inset: 0 auto 0 0;
+ display: flex;
+ flex-direction: column;
+ background: var(--pa-surface);
+ border-right: 1px solid var(--pa-line);
+ z-index: 30;
+}
+.pa-brand {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ text-decoration: none;
+ padding: 0 8px 36px;
+ font-size: 1.2rem;
+ font-weight: 650;
+ letter-spacing: -0.04em;
+}
+.pa-brand small {
+ display: block;
+ font-weight: 400;
+ font-size: 0.75rem;
+ letter-spacing: 0;
+ margin-top: 3px;
+}
+.pa-brand-icon {
+ background: var(--pa-brand);
+ color: var(--pa-on-brand);
+ display: grid;
+ place-items: center;
+ border-radius: 13px;
+ width: 42px;
+ height: 42px;
+ flex-shrink: 0;
+}
+.pa-sidebar nav {
+ display: grid;
+ gap: 7px;
+}
+.personal .pa-sidebar nav button {
+ border: 0;
+ background: transparent;
+ justify-content: flex-start;
+ gap: 14px;
+ color: var(--pa-muted);
+ padding: 12px 16px;
+ min-height: 48px;
+}
+.personal .pa-sidebar nav button[aria-current="page"] {
+ background: var(--pa-soft);
+ color: var(--pa-brand);
+ font-weight: 600;
+}
+.pa-sidebar nav b,
+.pa-bell b {
+ font-size: 0.7rem;
+ min-width: 20px;
+ height: 20px;
+ display: grid;
+ place-items: center;
+ border-radius: 20px;
+ background: var(--pa-brand);
+ color: var(--pa-on-brand);
+ margin-left: auto;
+}
+.pa-sidebar-bottom {
+ margin-top: auto;
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ padding: 24px 8px 0;
+ border-top: 1px solid var(--pa-line);
+}
+.pa-sidebar-bottom strong {
+ display: block;
+ font-size: 0.8125rem;
+ font-weight: 500;
+}
+.pa-sidebar-bottom small {
+ font-size: 0.7rem;
+}
+.pa-shell {
+ margin-left: 236px;
+ min-width: 0;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ min-height: 100dvh;
+}
+.pa-topbar {
+ height: auto;
+ min-height: 80px;
+ background: var(--pa-bg);
+ padding: 16px 40px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1px solid var(--pa-line);
+ gap: 12px;
+}
+.pa-row {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ min-width: 0;
+}
+.pa-wrap {
+ flex-wrap: wrap;
+}
+.pa-grow {
+ flex: 1;
+ min-width: 0;
+ overflow-wrap: anywhere;
+}
+.personal .pa-icon,
+.pa-sheet .pa-icon {
+ padding: 10px;
+ min-width: 44px;
+ width: 44px;
+ height: 44px;
+ flex-shrink: 0;
+ border-color: transparent;
+ background: transparent;
+}
+.personal .pa-mobile {
+ display: none;
+}
+.personal .pa-device-picker {
+ display: flex;
+ gap: 8px;
+ align-items: center;
+ margin: 0;
+ font-size: 0.875rem;
+ min-width: 0;
+}
+.personal .pa-device-picker select {
+ border: 0;
+ background: transparent;
+ max-width: 240px;
+ min-width: 0;
+}
+.personal .pa-status {
+ border: 0;
+ border-radius: 24px;
+ background: var(--pa-soft);
+ color: var(--pa-muted);
+ font-size: 0.8125rem;
+ min-height: 38px;
+ padding: 7px 12px;
+}
+.personal .pa-status.connected {
+ color: var(--pa-brand);
+}
+.personal .pa-status.attention,
+.personal .pa-status.local {
+ color: var(--pa-warn);
+}
+.pa-bell {
+ position: relative;
+}
+.pa-bell b {
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+.pa-main {
+ width: 100%;
+ max-width: 1180px;
+ align-self: center;
+ padding: 40px;
+ flex: 1;
+ outline: 0;
+}
+.pa-page-heading {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: 20px;
+ margin: 10px 0 32px;
+}
+.pa-page-heading p {
+ color: var(--pa-muted);
+ font-size: 0.9375rem;
+ max-width: 65ch;
+ margin: 0;
+}
+.pa-page-heading .pa-eyebrow {
+ font-size: 0.675rem;
+ font-weight: 650;
+ letter-spacing: 0.12em;
+ color: var(--pa-brand);
+ margin-bottom: 14px;
+}
+.pa-page-heading > button {
+ flex-shrink: 0;
+}
+.pa-card {
+ padding: 24px;
+ border: 1px solid var(--pa-line);
+ background: var(--pa-surface);
+ border-radius: 16px;
+ margin: 0 0 18px;
+ min-width: 0;
+ overflow-wrap: anywhere;
+ box-shadow: 0 2px 5px #162d1b03;
+}
+.pa-card > .pa-row {
+ margin-bottom: 16px;
+}
+.pa-card-icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 44px;
+ height: 44px;
+ flex-shrink: 0;
+ border-radius: 12px;
+ background: var(--pa-soft);
+ color: var(--pa-brand);
+}
+.pa-pill {
+ display: inline-block;
+ border: 1px solid var(--pa-line);
+ border-radius: 6px;
+ padding: 2px 7px;
+ font-size: 0.75rem;
+ color: var(--pa-muted);
+ line-height: 1.6;
+ max-width: 100%;
+ overflow-wrap: anywhere;
+}
+.pa-pill.good {
+ background: var(--pa-soft);
+ color: var(--pa-brand);
+ border-color: transparent;
+}
+.pa-pill.warn {
+ color: var(--pa-warn);
+}
+.pa-device-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
+ gap: 18px;
+}
+.pa-device-grid .pa-card {
+ margin: 0;
+}
+.pa-section {
+ margin: 32px 0;
+}
+.pa-section > h2 {
+ font-size: 0.9375rem;
+ margin-bottom: 16px;
+}
+.pa-dot {
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: var(--pa-muted);
+ flex-shrink: 0;
+}
+.pa-dot.online {
+ background: var(--pa-brand);
+}
+.pa-muted {
+ color: var(--pa-muted);
+}
+.pa-actions {
+ display: flex;
+ gap: 8px;
+ flex-wrap: wrap;
+ margin-left: auto;
+}
+.personal .pa-danger {
+ color: var(--pa-danger);
+}
+.personal .pa-check,
+.pa-sheet .pa-check {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ min-height: 44px;
+ margin: 4px 0;
+}
+.pa-check input[type="checkbox"] {
+ accent-color: var(--pa-brand);
+ width: 19px;
+ height: 19px;
+ min-height: 0;
+ flex-shrink: 0;
+ padding: 0;
+}
+.pa-cap-list {
+ border-top: 1px solid var(--pa-line);
+ margin-top: 16px;
+ padding-top: 12px;
+}
+.pa-agent-list {
+ display: grid;
+ gap: 0;
+}
+.pa-agent-row {
+ display: flex;
+ align-items: center;
+ gap: 14px;
+ padding: 18px 0;
+ border-bottom: 1px solid var(--pa-line);
+ min-width: 0;
+}
+.pa-agent-row:first-child {
+ padding-top: 0;
+}
+.pa-agent-row:last-child {
+ padding-bottom: 0;
+ border: 0;
+}
+.pa-agent-row strong {
+ font-size: 0.9375rem;
+}
+.personal .pa-model-select {
+ margin: 0;
+ max-width: 46%;
+ min-width: 0;
+}
+.pa-model-select select {
+ font-size: 0.8125rem;
+ width: 100%;
+ text-overflow: ellipsis;
+}
+.pa-setting {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 16px;
+ padding: 16px 0;
+ border-bottom: 1px solid var(--pa-line);
+}
+.pa-setting:first-child {
+ padding-top: 0;
+}
+.pa-setting:last-child {
+ padding-bottom: 0;
+ border: 0;
+}
+.pa-setting h2 {
+ font-size: 1rem;
+ margin: 0;
+}
+.pa-setting p {
+ font-size: 0.875rem;
+ color: var(--pa-muted);
+ margin: 6px 0;
+}
+.pa-setting > button {
+ flex-shrink: 0;
+}
+.pa-welcome-card {
+ padding: 56px 24px;
+ text-align: center;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 400px;
+ justify-content: center;
+}
+.pa-welcome-card h2 {
+ font-size: 1.7rem;
+ margin: 24px 0 12px;
+}
+.pa-welcome-card p {
+ max-width: 50ch;
+ color: var(--pa-muted);
+ font-size: 0.9375rem;
+}
+.pa-welcome-card .pa-actions {
+ margin: 8px 0 20px;
+}
+.pa-orb {
+ display: grid;
+ place-items: center;
+ color: var(--pa-brand);
+ background: var(--pa-soft);
+ width: 84px;
+ height: 84px;
+ border-radius: 26px;
+}
+.pa-conversation {
+ min-height: 480px;
+ height: calc(100dvh - 280px);
+ border: 1px solid var(--pa-line);
+ border-radius: 16px;
+ overflow: hidden;
+ background: var(--pa-surface);
+}
+.pa-conversation iframe {
+ width: 100%;
+ height: 100%;
+ border: 0;
+ display: block;
+}
+.personal .pa-pending {
+ width: 100%;
+ justify-content: flex-start;
+ margin: 16px 0;
+}
+.pa-pending svg:last-child {
+ margin-left: auto;
+}
+.pa-empty {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 64px 20px;
+ text-align: center;
+ color: var(--pa-muted);
+ gap: 12px;
+}
+.pa-empty h2,
+.pa-empty p {
+ margin: 0;
+}
+.pa-footer {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 7px;
+ color: var(--pa-muted);
+ font-size: 0.7rem;
+ padding: 16px 20px 24px;
+}
+.pa-error,
+.pa-notice {
+ padding: 14px 16px;
+ border: 1px solid var(--pa-line);
+ border-radius: 10px;
+ margin: 0 0 20px;
+ overflow-wrap: anywhere;
+ background: var(--pa-surface);
+}
+.pa-error {
+ color: var(--pa-danger);
+}
+.pa-notice {
+ color: var(--pa-brand);
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.pa-sheet {
+ background: var(--pa-surface);
+ border: 1px solid var(--pa-line);
+ border-radius: 20px;
+ padding: 28px;
+ width: min(540px, calc(100% - 32px));
+ max-height: calc(100dvh - 40px);
+ overflow-y: auto;
+ box-shadow: 0 24px 80px #071b1933;
+ margin: auto;
+}
+.pa-sheet::backdrop {
+ background: #0e201b73;
+ backdrop-filter: blur(3px);
+}
+.pa-sheet-head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 16px;
+ margin-bottom: 20px;
+}
+.pa-sheet-head h2 {
+ margin: 0;
+}
+.pa-full {
+ width: 100%;
+ margin-top: 12px;
+}
+.pa-segment {
+ display: flex;
+ gap: 4px;
+ background: var(--pa-soft);
+ border-radius: 10px;
+ padding: 4px;
+ margin-bottom: 20px;
+}
+.pa-sheet .pa-segment button {
+ flex: 1;
+ padding: 8px;
+ min-height: 40px;
+ border-color: transparent;
+ background: transparent;
+ font-size: 0.8125rem;
+}
+.pa-sheet .pa-segment button[aria-pressed="true"] {
+ background: var(--pa-surface);
+ box-shadow: 0 1px 3px #14241b15;
+ color: var(--pa-brand);
+}
+.pa-divider {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ color: var(--pa-muted);
+ font-size: 0.8125rem;
+ margin: 24px 0;
+}
+.pa-divider:before,
+.pa-divider:after {
+ content: "";
+ flex: 1;
+ height: 1px;
+ background: var(--pa-line);
+}
+.pa-qr {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 8px;
+}
+.pa-qr canvas {
+ width: 200px;
+ height: 200px;
+ border-radius: 8px;
+ background: white;
+}
+.pa-qr label {
+ width: 100%;
+ min-width: 0;
+}
+.pa-qr label input {
+ font-size: 0.8125rem;
+}
+.pa-sas {
+ text-align: center;
+ padding: 16px 0;
+}
+.pa-sas > svg {
+ color: var(--pa-brand);
+}
+.pa-sas code {
+ font-size: clamp(1.5rem, 5vw, 2rem);
+ display: block;
+ font-family: ui-monospace, monospace;
+ letter-spacing: 0.1em;
+ border: 1px solid var(--pa-line);
+ background: var(--pa-soft);
+ padding: 20px 10px;
+ margin: 24px 0;
+ color: var(--pa-fg);
+ overflow-wrap: anywhere;
+}
+.pa-sas .pa-actions {
+ justify-content: center;
+}
+.pa-onboarding {
+ text-align: center;
+}
+.pa-onboarding .pa-orb {
+ margin: 24px auto;
+}
+.pa-onboard-progress {
+ display: flex;
+ gap: 6px;
+ margin-bottom: 24px;
+}
+.pa-onboard-progress span {
+ height: 3px;
+ flex: 1;
+ background: var(--pa-line);
+ border-radius: 3px;
+}
+.pa-onboard-progress .done {
+ background: var(--pa-brand);
+}
+.pa-untrusted {
+ white-space: pre-wrap;
+ overflow-wrap: anywhere;
+ padding: 16px;
+ background: var(--pa-soft);
+ border-radius: 10px;
+ max-height: 300px;
+ overflow: auto;
+ font-size: 0.9375rem;
+}
+.pa-approval > .pa-row:last-child {
+ margin-bottom: 0;
+ justify-content: space-between;
+}
+.pa-advanced {
+ width: 100%;
+ min-width: 0;
+}
+.pa-advanced-bar {
+ background: var(--pa-surface);
+ display: flex;
+ align-items: center;
+ gap: 20px;
+ padding: 12px 24px;
+ border-bottom: 1px solid var(--pa-line);
+ position: relative;
+ z-index: 41;
+}
+.pa-advanced-bar p {
+ font-size: 0.8125rem;
+ color: var(--pa-muted);
+ margin: 0;
+}
+.pa-advanced > .app {
+ height: calc(100dvh - 69px);
+ min-height: 0;
+}
+.pa-nav-scrim {
+ display: none !important;
+}
+.pa-spin {
+ animation: pa-spin 1s linear infinite;
+}
+@keyframes pa-spin {
+ to {
+ transform: rotate(360deg);
+ }
+}
+@media (max-width: 1023px) {
+ .pa-sidebar {
+ width: 204px;
+ padding-inline: 12px;
+ }
+ .pa-shell {
+ margin-left: 204px;
+ }
+ .pa-topbar {
+ padding: 16px 24px;
+ }
+ .pa-main {
+ padding: 28px 24px;
+ }
+ .pa-device-picker select {
+ max-width: 160px !important;
+ }
+ .pa-brand {
+ font-size: 1.1rem;
+ }
+}
+@media (max-width: 767px) {
+ .pa-sidebar {
+ transform: translateX(-100%);
+ width: 240px;
+ }
+ .pa-sidebar.is-open {
+ transform: translateX(0);
+ }
+ .pa-shell {
+ margin-left: 0;
+ }
+ .personal .pa-mobile {
+ display: inline-flex;
+ }
+ .personal .pa-nav-scrim {
+ display: block !important;
+ position: fixed;
+ inset: 0;
+ background: #0e201b73;
+ border: 0;
+ border-radius: 0;
+ z-index: 20;
+ }
+ .pa-topbar {
+ min-height: 72px;
+ padding: 12px 16px;
+ flex-wrap: wrap;
+ }
+ .pa-topbar > .pa-row {
+ gap: 6px;
+ }
+ .personal .pa-device-picker {
+ gap: 0;
+ }
+ .pa-device-picker > svg {
+ display: none;
+ }
+ .personal .pa-device-picker select {
+ max-width: 140px;
+ font-size: 0.8125rem;
+ padding-inline: 4px;
+ }
+ .personal .pa-status {
+ font-size: 0.75rem;
+ padding: 6px 9px;
+ }
+ .pa-topbar .pa-bell {
+ width: 36px;
+ min-width: 36px;
+ }
+ .pa-main {
+ padding: 24px 18px;
+ }
+ .pa-page-heading {
+ flex-wrap: wrap;
+ margin: 0 0 24px;
+ gap: 16px;
+ }
+ .pa-page-heading h1 {
+ font-size: 1.7rem;
+ }
+ .pa-card {
+ padding: 20px;
+ }
+ .pa-agent-row {
+ flex-wrap: wrap;
+ }
+ .personal .pa-model-select {
+ width: 100%;
+ max-width: 100%;
+ margin-left: 58px;
+ }
+ .pa-welcome-card {
+ padding: 40px 20px;
+ min-height: 360px;
+ }
+ .pa-welcome-card h2 {
+ font-size: 1.4rem;
+ }
+ .pa-welcome-card .pa-actions {
+ justify-content: center;
+ }
+ .pa-setting {
+ flex-wrap: wrap;
+ }
+ .pa-sheet {
+ padding: 24px 20px;
+ }
+ .pa-approval > .pa-row:last-child {
+ flex-wrap: wrap;
+ }
+ .pa-approval .pa-actions {
+ margin: 4px 0 0;
+ width: 100%;
+ justify-content: flex-end;
+ }
+ .pa-advanced-bar {
+ padding: 8px 16px;
+ }
+ .pa-advanced-bar p {
+ display: none;
+ }
+ .pa-conversation {
+ height: calc(100dvh - 280px);
+ min-height: 400px;
+ }
+}
+@media (prefers-reduced-motion: reduce) {
+ .personal *,
+ .pa-sheet * {
+ animation: none !important;
+ transition: none !important;
+ scroll-behavior: auto !important;
+ }
+}
diff --git a/addons/control-center/ui/tests/host-node.spec.ts b/addons/control-center/ui/tests/host-node.spec.ts
index 4ddd21d..14de874 100644
--- a/addons/control-center/ui/tests/host-node.spec.ts
+++ b/addons/control-center/ui/tests/host-node.spec.ts
@@ -66,6 +66,7 @@ test('Web host uses one stable identity for device, project and restored termina
await page.getByRole('button', { name: 'Save directory', exact: true }).click();
await page.getByLabel('Link existing session', { exact: true }).selectOption(shell.id);
await page.getByRole('button', { name: 'Link', exact: true }).click();
+ await expect(page.getByRole('button', { name: 'Unlink ' + shell.name, exact: true })).toBeVisible();
const projects = await api(page, '/api/projects', { operation: 'list' });
const project = projects.projects.find((p: any) => p.name === 'Workspace host project');
expect(project.replicas[0].node).toBe(host);
diff --git a/addons/control-center/ui/tests/node-identity.spec.ts b/addons/control-center/ui/tests/node-identity.spec.ts
index d9887f0..b5f00d5 100644
--- a/addons/control-center/ui/tests/node-identity.spec.ts
+++ b/addons/control-center/ui/tests/node-identity.spec.ts
@@ -95,10 +95,18 @@ test('a floating terminal reconnects to its original Shell after the device iden
await page.getByRole('button', { name: 'Migrate identity preview-node', exact: true }).click();
const dialog = page.getByRole('dialog', { name: 'Migrate node identity', exact: true });
await dialog.getByLabel('Target NodeID', { exact: true }).fill(target);
+ // The dialog closes before the old transport disconnects. Wait for this
+ // Shell's new attachment so input cannot race with the identity reconnect.
+ const reattached = page.waitForResponse(response => {
+ if (!response.url().endsWith('/api/terminal/ticket') || response.request().method() !== 'POST') return false;
+ const body = response.request().postDataJSON();
+ return response.ok() && body.node === target && body.session_id === session;
+ });
await dialog.getByRole('button', { name: 'Migrate identity', exact: true }).click();
await expect(dialog).not.toBeVisible();
await expect(page.getByRole('button', { name: 'Migrate identity ' + target, exact: true })).toBeVisible();
await page.getByRole('button', { name: 'Restore terminal window', exact: true }).click();
+ await reattached;
await expect(pane.locator('.status')).toContainText('Connected');
await pane.locator('.terminal-screen').click();
await page.keyboard.type('printf "%s%s" AFTER_ "$IDENTITY_BROWSER"');
@@ -110,6 +118,7 @@ test('a floating terminal reconnects to its original Shell after the device iden
await expect(floating.locator('.terminal-panel.beside .status')).toContainText('Connected');
await floating.getByRole('button', { name: 'Close terminal window', exact: true }).click();
await page.goto('/#/projects');
+ await page.locator('.projects-list').getByRole('button', { name: /Identity project/ }).click();
await expect(page.locator('.projects-location')).toContainText('Preview Linux node');
await expect(page.locator('.projects-sessions')).toContainText('Identity Shell');
const migrated = await api(page, '/api/projects', { operation: 'list' });
diff --git a/addons/control-center/ui/tests/personal.spec.ts b/addons/control-center/ui/tests/personal.spec.ts
new file mode 100644
index 0000000..7f3f47e
--- /dev/null
+++ b/addons/control-center/ui/tests/personal.spec.ts
@@ -0,0 +1,130 @@
+import { test, expect, type Page } from '@playwright/test';
+
+async function ready(page: Page, path: string) {
+ await page.addInitScript(() => localStorage.setItem('cranibox.onboarded', '1'));
+ await page.goto('/#/app/' + path);
+ await expect(page.locator('.pa-main h1')).toBeVisible();
+}
+
+test('personal onboarding can finish locally and stays completed after reload', async ({ page }) => {
+ await page.goto('/');
+ await expect(page.getByRole('dialog')).toContainText('A little space for big ideas');
+ await page.getByRole('button', { name: 'Use on this device first', exact: true }).click();
+ await page.getByRole('button', { name: 'Add later, go home', exact: true }).click();
+ await expect(page.getByRole('dialog')).toHaveCount(0);
+ await page.reload();
+ await expect(page.locator('.pa-main h1')).toHaveText('What shall we do today?');
+ await expect(page.getByRole('dialog')).toHaveCount(0);
+ await expect(page.getByTitle('Chat with DeepSeek Harness')).toBeVisible();
+});
+
+test('home task drawer shows current progress and unanswered questions', async ({ page }) => {
+ await page.route('**/api/v1/app/tasks', route => route.fulfill({ json: [{
+ id: 'task-test', title: 'Prepare the itinerary', direction: 'incoming', state: 'running',
+ progress: 'Comparing train times', result: null, updated_at: 1,
+ questions: [{ id: 'question-test', text: 'Which day shall we leave?', answer: null }],
+ }] }));
+ await ready(page, 'home');
+ await page.getByRole('button', { name: 'Tasks', exact: true }).click();
+ const drawer = page.getByRole('dialog');
+ await expect(drawer).toContainText('Prepare the itinerary');
+ await expect(drawer).toContainText('Running');
+ await expect(drawer).toContainText('Comparing train times');
+ await expect(drawer).toContainText('Which day shall we leave?');
+ await drawer.getByRole('button', { name: 'View all tasks', exact: true }).click();
+ await expect(page).toHaveURL(/#\/tasks$/);
+ await expect(page.getByRole('region', { name: 'Collaboration tasks', exact: true })).toBeVisible();
+});
+
+test('device pairing uses the C6 invitation and SAS confirmation contract', async ({ page }) => {
+ await ready(page, 'devices');
+ await page.getByRole('button', { name: 'Add device', exact: true }).click();
+ await page.getByRole('button', { name: 'Create QR code and link', exact: true }).click();
+ const link = await page.getByLabel('Invitation link', { exact: true }).inputValue();
+ expect(link.startsWith('cranibox://pair/')).toBe(true);
+ await page.getByLabel('Pairing link', { exact: true }).fill(link);
+ await page.getByRole('button', { name: 'Continue to verification', exact: true }).click();
+ await expect(page.locator('.pa-sas code')).toHaveText(/[0-9]{4}-[0-9]{4}-[0-9]{4}/);
+ const confirmed = page.waitForRequest(request => request.url().includes('/confirm') && request.method() === 'POST');
+ await page.getByRole('button', { name: 'Codes match', exact: true }).click();
+ expect((await confirmed).postDataJSON()).toEqual({ match: true });
+ await expect(page.getByRole('status')).toContainText('Device paired');
+});
+
+test('subscription setup sends regional key and enables one chosen node', async ({ page }) => {
+ await ready(page, 'models');
+ await page.getByRole('button', { name: 'Add subscription', exact: true }).click();
+ const dialog = page.getByRole('dialog');
+ await dialog.getByRole('button', { name: 'API key', exact: true }).click();
+ await dialog.getByRole('combobox', { name: 'Service region', exact: true }).selectOption('cn');
+ await dialog.getByLabel('Name (optional)', { exact: true }).fill('Personal test account');
+ await dialog.getByLabel('API key', { exact: true }).fill('fake-personal-test-key');
+ const saved = page.waitForRequest(request => request.url().endsWith('/models/accounts') && request.method() === 'POST');
+ await dialog.getByRole('button', { name: 'Save subscription', exact: true }).click();
+ expect((await saved).postDataJSON()).toMatchObject({ kind: 'api_key', preset: 'deepseek', region: 'cn', key: 'fake-personal-test-key' });
+ await expect(page.getByRole('heading', { name: 'Personal test account', exact: true })).toBeVisible();
+ const account = page.locator('.pa-card').filter({ has: page.getByRole('heading', { name: 'DeepSeek', exact: true }) });
+ await account.getByText('Choose devices individually', { exact: true }).click();
+ const enable = page.waitForRequest(request => request.url().includes('/enable') && request.method() === 'POST');
+ await account.getByRole('checkbox', { name: 'Studio', exact: true }).click();
+ expect((await enable).postDataJSON()).toMatchObject({ on: true, all_nodes: null });
+ await expect(account.getByRole('checkbox', { name: 'Studio', exact: true })).toBeChecked();
+ await expect(page.locator('body')).not.toContainText('fake-personal-test-key');
+});
+
+test('all six agents can select an available model with DSH recommended', async ({ page }) => {
+ await ready(page, 'models');
+ await expect(page.locator('.pa-agent-row')).toHaveCount(6);
+ await expect(page.locator('.pa-agent-row').first()).toContainText('DeepSeek Harness');
+ await expect(page.locator('.pa-agent-row').first()).toContainText('Recommended · Default');
+ const saved = page.waitForRequest(request => request.url().endsWith('/agents/pi') && request.method() === 'PUT');
+ await page.getByRole('combobox', { name: 'Pi model', exact: true }).selectOption('deepseek/deepseek-chat');
+ expect((await saved).postDataJSON()).toEqual({ managed: true, model: 'deepseek/deepseek-chat' });
+ await expect(page.getByRole('combobox', { name: 'Pi model', exact: true })).toHaveValue('deepseek/deepseek-chat');
+});
+
+test('approval cards expose the request and remove it only after a decision', async ({ page }) => {
+ await ready(page, 'inbox');
+ const card = page.locator('.pa-approval').filter({ hasText: 'Agent requests a tool' });
+ await expect(card).toContainText('rm -rf build/');
+ const decision = page.waitForRequest(request => request.url().endsWith('/approvals/apr-2') && request.method() === 'POST');
+ await card.getByRole('button', { name: 'Deny', exact: true }).click();
+ expect((await decision).postDataJSON()).toEqual({ decision: 'deny' });
+ await expect(card).toHaveCount(0);
+ await page.getByRole('button', { name: 'Connected', exact: true }).click();
+ await expect(page.getByRole('dialog')).toBeVisible();
+});
+
+test('device view distinguishes hub Claude guest and forbids guest model grants', async ({ page }) => {
+ await ready(page, 'devices');
+ const hub = page.locator('.pa-card').filter({ has: page.getByRole('heading', { name: 'Home server', exact: true }) });
+ await expect(hub).toContainText('Hub');
+ await expect(hub).toContainText('Via another device');
+ const guest = page.locator('.pa-card').filter({ has: page.getByRole('heading', { name: "Alex's laptop", exact: true }) });
+ await expect(guest.getByRole('checkbox', { name: 'messages', exact: true })).toBeChecked();
+ await expect(guest.getByRole('checkbox', { name: 'llm', exact: true })).toHaveCount(0);
+ await expect(guest.getByRole('checkbox', { name: 'vault', exact: true })).toHaveCount(0);
+ await expect(page.locator('.pa-card').filter({ hasText: 'Studio' })).toContainText('Offline');
+});
+
+test('settings keep connection setup out of the personal UI and retain advanced routes', async ({ page }) => {
+ await page.setViewportSize({ width: 375, height: 812 });
+ await ready(page, 'settings');
+ expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
+ await expect(page.getByRole('textbox', { name: /connection|token|server address/i })).toHaveCount(0);
+ await page.getByRole('button', { name: 'Dark', exact: true }).click();
+ await expect(page.locator('html')).toHaveAttribute('data-theme', 'dark');
+ await page.getByLabel('Language', { exact: true }).selectOption('zh-cn');
+ await expect(page.locator('.pa-main h1')).toHaveText('按你的习惯来');
+ await page.getByRole('button', { name: '打开高级功能', exact: true }).click();
+ await expect(page).toHaveURL(/overview$/);
+ await expect(page.locator('.pa-advanced-bar')).toBeVisible();
+ await expect(page.locator('main h1')).toBeVisible();
+});
+
+test('advanced bookmark opens the existing overview', async ({ page }) => {
+ await page.goto('/#/app/advanced');
+ await expect(page).toHaveURL(/#\/overview$/);
+ await expect(page.locator('.pa-advanced-bar')).toBeVisible();
+ await expect(page.locator('main h1')).toBeVisible();
+});
diff --git a/addons/control-center/ui/tests/preview.mjs b/addons/control-center/ui/tests/preview.mjs
index 398967a..2fc8c1d 100644
--- a/addons/control-center/ui/tests/preview.mjs
+++ b/addons/control-center/ui/tests/preview.mjs
@@ -62,7 +62,7 @@ async function stop(code = 0) {
process.exit(code);
}
function start(command, args) {
- const environment = { ...process.env, PATH: directory + path.delimiter + (process.env.PATH || '') };
+ const environment = { ...process.env, CRANIBOX_APP_MOCK: "1", PATH: directory + path.delimiter + (process.env.PATH || '') };
const child = spawn(command, args, { stdio: 'inherit', env: command === node ? { ...environment, HOME: directory, CRANIBOX_HERDR_BIN: path.join(directory, 'missing-node-herdr') } : environment });
processes.push(child);
child.on('error', error => { console.error(error.message); void stop(1); });
diff --git a/addons/control-center/ui/tests/projects.spec.ts b/addons/control-center/ui/tests/projects.spec.ts
index 72d36d8..9a763ac 100644
--- a/addons/control-center/ui/tests/projects.spec.ts
+++ b/addons/control-center/ui/tests/projects.spec.ts
@@ -36,6 +36,7 @@ test('project shells reopen in place, share existing sessions and survive page r
await expect(pane.locator('.xterm-accessibility')).toContainText('PROJECT_READY_OK');
await page.getByRole('button', { name: 'Close terminal window', exact: true }).click();
await page.reload();
+ await page.locator('.projects-list').getByRole('button', { name: /Cross-device project/ }).click();
await expect(page.locator('.projects-sessions')).toContainText('Project shell');
await page.locator('.projects-sessions').getByRole('button', { name: 'Open', exact: true }).click();
await expect(pane.locator('.status')).toContainText('Connected');
diff --git a/addons/control-center/web.css b/addons/control-center/web.css
index f76b0e5..b4d78f7 100644
--- a/addons/control-center/web.css
+++ b/addons/control-center/web.css
@@ -1,2 +1,2 @@
-.direct-devices{--direct-surface:var(--surface,var(--card,#1b2336));--direct-text:var(--text,#f8fafc);min-width:0;color:var(--direct-text);margin:0 0 28px}.direct-devices h2,.direct-devices h3,.direct-devices p{overflow-wrap:anywhere;margin:0}.direct-devices h2{font-size:20px}.direct-devices h3{font-size:16px}.direct-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.direct-heading>div:first-child,.direct-heading h3{min-width:0}.direct-heading p,.direct-note,.direct-probe small,.direct-list small{color:var(--muted);overflow-wrap:anywhere;font-size:13px;line-height:1.6}.direct-actions{flex-wrap:wrap;gap:8px;display:flex}.direct-devices button{border:1px solid var(--border);background:var(--direct-surface);min-width:44px;min-height:44px;color:var(--direct-text);cursor:pointer;font:inherit;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;transition:background .18s,border-color .18s;display:inline-flex}.direct-devices button:hover:not(:disabled){background:var(--surface-raised,#334155)}.direct-devices button:disabled{opacity:.5;cursor:not-allowed}.direct-devices button.direct-primary{background:var(--accent);color:var(--on-accent,#0f172a);justify-self:start;font-weight:600}.direct-devices button.direct-primary:hover:not(:disabled){background:var(--accent-hover,#4ade80)}.direct-devices :focus-visible{outline:2px solid var(--focus,#e2e8f0);outline-offset:3px}.direct-devices form{gap:16px;margin:0;display:grid}.direct-devices label{flex-direction:column;gap:6px;min-width:0;font-size:14px;display:flex}.direct-devices input:not([type=checkbox]),.direct-devices textarea,.direct-devices select{border:1px solid var(--border);background:var(--code-bg,#131d2d);width:100%;min-width:0;min-height:44px;color:var(--direct-text);font:inherit;border-radius:8px;padding:10px 12px}.direct-devices textarea{resize:vertical}.direct-devices input::placeholder{color:var(--muted)}.direct-devices .direct-check{cursor:pointer;flex-direction:row;align-items:center;gap:10px;min-height:44px}.direct-check input{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0}.direct-editor,.direct-detail,.direct-empty{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;padding:20px}.direct-editor{margin-bottom:20px!important}.direct-editor .direct-heading{margin:0}.direct-fields{grid-template-columns:1fr 1fr;gap:16px;display:grid}.direct-layout{grid-template-columns:minmax(180px,260px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.direct-list{gap:8px;min-width:0;display:grid}.direct-list>button{text-align:start;justify-content:flex-start;width:100%}.direct-list>button[aria-pressed=true]{border-color:var(--accent)}.direct-list svg{flex-shrink:0}.direct-list span{min-width:0}.direct-list strong,.direct-list small{overflow-wrap:anywhere;display:block}.direct-probe{margin-bottom:12px;font-size:14px}.direct-detail>.direct-actions{margin:16px 0}.direct-command,.direct-jobs{border-top:1px solid var(--border);padding-top:20px}.direct-jobs{gap:12px;margin-top:20px;display:grid}.direct-jobs .direct-heading{align-items:center;margin:0}.direct-devices pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--code-bg,#131d2d);min-height:64px;max-height:320px;color:var(--direct-text);border-radius:8px;margin:0;padding:12px;font:13px/1.6 ui-monospace,monospace;overflow:auto}.direct-devices .direct-error{border:1px solid var(--danger,#e87888);color:var(--direct-text);overflow-wrap:anywhere;border-radius:8px;margin-bottom:12px;padding:12px}.direct-devices>.direct-note{align-items:center;gap:8px;margin-bottom:12px;display:flex}.direct-empty{text-align:center}.direct-empty svg{color:var(--muted);margin-bottom:8px}.direct-empty p{color:var(--muted);margin-top:8px;font-size:14px}@media (max-width:900px){.direct-layout{grid-template-columns:1fr}.direct-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}}@media (max-width:580px){.direct-heading{flex-wrap:wrap;gap:12px}.direct-fields{grid-template-columns:1fr}.direct-editor,.direct-detail,.direct-empty{padding:16px}}@media (prefers-reduced-motion:reduce){.direct-devices *{transition:none!important}}.direct-identity{background:var(--direct-surface);border:1px solid var(--border);border-radius:10px;justify-items:start;gap:6px;margin-bottom:20px;padding:14px 16px;font-size:13px;display:grid}.direct-identity code{-webkit-user-select:all;user-select:all;overflow-wrap:anywhere}.direct-identity small,.direct-identity span{color:var(--muted)}.direct-access{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;margin-bottom:20px;padding:20px}.direct-access h3{align-items:center;gap:8px;display:flex}.direct-access h3 svg{flex-shrink:0}.direct-access>.direct-note{margin-bottom:16px}.direct-listener{border:1px solid var(--border);border-radius:8px;min-width:0;margin-bottom:20px;padding:16px}.direct-listener .direct-heading{margin-bottom:8px}.direct-listener h4{align-items:center;gap:8px;margin:0 0 4px;font-size:14px;display:flex}.direct-listener code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.direct-listener form{margin-top:16px}.direct-grant-form{margin-bottom:16px!important}.browser-sharing{border:1px solid var(--border);border-radius:8px;min-width:0;padding:16px}.browser-sharing>summary{cursor:pointer;min-height:44px;font-weight:600;line-height:1.5}.browser-sharing>summary svg{vertical-align:middle;margin-inline-end:4px}.browser-sharing>div{gap:14px;min-width:0;padding-top:8px;display:grid}.browser-command{background:var(--code-bg,#131d2d);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;border-radius:8px;margin-block:12px;padding:12px;font-size:13px;line-height:1.6;display:block}.direct-grant-form>form{gap:12px;min-width:0;display:grid}.direct-grant-form fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px}.direct-grant-form legend{padding:0 6px;font-size:14px}.direct-grant-list{gap:12px;display:grid}.direct-grant-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding-top:12px;display:flex}.direct-grant-row>div{overflow-wrap:anywhere;min-width:0}.direct-grant-row>button{flex-shrink:0}.direct-token-dialog{border:1px solid var(--border);background:var(--direct-surface);width:min(520px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--direct-text);border-radius:14px;padding:24px;overflow:auto}.direct-token-dialog::backdrop{background:#0009}.direct-token-dialog p{font-size:14px;line-height:1.6}.direct-token-dialog code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;margin:12px 0;display:block}.direct-token-dialog label{margin:16px 0 8px}.direct-token-dialog textarea{font-family:ui-monospace,monospace}.direct-token-dialog>.direct-actions{justify-content:flex-end;margin-top:20px}.direct-paths{border-top:1px solid var(--border);gap:14px;min-width:0;margin:20px 0;padding-top:20px;display:grid}.direct-paths .direct-heading{margin-bottom:0}.direct-paths h4{overflow-wrap:anywhere;margin:0;font-size:14px}.direct-paths h4 span{color:var(--muted);margin-inline-start:6px;font-weight:400}.direct-paths ol{gap:10px;min-width:0;margin:0;padding:0;list-style:none;display:grid}.direct-paths li{border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:16px;min-width:0;padding:12px;display:flex}.direct-path-address{gap:6px;min-width:0;display:grid}.direct-path-address code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;font-size:13px}.direct-path-address small{color:var(--muted);font-size:12px}.direct-path-label{flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.direct-path-label span{border:1px solid var(--border);border-radius:5px;padding:3px 6px;font-size:12px}.direct-paths li>.direct-actions{flex-shrink:0}.direct-paths form{border:1px solid var(--border);border-radius:8px;padding:16px}.direct-paths .direct-error{margin-bottom:0}@media (max-width:580px){.direct-paths li{flex-direction:column;align-items:flex-start;gap:10px}.direct-paths li>.direct-actions{align-self:flex-end}.direct-access,.direct-token-dialog{padding:16px}}.direct-pairing{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:6px;font-size:12px;display:flex}.direct-pairing>span{align-items:center;gap:6px;display:inline-flex}.direct-pairing code{-webkit-user-select:all;user-select:all;color:var(--direct-text);font-variant-numeric:tabular-nums}.direct-pairing label{align-items:center;gap:6px;display:inline-flex}.direct-pairing input{width:15ch}.direct-pairing-pending{color:var(--danger,#e87888)}.direct-pairing-verified{color:var(--accent)}.remote-desktops{margin-bottom:28px}.desktop-layout{grid-template-columns:minmax(190px,250px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.desktop-sidebar,.desktop-workspace{min-width:0}.desktop-workspace{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;overflow:hidden}.desktop-target{border-bottom:1px solid var(--border);align-items:center;margin:0;padding:16px}.desktop-device-icon{width:36px;height:36px;color:var(--good,#86efac);background:var(--accent-soft,var(--surface));border-radius:8px;flex-shrink:0;place-items:center;display:grid}.desktop-access-note{color:var(--muted);align-items:flex-start;gap:8px;padding:16px 4px;font-size:13px;line-height:1.6;display:flex}.desktop-access-note svg{flex-shrink:0;margin-top:2px}.desktop-welcome{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:350px;padding:48px 24px;display:flex}.desktop-welcome-icon{border:1px solid var(--border);width:88px;height:88px;color:var(--good,#86efac);background:var(--code-bg,var(--surface));border-radius:24px;place-items:center;display:grid}.desktop-welcome>p{max-width:50ch;color:var(--muted);font-size:14px;line-height:1.7}.desktop-route-tag{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.desktop-sharing{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;margin-top:20px;padding:20px}.desktop-sharing>.direct-heading{margin:0}.desktop-sharing h3{align-items:center;gap:8px;display:flex}.desktop-sharing form{max-width:620px;margin-top:20px}.desktop-sharing>form+.desktop-service{margin-top:20px}.desktop-sharing form h4{margin:0 0 16px;font-size:16px}.desktop-sharing select{min-height:44px;color:inherit;background:var(--card,var(--bg));border:1px solid var(--border);font:inherit;border-radius:8px;padding:8px 12px}.vnc-viewer{background:var(--direct-surface);min-width:0;position:relative}.vnc-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.vnc-toolbar>p{align-items:center;gap:8px;font-size:13px;display:flex}.vnc-dot{background:var(--muted);border-radius:50%;width:8px;height:8px}.vnc-dot.connected{background:var(--success,var(--accent))}.vnc-screen{background:#11151c;width:100%;height:clamp(300px,60dvh,800px);overflow:hidden}.vnc-screen canvas:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:-2px}.vnc-screen:has(.selkies-screen){justify-content:center;align-items:center;display:flex}.selkies-screen{object-fit:contain;touch-action:none;max-width:100%;max-height:100%}.vnc-placeholder{min-height:200px;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}.vnc-viewer:has(.vnc-placeholder) .vnc-screen{height:0}.vnc-viewer>.direct-error{margin:12px}.vnc-keyboard,.vnc-auth{border-bottom:1px solid var(--border);padding:16px}.vnc-keyboard{gap:12px;display:grid}.desktop-clipboard{border-bottom:1px solid var(--border);padding:16px}.desktop-clipboard-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:16px;display:grid}.desktop-clipboard-columns>*{flex-direction:column;gap:10px;min-width:0;display:flex}.desktop-clipboard-columns form{margin:0}.desktop-clipboard label{font-size:14px;font-weight:600}.desktop-clipboard textarea{box-sizing:border-box;resize:vertical;width:100%;min-height:112px;color:inherit;background:var(--bg);border:1px solid var(--border);font:inherit;border-radius:8px;padding:12px;font-size:16px;line-height:1.5}.desktop-clipboard textarea:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:2px}.desktop-clipboard textarea[aria-invalid=true]{border-color:var(--bad,#f87171)}.desktop-clipboard button{align-self:flex-start}.desktop-clipboard>.direct-error,.desktop-clipboard>.direct-notice{margin-top:12px}@media (max-width:700px){.desktop-clipboard-columns{grid-template-columns:minmax(0,1fr)}}.vnc-auth{max-width:480px;margin:0 auto!important}.vnc-footnote{color:var(--muted);padding:12px 16px;font-size:12px;line-height:1.7}.vnc-viewer:fullscreen{height:100dvh;overflow:auto}.vnc-viewer:fullscreen .vnc-screen{height:calc(100dvh - 150px)}@media (max-width:900px){.desktop-layout{grid-template-columns:1fr}.desktop-sidebar .direct-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.desktop-access-note{padding:12px 0 0}}@media (max-width:580px){.desktop-sharing{padding:16px}.desktop-welcome{min-height:300px;padding:32px 16px}.vnc-toolbar{padding:12px}.vnc-toolbar>.direct-actions{width:100%}.vnc-toolbar .direct-actions button{flex-grow:1}}.desktop-service{border:1px solid var(--border);background:var(--panel-soft,var(--panel));border-radius:12px;gap:16px;min-width:0;padding:20px;display:grid}.desktop-service h4{margin:0 0 6px;font-size:16px}.desktop-service p{overflow-wrap:anywhere;margin:0;line-height:1.65}.desktop-service form,.desktop-managed-running{gap:12px;display:grid}.desktop-setup-steps{color:var(--muted);flex-wrap:wrap;gap:12px 24px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.desktop-setup-steps li{align-items:center;gap:8px;display:flex}.desktop-setup-steps li>span{border:1px solid var(--border);border-radius:50%;flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.desktop-setup-steps .complete{color:var(--good,#86efac)}.desktop-managed-running>p:first-child{color:var(--good,#86efac);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.desktop-install-review{border-top:1px solid var(--border);gap:12px;padding-top:16px;display:grid}.desktop-install-review pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;font-size:12px;line-height:1.7}@media (max-width:600px){.desktop-service{padding:14px}.desktop-setup-steps{gap:10px;font-size:12px}}.desktop-route-options{padding:0 16px 12px}.desktop-route-options label{flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.desktop-route-options select{max-width:100%;min-height:44px;color:inherit;background:var(--card,var(--bg));border:1px solid var(--border);font:inherit;border-radius:8px;padding:8px 12px}.desktop-route-options code{overflow-wrap:anywhere}.desktop-discovery{gap:12px;min-width:0;padding:20px 0;display:grid}.desktop-discovery .direct-heading{flex-wrap:wrap;align-items:center;margin:0}.desktop-discovery h4{margin:0 0 6px;font-size:16px}.desktop-discovery-results{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.desktop-discovery-results li{border:1px solid var(--border);background:var(--panel-soft,var(--direct-surface));border-radius:10px;flex-wrap:wrap;align-items:center;gap:12px;min-width:0;padding:16px;display:flex}.desktop-discovery-results li>svg{color:var(--muted);flex-shrink:0}.desktop-discovery-results li>div{flex:140px;gap:6px;min-width:0;display:grid}.desktop-discovery-results code{overflow-wrap:anywhere;font-size:13px}.desktop-discovery-results li span{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.desktop-discovery-results button{flex-shrink:0}.desktop-platform-guide{gap:16px;min-width:0;display:grid}.desktop-platform-guide h5{margin:0;font-size:16px;line-height:1.5}.desktop-platform-guide h5:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:4px;border-radius:4px}.desktop-platform-guide .desktop-setup-steps li[aria-current=step]{color:var(--text,inherit);font-weight:600}.desktop-platform-guide form{margin-top:0}.desktop-platform-guide code{overflow-wrap:anywhere}.desktop-guide-link{border:1px solid var(--border);min-height:44px;color:inherit;text-underline-offset:3px;overflow-wrap:anywhere;border-radius:8px;justify-content:flex-start;align-items:center;gap:8px;padding:8px 12px;font-size:14px;line-height:1.5;text-decoration:underline;display:inline-flex}.desktop-guide-link svg{flex-shrink:0}.desktop-guide-link:hover{background:var(--accent-soft,var(--surface))}.desktop-guide-link:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:2px}.desktop-guide-ready{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.desktop-guide-ready svg{flex-shrink:0}@media (max-width:600px){.desktop-platform-guide .direct-actions>*{flex:180px}}.agent-session-directory{border:1px solid var(--border);background:var(--direct-surface);border-radius:10px;margin:16px 0 20px;padding:16px 20px}.agent-session-directory>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:10px;min-height:44px;font-weight:600;display:flex}.agent-session-directory>summary span{color:var(--muted);margin-left:auto;font-size:12px;font-weight:400}.agent-session-directory[open]>summary{margin-bottom:12px}.agent-session-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px;margin-top:16px;display:grid}.agent-session-card{border:1px solid var(--border);border-radius:8px;min-width:0;padding:16px}.agent-session-card>div{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.agent-session-card p{color:var(--muted);margin:8px 0}.agent-session-card code{overflow-wrap:anywhere;font-size:12px;display:block}.agent-session-card small{color:var(--muted);margin-top:12px;display:block}.agent-session-current{color:var(--good,#86efac);font-size:12px}.agent-session-picker{border-top:1px solid var(--border);border-bottom:1px solid var(--border);gap:10px;min-width:0;padding:12px 0;display:grid}.agent-session-picker .direct-note{margin:0}.agent-session-picker .direct-actions small{color:var(--muted)}.agent-federation{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;margin:16px 0 20px;padding:20px}.agent-federation-heading{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:16px;display:flex}.agent-federation-heading h3{align-items:center;gap:10px;margin:0;font-size:18px;display:flex}.agent-federation-heading p{color:var(--muted);margin:8px 0 0;font-size:13px}.agent-federation-filters{flex-wrap:wrap;align-items:end;gap:16px 24px;margin:20px 0;display:flex}.agent-federation-filters>label:first-child{flex:280px;gap:8px;min-width:0;font-size:13px;display:grid}.agent-federation-filters>label>span{border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:0 12px;display:flex}.agent-federation input[type=search]{width:100%;min-width:0;min-height:44px;color:var(--direct-text);background:0 0;border:0;padding:10px 0;font-size:16px}.agent-federation .agent-federation-inactive{cursor:pointer;flex-direction:row;align-items:center;gap:10px;min-height:44px;font-size:13px;display:flex}.agent-federation-inactive input{width:18px;height:18px;accent-color:var(--accent)}.agent-federation-sources{gap:16px;display:grid}.agent-federation-source{border:1px solid var(--border);border-radius:10px;min-width:0;padding:16px}.agent-federation-device{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.agent-federation-device>div{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.agent-federation-device code{overflow-wrap:anywhere;color:var(--muted);font-size:12px}.agent-federation-device>span{color:var(--muted);font-size:12px}.agent-federation .agent-session-card{flex-direction:column;gap:12px;display:flex}.agent-federation .agent-session-card strong{overflow-wrap:anywhere}.agent-federation .agent-session-card p{overflow-wrap:anywhere;margin:0}.agent-federation .agent-session-card details{color:var(--muted);font-size:12px}.agent-federation .agent-session-card summary{cursor:pointer;text-underline-offset:3px;align-items:center;min-height:44px;text-decoration:underline;display:flex}.agent-federation .agent-session-card button{align-self:start;margin-top:auto}.agent-federation-unavailable{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:12px;margin-top:12px;display:flex}.agent-federation-unavailable p{overflow-wrap:anywhere;flex:200px;margin:0}@media (max-width:600px){.agent-federation{padding:16px 12px}.agent-federation-source{padding:12px}.agent-federation-heading .direct-actions{width:100%}.agent-federation-heading .direct-actions button{flex:160px}}.device-messages h2{align-items:center;gap:10px;display:flex}.messages-identity{background:var(--direct-surface);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;gap:16px 32px;margin-bottom:20px;padding:16px 20px;display:flex}.messages-identity>span{min-width:0;color:var(--muted);gap:5px;font-size:12px;display:grid}.messages-identity code,.messages-identity strong,.messages-identity time{color:var(--direct-text);overflow-wrap:anywhere;font-size:14px}.messages-identity code{-webkit-user-select:all;user-select:all}.messages-layout{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:24px;display:grid}.messages-compose,.messages-feed{min-width:0}.messages-compose .direct-editor{margin-bottom:16px!important}.messages-guidance{color:var(--muted);gap:10px;font-size:13px;line-height:1.65;display:flex}.messages-guidance>svg{flex-shrink:0;margin-top:3px}.messages-guidance h3{color:var(--direct-text);font-size:14px}.messages-guidance p{margin-top:8px}.messages-guidance button{margin-top:12px}.messages-reply{border-left:3px solid var(--accent);background:var(--code-bg);border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.messages-reply span{min-width:0}.messages-reply code{overflow-wrap:anywhere;font-size:12px;display:block}.messages-tabs{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.messages-tabs button[aria-pressed=true]{border-color:var(--accent)}.messages-tabs span{font-variant-numeric:tabular-nums;font-size:12px}.message-card{background:var(--direct-surface);border:1px solid var(--border);border-radius:12px;min-width:0;margin-bottom:16px;padding:20px}.message-heading{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.message-heading>div{min-width:0}.message-heading small{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.message-heading strong{overflow-wrap:anywhere;font-size:15px;display:block}.message-status{border:1px solid var(--border);border-radius:6px;flex-shrink:0;padding:4px 8px;font-size:12px}.message-acknowledged{border-color:var(--accent)}.message-blocked,.message-expired{border-color:var(--danger,#e87888)}.message-card .message-text{white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:16px;font-size:15px;line-height:1.7}.message-agent-address{color:var(--muted);gap:5px;margin-bottom:12px;font-size:12px;display:grid}.message-agent-address code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;color:var(--direct-text)}.message-card details{color:var(--muted);margin-bottom:16px;font-size:12px}.message-card summary{cursor:pointer;align-content:center;min-height:44px}.message-card dl{gap:8px;margin:8px 0 0;display:grid}.message-card dl>div{grid-template-columns:100px minmax(0,1fr);gap:8px;display:grid}.message-card dd{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;margin:0}.message-card .direct-actions{border-top:1px solid var(--border);padding-top:12px}.message-card>.direct-note{margin-top:12px}.messages-notice{border:1px solid var(--accent);border-radius:8px;padding:12px;font-size:14px;margin-bottom:16px!important}@media (max-width:1000px){.messages-layout{grid-template-columns:1fr}.messages-compose{grid-template-columns:minmax(0,1fr) minmax(180px,.7fr);gap:20px;display:grid}}@media (max-width:650px){.messages-compose{display:block}.messages-guidance{margin-bottom:20px}.message-card{padding:16px}.message-heading{flex-wrap:wrap}.messages-identity{padding:14px}}.messages-held{border:1px solid var(--danger,#e87888);border-radius:12px;margin-bottom:20px;padding:16px}.messages-held h3{align-items:center;gap:8px;margin-bottom:8px;font-size:15px;display:flex}.messages-held h3 span{font-variant-numeric:tabular-nums;border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px}.messages-held>.direct-note{margin-bottom:12px}.message-held-reason{color:var(--muted);margin-bottom:12px;font-size:13px}.task-card h3{overflow-wrap:anywhere;font-size:17px;line-height:1.5}.task-card .task-report{background:var(--code-bg);border-left:3px solid var(--border);border-radius:6px;margin-bottom:16px;padding:12px 16px}.task-report h4{color:var(--muted);align-items:center;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.task-report p,.task-history p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}.task-card .task-result.task-succeeded{border-color:var(--accent)}.task-card .task-result.task-failed{border-color:var(--danger,#e87888)}.message-status.task-running,.message-status.task-succeeded{border-color:var(--accent)}.message-status.task-cancel_requested,.message-status.task-failed{border-color:var(--danger,#e87888)}.task-history{margin-top:16px;padding-left:24px}.task-history li{margin-bottom:12px}.task-history code{overflow-wrap:anywhere;margin:5px 0;display:block}.task-decline{gap:12px;margin-top:16px;display:grid}.task-decline label{gap:8px;display:grid}.task-decline textarea{background:var(--direct-surface);border:1px solid var(--border);width:100%;color:var(--direct-text);resize:vertical;border-radius:8px;padding:12px}.device-tasks .direct-note{overflow-wrap:anywhere}.device-tasks .messages-layout{grid-template-areas:"compose feed"}.device-tasks .messages-compose{grid-area:compose}.device-tasks .messages-feed{grid-area:feed}@media (max-width:1000px){.device-tasks .messages-layout{grid-template-areas:"feed""compose"}}.task-questions{gap:16px;margin:16px 0;display:grid}.task-question{border:1px solid var(--border);background:var(--code-bg);border-radius:10px;min-width:0;padding:16px}.task-question h4{align-items:center;gap:8px;margin:0 0 8px;font-size:14px;display:flex}.task-question p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;line-height:1.65}.task-question>small,.task-answer small{color:var(--muted)}.task-answer{border-left:3px solid var(--accent);margin-top:12px;padding-left:12px}.task-answer strong{font-size:13px}.task-answer-pending{border-left-color:var(--border)}.task-reply{gap:10px;margin-top:16px;display:grid}.task-reply label{gap:8px;display:grid}.task-reply textarea{border:1px solid var(--border);width:100%;min-width:0;color:var(--direct-text);background:var(--direct-surface);resize:vertical;border-radius:8px;padding:12px}.task-reply button{justify-self:start}.task-run{min-width:0;margin:16px 0}.task-run>section{border:1px solid var(--border);background:var(--code-bg);border-radius:12px;gap:16px;min-width:0;margin-top:12px;padding:16px;display:grid}.task-run form,.task-run-review{gap:12px;min-width:0;display:grid}.task-run label{gap:8px;min-width:0;display:grid}.task-run input,.task-run select,.task-run textarea{background:var(--direct-surface);border:1px solid var(--border);width:100%;min-width:0;min-height:44px;color:var(--direct-text);border-radius:8px;padding:10px 12px;font-size:16px}.task-run textarea{resize:vertical}.task-run pre{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--border);border-radius:8px;max-height:320px;padding:12px;font-size:13px;line-height:1.65;overflow:auto}.task-run code{overflow-wrap:anywhere}.task-run details code{white-space:pre-wrap;display:block}.task-run-steps{color:var(--muted);flex-wrap:wrap;gap:8px 16px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.task-run-steps [aria-current]{color:var(--direct-text);font-weight:600}.task-run-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.task-run-report{border-top:1px solid var(--border);padding-top:16px}.task-run-report button{justify-self:start}@media (max-width:600px){.task-run-fields{grid-template-columns:minmax(0,1fr)}.task-run>section{padding:12px}}.task-run .task-run-communication{cursor:pointer;align-items:center;gap:12px;min-height:44px;display:flex}.task-run .task-run-communication input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:none}.task-run-proposal{border:1px solid var(--border);background:var(--direct-surface);border-radius:10px;gap:12px;min-width:0;padding:16px;display:grid}.task-run-proposal h4,.task-run-proposal p{margin:0}.task-run-proposal button{justify-self:start}.task-dependency-picker,.task-dependencies{overflow-wrap:anywhere;min-width:0}.task-dependency-picker fieldset{border:1px solid var(--border);border-radius:10px;min-width:0;margin:12px 0 0;padding:12px}.task-dependency-picker legend{padding:0 6px;font-weight:600}.device-tasks .task-dependency-option{cursor:pointer;align-items:center;gap:12px;min-height:44px;padding:8px 0;display:flex}.device-tasks .task-dependency-option input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:none}.task-dependency-option>span{gap:4px;min-width:0;display:grid}.task-dependency-option small{color:var(--muted)}.task-dependencies{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--code-bg);border-radius:10px;margin:16px 0;padding:16px}.task-dependencies>strong{font-size:14px}.task-dependencies p{white-space:pre-wrap;margin:8px 0 12px;line-height:1.65}.task-dependencies ul{gap:16px;margin:12px 0 0;padding-left:20px;display:grid}.task-dependencies li>span,.task-dependencies code{margin-top:6px;font-size:13px;display:block}.task-dependencies li>span{color:var(--muted)}.project-sync{--projects-surface:var(--surface,var(--card));border:1px solid var(--border);background:var(--projects-surface);border-radius:10px;min-width:0;margin:0 0 20px;padding:0 14px}.project-sync>summary{cursor:pointer;align-items:center;gap:8px;min-height:44px;font-size:13px;display:flex}.project-sync>summary:after{content:"+";color:var(--muted);margin-inline-start:auto;font-size:18px}.project-sync[open]>summary:after{content:"−"}.project-sync>summary>span{color:var(--muted);margin-inline-start:8px}.project-sync-body,.project-sync-form{gap:14px;min-width:0;display:grid}.project-sync-body{padding:6px 0 16px}.project-sync-body p{margin:0}.project-sync-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.project-sync-heading>div{min-width:0}.project-sync-heading strong,.project-sync-heading small{display:block}.project-sync-heading small,.project-sync-heading>span{color:var(--muted);margin-top:6px;font-size:12px}.project-sync code{overflow-wrap:anywhere;white-space:pre-wrap;font-size:12px}.project-sync-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-sync-form{border:1px solid var(--border);background:var(--code-bg);border-radius:8px;padding:16px}.project-sync-form fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;max-height:300px;padding:8px 12px;overflow-y:auto}.project-sync-form legend{padding:0 6px;font-size:13px}.project-sync .project-sync-check{cursor:pointer;flex-direction:row;align-items:center;gap:12px;min-height:44px;margin:0;padding:4px 0}.project-sync .project-sync-check input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:0 0 20px;margin:0;padding:0}.project-sync-check>span{min-width:0}.project-sync-check small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.project-sync-interval{max-width:320px}.project-sync-notice{color:var(--good);font-size:13px}.project-sync-results{max-height:380px;margin:0;padding:0;list-style:none;overflow-y:auto}.project-sync-results li{border-top:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 0;display:flex}.project-sync-results li>div{min-width:0}.project-sync-results strong,.project-sync-results code,.project-sync-results small{display:block}.project-sync-results strong{margin-top:4px;font-size:13px}.project-sync-results small,.project-sync-results li>span{color:var(--muted);margin-top:6px;font-size:12px}@media (max-width:600px){.project-sync>summary{flex-wrap:wrap;padding:10px 0}.project-sync>summary>span{flex-basis:100%;order:1;margin:0 0 0 25px}.project-sync-heading,.project-sync-results li{flex-wrap:wrap}.project-sync-form{padding:12px}.project-sync-form .projects-error{display:grid}}.activity-panel{border:1px solid var(--border);border-radius:12px;min-width:0;margin-block:16px;padding:18px}.activity-panel h3{align-items:center;gap:8px;display:flex}.activity-panel p,.activity-panel code{overflow-wrap:anywhere}.activity-sources{border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;gap:8px 20px;padding:12px;display:flex}.activity-sources label{min-width:0}.activity-source-status{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:12px;margin-block:12px;display:grid}.activity-source-status>div{border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px}.activity-source-status strong{overflow-wrap:anywhere}.activity-source-status small{color:var(--muted);margin-top:6px;display:block}.activity-source-status .activity-stale{border-inline-start:3px solid var(--accent);padding-inline-start:10px;font-weight:600}.activity-source-status .activity-stale small{font-weight:400}.activity-filters{flex-wrap:wrap;align-items:end;gap:12px 20px;margin-block:16px;display:flex}.activity-filters>label{flex:240px;min-width:0}.activity-kind{border:0;flex:360px;min-width:0;margin:0;padding:0}.activity-kind legend{margin-bottom:6px;padding:0;font-size:14px}.activity-kind>div{flex-wrap:wrap;gap:8px;display:flex}.activity-kind label{border:1px solid var(--border);cursor:pointer;border-radius:8px;flex-direction:row;align-items:center;gap:8px;min-height:44px;padding:8px 12px;font-weight:500;transition:border-color .15s,background-color .15s;display:flex}.activity-kind label:hover,.activity-kind label.is-selected{border-color:var(--accent);background:var(--accent-soft,var(--card))}.activity-kind label:focus-within{outline:2px solid var(--focus,var(--accent));outline-offset:3px}.activity-kind input[type=radio]{width:18px;height:18px;min-height:0;accent-color:var(--focus,var(--accent));border:0;flex:0 0 18px;margin:0;padding:0}.activity-kind span{color:inherit;font-size:inherit;overflow-wrap:anywhere}.activity-list{gap:12px;margin-block:16px;display:grid}.activity-list article{border:1px solid var(--border);border-radius:8px;min-width:0;padding:14px}.activity-list h4{overflow-wrap:anywhere;margin:0}.activity-list summary{cursor:pointer;text-underline-offset:3px;align-items:center;min-height:44px;text-decoration:underline;display:flex}.activity-list pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit;font-size:inherit}.activity-panel summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}@media (max-width:580px){.activity-panel{padding:12px}.activity-sources{display:block}}@media (prefers-reduced-motion:reduce){.activity-kind label{transition:none}}.managed-runs{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;margin:16px 0;padding:16px}.managed-runs>summary,.managed-run-launch>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;min-height:44px;font-weight:600;display:flex}.managed-runs>summary>span{color:var(--muted);font-size:13px;font-weight:400}.managed-runs-content{gap:16px;min-width:0;margin-top:16px;display:grid}.managed-run-device{border:1px solid var(--border);background:var(--code-bg);border-radius:10px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;margin:16px 0;padding:16px;display:grid}.managed-run-device label{gap:8px;min-width:0;font-weight:600;display:grid}.managed-run-device select{width:100%;min-width:0;min-height:44px;color:var(--direct-text);background:var(--direct-surface);border:1px solid var(--border);border-radius:6px;padding:8px}.managed-run-device>p{overflow-wrap:anywhere;grid-column:1/-1;margin:0;line-height:1.65}.managed-runs-content p{overflow-wrap:anywhere;margin:0;line-height:1.65}.managed-run-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px;display:grid}.managed-run-card{border:1px solid var(--border);border-radius:10px;align-content:start;gap:12px;min-width:0;padding:16px;display:grid}.managed-run-card code,.managed-run-card small,.managed-runs dd{overflow-wrap:anywhere}.managed-run-heading{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.managed-run-heading>div{gap:4px;display:grid}.managed-run-heading>span{color:var(--muted);font-size:13px}.managed-run-card small{color:var(--muted)}.managed-run-output,.managed-run-review{border:1px solid var(--border);border-radius:10px;gap:16px;min-width:0;padding:16px;display:grid}.managed-run-output pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--code-bg);border:1px solid var(--border);border-radius:8px;max-height:360px;margin-top:8px;padding:12px;font-size:13px;line-height:1.6;overflow:auto}.managed-runs dd{min-width:0;margin:4px 0 12px}.managed-runs dt{color:var(--muted);font-size:13px}.managed-run-launch>.direct-editor{margin-top:16px}.managed-runs button{min-height:44px}.managed-runs input,.managed-runs textarea,.managed-runs select{font-size:16px}.managed-run-fields,.managed-run-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-width:0;display:grid}.managed-run-fields label,.managed-run-facts>div{min-width:0}.managed-run-facts,.managed-run-review h3,.managed-run-review h4{margin:0}.managed-run-form>button{justify-self:start}.managed-run-form select{width:100%;min-height:44px}.managed-run-prompt{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--border);background:var(--code-bg);border-radius:8px;max-height:260px;margin:8px 0 0;padding:12px;font-size:14px;line-height:1.65;overflow:auto}.managed-run-command{min-width:0}.managed-run-command>summary{cursor:pointer;min-height:44px;color:var(--muted);align-content:center}.managed-run-command code{white-space:pre-wrap;overflow-wrap:anywhere}@media (max-width:600px){.managed-run-fields,.managed-run-facts{grid-template-columns:minmax(0,1fr)}.managed-run-review{padding:12px}.managed-run-form>button{justify-self:stretch}}.automatic-worker{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;margin:16px 0}.automatic-worker>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:10px;min-height:52px;padding:14px 16px;font-weight:600;display:flex}.automatic-worker>summary>span{color:var(--muted);margin-left:auto;font-size:13px;font-weight:400}.automatic-worker-body{gap:16px;min-width:0;padding:0 16px 16px;display:grid}.automatic-worker-body p{overflow-wrap:anywhere;margin:0;line-height:1.65}.automatic-worker-body code{overflow-wrap:anywhere;white-space:pre-wrap}.automatic-worker-body>p>code,.automatic-worker-current>code{margin-top:6px;display:block}.automatic-worker-status{border:1px solid var(--border);background:var(--code-bg);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.automatic-worker-status>span{color:var(--muted);font-size:13px}.automatic-worker-current,.automatic-worker-body form,.automatic-worker-review{gap:12px;min-width:0;display:grid}.automatic-worker-body label{gap:8px;min-width:0;display:grid}.automatic-worker-body input,.automatic-worker-body select{background:var(--direct-surface);border:1px solid var(--border);width:100%;min-width:0;min-height:44px;color:var(--direct-text);border-radius:8px;padding:10px 12px;font-size:16px}.automatic-worker-body fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px}.automatic-worker-body legend{padding:0 6px;font-weight:600}.automatic-worker-body .automatic-worker-check{cursor:pointer;flex-direction:row;align-items:center;gap:12px;min-height:44px;padding:6px 0;display:flex}.automatic-worker-check>input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:none;margin:0;padding:0}.automatic-worker-check>span{overflow-wrap:anywhere;min-width:0}.automatic-worker-check small{color:var(--muted);margin-top:4px;display:block}.automatic-worker-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.automatic-worker-review{border:1px solid var(--border);background:var(--code-bg);border-radius:10px;padding:16px}.automatic-worker-review h3{margin:0;font-size:17px}.automatic-worker-review details code{margin-top:8px;display:block}.automatic-worker-runs{gap:12px;margin:0;padding:0;list-style:none;display:grid}.automatic-worker-runs li{border:1px solid var(--border);border-radius:8px;gap:6px;min-width:0;padding:12px;display:grid}.automatic-worker-runs li>span{color:var(--muted)}@media (max-width:600px){.automatic-worker-fields{grid-template-columns:minmax(0,1fr)}.automatic-worker>summary>span{flex-basis:100%;margin-left:29px}.automatic-worker-body{padding:0 12px 12px}.automatic-worker-review{padding:12px}}.collaborations{border:1px solid var(--border);border-radius:14px;min-width:0;margin:24px 0;padding:20px}.collaborations-heading,.collaboration-title{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.collaborations-heading h3{align-items:center;gap:8px;margin:0;font-size:17px;display:flex}.collaborations-heading p{color:var(--muted);margin:8px 0 0;line-height:1.65}.collaborations-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));align-items:start;gap:16px;margin-top:16px;display:grid}.collaboration-card{border:1px solid var(--border);background:var(--code-bg);border-radius:12px;gap:14px;min-width:0;padding:20px;display:grid}.collaboration-card h4,.collaboration-card p{margin:0}.collaboration-title h4{flex:1;min-width:0;font-size:16px;line-height:1.5}.collaboration-title>span{border:1px solid var(--border);border-radius:8px;padding:4px 8px;font-size:12px}.collaboration-card p,.collaboration-card code,.collaboration-card dd{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}.collaboration-card small,.collaboration-progress span,.collaboration-create small{color:var(--muted);font-size:13px}.collaboration-progress{gap:8px;display:grid}.collaboration-progress progress{width:100%;height:8px;accent-color:var(--accent)}.collaboration-stats{flex-wrap:wrap;gap:8px 16px;font-size:13px;display:flex}.collaboration-result{border-top:1px solid var(--border);padding-top:14px}.collaboration-result p{margin-top:8px}.collaboration-card ul{padding-left:20px}.collaboration-card details,.collaboration-card dl,.collaboration-create details{min-width:0}.collaboration-card dl>div{margin-top:12px}.collaboration-card dt{color:var(--muted);font-size:12px}.collaboration-card dd{font-family:var(--font-mono,monospace);margin:4px 0 0;font-size:13px}.collaboration-create,.collaboration-close{gap:12px;min-width:0;display:grid}.collaboration-create{border:1px solid var(--border);border-radius:12px;margin-top:20px;padding:20px}.collaboration-create label,.collaboration-close label{gap:8px;min-width:0;display:grid}.collaboration-create input,.collaboration-create textarea,.collaboration-close textarea,.collaboration-filter select{border:1px solid var(--border);background:var(--direct-surface);width:100%;min-width:0;min-height:44px;color:var(--direct-text);border-radius:8px;padding:10px 12px;font-size:16px}.collaboration-create textarea,.collaboration-close textarea{resize:vertical}.collaboration-create fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px}.collaboration-create .collaboration-member{cursor:pointer;align-items:center;gap:12px;min-height:44px;display:flex}.collaboration-create .collaboration-member input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:none}.collaboration-member code{overflow-wrap:anywhere}.collaboration-filter{gap:8px;margin-bottom:16px;display:grid}.task-collaboration{border:1px solid var(--border);border-radius:8px;margin:12px 0;padding:12px}.task-collaboration p,.task-collaboration code{white-space:pre-wrap;overflow-wrap:anywhere}.task-collaboration code{margin-top:8px;display:block}@media (max-width:600px){.collaborations,.collaboration-create,.collaboration-card{padding:16px}}.projects-view{--projects-surface:var(--surface,var(--card,#1b2336));--projects-text:var(--text,#f8fafc);--projects-on-accent:var(--on-accent,#0f172a);color:var(--projects-text);min-width:0}.projects-view h1{margin:0 0 6px;font-size:clamp(24px,2.5vw,30px)}.projects-view h2,.projects-view h3{overflow-wrap:anywhere;margin:0}.projects-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.projects-heading>div:first-child{min-width:0}.projects-heading p,.projects-note{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:13px}.projects-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.projects-view button{border:1px solid var(--border);background:var(--projects-surface);min-width:44px;min-height:44px;color:var(--projects-text);cursor:pointer;font:inherit;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;display:inline-flex}.projects-view button:hover:not(:disabled){background:var(--surface-raised,#334155)}.projects-view button:disabled{cursor:not-allowed;opacity:.5}.projects-view button.projects-primary{color:var(--projects-on-accent);background:var(--accent);border-color:var(--accent);font-weight:600}.projects-view button.projects-primary:hover:not(:disabled){background:var(--accent-hover,#4ade80)}.projects-view label{flex-direction:column;gap:6px;min-width:0;font-size:13px;display:flex}.projects-view input,.projects-view select{width:100%;min-width:0;min-height:44px;color:var(--projects-text);background:var(--code-bg,#131d2d);border:1px solid var(--border);font:inherit;border-radius:8px;padding:10px}.projects-view input::placeholder{color:var(--muted);opacity:1}.projects-view :focus-visible{outline:2px solid var(--focus,#e2e8f0);outline-offset:3px}.projects-layout{grid-template-columns:minmax(210px,270px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.projects-sidebar,.projects-detail,.projects-register{background:var(--projects-surface);border:1px solid var(--border);border-radius:12px;min-width:0;padding:20px}.projects-view .projects-search{flex-direction:row;align-items:center;gap:8px;margin-bottom:16px}.projects-search input{min-width:0}.projects-list{gap:8px;margin-bottom:12px;display:grid}.projects-list>button{text-align:start;justify-content:flex-start;width:100%;padding:12px}.projects-list>button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft,#153a2c)}.projects-list span{min-width:0}.projects-list strong,.projects-list small{overflow-wrap:anywhere;display:block}.projects-list small{color:var(--muted);margin-top:4px;font-size:12px}.projects-id{color:var(--muted);overflow-wrap:anywhere;margin-top:6px;font-size:11px;display:block}.projects-location{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;margin:4px 0 16px;padding:16px 0;display:flex}.projects-location>div{flex:1;min-width:0}.projects-location strong,.projects-location code{overflow-wrap:anywhere;display:block}.projects-location code{color:var(--muted);white-space:pre-wrap;margin-top:4px;font-size:12px}.projects-status{color:var(--warn,#fcd34d);font-size:12px}.projects-status.is-online{color:var(--good,#86efac)}.projects-snapshot{border:1px solid var(--border);background:var(--surface-raised,var(--projects-surface));border-radius:8px;gap:10px;margin:0 0 20px;padding:14px;display:flex}.projects-snapshot>svg{color:var(--warn,#fcd34d);flex-shrink:0;margin-top:2px}.projects-snapshot>div{min-width:0}.projects-snapshot p{color:var(--muted);overflow-wrap:anywhere;margin:6px 0 0;font-size:13px}.projects-sessions{margin:0 0 16px;padding:0;list-style:none}.projects-sessions>li{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 0;display:flex}.projects-sessions>li>div:not(.projects-actions){flex:1;min-width:0}.projects-sessions strong,.projects-sessions small{overflow-wrap:anywhere;display:block}.projects-sessions small{color:var(--muted);font-size:12px}.projects-view .projects-session-form{align-items:flex-end;gap:12px;margin:20px 0;display:flex}.projects-session-form>label{flex:1;min-width:0}.projects-session-form>button{flex-shrink:0}.projects-view .projects-register{gap:16px;margin:0 0 24px;display:grid}.projects-register .projects-heading{margin:0}.projects-register p{color:var(--muted);margin:0;font-size:13px}.projects-register>button{justify-self:start}.projects-error{border:1px solid var(--bad,#fda4af);background:var(--bad-bg,#3c202c);color:var(--bad,#fda4af);overflow-wrap:anywhere;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 16px;padding:12px;display:flex}.projects-empty{text-align:center;justify-items:center;gap:16px;padding:32px 12px;display:grid}.projects-empty p{color:var(--muted);max-width:440px;margin:0}.projects-sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:1100px){.projects-layout{grid-template-columns:minmax(0,1fr)}.projects-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}}@media (max-width:600px){.projects-heading{flex-wrap:wrap;align-items:flex-start;gap:12px}.projects-sidebar,.projects-detail,.projects-register{padding:14px}.projects-view .projects-session-form{flex-direction:column;align-items:stretch}.projects-sessions>li{flex-wrap:wrap}.projects-sessions>li>div:not(.projects-actions){flex-basis:calc(100% - 30px)}.projects-sessions .projects-actions{margin-left:30px}.projects-location{flex-wrap:wrap}.projects-status{width:100%;margin-left:30px}.projects-error{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){.projects-view *{transition:none!important;animation:none!important}}.projects-sources{background:var(--projects-surface);border:1px solid var(--border);border-radius:10px;margin:0 0 20px;padding:0 14px}.projects-sources summary{cursor:pointer;align-items:center;gap:8px;min-height:44px;font-size:13px;display:flex}.projects-sources summary:after{content:"+";color:var(--muted);margin-left:auto;font-size:18px}.projects-sources[open] summary:after{content:"−"}.projects-sources summary span{color:var(--muted);margin-left:8px}.projects-sources>p{margin:4px 0 12px}.projects-sources ul{max-height:280px;margin:0;padding:0;list-style:none;overflow-y:auto}.projects-sources li{border-top:1px solid var(--border);align-items:flex-start;gap:10px;padding:12px 0;font-size:13px;display:flex}.projects-sources li div{flex:1;min-width:0}.projects-sources li strong,.projects-sources li small{overflow-wrap:anywhere;display:block}.projects-sources li small,.projects-sources time{color:var(--muted);margin-top:4px;font-size:12px}@media (max-width:600px){.projects-sources summary{flex-wrap:wrap;padding:10px 0}.projects-sources summary span{flex-basis:100%;order:1;margin:0 0 0 24px}.projects-sources li>time{display:none}}.projects-copy{min-width:0;margin-bottom:20px}.projects-copy>.projects-register{margin-top:12px}.projects-copy form,.projects-copy-review{gap:14px;min-width:0;display:grid}.projects-copy form>button{justify-self:start}.projects-copy code{overflow-wrap:anywhere;white-space:pre-wrap;margin-top:6px;font-size:12px;display:block}.projects-copy details{border:1px solid var(--border);border-radius:8px;min-width:0;padding:0 12px}.projects-copy summary{cursor:pointer;align-items:center;min-height:44px;display:flex}.projects-copy ul{max-height:260px;margin:0;padding:0 0 8px;list-style:none;overflow:auto}.projects-copy li{border-top:1px solid var(--border);align-items:baseline;gap:12px;padding:8px 0;display:flex}.projects-copy li code{flex:1;min-width:0;margin:0}.projects-copy li span{color:var(--muted);flex-shrink:0;font-size:12px}.projects-copy .projects-copy-check{flex-direction:row;align-items:center;gap:12px;min-height:44px}.projects-copy-check input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:0 0 20px}.projects-copy-actions{flex-wrap:wrap;gap:8px;display:flex}.projects-copy-progress{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px}.projects-copy-progress>div{flex-wrap:wrap;justify-content:space-between;gap:8px;margin-bottom:10px;display:flex}.projects-copy-progress span{color:var(--muted);font-variant-numeric:tabular-nums}.projects-copy-progress progress{width:100%;height:12px;accent-color:var(--accent);display:block}.projects-copy details>label,.projects-copy details>button{margin-bottom:12px}.projects-copy-unavailable>div{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 0;display:flex}.projects-copy-unavailable code{flex:1;min-width:0}.projects-handoff-fields{border:1px solid var(--border);border-radius:8px;gap:16px;min-width:0;margin:0;padding:16px;display:grid}.projects-handoff-fields legend{padding:0 6px;font-weight:600}.projects-handoff-fields p,.projects-continuation p{overflow-wrap:anywhere;margin:0;line-height:1.6}.projects-handoff-fields small{color:var(--muted)}.projects-view textarea{width:100%;min-width:0;color:var(--projects-text);background:var(--code-bg,#131d2d);border:1px solid var(--border);font:inherit;resize:vertical;border-radius:8px;padding:12px;font-size:16px;line-height:1.5}.projects-view textarea[aria-invalid=true]{border-color:var(--bad)}.projects-handoff-review h4{margin:16px 0 6px}.projects-handoff-review p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 16px;line-height:1.6}.projects-continuation{border:1px solid var(--accent);background:var(--projects-surface);border-radius:10px;gap:16px;min-width:0;padding:20px;display:grid}.projects-continuation .projects-heading{margin:0}.projects-continuation h3{align-items:center;gap:8px;display:flex}.projects-continuation h3 svg{flex-shrink:0}.projects-continuation dl{gap:6px;margin:0;display:grid}.projects-continuation dt{color:var(--muted);font-size:12px}.projects-continuation dd{min-width:0;margin:0 0 8px}.projects-continuation code{margin:0 0 6px}.projects-continuation-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.projects-continuation-review,.projects-continuation-output{gap:16px;min-width:0;display:grid}.projects-continuation-review h4{margin:0}.projects-handoff-text{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--border);background:var(--code-bg,#131d2d);min-width:0;max-height:320px;color:var(--projects-text);border-radius:8px;margin:0;padding:12px;font-size:13px;line-height:1.6;overflow:auto}.projects-continuation-output details{padding-bottom:12px}@media (max-width:600px){.projects-continuation{padding:14px}.projects-continuation-fields{grid-template-columns:minmax(0,1fr)}.projects-continuation select{font-size:16px}.projects-handoff-fields{padding:12px}}.virtual-spaces{font-size:14px;line-height:1.6}.spaces-eyebrow{color:var(--good,#86efac);letter-spacing:.1em;font-size:12px;font-weight:600;margin-bottom:6px!important}.spaces-muted{color:var(--muted);font-size:13px}.spaces-empty{border:1px dashed var(--border);text-align:center;background:var(--direct-surface);border-radius:16px;flex-direction:column;align-items:center;padding:64px 24px;display:flex}.spaces-empty-icon{border:1px solid var(--border);width:88px;height:88px;color:var(--good,#86efac);background:var(--accent-soft,var(--surface));border-radius:24px;place-items:center;margin-bottom:20px;display:grid}.spaces-empty>p{max-width:58ch;color:var(--muted);margin-top:12px}.spaces-benefits{flex-wrap:wrap;justify-content:center;gap:12px 24px;margin-top:28px;display:flex}.spaces-benefits span{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.spaces-wizard{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;margin-bottom:24px;padding:24px}.spaces-wizard:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.spaces-install-plan:focus-visible,.spaces-setup-status:focus-visible,.virtual-spaces>.direct-error:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.spaces-install-plan,.spaces-setup-status,.virtual-spaces>.direct-error{scroll-margin-block:100px}.spaces-steps{border-bottom:1px solid var(--border);gap:24px;margin:24px 0;padding:0 0 20px;list-style:none;display:flex}.spaces-steps li{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.spaces-steps li.active{color:var(--text)}.spaces-steps li>span{border:1px solid var(--border);border-radius:50%;flex-shrink:0;place-items:center;width:24px;height:24px;display:grid}.spaces-steps li.active>span{background:var(--accent);color:var(--on-accent,#0f172a);border-color:var(--good,#86efac)}.spaces-step-content{gap:20px;max-width:760px;display:grid}.spaces-step-content>h4,.spaces-step-content>p{margin:0}.spaces-providers{border:0;flex-wrap:wrap;gap:12px;margin:0;padding:0;display:flex}.spaces-providers legend{margin-bottom:10px;font-size:13px}.virtual-spaces .spaces-providers>label{border:1px solid var(--border);cursor:pointer;border-radius:10px;flex-direction:row;flex:170px;align-items:center;gap:12px;min-height:60px;padding:14px 16px;display:flex}.spaces-providers>label:has(input:checked){border-color:var(--good,#86efac);background:var(--accent-soft,transparent)}.spaces-providers small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.virtual-spaces .spaces-providers input{width:18px;height:18px;min-height:18px;accent-color:var(--good,#86efac);flex-shrink:0;padding:0}.virtual-spaces .direct-notice{border:1px solid var(--border);color:var(--good,#86efac);background:var(--direct-surface);border-radius:8px;margin-bottom:20px;padding:12px 16px}.spaces-step-content>button{justify-self:start}.spaces-engine,.spaces-setup-status{background:var(--code-bg,var(--surface));border:1px solid var(--border);border-radius:10px;align-items:flex-start;gap:12px;padding:16px;display:flex}.spaces-engine>svg{color:var(--good,#86efac);flex-shrink:0;margin-top:3px}.spaces-engine p,.spaces-setup-status p{color:var(--muted);margin-top:4px;font-size:13px}.spaces-setup-status{justify-content:space-between;margin-bottom:20px}.spaces-environment,.spaces-install-plan{border-top:1px solid var(--border);overflow-wrap:anywhere;gap:16px;min-width:0;padding-top:20px;display:grid}.spaces-install-plan pre{border:1px solid var(--border);background:var(--code-bg,var(--surface));white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;max-height:280px;padding:16px;font-size:12px;line-height:1.6;overflow:auto}.spaces-advanced summary,.spaces-details summary{cursor:pointer;min-height:44px;padding:10px 0}.spaces-advanced label{margin-top:12px}.spaces-review{gap:12px;margin:0;display:grid}.spaces-review>div{border-bottom:1px solid var(--border);grid-template-columns:130px minmax(0,1fr);gap:16px;padding-bottom:10px;display:grid}.spaces-review dt{color:var(--muted)}.spaces-review dd{overflow-wrap:anywhere;margin:0}.spaces-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));align-items:start;gap:20px;display:grid}.space-card{background:var(--direct-surface);border:1px solid var(--border);border-radius:12px;min-width:0;padding:20px}.space-card-head{align-items:center;gap:14px;margin-bottom:16px;display:flex}.space-card-head>div{min-width:0}.space-card-head p{color:var(--muted);overflow-wrap:anywhere;margin-top:3px;font-size:12px}.space-card h3{overflow-wrap:anywhere;font-size:17px}.space-icon{background:var(--accent-soft,var(--surface));width:44px;height:44px;color:var(--good,#86efac);border-radius:10px;flex-shrink:0;place-items:center;display:grid}.space-phase{color:var(--muted);align-items:center;gap:8px;margin-bottom:16px;font-size:13px;display:inline-flex}.space-phase.ready{color:var(--good,#86efac)}.space-phase.failed,.space-phase.interrupted{color:var(--bad,#fda4af)}.space-card-actions{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.spaces-details{border-top:1px solid var(--border);margin-top:16px;font-size:13px}.spaces-details>p{margin:10px 0}.spaces-details code{overflow-wrap:anywhere;font-size:12px}.space-credentials{gap:12px;padding:16px 0 0;display:grid}.space-credentials>button{justify-self:start}.space-image-editor{border-top:1px solid var(--border);gap:16px;margin-top:20px;padding-top:20px}.space-image-editor fieldset{border:0;gap:16px;min-width:0;margin:0;padding:0;display:grid}.space-image-policy{gap:8px;min-width:0;display:grid}.space-image-editor input,.space-image-editor select{width:100%;min-width:0}.space-image-editor .direct-error{overflow-wrap:anywhere;scroll-margin-block:100px}.space-image-editor .direct-error:focus-visible,.space-card:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.spaces-spinner{flex-shrink:0;animation:1.4s linear infinite spaces-spin}@keyframes spaces-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spaces-spinner{animation:none}}@media (max-width:580px){.spaces-wizard,.space-card{padding:16px}.spaces-empty{padding:40px 16px}.spaces-steps{justify-content:space-between;gap:10px}.spaces-steps li{gap:5px;font-size:12px}.spaces-review>div{grid-template-columns:1fr;gap:4px}.space-card-actions button{flex-grow:1}}.spaces-local-heading{margin-bottom:16px;font-size:16px}.remote-spaces{border-top:1px solid var(--border);margin-top:32px;padding-top:24px}.remote-spaces .direct-heading h3{align-items:center;gap:8px;display:flex}.remote-space-sources{gap:16px;margin-top:16px;display:grid}.remote-space-source{border:1px solid var(--border);background:var(--direct-surface);overflow-wrap:anywhere;border-radius:12px;min-width:0;padding:20px}.remote-space-source-head{flex-wrap:wrap;justify-content:space-between;gap:8px 20px;margin-bottom:12px;display:flex}.remote-space-source-head strong{font-size:14px}.remote-space-source-head time{color:var(--muted);font-size:12px}.remote-space-list{margin:0 0 12px;padding:0;list-style:none}.remote-space-list li{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 0;display:flex}.remote-space-list li>svg{color:var(--muted);flex-shrink:0}.remote-space-list li>div{flex:1;min-width:0}.remote-space-list small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.remote-space-list li>span{color:var(--muted);flex-shrink:0;font-size:13px}.remote-space-details{border:1px solid var(--border);overflow-wrap:anywhere;border-radius:12px;min-width:0;margin-top:16px}.remote-space-details>summary{cursor:pointer;align-items:center;gap:8px 16px;min-height:52px;padding:12px 16px;font-size:13px;list-style:none;display:flex}.remote-space-details>summary::-webkit-details-marker{display:none}.remote-space-details>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:10px}.remote-space-details>summary>svg{flex-shrink:0;margin-left:auto}.remote-space-details[open]>summary>svg{transform:rotate(180deg)}.remote-space-counts{color:var(--muted)}.remote-space-details-body{border-top:1px solid var(--border);padding:16px}.remote-space-details-body>p{margin-bottom:12px}.remote-space-issues{gap:0;display:grid}.remote-space-issue{min-width:0;padding:12px 0}.remote-space-issue+.remote-space-issue{border-top:1px solid var(--border)}.remote-space-issue-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;display:flex}.remote-space-issue-head strong{font-size:13px;font-weight:500}.remote-space-issue-head>span,.remote-space-issue time{color:var(--muted);font-size:12px}.remote-space-issue-error{color:var(--bad,#fda4af);margin:6px 0;font-size:13px}@media (max-width:580px){.remote-space-details>summary{flex-wrap:wrap}.remote-space-counts{flex-basis:100%;order:1}.remote-space-source{padding:16px}.remote-space-list li{flex-wrap:wrap}.remote-space-list li>span{width:100%;margin-left:30px}}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:-moz-fit-content;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}.network-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:20px;display:grid}.network-provider{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;gap:16px;min-width:0;padding:20px;display:grid}.network-provider>.direct-heading{margin-bottom:0}.network-provider h3{align-items:center;gap:8px;display:flex}.network-provider h4{overflow-wrap:anywhere;margin:0;font-size:14px}.network-provider code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.network-phase{color:var(--muted);flex-shrink:0;align-items:center;gap:6px;min-height:28px;font-size:12px;display:inline-flex}.network-phase:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.network-phase.active{color:var(--good,var(--accent))}.network-setup,.network-advanced,.network-plan{justify-items:start;gap:12px;min-width:0;display:grid}.tailscale-setup,.tailscale-setup .network-plan,.tailscale-setup details{width:100%}.tailscale-setup p{margin:0}.tailscale-setup-commands{gap:12px;min-width:0;display:grid}.tailscale-setup pre{background:var(--direct-surface);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;max-width:100%;margin:0;padding:12px;font-size:12px;line-height:1.6}.network-advanced{justify-items:stretch;padding-top:12px}.network-provider details{border:1px solid var(--border);border-radius:8px;padding:0 12px}.network-provider summary{cursor:pointer;min-height:44px;padding:12px 0;font-size:13px}.network-provider details[open]{padding-bottom:12px}.network-secret{align-items:center;gap:8px;display:flex}.network-secret input{flex:1}.network-secret button{flex-shrink:0}.network-entry-help{margin-top:-10px}.network-entry{gap:6px;min-width:0;display:grid}.network-method button[aria-pressed=true]{border-color:var(--good,var(--accent));color:var(--good,var(--accent));background:var(--accent-soft,color-mix(in srgb, var(--accent) 8%, transparent))}.network-invitation-result{border:1px solid var(--border);border-radius:8px;gap:12px;width:100%;min-width:0;padding:12px;display:grid}.network-invitations ul{width:100%}.network-provider textarea{line-height:1.6}.network-provider textarea[aria-invalid=true]{border-color:var(--danger,#e87888)}.network-saved{gap:6px;min-width:0;display:grid}.network-discovery{border-top:1px solid var(--border);gap:12px;padding-top:16px;display:grid}.network-discovery h4 span{color:var(--muted);margin-inline-start:4px;font-weight:400}.network-provider ul{min-width:0;margin:0;padding:0;list-style:none}.network-provider li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;font-size:13px;display:flex}.network-provider li:last-child{border-bottom:0}.network-provider li>div{min-width:0}.network-provider li strong{overflow-wrap:anywhere;font-size:13px;display:block}.network-provider li small{color:var(--muted);overflow-wrap:anywhere;line-height:1.6;display:block}.network-provider li>button,.network-provider li>span{flex-shrink:0}.network-target{border-top:1px solid var(--border);padding-top:16px}.network-target .direct-heading{align-items:center;margin:0}.network-discovery-controls{gap:12px;display:grid}.network-ts-discovery>p{margin:0}.network-ts-discovery li{flex-wrap:wrap}.network-ts-discovery li>div{overflow-wrap:anywhere;flex:180px}.network-ts-discovery input[aria-invalid=true]{border-color:var(--danger,#e87888)}.network-discovered-path{margin-top:8px}.network-discovered-path select{width:100%;min-width:0;max-width:100%}.network-link{border:1px solid var(--border);min-height:44px;color:var(--good,var(--accent));border-radius:8px;align-items:center;padding:8px 12px;text-decoration:none;display:inline-flex}@media (max-width:1000px){.network-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:580px){.network-provider{padding:16px}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f141c;--surface:#171e29;--surface-raised:#1d2633;--sidebar:#111823;--text:#f1f5f9;--muted:#a8b4c6;--subtle:#94a3b8;--border:#303d50;--accent:#a3e635;--accent-hover:#b4ef55;--on-accent:#152008;--accent-soft:#22301b;--good:#86efac;--good-bg:#1b3229;--warn:#fcd34d;--warn-bg:#352d1c;--bad:#fda4af;--bad-bg:#3c202c;--focus:#bef264;--code-bg:#111822;--shadow:0 24px 80px #0008;--font:"Fira Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", "Noto Sans CJK SC", sans-serif;--mono:"Fira Code", "SFMono-Regular", Consolas, "Liberation Mono", monospace}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f7fa;--surface:#fff;--surface-raised:#edf1f5;--sidebar:#fff;--text:#182334;--muted:#506176;--subtle:#5d6c7f;--border:#d6dee7;--accent:#a3e635;--accent-hover:#91d52b;--on-accent:#152008;--accent-soft:#edf6df;--good:#166534;--good-bg:#e8f6ee;--warn:#854d0e;--warn-bg:#fff5d7;--bad:#9f1239;--bad-bg:#fff0f2;--focus:#4d7c0f;--code-bg:#f2f5f8;--shadow:0 24px 80px #18233426}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.6 var(--font);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button,a,input,textarea{transition:background-color .16s,color .16s,border-color .16s}button,a{cursor:pointer}button{color:inherit}a{color:inherit;text-decoration:none}button:disabled{opacity:.45;cursor:not-allowed}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}main:focus{outline:none}h1,h2,h3,p{margin:0}h1,h2,h3{text-wrap:balance;line-height:1.35}h1{letter-spacing:-.035em;font-size:clamp(26px,2.5vw,32px);font-weight:650}h2{font-size:16px;font-weight:600}h3{font-size:15px;font-weight:600}p{overflow-wrap:anywhere}code,pre,time{font-family:var(--mono);font-size:12px}svg{flex-shrink:0}.muted{color:var(--muted);font-size:13px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--surface);border:2px solid var(--focus);border-radius:8px;padding:12px 20px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.app{min-height:100dvh;display:flex}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);z-index:30;flex-direction:column;width:240px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:12px;padding:28px 24px;display:flex}.brand-mark{background:var(--accent);width:42px;height:42px;color:var(--on-accent);border-radius:12px;place-items:center;display:grid}.brand strong{letter-spacing:-.6px;font-size:21px;font-weight:650;line-height:1.3;display:block}.brand small{letter-spacing:1.6px;color:var(--muted);margin-top:4px;font-size:9px;display:block}.nav-section-label{letter-spacing:1.4px;color:var(--muted);padding:14px 28px 12px;font-size:10px}.sidebar nav{align-content:start;gap:6px;min-height:0;padding:0 16px 16px;display:grid;overflow-y:auto}.nav-link{color:var(--muted);border-radius:8px;align-items:center;gap:13px;min-height:46px;padding:12px 14px;display:flex}.nav-link:hover{background:var(--surface-raised);color:var(--text)}.nav-link.active{color:var(--text);background:var(--accent-soft);font-weight:600}.nav-link.active>svg{color:var(--good)}.nav-count{font:11px var(--mono);border:1px solid var(--border);border-radius:4px;margin-left:auto;padding:2px 6px}.sidebar-bottom{border-top:1px solid var(--border);overflow-wrap:anywhere;margin-top:auto;padding:22px 24px;font-size:12px}.workspace-label{align-items:center;gap:8px;margin-bottom:8px;display:flex}.workspace-label strong{font-size:12px;font-weight:500}.sidebar-bottom code{color:var(--muted);font-size:10px;display:block}.sidebar-revision{color:var(--subtle);letter-spacing:.5px;margin-top:12px;font-size:10px;display:block}.workspace-shell{width:calc(100% - 240px);min-width:0;margin-left:240px}.topbar{border-bottom:1px solid var(--border);background:var(--bg);justify-content:space-between;align-items:center;gap:16px;min-height:76px;padding:16px 40px;display:flex}.breadcrumb{align-items:center;gap:14px;min-width:0;font-size:13px;display:flex}.breadcrumb-workspace,.breadcrumb-separator{color:var(--muted)}.breadcrumb strong{font-weight:500}.topbar-actions{align-items:center;gap:8px;display:flex}.topbar-actions .button{background:0 0;border-color:#0000}.topbar-actions .button:hover{background:var(--surface-raised)}.mobile-menu,.menu-scrim{display:none}.sync-bar{color:var(--muted);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 40px;font-size:11px;display:flex}.sync-state,.sync-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sync-controls{gap:16px}.sync-controls time{font-size:inherit}.sync-controls .text-link{font-size:12px}.connection-dot{background:var(--good);border-radius:50%;flex-shrink:0;width:6px;height:6px}.connection-dot.warning{background:var(--warn)}.page-content{max-width:1440px;margin:0 auto;padding:36px 40px 24px}.page-head{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px;display:flex}.eyebrow{font:10px/1.6 var(--mono);color:var(--muted);letter-spacing:1.1px}.page-head h1{margin:8px 0}.page-head p{color:var(--muted);font-size:14px}.page-head>.actions{flex-shrink:0}.button{border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:9px 14px;font-size:12px;font-weight:550;display:inline-flex}.button:hover{background:var(--surface-raised);border-color:var(--muted)}.button:active{background:var(--surface-raised)}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.button.danger{color:var(--bad);background:var(--bad-bg);border-color:var(--bad)}.button.danger-ghost{color:var(--bad);background:0 0;border-color:#0000}.button.danger-ghost:hover{background:var(--bad-bg);border-color:var(--bad)}.icon-button{width:40px;height:40px;padding:9px}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.text-link{color:var(--muted);background:0 0;border:0;justify-content:center;align-items:center;gap:6px;padding:6px 0;font-size:12px;display:inline-flex}.text-link:hover{color:var(--text)}.text-link svg{width:15px}.danger-text{color:var(--bad)}.welcome-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;justify-content:space-between;align-items:center;gap:32px;margin-bottom:20px;padding:28px 32px;display:flex;position:relative;overflow:hidden}.welcome-status{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;display:flex}.welcome-panel h2{letter-spacing:-.5px;margin-bottom:8px;font-size:clamp(22px,2.1vw,28px)}.welcome-panel p{color:var(--muted);margin-bottom:24px}.workspace-illustration{flex-shrink:0;align-content:center;align-self:stretch;justify-items:center;gap:12px;width:210px;display:grid}.illustration-box{border:1px solid var(--border);background:var(--accent-soft);width:116px;height:116px;color:var(--good);border-radius:24px;place-items:center;display:grid}.illustration-label{font:9px var(--mono);letter-spacing:2px;color:var(--muted)}.metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px;display:grid}.metric-card{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-direction:column;min-width:0;padding:20px;display:flex}.metric-card:hover{border-color:var(--muted);background:var(--surface-raised)}.metric-top{color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.metric-top>svg{width:14px}.metric-icon{border:1px solid var(--border);width:34px;height:34px;color:var(--muted);border-radius:8px;place-items:center;display:grid}.metric-label{color:var(--muted);font-size:12px}.metric-value{font-variant-numeric:tabular-nums;margin:7px 0;font-size:30px;font-weight:600;line-height:1.3}.metric-value small{color:var(--muted);font-size:15px;font-weight:400}.metric-card>.muted{font-size:11px}.grid{gap:20px;margin-bottom:20px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.card{border:1px solid var(--border);background:var(--surface);overflow-wrap:anywhere;border-radius:10px;min-width:0;margin-bottom:20px;padding:24px}.grid>.card,.agent-grid>.card{margin-bottom:0}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-bottom:20px;display:flex}.card-head .muted{margin-top:5px;font-size:12px}.list-row{border-top:1px solid var(--border);align-items:center;gap:14px;min-height:72px;padding:16px 0;display:flex}.list-row:first-child{border-top:0;padding-top:0}.list-row:last-child{padding-bottom:0}.row-main{overflow-wrap:anywhere;flex:1;min-width:0}.row-main>strong{font-size:13px;font-weight:550}.row-main>.muted{margin-top:4px;font-size:11px;display:block}.row-end{flex-shrink:0}.row-icon{background:var(--surface-raised);width:36px;height:36px;color:var(--muted);border-radius:8px;flex-shrink:0;place-items:center;display:grid}.quick-link{border-top:1px solid var(--border);align-items:center;gap:14px;min-height:72px;padding:15px 0;display:flex}.quick-link:first-child{border-top:none;padding-top:0}.quick-link:last-child{padding-bottom:0}.quick-link>svg{width:16px;color:var(--muted)}.quick-link:hover .row-icon{color:var(--good);background:var(--accent-soft)}.status{color:var(--muted);background:var(--surface-raised);overflow-wrap:anywhere;border-radius:5px;align-items:center;gap:5px;max-width:100%;padding:4px 7px;font-size:10px;font-weight:500;line-height:1.4;display:inline-flex}.status svg{width:12px;height:12px}.status.good{color:var(--good);background:var(--good-bg)}.status.warning{color:var(--warn);background:var(--warn-bg)}.status.bad{color:var(--bad);background:var(--bad-bg)}.tag{border:1px solid var(--border);color:var(--muted);border-radius:5px;max-width:100%;padding:3px 7px;font-size:10px;display:inline-block}.tags{flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px;display:flex}.facts{margin:0}.facts>div{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:24px;padding:13px 0;display:flex}.facts>div:first-child{border-top:0}.facts dt{color:var(--muted);flex-shrink:0;font-size:12px}.facts dd{text-align:right;overflow-wrap:anywhere;min-width:0;margin:0;font-size:12px}.card>.actions{margin-top:20px}.callout{background:var(--surface-raised);color:var(--muted);border-radius:7px;gap:10px;margin-top:18px;padding:12px;font-size:12px;display:flex}.warning-text{color:var(--warn);background:var(--warn-bg)}.all-clear{align-items:center;gap:16px;min-height:148px;display:flex}.clear-icon,.boundary-icon{width:42px;height:42px;color:var(--good);background:var(--good-bg);border-radius:10px;flex-shrink:0;place-items:center;display:grid}.all-clear h3{margin-bottom:6px;font-size:14px}.boundary-icon{margin-bottom:18px}.boundary-icon+h3{margin-bottom:12px}.agent-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.agent-card{flex-direction:column;display:flex}.agent-top{align-items:center;gap:14px;margin-bottom:20px;display:flex}.agent-avatar{background:var(--accent-soft);width:44px;height:44px;color:var(--good);border-radius:11px;flex-shrink:0;place-items:center;display:grid}.agent-description{color:var(--muted);margin-bottom:20px}.agent-status{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.agent-status>.muted{font:11px var(--mono);overflow-wrap:anywhere}.agent-card .actions{margin-top:auto}.code-block{background:var(--code-bg);border:1px solid var(--border);overflow-wrap:anywhere;white-space:pre-wrap;border-radius:7px;margin:18px 0;padding:12px 14px;display:block}.page-note{color:var(--muted);align-items:flex-start;gap:8px;margin-top:24px;font-size:12px;display:flex}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.segmented{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:4px;padding:4px;display:flex}.segmented button{color:var(--muted);background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;min-height:36px;padding:8px 12px;font-size:12px;display:flex}.segmented button:hover{background:var(--surface-raised)}.segmented button[aria-pressed=true]{color:var(--text);background:var(--surface-raised)}.segmented span{background:var(--bg);border-radius:4px;padding:1px 5px;font-size:10px}.search{background:var(--surface);border:1px solid var(--border);width:280px;min-height:44px;color:var(--muted);border-radius:8px;align-items:center;gap:10px;padding:0 12px;display:flex}.search:focus-within{outline:2px solid var(--focus);outline-offset:2px}.search input{color:var(--text);background:0 0;border:0;outline:none;width:100%;min-width:0;padding:10px 0;font-size:13px}input::placeholder{color:var(--muted);opacity:1}.service-list{padding:0 24px}.service-table-head,.service-item{grid-template-columns:minmax(0,1fr) 112px 170px;align-items:center;gap:20px;display:grid}.service-table-head{color:var(--muted);padding:16px 0;font-size:11px}.service-table-head>:last-child{text-align:right}.service-item{border-top:1px solid var(--border);padding:18px 0}.service-name{align-items:center;gap:14px;min-width:0;display:flex}.service-item>.status{justify-self:start}.service-actions{flex-wrap:nowrap;justify-content:flex-end}.service-meta{flex-wrap:wrap;align-items:center;gap:10px;margin-top:7px;display:flex}.service-meta code{color:var(--muted);font-size:10px}.resource-summary{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:16px;margin-bottom:20px;padding:20px;display:flex}.resource-summary>div{flex:1;min-width:0}.resource-summary .muted{margin-top:3px;font-size:12px}.resource-row{border-top:1px solid var(--border);align-items:flex-start;gap:16px;padding:24px 0;display:flex}.resource-row:first-child{border-top:0;padding-top:0}.resource-row:last-child{padding-bottom:0}.resource-title{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.resource-title h2{font-size:14px}.skill-description{color:var(--muted);max-width:75ch;font-size:12px}.resource-row>.button,.resource-row>.actions{flex-shrink:0}.feature-value{overflow-wrap:anywhere;margin-bottom:12px;font-size:20px}.feature-value+p{margin-bottom:20px}.port-list{max-height:380px;padding-right:6px;overflow-y:auto}.empty{text-align:center;padding:40px 20px}.empty-mark{background:var(--surface-raised);width:48px;height:48px;color:var(--muted);border-radius:12px;place-items:center;margin-bottom:16px;display:inline-grid}.empty p{color:var(--muted);max-width:42ch;margin:8px auto 20px}.page-footer{color:var(--muted);border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;margin-top:40px;padding-top:20px;font-size:10px;display:flex}.page-footer>:first-child{font-weight:600}.banner{border:1px solid var(--border);background:var(--surface);overflow-wrap:anywhere;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin:16px 40px 0;padding:12px 16px;font-size:13px;display:flex}.banner>span,.banner>div:first-child{min-width:0}.error-banner{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}.error-banner p{margin-top:4px;font-size:12px}.modal{border:1px solid var(--border);width:min(560px,100% - 32px);max-height:calc(100dvh - 48px);color:var(--text);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;padding:24px;overflow-y:auto}.modal::backdrop{background:#060b14a8}.modal-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.modal-head h2{font-size:20px}.modal-head .button{background:0 0;border-color:#0000}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:24px;display:flex}.field{gap:8px;margin-top:20px;display:grid}.node-identity-dialog .field+.muted{margin-top:16px}.field>span{font-size:12px;font-weight:600}.field input,.field textarea{background:var(--code-bg);width:100%;color:var(--text);border:1px solid var(--border);border-radius:7px;min-height:44px;padding:12px;font-size:16px}.field textarea{font-family:var(--mono);resize:vertical;font-size:13px}.choices{border:0;gap:10px;margin:20px 0;padding:0;display:grid}.choices label{border:1px solid var(--border);cursor:pointer;border-radius:7px;align-items:flex-start;gap:12px;padding:12px;display:flex}.choices label:has(:checked){border-color:var(--focus);background:var(--accent-soft)}.choices input{width:18px;height:18px;accent-color:var(--focus);margin:3px 0}.choices strong,.choices small{display:block}.choices small{color:var(--muted);margin-top:4px}.form-error{color:var(--bad);margin-top:12px}.output-modal{width:min(860px,100% - 32px)}.output-status{color:var(--muted);justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;font-size:12px;display:flex}.output-modal pre{background:var(--code-bg);border:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;min-height:220px;max-height:55dvh;margin:0;padding:20px;line-height:1.75;overflow:auto}.output-footnote{margin-top:12px;font-size:11px}.onboarding{border-color:var(--focus);margin-bottom:28px;padding:32px}.onboarding>h2{margin:8px 0;font-size:26px}.wizard-progress{gap:8px;margin-bottom:24px;display:flex}.wizard-progress span{width:28px;height:28px;color:var(--muted);border:1px solid var(--border);border-radius:50%;place-items:center;font-size:12px;display:grid}.wizard-progress .active{background:var(--accent-soft);color:var(--good);border-color:var(--good)}.wizard-body{padding:24px 0}.wizard-actions{justify-content:space-between;gap:12px;display:flex}.loading-state{min-height:65dvh;padding-top:8px}.loading-header,.loading-hero,.loading-cards span{border:1px solid var(--border);background:var(--surface);border-radius:10px}.loading-header{width:45%;height:76px;margin-bottom:28px}.loading-hero{height:230px;margin-bottom:20px}.loading-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.loading-cards span{height:180px}.loading-state>p{text-align:center;color:var(--muted);margin-top:24px}@media (min-width:1600px){.agent-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:1200px){.sidebar{width:208px}.workspace-shell{width:calc(100% - 208px);margin-left:208px}.brand{padding-inline:20px}.page-content{padding:28px}.topbar,.sync-bar{padding-inline:28px}.banner{margin-inline:28px}.metrics{gap:12px}.metric-card{padding:16px}.workspace-illustration{width:140px}.service-table-head,.service-item{grid-template-columns:minmax(0,1fr) 90px 170px;gap:12px}.grid.two{grid-template-columns:1fr}}@media (max-width:900px){.sidebar{width:240px;transition:transform .18s;transform:translate(-100%)}.sidebar.menu-open{transform:translate(0)}.workspace-shell{width:100%;margin-left:0}.mobile-menu{display:block}.menu-scrim{z-index:20;background:#060b14a8;border:0;display:block;position:fixed;inset:0}.topbar{min-height:68px}.topbar,.sync-bar{padding-inline:24px}.page-content{padding:28px 24px 20px}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.breadcrumb{gap:10px}.topbar-actions{gap:4px}.topbar-actions .button{min-width:40px;padding-inline:10px}.banner{margin-inline:24px}.button{min-height:44px}.icon-button{width:44px;height:44px}.segmented button{min-height:40px}}@media (max-width:600px){body{font-size:16px}.topbar{gap:6px;padding:12px 16px}.breadcrumb-workspace,.breadcrumb-separator{display:none}.breadcrumb{gap:8px}.breadcrumb strong{font-size:12px}.topbar-actions{gap:2px}.topbar-actions .button{width:40px;min-width:40px;padding:8px}.sync-bar{flex-wrap:wrap;padding:10px 16px;font-size:10px}.sync-controls{gap:10px}.page-content{padding:24px 16px 20px}.page-head{flex-direction:column;align-items:flex-start;gap:16px;margin-bottom:24px}.page-head p{font-size:14px}.page-head .button{font-size:13px}.welcome-panel{padding:24px}.workspace-illustration{display:none}.welcome-status .muted{font-size:11px}.welcome-panel p{font-size:14px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metric-card{padding:16px}.metric-card>.muted{font-size:11px}.metric-value{font-size:28px}.card{padding:20px}.card-head{gap:8px}.row-main>.muted{font-size:12px}.row-main>strong{font-size:13px}.row-icon{width:32px;height:32px}.list-row{flex-wrap:wrap;gap:10px}.row-end{max-width:100%}.status{font-size:11px}.agent-grid{grid-template-columns:1fr}.agent-description{font-size:14px}.toolbar{gap:12px}.segmented{width:100%}.segmented button{flex:1;justify-content:center;min-height:44px;padding-inline:8px}.search{width:100%}.search input{font-size:16px}.service-list{padding:0 16px}.service-table-head{display:none}.service-item{flex-wrap:wrap;gap:12px;padding:20px 0;display:flex}.service-item:first-of-type{border-top:0}.service-name{flex:1;gap:10px;min-width:0}.service-item>.status{margin-left:auto}.service-actions{justify-content:flex-start;width:100%;padding-left:42px}.service-meta{gap:6px}.resource-summary{flex-wrap:wrap;gap:12px;padding:16px}.resource-summary .muted{font-size:12px}.resource-row{flex-wrap:wrap;gap:12px}.resource-row>.row-main{min-width:calc(100% - 48px)}.resource-row>.actions,.resource-row>.button{margin-left:44px}.resource-title h2{font-size:14px}.skill-description{font-size:13px}.facts>div{gap:12px}.facts dt,.facts dd{font-size:12px}.feature-value{font-size:18px}.all-clear{align-items:flex-start;min-height:100px}.banner{flex-wrap:wrap;margin-inline:16px;padding:12px}.modal{max-height:calc(100dvh - 32px);padding:20px}.modal-head h2{font-size:18px}.modal-actions{gap:8px}.modal-actions .button{font-size:12px}.output-status{flex-wrap:wrap}.output-modal pre{padding:12px}.onboarding{padding:24px}.wizard-actions{flex-wrap:wrap}.page-footer{align-items:flex-start;font-size:10px}.page-footer>:last-child{text-align:right}.loading-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.loading-header{width:70%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.sidebar-brand{justify-content:space-between;align-items:center;display:flex}.mobile-menu-close{flex-shrink:0;margin-right:12px;display:none}.modal-emergency{border-top:1px solid var(--border);margin-top:20px;padding-top:16px}@media (max-width:900px){.mobile-menu-close{display:inline-flex}.sidebar-brand .brand{padding-right:8px}}.node-form{gap:16px;margin-top:20px;display:grid}.node-host .button{min-height:44px}@media (max-width:600px){.node-host .row-end,.node-host .row-end .button{width:100%}}.node-list .list-row{flex-wrap:wrap}.node-list .row-end{width:100%;min-width:0}.node-list .row-end .actions{align-items:flex-end}.node-list .row-end .field{flex:140px;min-width:0;max-width:240px;margin-top:0}.field select{border:1px solid var(--border);background:var(--surface);width:100%;min-height:44px;color:var(--text);font:inherit;border-radius:8px;padding:10px 12px}.history-output{background:var(--bg);font:13px/1.6 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;max-height:520px;padding:16px;overflow:auto}.sidebar nav{min-height:0;overflow:auto}.terminal-workbench{height:100%;min-height:0;display:flex;overflow:hidden}.terminal-sidebar{background:var(--sidebar);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:260px;min-height:0;display:flex}.terminal-target{border-bottom:1px solid var(--border);color:var(--muted);align-items:center;gap:10px;padding:14px 16px;display:flex}.terminal-target label{flex:1;min-width:0}.terminal-target select{background:var(--sidebar);width:100%;min-height:44px;color:var(--text);font:inherit;cursor:pointer;border:0;border-radius:5px;padding:8px 4px;font-size:13px}.terminal-list-heading{justify-content:space-between;align-items:center;gap:8px;padding:12px 12px 4px 18px;display:flex}.terminal-list-heading h2{font-size:13px}.terminal-list-heading h2 span{font:11px var(--mono);color:var(--muted);margin-left:5px}.terminal-list-heading .actions{gap:2px}.terminal-workbench .button,.terminal-session-drawer .button{min-height:44px}.terminal-workbench .icon-button,.terminal-session-drawer .icon-button{width:44px;min-width:44px;height:44px}.terminal-list-heading .button,.terminal-tabs-bar>.button,.terminal-pane-actions>.button{background:0 0;border-color:#0000}.terminal-search{color:var(--muted);border:1px solid var(--border);background:var(--bg);border-radius:7px;align-items:center;gap:8px;min-height:40px;margin:4px 14px 14px;padding:0 10px;display:flex}.terminal-search input{width:100%;min-width:0;color:var(--text);font:inherit;outline-offset:5px;background:0 0;border:0;padding:8px 0;font-size:13px}.terminal-session-list{flex:1;min-height:0;padding:0 8px 16px;overflow-y:auto}.terminal-session-row{border-radius:7px;align-items:center;min-width:0;margin-bottom:4px;display:flex;position:relative}.terminal-session-row:hover{background:var(--surface)}.terminal-session-row.selected{background:var(--accent-soft)}.terminal-session-row.selected .terminal-session-select>svg{color:var(--good)}.terminal-session-select{min-width:0;min-height:64px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:7px;flex:1;align-items:center;gap:10px;padding:8px 10px;display:flex}.terminal-session-select>svg{color:var(--muted)}.terminal-session-select>span:first-of-type{flex:1;min-width:0}.terminal-session-select strong,.terminal-session-select small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.terminal-session-select strong{font-size:13px;font-weight:550}.terminal-session-select small{font:11px/1.7 var(--mono);color:var(--muted);margin-top:3px}.terminal-session-dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:6px;height:6px}.terminal-session-dot.running{background:var(--good)}.terminal-menu{flex-shrink:0;position:relative}.terminal-menu>button{cursor:pointer;width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.terminal-menu>button:hover,.terminal-menu>button[aria-expanded=true]{background:var(--surface-raised);color:var(--text)}.terminal-menu-items{width:224px;max-height:calc(100dvh - 16px);color:var(--text);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow);z-index:10;border-radius:9px;margin:0;padding:6px;position:fixed;inset:auto;overflow-y:auto}.terminal-menu-items button{color:inherit;text-align:left;background:0 0;border:0;border-radius:5px;width:100%;min-height:44px;padding:9px 12px;font-size:13px;display:block}.terminal-menu-items .danger-text{color:var(--bad)}.terminal-menu-items button:hover{background:var(--surface)}.terminal-list-empty{text-align:center;color:var(--muted);justify-items:center;gap:8px;padding:36px 12px;display:grid}.terminal-list-empty p{font-size:13px}.terminal-list-empty span{font-size:12px}.terminal-list-note{color:var(--warn);margin:0 16px 16px;font-size:13px}.terminal-sidebar-foot{border-top:1px solid var(--border);color:var(--muted);align-items:center;gap:8px;padding:14px 16px;font-size:11px;display:flex}.terminal-stage{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.terminal-tabs-bar{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:2px;min-height:52px;padding:0 8px;display:flex}.terminal-tabs{scrollbar-width:thin;flex:1;align-self:stretch;min-width:0;display:flex;overflow-x:auto}.terminal-tab{border-right:1px solid var(--border);flex-shrink:0;align-items:center;max-width:220px;display:flex;position:relative}.terminal-tab.active{background:var(--bg);box-shadow:inset 0 -2px var(--accent)}.terminal-tab.beside{box-shadow:inset 0 -2px var(--muted)}.terminal-tab>button[role=tab]{min-width:0;min-height:50px;color:var(--muted);background:0 0;border:0;align-items:center;gap:8px;padding:0 8px 0 14px;font-size:12px;display:flex}.terminal-tab.active>button[role=tab]{color:var(--text)}.terminal-tab>button[role=tab] span{white-space:nowrap;text-overflow:ellipsis;max-width:124px;overflow:hidden}.terminal-tab-close{min-width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.terminal-tab-close:hover{color:var(--text);background:var(--surface-raised)}.terminal-drawer-toggle{display:none}.terminal-panes{flex:1;min-width:0;min-height:0;display:flex}.terminal-panel{flex:1;min-width:0;min-height:0;display:none}.terminal-panel.active,.terminal-panel.beside{display:flex}.terminal-panes.is-split>.terminal-panel.beside{border-left:1px solid var(--border)}.terminal-pane{background:var(--bg);flex-direction:column;width:100%;min-width:0;min-height:0;display:flex}.terminal-pane:fullscreen{background:var(--bg);height:100dvh}.terminal-pane-head{border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;min-height:66px;padding:8px 12px 8px 16px;display:flex}.terminal-pane-title{min-width:0}.terminal-pane-title strong,.terminal-pane-title>span{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.terminal-pane-title strong{font-size:13px;font-weight:550}.terminal-pane-title>span{font:11px/1.6 var(--mono);color:var(--muted)}.terminal-pane-actions{flex-shrink:0;align-items:center;gap:2px;display:flex}.terminal-pane-actions .status{padding:3px 7px;font-size:10px}.terminal-pane-actions .status svg{width:12px}.terminal-canvas{background:#0f141c;flex:1;min-height:0;position:relative}.terminal-screen{min-width:0;height:100%;padding:12px 12px 8px 16px;overflow:hidden}.terminal-screen .xterm{height:100%}.terminal-detached{color:#a8b4c6;text-align:center;background:#0f141ce6;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:20px;font-size:13px;display:flex;position:absolute;inset:0}.terminal-input-area{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.terminal-keybar{scrollbar-width:none;align-items:center;gap:4px;padding:4px 8px;display:flex;overflow-x:auto}.terminal-keybar::-webkit-scrollbar{display:none}.terminal-key{min-width:44px;height:44px;color:var(--muted);font:11px var(--mono);background:0 0;border:0;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;padding:0 10px;display:flex}.terminal-key:hover,.terminal-key:active{background:var(--surface-raised);color:var(--text)}.terminal-input-toggle{margin-left:auto}.terminal-composer{border:1px solid var(--border);background:var(--bg);border-radius:9px;align-items:end;gap:8px;margin:0 12px 12px;padding:6px;display:none}.terminal-composer.is-shown{display:flex}.terminal-composer:focus-within{border-color:var(--focus)}.terminal-composer textarea{field-sizing:content;resize:none;min-width:0;min-height:44px;max-height:100px;color:var(--text);font:16px/1.5 var(--mono);outline-offset:-2px;background:0 0;border:0;flex:1;padding:10px}.terminal-send{background:var(--accent);width:44px;min-width:44px;height:44px;color:var(--on-accent);border:0;border-radius:6px;place-items:center;display:grid}.terminal-send:hover{background:var(--accent-hover)}.terminal-alert{background:var(--bad-bg);color:var(--bad);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;max-height:180px;padding:8px 12px;font-size:13px;display:flex;overflow-y:auto}.terminal-alert span{overflow-wrap:anywhere;min-width:0}.terminal-welcome{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;width:100%;min-width:0;padding:24px;display:flex}.terminal-welcome-mark{border:1px solid var(--border);background:var(--surface);width:72px;height:72px;color:var(--good);border-radius:18px;place-items:center;margin-bottom:4px;display:grid}.terminal-welcome h2{font-size:22px;font-weight:550}.terminal-welcome p{color:var(--muted);max-width:350px;font-size:14px}.terminal-welcome>span{color:var(--muted);align-items:center;gap:7px;margin-top:12px;font-size:12px;display:flex}.terminal-statusbar{border-top:1px solid var(--border);min-height:30px;color:var(--muted);background:var(--sidebar);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:4px 14px;font-size:10px;display:flex}.terminal-statusbar>span{align-items:center;gap:6px;min-width:0;display:flex}.terminal-statusbar>span:first-child{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.terminal-dialog-machine{color:var(--muted);align-items:center;gap:8px;margin-bottom:20px;font-size:13px;display:flex}.terminal-directory{color:var(--muted);margin:16px 0;font-size:13px}.terminal-directory summary{cursor:pointer;min-height:44px;padding-block:10px}.terminal-directory .field{margin-top:8px}.terminal-session-drawer{border-radius:0;flex-direction:column;width:min(340px,100% - 32px);height:100%;max-height:none;margin:0;padding:0;display:flex;position:fixed;inset:0 auto 0 0}.terminal-session-drawer .modal-head{border-bottom:1px solid var(--border);margin:0;padding:12px 14px}.terminal-session-drawer .terminal-search input{font-size:16px}@media (min-width:901px) and (max-width:1100px){.terminal-sidebar{width:230px}.terminal-panes.is-split .terminal-pane-title>span,.terminal-panes.is-split .status{display:none}}@media (max-width:900px){.terminal-sidebar{display:none}.terminal-drawer-toggle{width:44px;min-width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.terminal-panel.beside{display:none}.terminal-panes.is-split>.terminal-panel.beside{border:0}.terminal-tabs-bar{padding-inline:4px}.terminal-pane-head{padding-inline:12px}.terminal-composer{margin-bottom:8px;display:flex}.terminal-input-toggle{display:none}.terminal-input-area{padding-bottom:env(safe-area-inset-bottom,0px)}.terminal-status-hint{display:none}.terminal-screen{padding:10px 8px}}@media (max-width:600px){.terminal-pane-title>span{display:none}.terminal-tab>button[role=tab]{padding-left:10px}.terminal-tab>button[role=tab] span{max-width:96px}.terminal-pane-actions .status{padding-inline:5px;font-size:10px}.terminal-pane-actions .status svg{display:none}.terminal-welcome{padding:20px}.terminal-welcome h2{font-size:20px}.terminal-statusbar{padding-inline:10px}}@media (max-width:900px){.sidebar:not(.menu-open){visibility:hidden}}@media (max-height:500px) and (max-width:900px){.terminal-pane-head{height:44px;min-height:44px;padding-block:0}.terminal-keybar{padding-block:0}.terminal-statusbar{display:none}}.topbar{z-index:32;position:sticky;top:0}.terminal-nav-button{text-align:left;width:100%;font:inherit;background:0 0;border:0}.terminal-window-toggle{min-width:44px;height:44px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:inline-flex;position:relative}.terminal-window-toggle:hover{color:var(--text);background:var(--surface-raised)}.terminal-window-toggle.has-terminals{background:var(--accent-soft);color:var(--text);border-color:var(--border)}.terminal-window-count{background:var(--surface-raised);min-width:18px;height:18px;font:11px var(--mono);border-radius:4px;place-items:center;display:grid}.terminal-window-minimized-dot{background:var(--good);border-radius:50%;width:5px;height:5px;position:absolute;top:4px;right:4px}.terminal-window{z-index:60;border:1px solid var(--border);background:var(--bg);min-width:0;min-height:0;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;display:flex;position:fixed;overflow:hidden;container:terminal-window/inline-size}.terminal-window[hidden]{display:none}.terminal-window:focus{outline:none}.terminal-window:focus-within{border-color:var(--muted)}.terminal-window.is-moving{-webkit-user-select:none;user-select:none}.terminal-window-head{border-bottom:1px solid var(--border);background:var(--surface-raised);justify-content:space-between;align-items:center;gap:8px;height:48px;min-height:48px;padding:2px 6px 2px 12px;display:flex}.terminal-window-drag{min-width:0;height:44px;color:var(--muted);text-align:left;cursor:grab;touch-action:none;background:0 0;border:0;border-radius:5px;flex:1;align-items:center;gap:10px;display:flex}.terminal-window-drag:active{cursor:grabbing}.terminal-window-drag strong{color:var(--text);white-space:nowrap;font-size:13px;font-weight:550}.terminal-window-drag>span{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.terminal-window-actions{flex-shrink:0;align-items:center;gap:2px;display:flex}.terminal-window-actions>button{width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.terminal-window-actions>button:hover{background:var(--surface);color:var(--text)}.terminal-window-actions>button:last-child:hover{color:var(--bad);background:var(--bad-bg)}.terminal-window-body{flex:1;min-width:0;min-height:0}.terminal-window .terminal-sidebar{width:240px}.terminal-window .terminal-statusbar{padding-right:36px}.terminal-window-resize{z-index:2;touch-action:none;color:var(--muted);background:0 0;border:0;padding:0;position:absolute}.terminal-window-resize.edge-n{cursor:ns-resize;height:6px;top:0;left:20px;right:20px}.terminal-window-resize.edge-s{cursor:ns-resize;height:6px;bottom:0;left:20px;right:44px}.terminal-window-resize.edge-e{cursor:ew-resize;width:6px;top:20px;bottom:44px;right:0}.terminal-window-resize.edge-w{cursor:ew-resize;width:6px;top:20px;bottom:20px;left:0}.terminal-window-resize.edge-ne,.terminal-window-resize.edge-nw,.terminal-window-resize.edge-sw{width:20px;height:20px}.terminal-window-resize.edge-ne{cursor:nesw-resize;top:0;right:0}.terminal-window-resize.edge-nw{cursor:nwse-resize;top:0;left:0}.terminal-window-resize.edge-sw{cursor:nesw-resize;bottom:0;left:0}.terminal-window-resize.edge-se{cursor:nwse-resize;place-items:center;width:32px;height:30px;display:grid;bottom:0;right:0}.terminal-window-resize.edge-se:hover{color:var(--text);background:var(--surface-raised)}@container terminal-window (width<=900px){.terminal-sidebar{display:none}.terminal-drawer-toggle{width:44px;min-width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.terminal-panel.beside{display:none}.terminal-panes.is-split>.terminal-panel.beside{border:0}.terminal-tabs-bar{padding-inline:4px}.terminal-pane-head{padding-inline:12px}.terminal-composer{margin-bottom:8px;display:flex}.terminal-input-toggle,.terminal-status-hint{display:none}.terminal-screen{padding:10px 8px}}@container terminal-window (width<=600px){.terminal-pane-title>span{display:none}.terminal-tab>button[role=tab] span{max-width:96px}.terminal-pane-actions .status svg,.terminal-window-drag>span{display:none}}@media (max-width:900px){.terminal-window{border-bottom:0;border-radius:10px 10px 0 0}.terminal-window-maximize{display:none!important}.terminal-window-drag{cursor:default;touch-action:manipulation}}@media (max-width:600px){.terminal-window-toggle{width:44px;padding:8px}.terminal-window-toggle-label{display:none}.terminal-window-count{min-width:14px;height:14px;font-size:9px;position:absolute;bottom:-2px;right:-2px}.terminal-window-head{gap:2px;padding-left:10px}.terminal-window-drag{gap:8px}.topbar-actions .button{width:36px;min-width:36px}}@media (max-height:500px) and (max-width:900px){.terminal-window-head{height:44px;min-height:44px}.terminal-tabs-bar,.terminal-tab>button[role=tab]{min-height:44px}.terminal-composer{margin:0 8px 4px;padding:2px}.terminal-composer textarea{padding-block:6px}}
+.direct-devices{--direct-surface:var(--surface,var(--card,#1b2336));--direct-text:var(--text,#f8fafc);min-width:0;color:var(--direct-text);margin:0 0 28px}.direct-devices h2,.direct-devices h3,.direct-devices p{overflow-wrap:anywhere;margin:0}.direct-devices h2{font-size:20px}.direct-devices h3{font-size:16px}.direct-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.direct-heading>div:first-child,.direct-heading h3{min-width:0}.direct-heading p,.direct-note,.direct-probe small,.direct-list small{color:var(--muted);overflow-wrap:anywhere;font-size:13px;line-height:1.6}.direct-actions{flex-wrap:wrap;gap:8px;display:flex}.direct-devices button{border:1px solid var(--border);background:var(--direct-surface);min-width:44px;min-height:44px;color:var(--direct-text);cursor:pointer;font:inherit;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;transition:background .18s,border-color .18s;display:inline-flex}.direct-devices button:hover:not(:disabled){background:var(--surface-raised,#334155)}.direct-devices button:disabled{opacity:.5;cursor:not-allowed}.direct-devices button.direct-primary{background:var(--accent);color:var(--on-accent,#0f172a);justify-self:start;font-weight:600}.direct-devices button.direct-primary:hover:not(:disabled){background:var(--accent-hover,#4ade80)}.direct-devices :focus-visible{outline:2px solid var(--focus,#e2e8f0);outline-offset:3px}.direct-devices form{gap:16px;margin:0;display:grid}.direct-devices label{flex-direction:column;gap:6px;min-width:0;font-size:14px;display:flex}.direct-devices input:not([type=checkbox]),.direct-devices textarea,.direct-devices select{border:1px solid var(--border);background:var(--code-bg,#131d2d);width:100%;min-width:0;min-height:44px;color:var(--direct-text);font:inherit;border-radius:8px;padding:10px 12px}.direct-devices textarea{resize:vertical}.direct-devices input::placeholder{color:var(--muted)}.direct-devices .direct-check{cursor:pointer;flex-direction:row;align-items:center;gap:10px;min-height:44px}.direct-check input{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0}.direct-editor,.direct-detail,.direct-empty{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;padding:20px}.direct-editor{margin-bottom:20px!important}.direct-editor .direct-heading{margin:0}.direct-fields{grid-template-columns:1fr 1fr;gap:16px;display:grid}.direct-layout{grid-template-columns:minmax(180px,260px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.direct-list{gap:8px;min-width:0;display:grid}.direct-list>button{text-align:start;justify-content:flex-start;width:100%}.direct-list>button[aria-pressed=true]{border-color:var(--accent)}.direct-list svg{flex-shrink:0}.direct-list span{min-width:0}.direct-list strong,.direct-list small{overflow-wrap:anywhere;display:block}.direct-probe{margin-bottom:12px;font-size:14px}.direct-detail>.direct-actions{margin:16px 0}.direct-command,.direct-jobs{border-top:1px solid var(--border);padding-top:20px}.direct-jobs{gap:12px;margin-top:20px;display:grid}.direct-jobs .direct-heading{align-items:center;margin:0}.direct-devices pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--code-bg,#131d2d);min-height:64px;max-height:320px;color:var(--direct-text);border-radius:8px;margin:0;padding:12px;font:13px/1.6 ui-monospace,monospace;overflow:auto}.direct-devices .direct-error{border:1px solid var(--danger,#e87888);color:var(--direct-text);overflow-wrap:anywhere;border-radius:8px;margin-bottom:12px;padding:12px}.direct-devices>.direct-note{align-items:center;gap:8px;margin-bottom:12px;display:flex}.direct-empty{text-align:center}.direct-empty svg{color:var(--muted);margin-bottom:8px}.direct-empty p{color:var(--muted);margin-top:8px;font-size:14px}@media (max-width:900px){.direct-layout{grid-template-columns:1fr}.direct-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}}@media (max-width:580px){.direct-heading{flex-wrap:wrap;gap:12px}.direct-fields{grid-template-columns:1fr}.direct-editor,.direct-detail,.direct-empty{padding:16px}}@media (prefers-reduced-motion:reduce){.direct-devices *{transition:none!important}}.direct-identity{background:var(--direct-surface);border:1px solid var(--border);border-radius:10px;justify-items:start;gap:6px;margin-bottom:20px;padding:14px 16px;font-size:13px;display:grid}.direct-identity code{-webkit-user-select:all;user-select:all;overflow-wrap:anywhere}.direct-identity small,.direct-identity span{color:var(--muted)}.direct-access{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;margin-bottom:20px;padding:20px}.direct-access h3{align-items:center;gap:8px;display:flex}.direct-access h3 svg{flex-shrink:0}.direct-access>.direct-note{margin-bottom:16px}.direct-listener{border:1px solid var(--border);border-radius:8px;min-width:0;margin-bottom:20px;padding:16px}.direct-listener .direct-heading{margin-bottom:8px}.direct-listener h4{align-items:center;gap:8px;margin:0 0 4px;font-size:14px;display:flex}.direct-listener code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.direct-listener form{margin-top:16px}.direct-grant-form{margin-bottom:16px!important}.browser-sharing{border:1px solid var(--border);border-radius:8px;min-width:0;padding:16px}.browser-sharing>summary{cursor:pointer;min-height:44px;font-weight:600;line-height:1.5}.browser-sharing>summary svg{vertical-align:middle;margin-inline-end:4px}.browser-sharing>div{gap:14px;min-width:0;padding-top:8px;display:grid}.browser-command{background:var(--code-bg,#131d2d);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;border-radius:8px;margin-block:12px;padding:12px;font-size:13px;line-height:1.6;display:block}.direct-grant-form>form{gap:12px;min-width:0;display:grid}.direct-grant-form fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px}.direct-grant-form legend{padding:0 6px;font-size:14px}.direct-grant-list{gap:12px;display:grid}.direct-grant-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding-top:12px;display:flex}.direct-grant-row>div{overflow-wrap:anywhere;min-width:0}.direct-grant-row>button{flex-shrink:0}.direct-token-dialog{border:1px solid var(--border);background:var(--direct-surface);width:min(520px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--direct-text);border-radius:14px;padding:24px;overflow:auto}.direct-token-dialog::backdrop{background:#0009}.direct-token-dialog p{font-size:14px;line-height:1.6}.direct-token-dialog code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;margin:12px 0;display:block}.direct-token-dialog label{margin:16px 0 8px}.direct-token-dialog textarea{font-family:ui-monospace,monospace}.direct-token-dialog>.direct-actions{justify-content:flex-end;margin-top:20px}.direct-paths{border-top:1px solid var(--border);gap:14px;min-width:0;margin:20px 0;padding-top:20px;display:grid}.direct-paths .direct-heading{margin-bottom:0}.direct-paths h4{overflow-wrap:anywhere;margin:0;font-size:14px}.direct-paths h4 span{color:var(--muted);margin-inline-start:6px;font-weight:400}.direct-paths ol{gap:10px;min-width:0;margin:0;padding:0;list-style:none;display:grid}.direct-paths li{border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:16px;min-width:0;padding:12px;display:flex}.direct-path-address{gap:6px;min-width:0;display:grid}.direct-path-address code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;font-size:13px}.direct-path-address small{color:var(--muted);font-size:12px}.direct-path-label{flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.direct-path-label span{border:1px solid var(--border);border-radius:5px;padding:3px 6px;font-size:12px}.direct-paths li>.direct-actions{flex-shrink:0}.direct-paths form{border:1px solid var(--border);border-radius:8px;padding:16px}.direct-paths .direct-error{margin-bottom:0}@media (max-width:580px){.direct-paths li{flex-direction:column;align-items:flex-start;gap:10px}.direct-paths li>.direct-actions{align-self:flex-end}.direct-access,.direct-token-dialog{padding:16px}}.direct-pairing{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:6px;font-size:12px;display:flex}.direct-pairing>span{align-items:center;gap:6px;display:inline-flex}.direct-pairing code{-webkit-user-select:all;user-select:all;color:var(--direct-text);font-variant-numeric:tabular-nums}.direct-pairing label{align-items:center;gap:6px;display:inline-flex}.direct-pairing input{width:15ch}.direct-pairing-pending{color:var(--danger,#e87888)}.direct-pairing-verified{color:var(--accent)}.remote-desktops{margin-bottom:28px}.desktop-layout{grid-template-columns:minmax(190px,250px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.desktop-sidebar,.desktop-workspace{min-width:0}.desktop-workspace{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;overflow:hidden}.desktop-target{border-bottom:1px solid var(--border);align-items:center;margin:0;padding:16px}.desktop-device-icon{width:36px;height:36px;color:var(--good,#86efac);background:var(--accent-soft,var(--surface));border-radius:8px;flex-shrink:0;place-items:center;display:grid}.desktop-access-note{color:var(--muted);align-items:flex-start;gap:8px;padding:16px 4px;font-size:13px;line-height:1.6;display:flex}.desktop-access-note svg{flex-shrink:0;margin-top:2px}.desktop-welcome{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:350px;padding:48px 24px;display:flex}.desktop-welcome-icon{border:1px solid var(--border);width:88px;height:88px;color:var(--good,#86efac);background:var(--code-bg,var(--surface));border-radius:24px;place-items:center;display:grid}.desktop-welcome>p{max-width:50ch;color:var(--muted);font-size:14px;line-height:1.7}.desktop-route-tag{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.desktop-sharing{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;margin-top:20px;padding:20px}.desktop-sharing>.direct-heading{margin:0}.desktop-sharing h3{align-items:center;gap:8px;display:flex}.desktop-sharing form{max-width:620px;margin-top:20px}.desktop-sharing>form+.desktop-service{margin-top:20px}.desktop-sharing form h4{margin:0 0 16px;font-size:16px}.desktop-sharing select{min-height:44px;color:inherit;background:var(--card,var(--bg));border:1px solid var(--border);font:inherit;border-radius:8px;padding:8px 12px}.vnc-viewer{background:var(--direct-surface);min-width:0;position:relative}.vnc-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.vnc-toolbar>p{align-items:center;gap:8px;font-size:13px;display:flex}.vnc-dot{background:var(--muted);border-radius:50%;width:8px;height:8px}.vnc-dot.connected{background:var(--success,var(--accent))}.vnc-screen{background:#11151c;width:100%;height:clamp(300px,60dvh,800px);overflow:hidden}.vnc-screen canvas:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:-2px}.vnc-screen:has(.selkies-screen){justify-content:center;align-items:center;display:flex}.selkies-screen{object-fit:contain;touch-action:none;max-width:100%;max-height:100%}.vnc-placeholder{min-height:200px;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}.vnc-viewer:has(.vnc-placeholder) .vnc-screen{height:0}.vnc-viewer>.direct-error{margin:12px}.vnc-keyboard,.vnc-auth{border-bottom:1px solid var(--border);padding:16px}.vnc-keyboard{gap:12px;display:grid}.desktop-clipboard{border-bottom:1px solid var(--border);padding:16px}.desktop-clipboard-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:16px;display:grid}.desktop-clipboard-columns>*{flex-direction:column;gap:10px;min-width:0;display:flex}.desktop-clipboard-columns form{margin:0}.desktop-clipboard label{font-size:14px;font-weight:600}.desktop-clipboard textarea{box-sizing:border-box;resize:vertical;width:100%;min-height:112px;color:inherit;background:var(--bg);border:1px solid var(--border);font:inherit;border-radius:8px;padding:12px;font-size:16px;line-height:1.5}.desktop-clipboard textarea:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:2px}.desktop-clipboard textarea[aria-invalid=true]{border-color:var(--bad,#f87171)}.desktop-clipboard button{align-self:flex-start}.desktop-clipboard>.direct-error,.desktop-clipboard>.direct-notice{margin-top:12px}@media (max-width:700px){.desktop-clipboard-columns{grid-template-columns:minmax(0,1fr)}}.vnc-auth{max-width:480px;margin:0 auto!important}.vnc-footnote{color:var(--muted);padding:12px 16px;font-size:12px;line-height:1.7}.vnc-viewer:fullscreen{height:100dvh;overflow:auto}.vnc-viewer:fullscreen .vnc-screen{height:calc(100dvh - 150px)}@media (max-width:900px){.desktop-layout{grid-template-columns:1fr}.desktop-sidebar .direct-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.desktop-access-note{padding:12px 0 0}}@media (max-width:580px){.desktop-sharing{padding:16px}.desktop-welcome{min-height:300px;padding:32px 16px}.vnc-toolbar{padding:12px}.vnc-toolbar>.direct-actions{width:100%}.vnc-toolbar .direct-actions button{flex-grow:1}}.desktop-service{border:1px solid var(--border);background:var(--panel-soft,var(--panel));border-radius:12px;gap:16px;min-width:0;padding:20px;display:grid}.desktop-service h4{margin:0 0 6px;font-size:16px}.desktop-service p{overflow-wrap:anywhere;margin:0;line-height:1.65}.desktop-service form,.desktop-managed-running{gap:12px;display:grid}.desktop-setup-steps{color:var(--muted);flex-wrap:wrap;gap:12px 24px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.desktop-setup-steps li{align-items:center;gap:8px;display:flex}.desktop-setup-steps li>span{border:1px solid var(--border);border-radius:50%;flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.desktop-setup-steps .complete{color:var(--good,#86efac)}.desktop-managed-running>p:first-child{color:var(--good,#86efac);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.desktop-install-review{border-top:1px solid var(--border);gap:12px;padding-top:16px;display:grid}.desktop-install-review pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;font-size:12px;line-height:1.7}@media (max-width:600px){.desktop-service{padding:14px}.desktop-setup-steps{gap:10px;font-size:12px}}.desktop-route-options{padding:0 16px 12px}.desktop-route-options label{flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.desktop-route-options select{max-width:100%;min-height:44px;color:inherit;background:var(--card,var(--bg));border:1px solid var(--border);font:inherit;border-radius:8px;padding:8px 12px}.desktop-route-options code{overflow-wrap:anywhere}.desktop-discovery{gap:12px;min-width:0;padding:20px 0;display:grid}.desktop-discovery .direct-heading{flex-wrap:wrap;align-items:center;margin:0}.desktop-discovery h4{margin:0 0 6px;font-size:16px}.desktop-discovery-results{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.desktop-discovery-results li{border:1px solid var(--border);background:var(--panel-soft,var(--direct-surface));border-radius:10px;flex-wrap:wrap;align-items:center;gap:12px;min-width:0;padding:16px;display:flex}.desktop-discovery-results li>svg{color:var(--muted);flex-shrink:0}.desktop-discovery-results li>div{flex:140px;gap:6px;min-width:0;display:grid}.desktop-discovery-results code{overflow-wrap:anywhere;font-size:13px}.desktop-discovery-results li span{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.desktop-discovery-results button{flex-shrink:0}.desktop-platform-guide{gap:16px;min-width:0;display:grid}.desktop-platform-guide h5{margin:0;font-size:16px;line-height:1.5}.desktop-platform-guide h5:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:4px;border-radius:4px}.desktop-platform-guide .desktop-setup-steps li[aria-current=step]{color:var(--text,inherit);font-weight:600}.desktop-platform-guide form{margin-top:0}.desktop-platform-guide code{overflow-wrap:anywhere}.desktop-guide-link{border:1px solid var(--border);min-height:44px;color:inherit;text-underline-offset:3px;overflow-wrap:anywhere;border-radius:8px;justify-content:flex-start;align-items:center;gap:8px;padding:8px 12px;font-size:14px;line-height:1.5;text-decoration:underline;display:inline-flex}.desktop-guide-link svg{flex-shrink:0}.desktop-guide-link:hover{background:var(--accent-soft,var(--surface))}.desktop-guide-link:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:2px}.desktop-guide-ready{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.desktop-guide-ready svg{flex-shrink:0}@media (max-width:600px){.desktop-platform-guide .direct-actions>*{flex:180px}}.agent-session-directory{border:1px solid var(--border);background:var(--direct-surface);border-radius:10px;margin:16px 0 20px;padding:16px 20px}.agent-session-directory>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:10px;min-height:44px;font-weight:600;display:flex}.agent-session-directory>summary span{color:var(--muted);margin-left:auto;font-size:12px;font-weight:400}.agent-session-directory[open]>summary{margin-bottom:12px}.agent-session-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px;margin-top:16px;display:grid}.agent-session-card{border:1px solid var(--border);border-radius:8px;min-width:0;padding:16px}.agent-session-card>div{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.agent-session-card p{color:var(--muted);margin:8px 0}.agent-session-card code{overflow-wrap:anywhere;font-size:12px;display:block}.agent-session-card small{color:var(--muted);margin-top:12px;display:block}.agent-session-current{color:var(--good,#86efac);font-size:12px}.agent-session-picker{border-top:1px solid var(--border);border-bottom:1px solid var(--border);gap:10px;min-width:0;padding:12px 0;display:grid}.agent-session-picker .direct-note{margin:0}.agent-session-picker .direct-actions small{color:var(--muted)}.agent-federation{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;margin:16px 0 20px;padding:20px}.agent-federation-heading{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:16px;display:flex}.agent-federation-heading h3{align-items:center;gap:10px;margin:0;font-size:18px;display:flex}.agent-federation-heading p{color:var(--muted);margin:8px 0 0;font-size:13px}.agent-federation-filters{flex-wrap:wrap;align-items:end;gap:16px 24px;margin:20px 0;display:flex}.agent-federation-filters>label:first-child{flex:280px;gap:8px;min-width:0;font-size:13px;display:grid}.agent-federation-filters>label>span{border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:0 12px;display:flex}.agent-federation input[type=search]{width:100%;min-width:0;min-height:44px;color:var(--direct-text);background:0 0;border:0;padding:10px 0;font-size:16px}.agent-federation .agent-federation-inactive{cursor:pointer;flex-direction:row;align-items:center;gap:10px;min-height:44px;font-size:13px;display:flex}.agent-federation-inactive input{width:18px;height:18px;accent-color:var(--accent)}.agent-federation-sources{gap:16px;display:grid}.agent-federation-source{border:1px solid var(--border);border-radius:10px;min-width:0;padding:16px}.agent-federation-device{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.agent-federation-device>div{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.agent-federation-device code{overflow-wrap:anywhere;color:var(--muted);font-size:12px}.agent-federation-device>span{color:var(--muted);font-size:12px}.agent-federation .agent-session-card{flex-direction:column;gap:12px;display:flex}.agent-federation .agent-session-card strong{overflow-wrap:anywhere}.agent-federation .agent-session-card p{overflow-wrap:anywhere;margin:0}.agent-federation .agent-session-card details{color:var(--muted);font-size:12px}.agent-federation .agent-session-card summary{cursor:pointer;text-underline-offset:3px;align-items:center;min-height:44px;text-decoration:underline;display:flex}.agent-federation .agent-session-card button{align-self:start;margin-top:auto}.agent-federation-unavailable{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:12px;margin-top:12px;display:flex}.agent-federation-unavailable p{overflow-wrap:anywhere;flex:200px;margin:0}@media (max-width:600px){.agent-federation{padding:16px 12px}.agent-federation-source{padding:12px}.agent-federation-heading .direct-actions{width:100%}.agent-federation-heading .direct-actions button{flex:160px}}.device-messages h2{align-items:center;gap:10px;display:flex}.messages-identity{background:var(--direct-surface);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;gap:16px 32px;margin-bottom:20px;padding:16px 20px;display:flex}.messages-identity>span{min-width:0;color:var(--muted);gap:5px;font-size:12px;display:grid}.messages-identity code,.messages-identity strong,.messages-identity time{color:var(--direct-text);overflow-wrap:anywhere;font-size:14px}.messages-identity code{-webkit-user-select:all;user-select:all}.messages-layout{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:24px;display:grid}.messages-compose,.messages-feed{min-width:0}.messages-compose .direct-editor{margin-bottom:16px!important}.messages-guidance{color:var(--muted);gap:10px;font-size:13px;line-height:1.65;display:flex}.messages-guidance>svg{flex-shrink:0;margin-top:3px}.messages-guidance h3{color:var(--direct-text);font-size:14px}.messages-guidance p{margin-top:8px}.messages-guidance button{margin-top:12px}.messages-reply{border-left:3px solid var(--accent);background:var(--code-bg);border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.messages-reply span{min-width:0}.messages-reply code{overflow-wrap:anywhere;font-size:12px;display:block}.messages-tabs{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.messages-tabs button[aria-pressed=true]{border-color:var(--accent)}.messages-tabs span{font-variant-numeric:tabular-nums;font-size:12px}.message-card{background:var(--direct-surface);border:1px solid var(--border);border-radius:12px;min-width:0;margin-bottom:16px;padding:20px}.message-heading{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.message-heading>div{min-width:0}.message-heading small{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.message-heading strong{overflow-wrap:anywhere;font-size:15px;display:block}.message-status{border:1px solid var(--border);border-radius:6px;flex-shrink:0;padding:4px 8px;font-size:12px}.message-acknowledged{border-color:var(--accent)}.message-blocked,.message-expired{border-color:var(--danger,#e87888)}.message-card .message-text{white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:16px;font-size:15px;line-height:1.7}.message-agent-address{color:var(--muted);gap:5px;margin-bottom:12px;font-size:12px;display:grid}.message-agent-address code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;color:var(--direct-text)}.message-card details{color:var(--muted);margin-bottom:16px;font-size:12px}.message-card summary{cursor:pointer;align-content:center;min-height:44px}.message-card dl{gap:8px;margin:8px 0 0;display:grid}.message-card dl>div{grid-template-columns:100px minmax(0,1fr);gap:8px;display:grid}.message-card dd{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;margin:0}.message-card .direct-actions{border-top:1px solid var(--border);padding-top:12px}.message-card>.direct-note{margin-top:12px}.messages-notice{border:1px solid var(--accent);border-radius:8px;padding:12px;font-size:14px;margin-bottom:16px!important}@media (max-width:1000px){.messages-layout{grid-template-columns:1fr}.messages-compose{grid-template-columns:minmax(0,1fr) minmax(180px,.7fr);gap:20px;display:grid}}@media (max-width:650px){.messages-compose{display:block}.messages-guidance{margin-bottom:20px}.message-card{padding:16px}.message-heading{flex-wrap:wrap}.messages-identity{padding:14px}}.messages-held{border:1px solid var(--danger,#e87888);border-radius:12px;margin-bottom:20px;padding:16px}.messages-held h3{align-items:center;gap:8px;margin-bottom:8px;font-size:15px;display:flex}.messages-held h3 span{font-variant-numeric:tabular-nums;border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px}.messages-held>.direct-note{margin-bottom:12px}.message-held-reason{color:var(--muted);margin-bottom:12px;font-size:13px}.task-card h3{overflow-wrap:anywhere;font-size:17px;line-height:1.5}.task-card .task-report{background:var(--code-bg);border-left:3px solid var(--border);border-radius:6px;margin-bottom:16px;padding:12px 16px}.task-report h4{color:var(--muted);align-items:center;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.task-report p,.task-history p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}.task-card .task-result.task-succeeded{border-color:var(--accent)}.task-card .task-result.task-failed{border-color:var(--danger,#e87888)}.message-status.task-running,.message-status.task-succeeded{border-color:var(--accent)}.message-status.task-cancel_requested,.message-status.task-failed{border-color:var(--danger,#e87888)}.task-history{margin-top:16px;padding-left:24px}.task-history li{margin-bottom:12px}.task-history code{overflow-wrap:anywhere;margin:5px 0;display:block}.task-decline{gap:12px;margin-top:16px;display:grid}.task-decline label{gap:8px;display:grid}.task-decline textarea{background:var(--direct-surface);border:1px solid var(--border);width:100%;color:var(--direct-text);resize:vertical;border-radius:8px;padding:12px}.device-tasks .direct-note{overflow-wrap:anywhere}.device-tasks .messages-layout{grid-template-areas:"compose feed"}.device-tasks .messages-compose{grid-area:compose}.device-tasks .messages-feed{grid-area:feed}@media (max-width:1000px){.device-tasks .messages-layout{grid-template-areas:"feed""compose"}}.task-questions{gap:16px;margin:16px 0;display:grid}.task-question{border:1px solid var(--border);background:var(--code-bg);border-radius:10px;min-width:0;padding:16px}.task-question h4{align-items:center;gap:8px;margin:0 0 8px;font-size:14px;display:flex}.task-question p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;line-height:1.65}.task-question>small,.task-answer small{color:var(--muted)}.task-answer{border-left:3px solid var(--accent);margin-top:12px;padding-left:12px}.task-answer strong{font-size:13px}.task-answer-pending{border-left-color:var(--border)}.task-reply{gap:10px;margin-top:16px;display:grid}.task-reply label{gap:8px;display:grid}.task-reply textarea{border:1px solid var(--border);width:100%;min-width:0;color:var(--direct-text);background:var(--direct-surface);resize:vertical;border-radius:8px;padding:12px}.task-reply button{justify-self:start}.task-run{min-width:0;margin:16px 0}.task-run>section{border:1px solid var(--border);background:var(--code-bg);border-radius:12px;gap:16px;min-width:0;margin-top:12px;padding:16px;display:grid}.task-run form,.task-run-review{gap:12px;min-width:0;display:grid}.task-run label{gap:8px;min-width:0;display:grid}.task-run input,.task-run select,.task-run textarea{background:var(--direct-surface);border:1px solid var(--border);width:100%;min-width:0;min-height:44px;color:var(--direct-text);border-radius:8px;padding:10px 12px;font-size:16px}.task-run textarea{resize:vertical}.task-run pre{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--border);border-radius:8px;max-height:320px;padding:12px;font-size:13px;line-height:1.65;overflow:auto}.task-run code{overflow-wrap:anywhere}.task-run details code{white-space:pre-wrap;display:block}.task-run-steps{color:var(--muted);flex-wrap:wrap;gap:8px 16px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.task-run-steps [aria-current]{color:var(--direct-text);font-weight:600}.task-run-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.task-run-report{border-top:1px solid var(--border);padding-top:16px}.task-run-report button{justify-self:start}@media (max-width:600px){.task-run-fields{grid-template-columns:minmax(0,1fr)}.task-run>section{padding:12px}}.task-run .task-run-communication{cursor:pointer;align-items:center;gap:12px;min-height:44px;display:flex}.task-run .task-run-communication input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:none}.task-run-proposal{border:1px solid var(--border);background:var(--direct-surface);border-radius:10px;gap:12px;min-width:0;padding:16px;display:grid}.task-run-proposal h4,.task-run-proposal p{margin:0}.task-run-proposal button{justify-self:start}.task-dependency-picker,.task-dependencies{overflow-wrap:anywhere;min-width:0}.task-dependency-picker fieldset{border:1px solid var(--border);border-radius:10px;min-width:0;margin:12px 0 0;padding:12px}.task-dependency-picker legend{padding:0 6px;font-weight:600}.device-tasks .task-dependency-option{cursor:pointer;align-items:center;gap:12px;min-height:44px;padding:8px 0;display:flex}.device-tasks .task-dependency-option input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:none}.task-dependency-option>span{gap:4px;min-width:0;display:grid}.task-dependency-option small{color:var(--muted)}.task-dependencies{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--code-bg);border-radius:10px;margin:16px 0;padding:16px}.task-dependencies>strong{font-size:14px}.task-dependencies p{white-space:pre-wrap;margin:8px 0 12px;line-height:1.65}.task-dependencies ul{gap:16px;margin:12px 0 0;padding-left:20px;display:grid}.task-dependencies li>span,.task-dependencies code{margin-top:6px;font-size:13px;display:block}.task-dependencies li>span{color:var(--muted)}.project-sync{--projects-surface:var(--surface,var(--card));border:1px solid var(--border);background:var(--projects-surface);border-radius:10px;min-width:0;margin:0 0 20px;padding:0 14px}.project-sync>summary{cursor:pointer;align-items:center;gap:8px;min-height:44px;font-size:13px;display:flex}.project-sync>summary:after{content:"+";color:var(--muted);margin-inline-start:auto;font-size:18px}.project-sync[open]>summary:after{content:"−"}.project-sync>summary>span{color:var(--muted);margin-inline-start:8px}.project-sync-body,.project-sync-form{gap:14px;min-width:0;display:grid}.project-sync-body{padding:6px 0 16px}.project-sync-body p{margin:0}.project-sync-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.project-sync-heading>div{min-width:0}.project-sync-heading strong,.project-sync-heading small{display:block}.project-sync-heading small,.project-sync-heading>span{color:var(--muted);margin-top:6px;font-size:12px}.project-sync code{overflow-wrap:anywhere;white-space:pre-wrap;font-size:12px}.project-sync-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-sync-form{border:1px solid var(--border);background:var(--code-bg);border-radius:8px;padding:16px}.project-sync-form fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;max-height:300px;padding:8px 12px;overflow-y:auto}.project-sync-form legend{padding:0 6px;font-size:13px}.project-sync .project-sync-check{cursor:pointer;flex-direction:row;align-items:center;gap:12px;min-height:44px;margin:0;padding:4px 0}.project-sync .project-sync-check input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:0 0 20px;margin:0;padding:0}.project-sync-check>span{min-width:0}.project-sync-check small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.project-sync-interval{max-width:320px}.project-sync-notice{color:var(--good);font-size:13px}.project-sync-results{max-height:380px;margin:0;padding:0;list-style:none;overflow-y:auto}.project-sync-results li{border-top:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 0;display:flex}.project-sync-results li>div{min-width:0}.project-sync-results strong,.project-sync-results code,.project-sync-results small{display:block}.project-sync-results strong{margin-top:4px;font-size:13px}.project-sync-results small,.project-sync-results li>span{color:var(--muted);margin-top:6px;font-size:12px}@media (max-width:600px){.project-sync>summary{flex-wrap:wrap;padding:10px 0}.project-sync>summary>span{flex-basis:100%;order:1;margin:0 0 0 25px}.project-sync-heading,.project-sync-results li{flex-wrap:wrap}.project-sync-form{padding:12px}.project-sync-form .projects-error{display:grid}}.activity-panel{border:1px solid var(--border);border-radius:12px;min-width:0;margin-block:16px;padding:18px}.activity-panel h3{align-items:center;gap:8px;display:flex}.activity-panel p,.activity-panel code{overflow-wrap:anywhere}.activity-sources{border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;gap:8px 20px;padding:12px;display:flex}.activity-sources label{min-width:0}.activity-source-status{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:12px;margin-block:12px;display:grid}.activity-source-status>div{border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px}.activity-source-status strong{overflow-wrap:anywhere}.activity-source-status small{color:var(--muted);margin-top:6px;display:block}.activity-source-status .activity-stale{border-inline-start:3px solid var(--accent);padding-inline-start:10px;font-weight:600}.activity-source-status .activity-stale small{font-weight:400}.activity-filters{flex-wrap:wrap;align-items:end;gap:12px 20px;margin-block:16px;display:flex}.activity-filters>label{flex:240px;min-width:0}.activity-kind{border:0;flex:360px;min-width:0;margin:0;padding:0}.activity-kind legend{margin-bottom:6px;padding:0;font-size:14px}.activity-kind>div{flex-wrap:wrap;gap:8px;display:flex}.activity-kind label{border:1px solid var(--border);cursor:pointer;border-radius:8px;flex-direction:row;align-items:center;gap:8px;min-height:44px;padding:8px 12px;font-weight:500;transition:border-color .15s,background-color .15s;display:flex}.activity-kind label:hover,.activity-kind label.is-selected{border-color:var(--accent);background:var(--accent-soft,var(--card))}.activity-kind label:focus-within{outline:2px solid var(--focus,var(--accent));outline-offset:3px}.activity-kind input[type=radio]{width:18px;height:18px;min-height:0;accent-color:var(--focus,var(--accent));border:0;flex:0 0 18px;margin:0;padding:0}.activity-kind span{color:inherit;font-size:inherit;overflow-wrap:anywhere}.activity-list{gap:12px;margin-block:16px;display:grid}.activity-list article{border:1px solid var(--border);border-radius:8px;min-width:0;padding:14px}.activity-list h4{overflow-wrap:anywhere;margin:0}.activity-list summary{cursor:pointer;text-underline-offset:3px;align-items:center;min-height:44px;text-decoration:underline;display:flex}.activity-list pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit;font-size:inherit}.activity-panel summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}@media (max-width:580px){.activity-panel{padding:12px}.activity-sources{display:block}}@media (prefers-reduced-motion:reduce){.activity-kind label{transition:none}}.managed-runs{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;margin:16px 0;padding:16px}.managed-runs>summary,.managed-run-launch>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;min-height:44px;font-weight:600;display:flex}.managed-runs>summary>span{color:var(--muted);font-size:13px;font-weight:400}.managed-runs-content{gap:16px;min-width:0;margin-top:16px;display:grid}.managed-run-device{border:1px solid var(--border);background:var(--code-bg);border-radius:10px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;margin:16px 0;padding:16px;display:grid}.managed-run-device label{gap:8px;min-width:0;font-weight:600;display:grid}.managed-run-device select{width:100%;min-width:0;min-height:44px;color:var(--direct-text);background:var(--direct-surface);border:1px solid var(--border);border-radius:6px;padding:8px}.managed-run-device>p{overflow-wrap:anywhere;grid-column:1/-1;margin:0;line-height:1.65}.managed-runs-content p{overflow-wrap:anywhere;margin:0;line-height:1.65}.managed-run-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px;display:grid}.managed-run-card{border:1px solid var(--border);border-radius:10px;align-content:start;gap:12px;min-width:0;padding:16px;display:grid}.managed-run-card code,.managed-run-card small,.managed-runs dd{overflow-wrap:anywhere}.managed-run-heading{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.managed-run-heading>div{gap:4px;display:grid}.managed-run-heading>span{color:var(--muted);font-size:13px}.managed-run-card small{color:var(--muted)}.managed-run-output,.managed-run-review{border:1px solid var(--border);border-radius:10px;gap:16px;min-width:0;padding:16px;display:grid}.managed-run-output pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--code-bg);border:1px solid var(--border);border-radius:8px;max-height:360px;margin-top:8px;padding:12px;font-size:13px;line-height:1.6;overflow:auto}.managed-runs dd{min-width:0;margin:4px 0 12px}.managed-runs dt{color:var(--muted);font-size:13px}.managed-run-launch>.direct-editor{margin-top:16px}.managed-runs button{min-height:44px}.managed-runs input,.managed-runs textarea,.managed-runs select{font-size:16px}.managed-run-fields,.managed-run-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-width:0;display:grid}.managed-run-fields label,.managed-run-facts>div{min-width:0}.managed-run-facts,.managed-run-review h3,.managed-run-review h4{margin:0}.managed-run-form>button{justify-self:start}.managed-run-form select{width:100%;min-height:44px}.managed-run-prompt{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--border);background:var(--code-bg);border-radius:8px;max-height:260px;margin:8px 0 0;padding:12px;font-size:14px;line-height:1.65;overflow:auto}.managed-run-command{min-width:0}.managed-run-command>summary{cursor:pointer;min-height:44px;color:var(--muted);align-content:center}.managed-run-command code{white-space:pre-wrap;overflow-wrap:anywhere}@media (max-width:600px){.managed-run-fields,.managed-run-facts{grid-template-columns:minmax(0,1fr)}.managed-run-review{padding:12px}.managed-run-form>button{justify-self:stretch}}.automatic-worker{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;min-width:0;margin:16px 0}.automatic-worker>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:10px;min-height:52px;padding:14px 16px;font-weight:600;display:flex}.automatic-worker>summary>span{color:var(--muted);margin-left:auto;font-size:13px;font-weight:400}.automatic-worker-body{gap:16px;min-width:0;padding:0 16px 16px;display:grid}.automatic-worker-body p{overflow-wrap:anywhere;margin:0;line-height:1.65}.automatic-worker-body code{overflow-wrap:anywhere;white-space:pre-wrap}.automatic-worker-body>p>code,.automatic-worker-current>code{margin-top:6px;display:block}.automatic-worker-status{border:1px solid var(--border);background:var(--code-bg);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.automatic-worker-status>span{color:var(--muted);font-size:13px}.automatic-worker-current,.automatic-worker-body form,.automatic-worker-review{gap:12px;min-width:0;display:grid}.automatic-worker-body label{gap:8px;min-width:0;display:grid}.automatic-worker-body input,.automatic-worker-body select{background:var(--direct-surface);border:1px solid var(--border);width:100%;min-width:0;min-height:44px;color:var(--direct-text);border-radius:8px;padding:10px 12px;font-size:16px}.automatic-worker-body fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px}.automatic-worker-body legend{padding:0 6px;font-weight:600}.automatic-worker-body .automatic-worker-check{cursor:pointer;flex-direction:row;align-items:center;gap:12px;min-height:44px;padding:6px 0;display:flex}.automatic-worker-check>input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:none;margin:0;padding:0}.automatic-worker-check>span{overflow-wrap:anywhere;min-width:0}.automatic-worker-check small{color:var(--muted);margin-top:4px;display:block}.automatic-worker-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.automatic-worker-review{border:1px solid var(--border);background:var(--code-bg);border-radius:10px;padding:16px}.automatic-worker-review h3{margin:0;font-size:17px}.automatic-worker-review details code{margin-top:8px;display:block}.automatic-worker-runs{gap:12px;margin:0;padding:0;list-style:none;display:grid}.automatic-worker-runs li{border:1px solid var(--border);border-radius:8px;gap:6px;min-width:0;padding:12px;display:grid}.automatic-worker-runs li>span{color:var(--muted)}@media (max-width:600px){.automatic-worker-fields{grid-template-columns:minmax(0,1fr)}.automatic-worker>summary>span{flex-basis:100%;margin-left:29px}.automatic-worker-body{padding:0 12px 12px}.automatic-worker-review{padding:12px}}.collaborations{border:1px solid var(--border);border-radius:14px;min-width:0;margin:24px 0;padding:20px}.collaborations-heading,.collaboration-title{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.collaborations-heading h3{align-items:center;gap:8px;margin:0;font-size:17px;display:flex}.collaborations-heading p{color:var(--muted);margin:8px 0 0;line-height:1.65}.collaborations-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));align-items:start;gap:16px;margin-top:16px;display:grid}.collaboration-card{border:1px solid var(--border);background:var(--code-bg);border-radius:12px;gap:14px;min-width:0;padding:20px;display:grid}.collaboration-card h4,.collaboration-card p{margin:0}.collaboration-title h4{flex:1;min-width:0;font-size:16px;line-height:1.5}.collaboration-title>span{border:1px solid var(--border);border-radius:8px;padding:4px 8px;font-size:12px}.collaboration-card p,.collaboration-card code,.collaboration-card dd{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}.collaboration-card small,.collaboration-progress span,.collaboration-create small{color:var(--muted);font-size:13px}.collaboration-progress{gap:8px;display:grid}.collaboration-progress progress{width:100%;height:8px;accent-color:var(--accent)}.collaboration-stats{flex-wrap:wrap;gap:8px 16px;font-size:13px;display:flex}.collaboration-result{border-top:1px solid var(--border);padding-top:14px}.collaboration-result p{margin-top:8px}.collaboration-card ul{padding-left:20px}.collaboration-card details,.collaboration-card dl,.collaboration-create details{min-width:0}.collaboration-card dl>div{margin-top:12px}.collaboration-card dt{color:var(--muted);font-size:12px}.collaboration-card dd{font-family:var(--font-mono,monospace);margin:4px 0 0;font-size:13px}.collaboration-create,.collaboration-close{gap:12px;min-width:0;display:grid}.collaboration-create{border:1px solid var(--border);border-radius:12px;margin-top:20px;padding:20px}.collaboration-create label,.collaboration-close label{gap:8px;min-width:0;display:grid}.collaboration-create input,.collaboration-create textarea,.collaboration-close textarea,.collaboration-filter select{border:1px solid var(--border);background:var(--direct-surface);width:100%;min-width:0;min-height:44px;color:var(--direct-text);border-radius:8px;padding:10px 12px;font-size:16px}.collaboration-create textarea,.collaboration-close textarea{resize:vertical}.collaboration-create fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px}.collaboration-create .collaboration-member{cursor:pointer;align-items:center;gap:12px;min-height:44px;display:flex}.collaboration-create .collaboration-member input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:none}.collaboration-member code{overflow-wrap:anywhere}.collaboration-filter{gap:8px;margin-bottom:16px;display:grid}.task-collaboration{border:1px solid var(--border);border-radius:8px;margin:12px 0;padding:12px}.task-collaboration p,.task-collaboration code{white-space:pre-wrap;overflow-wrap:anywhere}.task-collaboration code{margin-top:8px;display:block}@media (max-width:600px){.collaborations,.collaboration-create,.collaboration-card{padding:16px}}.projects-view{--projects-surface:var(--surface,var(--card,#1b2336));--projects-text:var(--text,#f8fafc);--projects-on-accent:var(--on-accent,#0f172a);color:var(--projects-text);min-width:0}.projects-view h1{margin:0 0 6px;font-size:clamp(24px,2.5vw,30px)}.projects-view h2,.projects-view h3{overflow-wrap:anywhere;margin:0}.projects-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.projects-heading>div:first-child{min-width:0}.projects-heading p,.projects-note{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:13px}.projects-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.projects-view button{border:1px solid var(--border);background:var(--projects-surface);min-width:44px;min-height:44px;color:var(--projects-text);cursor:pointer;font:inherit;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;display:inline-flex}.projects-view button:hover:not(:disabled){background:var(--surface-raised,#334155)}.projects-view button:disabled{cursor:not-allowed;opacity:.5}.projects-view button.projects-primary{color:var(--projects-on-accent);background:var(--accent);border-color:var(--accent);font-weight:600}.projects-view button.projects-primary:hover:not(:disabled){background:var(--accent-hover,#4ade80)}.projects-view label{flex-direction:column;gap:6px;min-width:0;font-size:13px;display:flex}.projects-view input,.projects-view select{width:100%;min-width:0;min-height:44px;color:var(--projects-text);background:var(--code-bg,#131d2d);border:1px solid var(--border);font:inherit;border-radius:8px;padding:10px}.projects-view input::placeholder{color:var(--muted);opacity:1}.projects-view :focus-visible{outline:2px solid var(--focus,#e2e8f0);outline-offset:3px}.projects-layout{grid-template-columns:minmax(210px,270px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.projects-sidebar,.projects-detail,.projects-register{background:var(--projects-surface);border:1px solid var(--border);border-radius:12px;min-width:0;padding:20px}.projects-view .projects-search{flex-direction:row;align-items:center;gap:8px;margin-bottom:16px}.projects-search input{min-width:0}.projects-list{gap:8px;margin-bottom:12px;display:grid}.projects-list>button{text-align:start;justify-content:flex-start;width:100%;padding:12px}.projects-list>button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft,#153a2c)}.projects-list span{min-width:0}.projects-list strong,.projects-list small{overflow-wrap:anywhere;display:block}.projects-list small{color:var(--muted);margin-top:4px;font-size:12px}.projects-id{color:var(--muted);overflow-wrap:anywhere;margin-top:6px;font-size:11px;display:block}.projects-location{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;margin:4px 0 16px;padding:16px 0;display:flex}.projects-location>div{flex:1;min-width:0}.projects-location strong,.projects-location code{overflow-wrap:anywhere;display:block}.projects-location code{color:var(--muted);white-space:pre-wrap;margin-top:4px;font-size:12px}.projects-status{color:var(--warn,#fcd34d);font-size:12px}.projects-status.is-online{color:var(--good,#86efac)}.projects-snapshot{border:1px solid var(--border);background:var(--surface-raised,var(--projects-surface));border-radius:8px;gap:10px;margin:0 0 20px;padding:14px;display:flex}.projects-snapshot>svg{color:var(--warn,#fcd34d);flex-shrink:0;margin-top:2px}.projects-snapshot>div{min-width:0}.projects-snapshot p{color:var(--muted);overflow-wrap:anywhere;margin:6px 0 0;font-size:13px}.projects-sessions{margin:0 0 16px;padding:0;list-style:none}.projects-sessions>li{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 0;display:flex}.projects-sessions>li>div:not(.projects-actions){flex:1;min-width:0}.projects-sessions strong,.projects-sessions small{overflow-wrap:anywhere;display:block}.projects-sessions small{color:var(--muted);font-size:12px}.projects-view .projects-session-form{align-items:flex-end;gap:12px;margin:20px 0;display:flex}.projects-session-form>label{flex:1;min-width:0}.projects-session-form>button{flex-shrink:0}.projects-view .projects-register{gap:16px;margin:0 0 24px;display:grid}.projects-register .projects-heading{margin:0}.projects-register p{color:var(--muted);margin:0;font-size:13px}.projects-register>button{justify-self:start}.projects-error{border:1px solid var(--bad,#fda4af);background:var(--bad-bg,#3c202c);color:var(--bad,#fda4af);overflow-wrap:anywhere;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 16px;padding:12px;display:flex}.projects-empty{text-align:center;justify-items:center;gap:16px;padding:32px 12px;display:grid}.projects-empty p{color:var(--muted);max-width:440px;margin:0}.projects-sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:1100px){.projects-layout{grid-template-columns:minmax(0,1fr)}.projects-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}}@media (max-width:600px){.projects-heading{flex-wrap:wrap;align-items:flex-start;gap:12px}.projects-sidebar,.projects-detail,.projects-register{padding:14px}.projects-view .projects-session-form{flex-direction:column;align-items:stretch}.projects-sessions>li{flex-wrap:wrap}.projects-sessions>li>div:not(.projects-actions){flex-basis:calc(100% - 30px)}.projects-sessions .projects-actions{margin-left:30px}.projects-location{flex-wrap:wrap}.projects-status{width:100%;margin-left:30px}.projects-error{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){.projects-view *{transition:none!important;animation:none!important}}.projects-sources{background:var(--projects-surface);border:1px solid var(--border);border-radius:10px;margin:0 0 20px;padding:0 14px}.projects-sources summary{cursor:pointer;align-items:center;gap:8px;min-height:44px;font-size:13px;display:flex}.projects-sources summary:after{content:"+";color:var(--muted);margin-left:auto;font-size:18px}.projects-sources[open] summary:after{content:"−"}.projects-sources summary span{color:var(--muted);margin-left:8px}.projects-sources>p{margin:4px 0 12px}.projects-sources ul{max-height:280px;margin:0;padding:0;list-style:none;overflow-y:auto}.projects-sources li{border-top:1px solid var(--border);align-items:flex-start;gap:10px;padding:12px 0;font-size:13px;display:flex}.projects-sources li div{flex:1;min-width:0}.projects-sources li strong,.projects-sources li small{overflow-wrap:anywhere;display:block}.projects-sources li small,.projects-sources time{color:var(--muted);margin-top:4px;font-size:12px}@media (max-width:600px){.projects-sources summary{flex-wrap:wrap;padding:10px 0}.projects-sources summary span{flex-basis:100%;order:1;margin:0 0 0 24px}.projects-sources li>time{display:none}}.projects-copy{min-width:0;margin-bottom:20px}.projects-copy>.projects-register{margin-top:12px}.projects-copy form,.projects-copy-review{gap:14px;min-width:0;display:grid}.projects-copy form>button{justify-self:start}.projects-copy code{overflow-wrap:anywhere;white-space:pre-wrap;margin-top:6px;font-size:12px;display:block}.projects-copy details{border:1px solid var(--border);border-radius:8px;min-width:0;padding:0 12px}.projects-copy summary{cursor:pointer;align-items:center;min-height:44px;display:flex}.projects-copy ul{max-height:260px;margin:0;padding:0 0 8px;list-style:none;overflow:auto}.projects-copy li{border-top:1px solid var(--border);align-items:baseline;gap:12px;padding:8px 0;display:flex}.projects-copy li code{flex:1;min-width:0;margin:0}.projects-copy li span{color:var(--muted);flex-shrink:0;font-size:12px}.projects-copy .projects-copy-check{flex-direction:row;align-items:center;gap:12px;min-height:44px}.projects-copy-check input{width:20px;height:20px;min-height:20px;accent-color:var(--accent);flex:0 0 20px}.projects-copy-actions{flex-wrap:wrap;gap:8px;display:flex}.projects-copy-progress{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px}.projects-copy-progress>div{flex-wrap:wrap;justify-content:space-between;gap:8px;margin-bottom:10px;display:flex}.projects-copy-progress span{color:var(--muted);font-variant-numeric:tabular-nums}.projects-copy-progress progress{width:100%;height:12px;accent-color:var(--accent);display:block}.projects-copy details>label,.projects-copy details>button{margin-bottom:12px}.projects-copy-unavailable>div{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 0;display:flex}.projects-copy-unavailable code{flex:1;min-width:0}.projects-handoff-fields{border:1px solid var(--border);border-radius:8px;gap:16px;min-width:0;margin:0;padding:16px;display:grid}.projects-handoff-fields legend{padding:0 6px;font-weight:600}.projects-handoff-fields p,.projects-continuation p{overflow-wrap:anywhere;margin:0;line-height:1.6}.projects-handoff-fields small{color:var(--muted)}.projects-view textarea{width:100%;min-width:0;color:var(--projects-text);background:var(--code-bg,#131d2d);border:1px solid var(--border);font:inherit;resize:vertical;border-radius:8px;padding:12px;font-size:16px;line-height:1.5}.projects-view textarea[aria-invalid=true]{border-color:var(--bad)}.projects-handoff-review h4{margin:16px 0 6px}.projects-handoff-review p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 16px;line-height:1.6}.projects-continuation{border:1px solid var(--accent);background:var(--projects-surface);border-radius:10px;gap:16px;min-width:0;padding:20px;display:grid}.projects-continuation .projects-heading{margin:0}.projects-continuation h3{align-items:center;gap:8px;display:flex}.projects-continuation h3 svg{flex-shrink:0}.projects-continuation dl{gap:6px;margin:0;display:grid}.projects-continuation dt{color:var(--muted);font-size:12px}.projects-continuation dd{min-width:0;margin:0 0 8px}.projects-continuation code{margin:0 0 6px}.projects-continuation-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.projects-continuation-review,.projects-continuation-output{gap:16px;min-width:0;display:grid}.projects-continuation-review h4{margin:0}.projects-handoff-text{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--border);background:var(--code-bg,#131d2d);min-width:0;max-height:320px;color:var(--projects-text);border-radius:8px;margin:0;padding:12px;font-size:13px;line-height:1.6;overflow:auto}.projects-continuation-output details{padding-bottom:12px}@media (max-width:600px){.projects-continuation{padding:14px}.projects-continuation-fields{grid-template-columns:minmax(0,1fr)}.projects-continuation select{font-size:16px}.projects-handoff-fields{padding:12px}}.virtual-spaces{font-size:14px;line-height:1.6}.spaces-eyebrow{color:var(--good,#86efac);letter-spacing:.1em;font-size:12px;font-weight:600;margin-bottom:6px!important}.spaces-muted{color:var(--muted);font-size:13px}.spaces-empty{border:1px dashed var(--border);text-align:center;background:var(--direct-surface);border-radius:16px;flex-direction:column;align-items:center;padding:64px 24px;display:flex}.spaces-empty-icon{border:1px solid var(--border);width:88px;height:88px;color:var(--good,#86efac);background:var(--accent-soft,var(--surface));border-radius:24px;place-items:center;margin-bottom:20px;display:grid}.spaces-empty>p{max-width:58ch;color:var(--muted);margin-top:12px}.spaces-benefits{flex-wrap:wrap;justify-content:center;gap:12px 24px;margin-top:28px;display:flex}.spaces-benefits span{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.spaces-wizard{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;margin-bottom:24px;padding:24px}.spaces-wizard:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.spaces-install-plan:focus-visible,.spaces-setup-status:focus-visible,.virtual-spaces>.direct-error:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.spaces-install-plan,.spaces-setup-status,.virtual-spaces>.direct-error{scroll-margin-block:100px}.spaces-steps{border-bottom:1px solid var(--border);gap:24px;margin:24px 0;padding:0 0 20px;list-style:none;display:flex}.spaces-steps li{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.spaces-steps li.active{color:var(--text)}.spaces-steps li>span{border:1px solid var(--border);border-radius:50%;flex-shrink:0;place-items:center;width:24px;height:24px;display:grid}.spaces-steps li.active>span{background:var(--accent);color:var(--on-accent,#0f172a);border-color:var(--good,#86efac)}.spaces-step-content{gap:20px;max-width:760px;display:grid}.spaces-step-content>h4,.spaces-step-content>p{margin:0}.spaces-providers{border:0;flex-wrap:wrap;gap:12px;margin:0;padding:0;display:flex}.spaces-providers legend{margin-bottom:10px;font-size:13px}.virtual-spaces .spaces-providers>label{border:1px solid var(--border);cursor:pointer;border-radius:10px;flex-direction:row;flex:170px;align-items:center;gap:12px;min-height:60px;padding:14px 16px;display:flex}.spaces-providers>label:has(input:checked){border-color:var(--good,#86efac);background:var(--accent-soft,transparent)}.spaces-providers small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.virtual-spaces .spaces-providers input{width:18px;height:18px;min-height:18px;accent-color:var(--good,#86efac);flex-shrink:0;padding:0}.virtual-spaces .direct-notice{border:1px solid var(--border);color:var(--good,#86efac);background:var(--direct-surface);border-radius:8px;margin-bottom:20px;padding:12px 16px}.spaces-step-content>button{justify-self:start}.spaces-engine,.spaces-setup-status{background:var(--code-bg,var(--surface));border:1px solid var(--border);border-radius:10px;align-items:flex-start;gap:12px;padding:16px;display:flex}.spaces-engine>svg{color:var(--good,#86efac);flex-shrink:0;margin-top:3px}.spaces-engine p,.spaces-setup-status p{color:var(--muted);margin-top:4px;font-size:13px}.spaces-setup-status{justify-content:space-between;margin-bottom:20px}.spaces-environment,.spaces-install-plan{border-top:1px solid var(--border);overflow-wrap:anywhere;gap:16px;min-width:0;padding-top:20px;display:grid}.spaces-install-plan pre{border:1px solid var(--border);background:var(--code-bg,var(--surface));white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;max-height:280px;padding:16px;font-size:12px;line-height:1.6;overflow:auto}.spaces-advanced summary,.spaces-details summary{cursor:pointer;min-height:44px;padding:10px 0}.spaces-advanced label{margin-top:12px}.spaces-review{gap:12px;margin:0;display:grid}.spaces-review>div{border-bottom:1px solid var(--border);grid-template-columns:130px minmax(0,1fr);gap:16px;padding-bottom:10px;display:grid}.spaces-review dt{color:var(--muted)}.spaces-review dd{overflow-wrap:anywhere;margin:0}.spaces-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));align-items:start;gap:20px;display:grid}.space-card{background:var(--direct-surface);border:1px solid var(--border);border-radius:12px;min-width:0;padding:20px}.space-card-head{align-items:center;gap:14px;margin-bottom:16px;display:flex}.space-card-head>div{min-width:0}.space-card-head p{color:var(--muted);overflow-wrap:anywhere;margin-top:3px;font-size:12px}.space-card h3{overflow-wrap:anywhere;font-size:17px}.space-icon{background:var(--accent-soft,var(--surface));width:44px;height:44px;color:var(--good,#86efac);border-radius:10px;flex-shrink:0;place-items:center;display:grid}.space-phase{color:var(--muted);align-items:center;gap:8px;margin-bottom:16px;font-size:13px;display:inline-flex}.space-phase.ready{color:var(--good,#86efac)}.space-phase.failed,.space-phase.interrupted{color:var(--bad,#fda4af)}.space-card-actions{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.spaces-details{border-top:1px solid var(--border);margin-top:16px;font-size:13px}.spaces-details>p{margin:10px 0}.spaces-details code{overflow-wrap:anywhere;font-size:12px}.space-credentials{gap:12px;padding:16px 0 0;display:grid}.space-credentials>button{justify-self:start}.space-image-editor{border-top:1px solid var(--border);gap:16px;margin-top:20px;padding-top:20px}.space-image-editor fieldset{border:0;gap:16px;min-width:0;margin:0;padding:0;display:grid}.space-image-policy{gap:8px;min-width:0;display:grid}.space-image-editor input,.space-image-editor select{width:100%;min-width:0}.space-image-editor .direct-error{overflow-wrap:anywhere;scroll-margin-block:100px}.space-image-editor .direct-error:focus-visible,.space-card:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.spaces-spinner{flex-shrink:0;animation:1.4s linear infinite spaces-spin}@keyframes spaces-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spaces-spinner{animation:none}}@media (max-width:580px){.spaces-wizard,.space-card{padding:16px}.spaces-empty{padding:40px 16px}.spaces-steps{justify-content:space-between;gap:10px}.spaces-steps li{gap:5px;font-size:12px}.spaces-review>div{grid-template-columns:1fr;gap:4px}.space-card-actions button{flex-grow:1}}.spaces-local-heading{margin-bottom:16px;font-size:16px}.remote-spaces{border-top:1px solid var(--border);margin-top:32px;padding-top:24px}.remote-spaces .direct-heading h3{align-items:center;gap:8px;display:flex}.remote-space-sources{gap:16px;margin-top:16px;display:grid}.remote-space-source{border:1px solid var(--border);background:var(--direct-surface);overflow-wrap:anywhere;border-radius:12px;min-width:0;padding:20px}.remote-space-source-head{flex-wrap:wrap;justify-content:space-between;gap:8px 20px;margin-bottom:12px;display:flex}.remote-space-source-head strong{font-size:14px}.remote-space-source-head time{color:var(--muted);font-size:12px}.remote-space-list{margin:0 0 12px;padding:0;list-style:none}.remote-space-list li{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 0;display:flex}.remote-space-list li>svg{color:var(--muted);flex-shrink:0}.remote-space-list li>div{flex:1;min-width:0}.remote-space-list small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.remote-space-list li>span{color:var(--muted);flex-shrink:0;font-size:13px}.remote-space-details{border:1px solid var(--border);overflow-wrap:anywhere;border-radius:12px;min-width:0;margin-top:16px}.remote-space-details>summary{cursor:pointer;align-items:center;gap:8px 16px;min-height:52px;padding:12px 16px;font-size:13px;list-style:none;display:flex}.remote-space-details>summary::-webkit-details-marker{display:none}.remote-space-details>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:10px}.remote-space-details>summary>svg{flex-shrink:0;margin-left:auto}.remote-space-details[open]>summary>svg{transform:rotate(180deg)}.remote-space-counts{color:var(--muted)}.remote-space-details-body{border-top:1px solid var(--border);padding:16px}.remote-space-details-body>p{margin-bottom:12px}.remote-space-issues{gap:0;display:grid}.remote-space-issue{min-width:0;padding:12px 0}.remote-space-issue+.remote-space-issue{border-top:1px solid var(--border)}.remote-space-issue-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;display:flex}.remote-space-issue-head strong{font-size:13px;font-weight:500}.remote-space-issue-head>span,.remote-space-issue time{color:var(--muted);font-size:12px}.remote-space-issue-error{color:var(--bad,#fda4af);margin:6px 0;font-size:13px}@media (max-width:580px){.remote-space-details>summary{flex-wrap:wrap}.remote-space-counts{flex-basis:100%;order:1}.remote-space-source{padding:16px}.remote-space-list li{flex-wrap:wrap}.remote-space-list li>span{width:100%;margin-left:30px}}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:-moz-fit-content;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}.network-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:20px;display:grid}.network-provider{border:1px solid var(--border);background:var(--direct-surface);border-radius:12px;gap:16px;min-width:0;padding:20px;display:grid}.network-provider>.direct-heading{margin-bottom:0}.network-provider h3{align-items:center;gap:8px;display:flex}.network-provider h4{overflow-wrap:anywhere;margin:0;font-size:14px}.network-provider code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.network-phase{color:var(--muted);flex-shrink:0;align-items:center;gap:6px;min-height:28px;font-size:12px;display:inline-flex}.network-phase:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.network-phase.active{color:var(--good,var(--accent))}.network-setup,.network-advanced,.network-plan{justify-items:start;gap:12px;min-width:0;display:grid}.tailscale-setup,.tailscale-setup .network-plan,.tailscale-setup details{width:100%}.tailscale-setup p{margin:0}.tailscale-setup-commands{gap:12px;min-width:0;display:grid}.tailscale-setup pre{background:var(--direct-surface);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;max-width:100%;margin:0;padding:12px;font-size:12px;line-height:1.6}.network-advanced{justify-items:stretch;padding-top:12px}.network-provider details{border:1px solid var(--border);border-radius:8px;padding:0 12px}.network-provider summary{cursor:pointer;min-height:44px;padding:12px 0;font-size:13px}.network-provider details[open]{padding-bottom:12px}.network-secret{align-items:center;gap:8px;display:flex}.network-secret input{flex:1}.network-secret button{flex-shrink:0}.network-entry-help{margin-top:-10px}.network-entry{gap:6px;min-width:0;display:grid}.network-method button[aria-pressed=true]{border-color:var(--good,var(--accent));color:var(--good,var(--accent));background:var(--accent-soft,color-mix(in srgb, var(--accent) 8%, transparent))}.network-invitation-result{border:1px solid var(--border);border-radius:8px;gap:12px;width:100%;min-width:0;padding:12px;display:grid}.network-invitations ul{width:100%}.network-provider textarea{line-height:1.6}.network-provider textarea[aria-invalid=true]{border-color:var(--danger,#e87888)}.network-saved{gap:6px;min-width:0;display:grid}.network-discovery{border-top:1px solid var(--border);gap:12px;padding-top:16px;display:grid}.network-discovery h4 span{color:var(--muted);margin-inline-start:4px;font-weight:400}.network-provider ul{min-width:0;margin:0;padding:0;list-style:none}.network-provider li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;font-size:13px;display:flex}.network-provider li:last-child{border-bottom:0}.network-provider li>div{min-width:0}.network-provider li strong{overflow-wrap:anywhere;font-size:13px;display:block}.network-provider li small{color:var(--muted);overflow-wrap:anywhere;line-height:1.6;display:block}.network-provider li>button,.network-provider li>span{flex-shrink:0}.network-target{border-top:1px solid var(--border);padding-top:16px}.network-target .direct-heading{align-items:center;margin:0}.network-discovery-controls{gap:12px;display:grid}.network-ts-discovery>p{margin:0}.network-ts-discovery li{flex-wrap:wrap}.network-ts-discovery li>div{overflow-wrap:anywhere;flex:180px}.network-ts-discovery input[aria-invalid=true]{border-color:var(--danger,#e87888)}.network-discovered-path{margin-top:8px}.network-discovered-path select{width:100%;min-width:0;max-width:100%}.network-link{border:1px solid var(--border);min-height:44px;color:var(--good,var(--accent));border-radius:8px;align-items:center;padding:8px 12px;text-decoration:none;display:inline-flex}@media (max-width:1000px){.network-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:580px){.network-provider{padding:16px}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f141c;--surface:#171e29;--surface-raised:#1d2633;--sidebar:#111823;--text:#f1f5f9;--muted:#a8b4c6;--subtle:#94a3b8;--border:#303d50;--accent:#a3e635;--accent-hover:#b4ef55;--on-accent:#152008;--accent-soft:#22301b;--good:#86efac;--good-bg:#1b3229;--warn:#fcd34d;--warn-bg:#352d1c;--bad:#fda4af;--bad-bg:#3c202c;--focus:#bef264;--code-bg:#111822;--shadow:0 24px 80px #0008;--font:"Fira Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", "Noto Sans CJK SC", sans-serif;--mono:"Fira Code", "SFMono-Regular", Consolas, "Liberation Mono", monospace}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f7fa;--surface:#fff;--surface-raised:#edf1f5;--sidebar:#fff;--text:#182334;--muted:#506176;--subtle:#5d6c7f;--border:#d6dee7;--accent:#a3e635;--accent-hover:#91d52b;--on-accent:#152008;--accent-soft:#edf6df;--good:#166534;--good-bg:#e8f6ee;--warn:#854d0e;--warn-bg:#fff5d7;--bad:#9f1239;--bad-bg:#fff0f2;--focus:#4d7c0f;--code-bg:#f2f5f8;--shadow:0 24px 80px #18233426}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.6 var(--font);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button,a,input,textarea{transition:background-color .16s,color .16s,border-color .16s}button,a{cursor:pointer}button{color:inherit}a{color:inherit;text-decoration:none}button:disabled{opacity:.45;cursor:not-allowed}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}main:focus{outline:none}h1,h2,h3,p{margin:0}h1,h2,h3{text-wrap:balance;line-height:1.35}h1{letter-spacing:-.035em;font-size:clamp(26px,2.5vw,32px);font-weight:650}h2{font-size:16px;font-weight:600}h3{font-size:15px;font-weight:600}p{overflow-wrap:anywhere}code,pre,time{font-family:var(--mono);font-size:12px}svg{flex-shrink:0}.muted{color:var(--muted);font-size:13px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--surface);border:2px solid var(--focus);border-radius:8px;padding:12px 20px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.app{min-height:100dvh;display:flex}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);z-index:30;flex-direction:column;width:240px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:12px;padding:28px 24px;display:flex}.brand-mark{background:var(--accent);width:42px;height:42px;color:var(--on-accent);border-radius:12px;place-items:center;display:grid}.brand strong{letter-spacing:-.6px;font-size:21px;font-weight:650;line-height:1.3;display:block}.brand small{letter-spacing:1.6px;color:var(--muted);margin-top:4px;font-size:9px;display:block}.nav-section-label{letter-spacing:1.4px;color:var(--muted);padding:14px 28px 12px;font-size:10px}.sidebar nav{align-content:start;gap:6px;min-height:0;padding:0 16px 16px;display:grid;overflow-y:auto}.nav-link{color:var(--muted);border-radius:8px;align-items:center;gap:13px;min-height:46px;padding:12px 14px;display:flex}.nav-link:hover{background:var(--surface-raised);color:var(--text)}.nav-link.active{color:var(--text);background:var(--accent-soft);font-weight:600}.nav-link.active>svg{color:var(--good)}.nav-count{font:11px var(--mono);border:1px solid var(--border);border-radius:4px;margin-left:auto;padding:2px 6px}.sidebar-bottom{border-top:1px solid var(--border);overflow-wrap:anywhere;margin-top:auto;padding:22px 24px;font-size:12px}.workspace-label{align-items:center;gap:8px;margin-bottom:8px;display:flex}.workspace-label strong{font-size:12px;font-weight:500}.sidebar-bottom code{color:var(--muted);font-size:10px;display:block}.sidebar-revision{color:var(--subtle);letter-spacing:.5px;margin-top:12px;font-size:10px;display:block}.workspace-shell{width:calc(100% - 240px);min-width:0;margin-left:240px}.topbar{border-bottom:1px solid var(--border);background:var(--bg);justify-content:space-between;align-items:center;gap:16px;min-height:76px;padding:16px 40px;display:flex}.breadcrumb{align-items:center;gap:14px;min-width:0;font-size:13px;display:flex}.breadcrumb-workspace,.breadcrumb-separator{color:var(--muted)}.breadcrumb strong{font-weight:500}.topbar-actions{align-items:center;gap:8px;display:flex}.topbar-actions .button{background:0 0;border-color:#0000}.topbar-actions .button:hover{background:var(--surface-raised)}.mobile-menu,.menu-scrim{display:none}.sync-bar{color:var(--muted);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 40px;font-size:11px;display:flex}.sync-state,.sync-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sync-controls{gap:16px}.sync-controls time{font-size:inherit}.sync-controls .text-link{font-size:12px}.connection-dot{background:var(--good);border-radius:50%;flex-shrink:0;width:6px;height:6px}.connection-dot.warning{background:var(--warn)}.page-content{max-width:1440px;margin:0 auto;padding:36px 40px 24px}.page-head{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px;display:flex}.eyebrow{font:10px/1.6 var(--mono);color:var(--muted);letter-spacing:1.1px}.page-head h1{margin:8px 0}.page-head p{color:var(--muted);font-size:14px}.page-head>.actions{flex-shrink:0}.button{border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:9px 14px;font-size:12px;font-weight:550;display:inline-flex}.button:hover{background:var(--surface-raised);border-color:var(--muted)}.button:active{background:var(--surface-raised)}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.button.danger{color:var(--bad);background:var(--bad-bg);border-color:var(--bad)}.button.danger-ghost{color:var(--bad);background:0 0;border-color:#0000}.button.danger-ghost:hover{background:var(--bad-bg);border-color:var(--bad)}.icon-button{width:40px;height:40px;padding:9px}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.text-link{color:var(--muted);background:0 0;border:0;justify-content:center;align-items:center;gap:6px;padding:6px 0;font-size:12px;display:inline-flex}.text-link:hover{color:var(--text)}.text-link svg{width:15px}.danger-text{color:var(--bad)}.welcome-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;justify-content:space-between;align-items:center;gap:32px;margin-bottom:20px;padding:28px 32px;display:flex;position:relative;overflow:hidden}.welcome-status{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;display:flex}.welcome-panel h2{letter-spacing:-.5px;margin-bottom:8px;font-size:clamp(22px,2.1vw,28px)}.welcome-panel p{color:var(--muted);margin-bottom:24px}.workspace-illustration{flex-shrink:0;align-content:center;align-self:stretch;justify-items:center;gap:12px;width:210px;display:grid}.illustration-box{border:1px solid var(--border);background:var(--accent-soft);width:116px;height:116px;color:var(--good);border-radius:24px;place-items:center;display:grid}.illustration-label{font:9px var(--mono);letter-spacing:2px;color:var(--muted)}.metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px;display:grid}.metric-card{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-direction:column;min-width:0;padding:20px;display:flex}.metric-card:hover{border-color:var(--muted);background:var(--surface-raised)}.metric-top{color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.metric-top>svg{width:14px}.metric-icon{border:1px solid var(--border);width:34px;height:34px;color:var(--muted);border-radius:8px;place-items:center;display:grid}.metric-label{color:var(--muted);font-size:12px}.metric-value{font-variant-numeric:tabular-nums;margin:7px 0;font-size:30px;font-weight:600;line-height:1.3}.metric-value small{color:var(--muted);font-size:15px;font-weight:400}.metric-card>.muted{font-size:11px}.grid{gap:20px;margin-bottom:20px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.card{border:1px solid var(--border);background:var(--surface);overflow-wrap:anywhere;border-radius:10px;min-width:0;margin-bottom:20px;padding:24px}.grid>.card,.agent-grid>.card{margin-bottom:0}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-bottom:20px;display:flex}.card-head .muted{margin-top:5px;font-size:12px}.list-row{border-top:1px solid var(--border);align-items:center;gap:14px;min-height:72px;padding:16px 0;display:flex}.list-row:first-child{border-top:0;padding-top:0}.list-row:last-child{padding-bottom:0}.row-main{overflow-wrap:anywhere;flex:1;min-width:0}.row-main>strong{font-size:13px;font-weight:550}.row-main>.muted{margin-top:4px;font-size:11px;display:block}.row-end{flex-shrink:0}.row-icon{background:var(--surface-raised);width:36px;height:36px;color:var(--muted);border-radius:8px;flex-shrink:0;place-items:center;display:grid}.quick-link{border-top:1px solid var(--border);align-items:center;gap:14px;min-height:72px;padding:15px 0;display:flex}.quick-link:first-child{border-top:none;padding-top:0}.quick-link:last-child{padding-bottom:0}.quick-link>svg{width:16px;color:var(--muted)}.quick-link:hover .row-icon{color:var(--good);background:var(--accent-soft)}.status{color:var(--muted);background:var(--surface-raised);overflow-wrap:anywhere;border-radius:5px;align-items:center;gap:5px;max-width:100%;padding:4px 7px;font-size:10px;font-weight:500;line-height:1.4;display:inline-flex}.status svg{width:12px;height:12px}.status.good{color:var(--good);background:var(--good-bg)}.status.warning{color:var(--warn);background:var(--warn-bg)}.status.bad{color:var(--bad);background:var(--bad-bg)}.tag{border:1px solid var(--border);color:var(--muted);border-radius:5px;max-width:100%;padding:3px 7px;font-size:10px;display:inline-block}.tags{flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px;display:flex}.facts{margin:0}.facts>div{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:24px;padding:13px 0;display:flex}.facts>div:first-child{border-top:0}.facts dt{color:var(--muted);flex-shrink:0;font-size:12px}.facts dd{text-align:right;overflow-wrap:anywhere;min-width:0;margin:0;font-size:12px}.card>.actions{margin-top:20px}.callout{background:var(--surface-raised);color:var(--muted);border-radius:7px;gap:10px;margin-top:18px;padding:12px;font-size:12px;display:flex}.warning-text{color:var(--warn);background:var(--warn-bg)}.all-clear{align-items:center;gap:16px;min-height:148px;display:flex}.clear-icon,.boundary-icon{width:42px;height:42px;color:var(--good);background:var(--good-bg);border-radius:10px;flex-shrink:0;place-items:center;display:grid}.all-clear h3{margin-bottom:6px;font-size:14px}.boundary-icon{margin-bottom:18px}.boundary-icon+h3{margin-bottom:12px}.agent-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.agent-card{flex-direction:column;display:flex}.agent-top{align-items:center;gap:14px;margin-bottom:20px;display:flex}.agent-avatar{background:var(--accent-soft);width:44px;height:44px;color:var(--good);border-radius:11px;flex-shrink:0;place-items:center;display:grid}.agent-description{color:var(--muted);margin-bottom:20px}.agent-status{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.agent-status>.muted{font:11px var(--mono);overflow-wrap:anywhere}.agent-card .actions{margin-top:auto}.code-block{background:var(--code-bg);border:1px solid var(--border);overflow-wrap:anywhere;white-space:pre-wrap;border-radius:7px;margin:18px 0;padding:12px 14px;display:block}.page-note{color:var(--muted);align-items:flex-start;gap:8px;margin-top:24px;font-size:12px;display:flex}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.segmented{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:4px;padding:4px;display:flex}.segmented button{color:var(--muted);background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;min-height:36px;padding:8px 12px;font-size:12px;display:flex}.segmented button:hover{background:var(--surface-raised)}.segmented button[aria-pressed=true]{color:var(--text);background:var(--surface-raised)}.segmented span{background:var(--bg);border-radius:4px;padding:1px 5px;font-size:10px}.search{background:var(--surface);border:1px solid var(--border);width:280px;min-height:44px;color:var(--muted);border-radius:8px;align-items:center;gap:10px;padding:0 12px;display:flex}.search:focus-within{outline:2px solid var(--focus);outline-offset:2px}.search input{color:var(--text);background:0 0;border:0;outline:none;width:100%;min-width:0;padding:10px 0;font-size:13px}input::placeholder{color:var(--muted);opacity:1}.service-list{padding:0 24px}.service-table-head,.service-item{grid-template-columns:minmax(0,1fr) 112px 170px;align-items:center;gap:20px;display:grid}.service-table-head{color:var(--muted);padding:16px 0;font-size:11px}.service-table-head>:last-child{text-align:right}.service-item{border-top:1px solid var(--border);padding:18px 0}.service-name{align-items:center;gap:14px;min-width:0;display:flex}.service-item>.status{justify-self:start}.service-actions{flex-wrap:nowrap;justify-content:flex-end}.service-meta{flex-wrap:wrap;align-items:center;gap:10px;margin-top:7px;display:flex}.service-meta code{color:var(--muted);font-size:10px}.resource-summary{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:16px;margin-bottom:20px;padding:20px;display:flex}.resource-summary>div{flex:1;min-width:0}.resource-summary .muted{margin-top:3px;font-size:12px}.resource-row{border-top:1px solid var(--border);align-items:flex-start;gap:16px;padding:24px 0;display:flex}.resource-row:first-child{border-top:0;padding-top:0}.resource-row:last-child{padding-bottom:0}.resource-title{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.resource-title h2{font-size:14px}.skill-description{color:var(--muted);max-width:75ch;font-size:12px}.resource-row>.button,.resource-row>.actions{flex-shrink:0}.feature-value{overflow-wrap:anywhere;margin-bottom:12px;font-size:20px}.feature-value+p{margin-bottom:20px}.port-list{max-height:380px;padding-right:6px;overflow-y:auto}.empty{text-align:center;padding:40px 20px}.empty-mark{background:var(--surface-raised);width:48px;height:48px;color:var(--muted);border-radius:12px;place-items:center;margin-bottom:16px;display:inline-grid}.empty p{color:var(--muted);max-width:42ch;margin:8px auto 20px}.page-footer{color:var(--muted);border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;margin-top:40px;padding-top:20px;font-size:10px;display:flex}.page-footer>:first-child{font-weight:600}.banner{border:1px solid var(--border);background:var(--surface);overflow-wrap:anywhere;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin:16px 40px 0;padding:12px 16px;font-size:13px;display:flex}.banner>span,.banner>div:first-child{min-width:0}.error-banner{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}.error-banner p{margin-top:4px;font-size:12px}.modal{border:1px solid var(--border);width:min(560px,100% - 32px);max-height:calc(100dvh - 48px);color:var(--text);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;padding:24px;overflow-y:auto}.modal::backdrop{background:#060b14a8}.modal-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.modal-head h2{font-size:20px}.modal-head .button{background:0 0;border-color:#0000}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:24px;display:flex}.field{gap:8px;margin-top:20px;display:grid}.node-identity-dialog .field+.muted{margin-top:16px}.field>span{font-size:12px;font-weight:600}.field input,.field textarea{background:var(--code-bg);width:100%;color:var(--text);border:1px solid var(--border);border-radius:7px;min-height:44px;padding:12px;font-size:16px}.field textarea{font-family:var(--mono);resize:vertical;font-size:13px}.choices{border:0;gap:10px;margin:20px 0;padding:0;display:grid}.choices label{border:1px solid var(--border);cursor:pointer;border-radius:7px;align-items:flex-start;gap:12px;padding:12px;display:flex}.choices label:has(:checked){border-color:var(--focus);background:var(--accent-soft)}.choices input{width:18px;height:18px;accent-color:var(--focus);margin:3px 0}.choices strong,.choices small{display:block}.choices small{color:var(--muted);margin-top:4px}.form-error{color:var(--bad);margin-top:12px}.output-modal{width:min(860px,100% - 32px)}.output-status{color:var(--muted);justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;font-size:12px;display:flex}.output-modal pre{background:var(--code-bg);border:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;min-height:220px;max-height:55dvh;margin:0;padding:20px;line-height:1.75;overflow:auto}.output-footnote{margin-top:12px;font-size:11px}.onboarding{border-color:var(--focus);margin-bottom:28px;padding:32px}.onboarding>h2{margin:8px 0;font-size:26px}.wizard-progress{gap:8px;margin-bottom:24px;display:flex}.wizard-progress span{width:28px;height:28px;color:var(--muted);border:1px solid var(--border);border-radius:50%;place-items:center;font-size:12px;display:grid}.wizard-progress .active{background:var(--accent-soft);color:var(--good);border-color:var(--good)}.wizard-body{padding:24px 0}.wizard-actions{justify-content:space-between;gap:12px;display:flex}.loading-state{min-height:65dvh;padding-top:8px}.loading-header,.loading-hero,.loading-cards span{border:1px solid var(--border);background:var(--surface);border-radius:10px}.loading-header{width:45%;height:76px;margin-bottom:28px}.loading-hero{height:230px;margin-bottom:20px}.loading-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.loading-cards span{height:180px}.loading-state>p{text-align:center;color:var(--muted);margin-top:24px}@media (min-width:1600px){.agent-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:1200px){.sidebar{width:208px}.workspace-shell{width:calc(100% - 208px);margin-left:208px}.brand{padding-inline:20px}.page-content{padding:28px}.topbar,.sync-bar{padding-inline:28px}.banner{margin-inline:28px}.metrics{gap:12px}.metric-card{padding:16px}.workspace-illustration{width:140px}.service-table-head,.service-item{grid-template-columns:minmax(0,1fr) 90px 170px;gap:12px}.grid.two{grid-template-columns:1fr}}@media (max-width:900px){.sidebar{width:240px;transition:transform .18s;transform:translate(-100%)}.sidebar.menu-open{transform:translate(0)}.workspace-shell{width:100%;margin-left:0}.mobile-menu{display:block}.menu-scrim{z-index:20;background:#060b14a8;border:0;display:block;position:fixed;inset:0}.topbar{min-height:68px}.topbar,.sync-bar{padding-inline:24px}.page-content{padding:28px 24px 20px}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.breadcrumb{gap:10px}.topbar-actions{gap:4px}.topbar-actions .button{min-width:40px;padding-inline:10px}.banner{margin-inline:24px}.button{min-height:44px}.icon-button{width:44px;height:44px}.segmented button{min-height:40px}}@media (max-width:600px){body{font-size:16px}.topbar{gap:6px;padding:12px 16px}.breadcrumb-workspace,.breadcrumb-separator{display:none}.breadcrumb{gap:8px}.breadcrumb strong{font-size:12px}.topbar-actions{gap:2px}.topbar-actions .button{width:40px;min-width:40px;padding:8px}.sync-bar{flex-wrap:wrap;padding:10px 16px;font-size:10px}.sync-controls{gap:10px}.page-content{padding:24px 16px 20px}.page-head{flex-direction:column;align-items:flex-start;gap:16px;margin-bottom:24px}.page-head p{font-size:14px}.page-head .button{font-size:13px}.welcome-panel{padding:24px}.workspace-illustration{display:none}.welcome-status .muted{font-size:11px}.welcome-panel p{font-size:14px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metric-card{padding:16px}.metric-card>.muted{font-size:11px}.metric-value{font-size:28px}.card{padding:20px}.card-head{gap:8px}.row-main>.muted{font-size:12px}.row-main>strong{font-size:13px}.row-icon{width:32px;height:32px}.list-row{flex-wrap:wrap;gap:10px}.row-end{max-width:100%}.status{font-size:11px}.agent-grid{grid-template-columns:1fr}.agent-description{font-size:14px}.toolbar{gap:12px}.segmented{width:100%}.segmented button{flex:1;justify-content:center;min-height:44px;padding-inline:8px}.search{width:100%}.search input{font-size:16px}.service-list{padding:0 16px}.service-table-head{display:none}.service-item{flex-wrap:wrap;gap:12px;padding:20px 0;display:flex}.service-item:first-of-type{border-top:0}.service-name{flex:1;gap:10px;min-width:0}.service-item>.status{margin-left:auto}.service-actions{justify-content:flex-start;width:100%;padding-left:42px}.service-meta{gap:6px}.resource-summary{flex-wrap:wrap;gap:12px;padding:16px}.resource-summary .muted{font-size:12px}.resource-row{flex-wrap:wrap;gap:12px}.resource-row>.row-main{min-width:calc(100% - 48px)}.resource-row>.actions,.resource-row>.button{margin-left:44px}.resource-title h2{font-size:14px}.skill-description{font-size:13px}.facts>div{gap:12px}.facts dt,.facts dd{font-size:12px}.feature-value{font-size:18px}.all-clear{align-items:flex-start;min-height:100px}.banner{flex-wrap:wrap;margin-inline:16px;padding:12px}.modal{max-height:calc(100dvh - 32px);padding:20px}.modal-head h2{font-size:18px}.modal-actions{gap:8px}.modal-actions .button{font-size:12px}.output-status{flex-wrap:wrap}.output-modal pre{padding:12px}.onboarding{padding:24px}.wizard-actions{flex-wrap:wrap}.page-footer{align-items:flex-start;font-size:10px}.page-footer>:last-child{text-align:right}.loading-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.loading-header{width:70%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.sidebar-brand{justify-content:space-between;align-items:center;display:flex}.mobile-menu-close{flex-shrink:0;margin-right:12px;display:none}.modal-emergency{border-top:1px solid var(--border);margin-top:20px;padding-top:16px}@media (max-width:900px){.mobile-menu-close{display:inline-flex}.sidebar-brand .brand{padding-right:8px}}.node-form{gap:16px;margin-top:20px;display:grid}.node-host .button{min-height:44px}@media (max-width:600px){.node-host .row-end,.node-host .row-end .button{width:100%}}.node-list .list-row{flex-wrap:wrap}.node-list .row-end{width:100%;min-width:0}.node-list .row-end .actions{align-items:flex-end}.node-list .row-end .field{flex:140px;min-width:0;max-width:240px;margin-top:0}.field select{border:1px solid var(--border);background:var(--surface);width:100%;min-height:44px;color:var(--text);font:inherit;border-radius:8px;padding:10px 12px}.history-output{background:var(--bg);font:13px/1.6 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;max-height:520px;padding:16px;overflow:auto}.sidebar nav{min-height:0;overflow:auto}.personal,.pa-legacy,.pa-sheet{--pa-bg:#f8faf9;--pa-surface:#fff;--pa-fg:#172b28;--pa-muted:#576b66;--pa-line:#dce6e1;--pa-soft:#edf3ef;--pa-brand:#166548;--pa-on-brand:#fff;--pa-danger:#a82e35;--pa-warn:#81520b;color:var(--pa-fg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font:400 1rem/1.6 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.personal[data-theme=dark],.pa-legacy[data-theme=dark],html[data-theme=dark] .pa-sheet{--pa-bg:#101b19;--pa-surface:#182723;--pa-fg:#e9f3ec;--pa-muted:#a8beb4;--pa-line:#354b41;--pa-soft:#23382e;--pa-brand:#81d7aa;--pa-on-brand:#102b1b;--pa-danger:#ffabb0;--pa-warn:#f6ce87;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.personal{background:var(--pa-bg);isolation:isolate;text-align:left;min-height:100dvh;display:flex}.personal *,.pa-sheet *{box-sizing:border-box}.personal button,.pa-sheet button,.pa-advanced-bar button{font:inherit;cursor:pointer;background:var(--pa-surface);color:var(--pa-fg);border:1px solid var(--pa-line);border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:9px 15px;transition:background .15s,color .15s;display:inline-flex}.personal button:hover,.pa-sheet button:hover{background:var(--pa-soft)}.personal button:disabled,.pa-sheet button:disabled{opacity:.5;cursor:wait}.personal .pa-primary,.pa-sheet .pa-primary{background:var(--pa-brand);color:var(--pa-on-brand);border-color:var(--pa-brand)}.personal .pa-primary:hover,.pa-sheet .pa-primary:hover{filter:brightness(1.1);background:var(--pa-brand)}.personal :focus-visible,.pa-sheet :focus-visible{outline:3px solid var(--pa-brand);outline-offset:3px}.personal h1,.personal h2,.personal h3,.pa-sheet h2,.pa-sheet h3{color:var(--pa-fg);letter-spacing:-.025em;text-wrap:balance;line-height:1.3}.personal h1{margin:0 0 12px;font-size:clamp(1.7rem,2.5vw,2.35rem);font-weight:600}.personal h2,.pa-sheet h2{margin:0 0 12px;font-size:1.2rem;font-weight:600}.personal h3{margin:0;font-size:1rem;font-weight:600}.personal p,.pa-sheet p{margin:8px 0 18px}.personal small,.pa-sheet small{color:var(--pa-muted);font-size:.8125rem}.personal a{color:inherit}.personal input,.personal select,.pa-sheet input,.pa-sheet select{font:inherit;background:var(--pa-surface);max-width:100%;min-height:44px;color:var(--pa-fg);border:1px solid var(--pa-line);border-radius:9px;padding:10px 12px}.personal label,.pa-sheet label{margin:14px 0;font-size:.9375rem;display:block}.pa-sheet label input:not([type=checkbox]),.pa-sheet label select{width:100%;margin:7px 0;display:block}.personal fieldset,.pa-sheet fieldset{border:1px solid var(--pa-line);border-radius:12px;margin:16px 0;padding:12px 16px}.personal summary,.pa-sheet summary{cursor:pointer;min-height:44px;padding:10px 0}.pa-sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.personal .pa-skip{z-index:100;background:var(--pa-surface);border:2px solid var(--pa-brand);padding:12px;position:fixed;top:-100px;left:16px}.personal .pa-skip:focus{top:12px}.pa-sidebar{background:var(--pa-surface);border-right:1px solid var(--pa-line);z-index:30;flex-direction:column;width:236px;padding:32px 20px;display:flex;position:fixed;inset:0 auto 0 0}.pa-brand{letter-spacing:-.04em;align-items:center;gap:12px;padding:0 8px 36px;font-size:1.2rem;font-weight:650;text-decoration:none;display:flex}.pa-brand small{letter-spacing:0;margin-top:3px;font-size:.75rem;font-weight:400;display:block}.pa-brand-icon{background:var(--pa-brand);color:var(--pa-on-brand);border-radius:13px;flex-shrink:0;place-items:center;width:42px;height:42px;display:grid}.pa-sidebar nav{gap:7px;display:grid}.personal .pa-sidebar nav button{color:var(--pa-muted);background:0 0;border:0;justify-content:flex-start;gap:14px;min-height:48px;padding:12px 16px}.personal .pa-sidebar nav button[aria-current=page]{background:var(--pa-soft);color:var(--pa-brand);font-weight:600}.pa-sidebar nav b,.pa-bell b{background:var(--pa-brand);min-width:20px;height:20px;color:var(--pa-on-brand);border-radius:20px;place-items:center;margin-left:auto;font-size:.7rem;display:grid}.pa-sidebar-bottom{border-top:1px solid var(--pa-line);align-items:center;gap:10px;margin-top:auto;padding:24px 8px 0;display:flex}.pa-sidebar-bottom strong{font-size:.8125rem;font-weight:500;display:block}.pa-sidebar-bottom small{font-size:.7rem}.pa-shell{flex-direction:column;flex:1;min-width:0;min-height:100dvh;margin-left:236px;display:flex}.pa-topbar{background:var(--pa-bg);border-bottom:1px solid var(--pa-line);justify-content:space-between;align-items:center;gap:12px;height:auto;min-height:80px;padding:16px 40px;display:flex}.pa-row{align-items:center;gap:12px;min-width:0;display:flex}.pa-wrap{flex-wrap:wrap}.pa-grow{overflow-wrap:anywhere;flex:1;min-width:0}.personal .pa-icon,.pa-sheet .pa-icon{background:0 0;border-color:#0000;flex-shrink:0;width:44px;min-width:44px;height:44px;padding:10px}.personal .pa-mobile{display:none}.personal .pa-device-picker{align-items:center;gap:8px;min-width:0;margin:0;font-size:.875rem;display:flex}.personal .pa-device-picker select{background:0 0;border:0;min-width:0;max-width:240px}.personal .pa-status{background:var(--pa-soft);color:var(--pa-muted);border:0;border-radius:24px;min-height:38px;padding:7px 12px;font-size:.8125rem}.personal .pa-status.connected{color:var(--pa-brand)}.personal .pa-status.attention,.personal .pa-status.local{color:var(--pa-warn)}.pa-bell{position:relative}.pa-bell b{position:absolute;top:0;right:0}.pa-main{outline:0;flex:1;align-self:center;width:100%;max-width:1180px;padding:40px}.pa-page-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin:10px 0 32px;display:flex}.pa-page-heading p{color:var(--pa-muted);max-width:65ch;margin:0;font-size:.9375rem}.pa-page-heading .pa-eyebrow{letter-spacing:.12em;color:var(--pa-brand);margin-bottom:14px;font-size:.675rem;font-weight:650}.pa-page-heading>button{flex-shrink:0}.pa-card{border:1px solid var(--pa-line);background:var(--pa-surface);overflow-wrap:anywhere;border-radius:16px;min-width:0;margin:0 0 18px;padding:24px;box-shadow:0 2px 5px #162d1b03}.pa-card>.pa-row{margin-bottom:16px}.pa-card-icon{background:var(--pa-soft);width:44px;height:44px;color:var(--pa-brand);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.pa-pill{border:1px solid var(--pa-line);color:var(--pa-muted);overflow-wrap:anywhere;border-radius:6px;max-width:100%;padding:2px 7px;font-size:.75rem;line-height:1.6;display:inline-block}.pa-pill.good{background:var(--pa-soft);color:var(--pa-brand);border-color:#0000}.pa-pill.warn{color:var(--pa-warn)}.pa-device-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:18px;display:grid}.pa-device-grid .pa-card{margin:0}.pa-section{margin:32px 0}.pa-section>h2{margin-bottom:16px;font-size:.9375rem}.pa-dot{background:var(--pa-muted);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.pa-dot.online{background:var(--pa-brand)}.pa-muted{color:var(--pa-muted)}.pa-actions{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.personal .pa-danger{color:var(--pa-danger)}.personal .pa-check,.pa-sheet .pa-check{align-items:center;gap:10px;min-height:44px;margin:4px 0;display:flex}.pa-check input[type=checkbox]{accent-color:var(--pa-brand);flex-shrink:0;width:19px;height:19px;min-height:0;padding:0}.pa-cap-list{border-top:1px solid var(--pa-line);margin-top:16px;padding-top:12px}.pa-agent-list{gap:0;display:grid}.pa-agent-row{border-bottom:1px solid var(--pa-line);align-items:center;gap:14px;min-width:0;padding:18px 0;display:flex}.pa-agent-row:first-child{padding-top:0}.pa-agent-row:last-child{border:0;padding-bottom:0}.pa-agent-row strong{font-size:.9375rem}.personal .pa-model-select{min-width:0;max-width:46%;margin:0}.pa-model-select select{text-overflow:ellipsis;width:100%;font-size:.8125rem}.pa-setting{border-bottom:1px solid var(--pa-line);justify-content:space-between;align-items:center;gap:16px;padding:16px 0;display:flex}.pa-setting:first-child{padding-top:0}.pa-setting:last-child{border:0;padding-bottom:0}.pa-setting h2{margin:0;font-size:1rem}.pa-setting p{color:var(--pa-muted);margin:6px 0;font-size:.875rem}.pa-setting>button{flex-shrink:0}.pa-welcome-card{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:400px;padding:56px 24px;display:flex}.pa-welcome-card h2{margin:24px 0 12px;font-size:1.7rem}.pa-welcome-card p{max-width:50ch;color:var(--pa-muted);font-size:.9375rem}.pa-welcome-card .pa-actions{margin:8px 0 20px}.pa-orb{color:var(--pa-brand);background:var(--pa-soft);border-radius:26px;place-items:center;width:84px;height:84px;display:grid}.pa-conversation{border:1px solid var(--pa-line);background:var(--pa-surface);border-radius:16px;height:calc(100dvh - 280px);min-height:480px;overflow:hidden}.pa-conversation iframe{border:0;width:100%;height:100%;display:block}.personal .pa-pending{justify-content:flex-start;width:100%;margin:16px 0}.pa-pending svg:last-child{margin-left:auto}.pa-empty{text-align:center;color:var(--pa-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:64px 20px;display:flex}.pa-empty h2,.pa-empty p{margin:0}.pa-footer{color:var(--pa-muted);justify-content:center;align-items:center;gap:7px;padding:16px 20px 24px;font-size:.7rem;display:flex}.pa-error,.pa-notice{border:1px solid var(--pa-line);overflow-wrap:anywhere;background:var(--pa-surface);border-radius:10px;margin:0 0 20px;padding:14px 16px}.pa-error{color:var(--pa-danger)}.pa-notice{color:var(--pa-brand);justify-content:space-between;align-items:center;display:flex}.pa-sheet{background:var(--pa-surface);border:1px solid var(--pa-line);border-radius:20px;width:min(540px,100% - 32px);max-height:calc(100dvh - 40px);margin:auto;padding:28px;overflow-y:auto;box-shadow:0 24px 80px #071b1933}.pa-sheet::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0e201b73}.pa-sheet-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.pa-sheet-head h2{margin:0}.pa-full{width:100%;margin-top:12px}.pa-segment{background:var(--pa-soft);border-radius:10px;gap:4px;margin-bottom:20px;padding:4px;display:flex}.pa-sheet .pa-segment button{background:0 0;border-color:#0000;flex:1;min-height:40px;padding:8px;font-size:.8125rem}.pa-sheet .pa-segment button[aria-pressed=true]{background:var(--pa-surface);color:var(--pa-brand);box-shadow:0 1px 3px #14241b15}.pa-divider{color:var(--pa-muted);align-items:center;gap:12px;margin:24px 0;font-size:.8125rem;display:flex}.pa-divider:before,.pa-divider:after{content:"";background:var(--pa-line);flex:1;height:1px}.pa-qr{flex-direction:column;align-items:center;gap:8px;display:flex}.pa-qr canvas{background:#fff;border-radius:8px;width:200px;height:200px}.pa-qr label{width:100%;min-width:0}.pa-qr label input{font-size:.8125rem}.pa-sas{text-align:center;padding:16px 0}.pa-sas>svg{color:var(--pa-brand)}.pa-sas code{letter-spacing:.1em;border:1px solid var(--pa-line);background:var(--pa-soft);color:var(--pa-fg);overflow-wrap:anywhere;margin:24px 0;padding:20px 10px;font-family:ui-monospace,monospace;font-size:clamp(1.5rem,5vw,2rem);display:block}.pa-sas .pa-actions{justify-content:center}.pa-onboarding{text-align:center}.pa-onboarding .pa-orb{margin:24px auto}.pa-onboard-progress{gap:6px;margin-bottom:24px;display:flex}.pa-onboard-progress span{background:var(--pa-line);border-radius:3px;flex:1;height:3px}.pa-onboard-progress .done{background:var(--pa-brand)}.pa-untrusted{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--pa-soft);border-radius:10px;max-height:300px;padding:16px;font-size:.9375rem;overflow:auto}.pa-approval>.pa-row:last-child{justify-content:space-between;margin-bottom:0}.pa-advanced{width:100%;min-width:0}.pa-advanced-bar{background:var(--pa-surface);border-bottom:1px solid var(--pa-line);z-index:41;align-items:center;gap:20px;padding:12px 24px;display:flex;position:relative}.pa-advanced-bar p{color:var(--pa-muted);margin:0;font-size:.8125rem}.pa-advanced>.app{height:calc(100dvh - 69px);min-height:0}.pa-nav-scrim{display:none!important}.pa-spin{animation:1s linear infinite pa-spin}@keyframes pa-spin{to{transform:rotate(360deg)}}@media (max-width:1023px){.pa-sidebar{width:204px;padding-inline:12px}.pa-shell{margin-left:204px}.pa-topbar{padding:16px 24px}.pa-main{padding:28px 24px}.pa-device-picker select{max-width:160px!important}.pa-brand{font-size:1.1rem}}@media (max-width:767px){.pa-sidebar{width:240px;transform:translate(-100%)}.pa-sidebar.is-open{transform:translate(0)}.pa-shell{margin-left:0}.personal .pa-mobile{display:inline-flex}.personal .pa-nav-scrim{z-index:20;background:#0e201b73;border:0;border-radius:0;position:fixed;inset:0;display:block!important}.pa-topbar{flex-wrap:wrap;min-height:72px;padding:12px 16px}.pa-topbar>.pa-row{gap:6px}.personal .pa-device-picker{gap:0}.pa-device-picker>svg{display:none}.personal .pa-device-picker select{max-width:140px;padding-inline:4px;font-size:.8125rem}.personal .pa-status{padding:6px 9px;font-size:.75rem}.pa-topbar .pa-bell{width:36px;min-width:36px}.pa-main{padding:24px 18px}.pa-page-heading{flex-wrap:wrap;gap:16px;margin:0 0 24px}.pa-page-heading h1{font-size:1.7rem}.pa-card{padding:20px}.pa-agent-row{flex-wrap:wrap}.personal .pa-model-select{width:100%;max-width:100%;margin-left:58px}.pa-welcome-card{min-height:360px;padding:40px 20px}.pa-welcome-card h2{font-size:1.4rem}.pa-welcome-card .pa-actions{justify-content:center}.pa-setting{flex-wrap:wrap}.pa-sheet{padding:24px 20px}.pa-approval>.pa-row:last-child{flex-wrap:wrap}.pa-approval .pa-actions{justify-content:flex-end;width:100%;margin:4px 0 0}.pa-advanced-bar{padding:8px 16px}.pa-advanced-bar p{display:none}.pa-conversation{height:calc(100dvh - 280px);min-height:400px}}@media (prefers-reduced-motion:reduce){.personal *,.pa-sheet *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.terminal-workbench{height:100%;min-height:0;display:flex;overflow:hidden}.terminal-sidebar{background:var(--sidebar);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:260px;min-height:0;display:flex}.terminal-target{border-bottom:1px solid var(--border);color:var(--muted);align-items:center;gap:10px;padding:14px 16px;display:flex}.terminal-target label{flex:1;min-width:0}.terminal-target select{background:var(--sidebar);width:100%;min-height:44px;color:var(--text);font:inherit;cursor:pointer;border:0;border-radius:5px;padding:8px 4px;font-size:13px}.terminal-list-heading{justify-content:space-between;align-items:center;gap:8px;padding:12px 12px 4px 18px;display:flex}.terminal-list-heading h2{font-size:13px}.terminal-list-heading h2 span{font:11px var(--mono);color:var(--muted);margin-left:5px}.terminal-list-heading .actions{gap:2px}.terminal-workbench .button,.terminal-session-drawer .button{min-height:44px}.terminal-workbench .icon-button,.terminal-session-drawer .icon-button{width:44px;min-width:44px;height:44px}.terminal-list-heading .button,.terminal-tabs-bar>.button,.terminal-pane-actions>.button{background:0 0;border-color:#0000}.terminal-search{color:var(--muted);border:1px solid var(--border);background:var(--bg);border-radius:7px;align-items:center;gap:8px;min-height:40px;margin:4px 14px 14px;padding:0 10px;display:flex}.terminal-search input{width:100%;min-width:0;color:var(--text);font:inherit;outline-offset:5px;background:0 0;border:0;padding:8px 0;font-size:13px}.terminal-session-list{flex:1;min-height:0;padding:0 8px 16px;overflow-y:auto}.terminal-session-row{border-radius:7px;align-items:center;min-width:0;margin-bottom:4px;display:flex;position:relative}.terminal-session-row:hover{background:var(--surface)}.terminal-session-row.selected{background:var(--accent-soft)}.terminal-session-row.selected .terminal-session-select>svg{color:var(--good)}.terminal-session-select{min-width:0;min-height:64px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:7px;flex:1;align-items:center;gap:10px;padding:8px 10px;display:flex}.terminal-session-select>svg{color:var(--muted)}.terminal-session-select>span:first-of-type{flex:1;min-width:0}.terminal-session-select strong,.terminal-session-select small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.terminal-session-select strong{font-size:13px;font-weight:550}.terminal-session-select small{font:11px/1.7 var(--mono);color:var(--muted);margin-top:3px}.terminal-session-dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:6px;height:6px}.terminal-session-dot.running{background:var(--good)}.terminal-menu{flex-shrink:0;position:relative}.terminal-menu>button{cursor:pointer;width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.terminal-menu>button:hover,.terminal-menu>button[aria-expanded=true]{background:var(--surface-raised);color:var(--text)}.terminal-menu-items{width:224px;max-height:calc(100dvh - 16px);color:var(--text);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow);z-index:10;border-radius:9px;margin:0;padding:6px;position:fixed;inset:auto;overflow-y:auto}.terminal-menu-items button{color:inherit;text-align:left;background:0 0;border:0;border-radius:5px;width:100%;min-height:44px;padding:9px 12px;font-size:13px;display:block}.terminal-menu-items .danger-text{color:var(--bad)}.terminal-menu-items button:hover{background:var(--surface)}.terminal-list-empty{text-align:center;color:var(--muted);justify-items:center;gap:8px;padding:36px 12px;display:grid}.terminal-list-empty p{font-size:13px}.terminal-list-empty span{font-size:12px}.terminal-list-note{color:var(--warn);margin:0 16px 16px;font-size:13px}.terminal-sidebar-foot{border-top:1px solid var(--border);color:var(--muted);align-items:center;gap:8px;padding:14px 16px;font-size:11px;display:flex}.terminal-stage{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.terminal-tabs-bar{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:2px;min-height:52px;padding:0 8px;display:flex}.terminal-tabs{scrollbar-width:thin;flex:1;align-self:stretch;min-width:0;display:flex;overflow-x:auto}.terminal-tab{border-right:1px solid var(--border);flex-shrink:0;align-items:center;max-width:220px;display:flex;position:relative}.terminal-tab.active{background:var(--bg);box-shadow:inset 0 -2px var(--accent)}.terminal-tab.beside{box-shadow:inset 0 -2px var(--muted)}.terminal-tab>button[role=tab]{min-width:0;min-height:50px;color:var(--muted);background:0 0;border:0;align-items:center;gap:8px;padding:0 8px 0 14px;font-size:12px;display:flex}.terminal-tab.active>button[role=tab]{color:var(--text)}.terminal-tab>button[role=tab] span{white-space:nowrap;text-overflow:ellipsis;max-width:124px;overflow:hidden}.terminal-tab-close{min-width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.terminal-tab-close:hover{color:var(--text);background:var(--surface-raised)}.terminal-drawer-toggle{display:none}.terminal-panes{flex:1;min-width:0;min-height:0;display:flex}.terminal-panel{flex:1;min-width:0;min-height:0;display:none}.terminal-panel.active,.terminal-panel.beside{display:flex}.terminal-panes.is-split>.terminal-panel.beside{border-left:1px solid var(--border)}.terminal-pane{background:var(--bg);flex-direction:column;width:100%;min-width:0;min-height:0;display:flex}.terminal-pane:fullscreen{background:var(--bg);height:100dvh}.terminal-pane-head{border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;min-height:66px;padding:8px 12px 8px 16px;display:flex}.terminal-pane-title{min-width:0}.terminal-pane-title strong,.terminal-pane-title>span{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.terminal-pane-title strong{font-size:13px;font-weight:550}.terminal-pane-title>span{font:11px/1.6 var(--mono);color:var(--muted)}.terminal-pane-actions{flex-shrink:0;align-items:center;gap:2px;display:flex}.terminal-pane-actions .status{padding:3px 7px;font-size:10px}.terminal-pane-actions .status svg{width:12px}.terminal-canvas{background:#0f141c;flex:1;min-height:0;position:relative}.terminal-screen{min-width:0;height:100%;padding:12px 12px 8px 16px;overflow:hidden}.terminal-screen .xterm{height:100%}.terminal-detached{color:#a8b4c6;text-align:center;background:#0f141ce6;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:20px;font-size:13px;display:flex;position:absolute;inset:0}.terminal-input-area{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.terminal-keybar{scrollbar-width:none;align-items:center;gap:4px;padding:4px 8px;display:flex;overflow-x:auto}.terminal-keybar::-webkit-scrollbar{display:none}.terminal-key{min-width:44px;height:44px;color:var(--muted);font:11px var(--mono);background:0 0;border:0;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;padding:0 10px;display:flex}.terminal-key:hover,.terminal-key:active{background:var(--surface-raised);color:var(--text)}.terminal-input-toggle{margin-left:auto}.terminal-composer{border:1px solid var(--border);background:var(--bg);border-radius:9px;align-items:end;gap:8px;margin:0 12px 12px;padding:6px;display:none}.terminal-composer.is-shown{display:flex}.terminal-composer:focus-within{border-color:var(--focus)}.terminal-composer textarea{field-sizing:content;resize:none;min-width:0;min-height:44px;max-height:100px;color:var(--text);font:16px/1.5 var(--mono);outline-offset:-2px;background:0 0;border:0;flex:1;padding:10px}.terminal-send{background:var(--accent);width:44px;min-width:44px;height:44px;color:var(--on-accent);border:0;border-radius:6px;place-items:center;display:grid}.terminal-send:hover{background:var(--accent-hover)}.terminal-alert{background:var(--bad-bg);color:var(--bad);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;max-height:180px;padding:8px 12px;font-size:13px;display:flex;overflow-y:auto}.terminal-alert span{overflow-wrap:anywhere;min-width:0}.terminal-welcome{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;width:100%;min-width:0;padding:24px;display:flex}.terminal-welcome-mark{border:1px solid var(--border);background:var(--surface);width:72px;height:72px;color:var(--good);border-radius:18px;place-items:center;margin-bottom:4px;display:grid}.terminal-welcome h2{font-size:22px;font-weight:550}.terminal-welcome p{color:var(--muted);max-width:350px;font-size:14px}.terminal-welcome>span{color:var(--muted);align-items:center;gap:7px;margin-top:12px;font-size:12px;display:flex}.terminal-statusbar{border-top:1px solid var(--border);min-height:30px;color:var(--muted);background:var(--sidebar);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:4px 14px;font-size:10px;display:flex}.terminal-statusbar>span{align-items:center;gap:6px;min-width:0;display:flex}.terminal-statusbar>span:first-child{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.terminal-dialog-machine{color:var(--muted);align-items:center;gap:8px;margin-bottom:20px;font-size:13px;display:flex}.terminal-directory{color:var(--muted);margin:16px 0;font-size:13px}.terminal-directory summary{cursor:pointer;min-height:44px;padding-block:10px}.terminal-directory .field{margin-top:8px}.terminal-session-drawer{border-radius:0;flex-direction:column;width:min(340px,100% - 32px);height:100%;max-height:none;margin:0;padding:0;display:flex;position:fixed;inset:0 auto 0 0}.terminal-session-drawer .modal-head{border-bottom:1px solid var(--border);margin:0;padding:12px 14px}.terminal-session-drawer .terminal-search input{font-size:16px}@media (min-width:901px) and (max-width:1100px){.terminal-sidebar{width:230px}.terminal-panes.is-split .terminal-pane-title>span,.terminal-panes.is-split .status{display:none}}@media (max-width:900px){.terminal-sidebar{display:none}.terminal-drawer-toggle{width:44px;min-width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.terminal-panel.beside{display:none}.terminal-panes.is-split>.terminal-panel.beside{border:0}.terminal-tabs-bar{padding-inline:4px}.terminal-pane-head{padding-inline:12px}.terminal-composer{margin-bottom:8px;display:flex}.terminal-input-toggle{display:none}.terminal-input-area{padding-bottom:env(safe-area-inset-bottom,0px)}.terminal-status-hint{display:none}.terminal-screen{padding:10px 8px}}@media (max-width:600px){.terminal-pane-title>span{display:none}.terminal-tab>button[role=tab]{padding-left:10px}.terminal-tab>button[role=tab] span{max-width:96px}.terminal-pane-actions .status{padding-inline:5px;font-size:10px}.terminal-pane-actions .status svg{display:none}.terminal-welcome{padding:20px}.terminal-welcome h2{font-size:20px}.terminal-statusbar{padding-inline:10px}}@media (max-width:900px){.sidebar:not(.menu-open){visibility:hidden}}@media (max-height:500px) and (max-width:900px){.terminal-pane-head{height:44px;min-height:44px;padding-block:0}.terminal-keybar{padding-block:0}.terminal-statusbar{display:none}}.topbar{z-index:32;position:sticky;top:0}.terminal-nav-button{text-align:left;width:100%;font:inherit;background:0 0;border:0}.terminal-window-toggle{min-width:44px;height:44px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:inline-flex;position:relative}.terminal-window-toggle:hover{color:var(--text);background:var(--surface-raised)}.terminal-window-toggle.has-terminals{background:var(--accent-soft);color:var(--text);border-color:var(--border)}.terminal-window-count{background:var(--surface-raised);min-width:18px;height:18px;font:11px var(--mono);border-radius:4px;place-items:center;display:grid}.terminal-window-minimized-dot{background:var(--good);border-radius:50%;width:5px;height:5px;position:absolute;top:4px;right:4px}.terminal-window{z-index:60;border:1px solid var(--border);background:var(--bg);min-width:0;min-height:0;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;display:flex;position:fixed;overflow:hidden;container:terminal-window/inline-size}.terminal-window[hidden]{display:none}.terminal-window:focus{outline:none}.terminal-window:focus-within{border-color:var(--muted)}.terminal-window.is-moving{-webkit-user-select:none;user-select:none}.terminal-window-head{border-bottom:1px solid var(--border);background:var(--surface-raised);justify-content:space-between;align-items:center;gap:8px;height:48px;min-height:48px;padding:2px 6px 2px 12px;display:flex}.terminal-window-drag{min-width:0;height:44px;color:var(--muted);text-align:left;cursor:grab;touch-action:none;background:0 0;border:0;border-radius:5px;flex:1;align-items:center;gap:10px;display:flex}.terminal-window-drag:active{cursor:grabbing}.terminal-window-drag strong{color:var(--text);white-space:nowrap;font-size:13px;font-weight:550}.terminal-window-drag>span{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.terminal-window-actions{flex-shrink:0;align-items:center;gap:2px;display:flex}.terminal-window-actions>button{width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.terminal-window-actions>button:hover{background:var(--surface);color:var(--text)}.terminal-window-actions>button:last-child:hover{color:var(--bad);background:var(--bad-bg)}.terminal-window-body{flex:1;min-width:0;min-height:0}.terminal-window .terminal-sidebar{width:240px}.terminal-window .terminal-statusbar{padding-right:36px}.terminal-window-resize{z-index:2;touch-action:none;color:var(--muted);background:0 0;border:0;padding:0;position:absolute}.terminal-window-resize.edge-n{cursor:ns-resize;height:6px;top:0;left:20px;right:20px}.terminal-window-resize.edge-s{cursor:ns-resize;height:6px;bottom:0;left:20px;right:44px}.terminal-window-resize.edge-e{cursor:ew-resize;width:6px;top:20px;bottom:44px;right:0}.terminal-window-resize.edge-w{cursor:ew-resize;width:6px;top:20px;bottom:20px;left:0}.terminal-window-resize.edge-ne,.terminal-window-resize.edge-nw,.terminal-window-resize.edge-sw{width:20px;height:20px}.terminal-window-resize.edge-ne{cursor:nesw-resize;top:0;right:0}.terminal-window-resize.edge-nw{cursor:nwse-resize;top:0;left:0}.terminal-window-resize.edge-sw{cursor:nesw-resize;bottom:0;left:0}.terminal-window-resize.edge-se{cursor:nwse-resize;place-items:center;width:32px;height:30px;display:grid;bottom:0;right:0}.terminal-window-resize.edge-se:hover{color:var(--text);background:var(--surface-raised)}@container terminal-window (width<=900px){.terminal-sidebar{display:none}.terminal-drawer-toggle{width:44px;min-width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.terminal-panel.beside{display:none}.terminal-panes.is-split>.terminal-panel.beside{border:0}.terminal-tabs-bar{padding-inline:4px}.terminal-pane-head{padding-inline:12px}.terminal-composer{margin-bottom:8px;display:flex}.terminal-input-toggle,.terminal-status-hint{display:none}.terminal-screen{padding:10px 8px}}@container terminal-window (width<=600px){.terminal-pane-title>span{display:none}.terminal-tab>button[role=tab] span{max-width:96px}.terminal-pane-actions .status svg,.terminal-window-drag>span{display:none}}@media (max-width:900px){.terminal-window{border-bottom:0;border-radius:10px 10px 0 0}.terminal-window-maximize{display:none!important}.terminal-window-drag{cursor:default;touch-action:manipulation}}@media (max-width:600px){.terminal-window-toggle{width:44px;padding:8px}.terminal-window-toggle-label{display:none}.terminal-window-count{min-width:14px;height:14px;font-size:9px;position:absolute;bottom:-2px;right:-2px}.terminal-window-head{gap:2px;padding-left:10px}.terminal-window-drag{gap:8px}.topbar-actions .button{width:36px;min-width:36px}}@media (max-height:500px) and (max-width:900px){.terminal-window-head{height:44px;min-height:44px}.terminal-tabs-bar,.terminal-tab>button[role=tab]{min-height:44px}.terminal-composer{margin:0 8px 4px;padding:2px}.terminal-composer textarea{padding-block:6px}}
/*$vite$:1*/
\ No newline at end of file
diff --git a/addons/control-center/web.js b/addons/control-center/web.js
index d58c86d..5cbe2a0 100644
--- a/addons/control-center/web.js
+++ b/addons/control-center/web.js
@@ -1218,6 +1218,18 @@ var F = T(re), I = {
};
I.node;
var L = T(I), ie = {
+ name: "bell",
+ size: 24,
+ node: [["path", {
+ d: "M10.268 21a2 2 0 0 0 3.464 0",
+ key: "vwvbt9"
+ }], ["path", {
+ d: "M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",
+ key: "11g9vi"
+ }]]
+};
+ie.node;
+var R = T(ie), ae = {
name: "bot",
size: 24,
node: [
@@ -1251,8 +1263,8 @@ var L = T(I), ie = {
}]
]
};
-ie.node;
-var R = T(ie), ae = {
+ae.node;
+var oe = T(ae), se = {
name: "box",
size: 24,
node: [
@@ -1270,8 +1282,8 @@ var R = T(ie), ae = {
}]
]
};
-ae.node;
-var oe = T(ae), se = {
+se.node;
+var ce = T(se), le = {
name: "boxes",
size: 24,
node: [
@@ -1325,8 +1337,8 @@ var oe = T(ae), se = {
}]
]
};
-se.node;
-var ce = T(se), le = {
+le.node;
+var z = T(le), ue = {
name: "cable",
size: 24,
node: [
@@ -1360,8 +1372,8 @@ var ce = T(se), le = {
}]
]
};
-le.node;
-var z = T(le), ue = {
+ue.node;
+var de = T(ue), fe = {
name: "check-check",
size: 24,
node: [["path", {
@@ -1372,8 +1384,8 @@ var z = T(le), ue = {
key: "ke71qq"
}]]
};
-ue.node;
-var de = T(ue), fe = {
+fe.node;
+var pe = T(fe), me = {
name: "check",
size: 24,
node: [["path", {
@@ -1381,8 +1393,8 @@ var de = T(ue), fe = {
key: "1gmf2c"
}]]
};
-fe.node;
-var pe = T(fe), me = {
+me.node;
+var he = T(me), ge = {
name: "chevron-down",
size: 24,
node: [["path", {
@@ -1390,8 +1402,17 @@ var pe = T(fe), me = {
key: "qrunsl"
}]]
};
-me.node;
-var he = T(me), ge = {
+ge.node;
+var _e = T(ge), ve = {
+ name: "chevron-right",
+ size: 24,
+ node: [["path", {
+ d: "m9 18 6-6-6-6",
+ key: "mthhwq"
+ }]]
+};
+ve.node;
+var ye = T(ve), be = {
name: "chevron-up",
size: 24,
node: [["path", {
@@ -1399,8 +1420,8 @@ var he = T(me), ge = {
key: "153udz"
}]]
};
-ge.node;
-var _e = T(ge), ve = {
+be.node;
+var xe = T(be), Se = {
name: "circle-check",
size: 24,
node: [["circle", {
@@ -1414,8 +1435,8 @@ var _e = T(ge), ve = {
}]],
aliases: ["check-circle-2"]
};
-ve.node;
-var ye = T(ve), be = {
+Se.node;
+var Ce = T(Se), we = {
name: "circle-question-mark",
size: 24,
node: [
@@ -1436,8 +1457,8 @@ var ye = T(ve), be = {
],
aliases: ["help-circle", "circle-help"]
};
-be.node;
-var xe = T(be), Se = {
+we.node;
+var Te = T(we), Ee = {
name: "circle",
size: 24,
node: [["circle", {
@@ -1447,8 +1468,8 @@ var xe = T(be), Se = {
key: "1mglay"
}]]
};
-Se.node;
-var Ce = T(Se), we = {
+Ee.node;
+var De = T(Ee), Oe = {
name: "clipboard",
size: 24,
node: [["rect", {
@@ -1464,8 +1485,8 @@ var Ce = T(Se), we = {
key: "116196"
}]]
};
-we.node;
-var Te = T(we), Ee = {
+Oe.node;
+var ke = T(Oe), Ae = {
name: "code-xml",
size: 24,
node: [
@@ -1484,8 +1505,8 @@ var Te = T(we), Ee = {
],
aliases: ["code-2"]
};
-Ee.node;
-var De = T(Ee), Oe = {
+Ae.node;
+var je = T(Ae), Me = {
name: "code",
size: 24,
node: [["path", {
@@ -1496,8 +1517,8 @@ var De = T(Ee), Oe = {
key: "ppft3o"
}]]
};
-Oe.node;
-var ke = T(Oe), Ae = {
+Me.node;
+var Ne = T(Me), Pe = {
name: "columns-2",
size: 24,
node: [["rect", {
@@ -1513,8 +1534,8 @@ var ke = T(Oe), Ae = {
}]],
aliases: ["columns"]
};
-Ae.node;
-var je = T(Ae), Me = {
+Pe.node;
+var Fe = T(Pe), Ie = {
name: "copy",
size: 24,
node: [["rect", {
@@ -1530,8 +1551,8 @@ var je = T(Ae), Me = {
key: "zix9uf"
}]]
};
-Me.node;
-var Ne = T(Me), Pe = {
+Ie.node;
+var Le = T(Ie), Re = {
name: "corner-down-left",
size: 24,
node: [["path", {
@@ -1542,8 +1563,8 @@ var Ne = T(Me), Pe = {
key: "1kshq7"
}]]
};
-Pe.node;
-var Fe = T(Pe), Ie = {
+Re.node;
+var ze = T(Re), Be = {
name: "database",
size: 24,
node: [
@@ -1564,8 +1585,8 @@ var Fe = T(Pe), Ie = {
}]
]
};
-Ie.node;
-var Le = T(Ie), Re = {
+Be.node;
+var Ve = T(Be), He = {
name: "download",
size: 24,
node: [
@@ -1583,8 +1604,8 @@ var Le = T(Ie), Re = {
}]
]
};
-Re.node;
-var ze = T(Re), Be = {
+He.node;
+var Ue = T(He), We = {
name: "ellipsis",
size: 24,
node: [
@@ -1609,8 +1630,8 @@ var ze = T(Re), Be = {
],
aliases: ["more-horizontal"]
};
-Be.node;
-var Ve = T(Be), He = {
+We.node;
+var Ge = T(We), Ke = {
name: "external-link",
size: 24,
node: [
@@ -1628,8 +1649,8 @@ var Ve = T(Be), He = {
}]
]
};
-He.node;
-var Ue = T(He), We = {
+Ke.node;
+var qe = T(Ke), Je = {
name: "eye-off",
size: 24,
node: [
@@ -1651,8 +1672,8 @@ var Ue = T(He), We = {
}]
]
};
-We.node;
-var Ge = T(We), Ke = {
+Je.node;
+var Ye = T(Je), Xe = {
name: "eye",
size: 24,
node: [["path", {
@@ -1665,8 +1686,8 @@ var Ge = T(We), Ke = {
key: "1v7zrd"
}]]
};
-Ke.node;
-var qe = T(Ke), Je = {
+Xe.node;
+var Ze = T(Xe), Qe = {
name: "file-text",
size: 24,
node: [
@@ -1692,8 +1713,8 @@ var qe = T(Ke), Je = {
}]
]
};
-Je.node;
-var Ye = T(Je), Xe = {
+Qe.node;
+var $e = T(Qe), et = {
name: "folder-git-2",
size: 24,
node: [
@@ -1719,8 +1740,8 @@ var Ye = T(Je), Xe = {
}]
]
};
-Xe.node;
-var Ze = T(Xe), Qe = {
+et.node;
+var tt = T(et), nt = {
name: "folder",
size: 24,
node: [["path", {
@@ -1728,8 +1749,8 @@ var Ze = T(Xe), Qe = {
key: "1kt360"
}]]
};
-Qe.node;
-var $e = T(Qe), et = {
+nt.node;
+var rt = T(nt), it = {
name: "globe",
size: 24,
node: [
@@ -1749,8 +1770,8 @@ var $e = T(Qe), et = {
}]
]
};
-et.node;
-var tt = T(et), nt = {
+it.node;
+var at = T(it), ot = {
name: "grip",
size: 24,
node: [
@@ -1810,8 +1831,8 @@ var tt = T(et), nt = {
}]
]
};
-nt.node;
-var rt = T(nt), it = {
+ot.node;
+var st = T(ot), ct = {
name: "hard-drive",
size: 24,
node: [
@@ -1833,8 +1854,21 @@ var rt = T(nt), it = {
}]
]
};
-it.node;
-var at = T(it), ot = {
+ct.node;
+var lt = T(ct), ut = {
+ name: "house",
+ size: 24,
+ node: [["path", {
+ d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",
+ key: "5wwlr5"
+ }], ["path", {
+ d: "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
+ key: "r6nss1"
+ }]],
+ aliases: ["home"]
+};
+ut.node;
+var dt = T(ut), ft = {
name: "inbox",
size: 24,
node: [["polyline", {
@@ -1845,8 +1879,8 @@ var at = T(it), ot = {
key: "oot6mr"
}]]
};
-ot.node;
-var st = T(ot), ct = {
+ft.node;
+var pt = T(ft), mt = {
name: "key-round",
size: 24,
node: [["path", {
@@ -1860,8 +1894,8 @@ var st = T(ot), ct = {
key: "w0ekpg"
}]]
};
-ct.node;
-var lt = T(ct), ut = {
+mt.node;
+var ht = T(mt), gt = {
name: "keyboard",
size: 24,
node: [
@@ -1907,8 +1941,8 @@ var lt = T(ct), ut = {
}]
]
};
-ut.node;
-var dt = T(ut), ft = {
+gt.node;
+var _t = T(gt), vt = {
name: "laptop",
size: 24,
node: [["path", {
@@ -1919,8 +1953,8 @@ var dt = T(ut), ft = {
key: "14rxg9"
}]]
};
-ft.node;
-var pt = T(ft), mt = {
+vt.node;
+var yt = T(vt), bt = {
name: "layers",
size: 24,
node: [
@@ -1939,8 +1973,8 @@ var pt = T(ft), mt = {
],
aliases: ["layers-3"]
};
-mt.node;
-var ht = T(mt), gt = {
+bt.node;
+var xt = T(bt), St = {
name: "layout-dashboard",
size: 24,
node: [
@@ -1978,8 +2012,8 @@ var ht = T(mt), gt = {
}]
]
};
-gt.node;
-var _t = T(gt), vt = {
+St.node;
+var Ct = T(St), wt = {
name: "link-2",
size: 24,
node: [
@@ -2000,8 +2034,8 @@ var _t = T(gt), vt = {
}]
]
};
-vt.node;
-var yt = T(vt), bt = {
+wt.node;
+var Tt = T(wt), Et = {
name: "link",
size: 24,
node: [["path", {
@@ -2012,8 +2046,8 @@ var yt = T(vt), bt = {
key: "19qd67"
}]]
};
-bt.node;
-var xt = T(bt), St = {
+Et.node;
+var Dt = T(Et), Ot = {
name: "list-todo",
size: 24,
node: [
@@ -2043,8 +2077,8 @@ var xt = T(bt), St = {
}]
]
};
-St.node;
-var Ct = T(St), wt = {
+Ot.node;
+var kt = T(Ot), At = {
name: "loader-circle",
size: 24,
node: [["path", {
@@ -2053,8 +2087,8 @@ var Ct = T(St), wt = {
}]],
aliases: ["loader-2"]
};
-wt.node;
-var Tt = T(wt), Et = {
+At.node;
+var jt = T(At), Mt = {
name: "maximize-2",
size: 24,
node: [
@@ -2076,8 +2110,8 @@ var Tt = T(wt), Et = {
}]
]
};
-Et.node;
-var Dt = T(Et), Ot = {
+Mt.node;
+var Nt = T(Mt), Pt = {
name: "maximize",
size: 24,
node: [
@@ -2099,8 +2133,8 @@ var Dt = T(Et), Ot = {
}]
]
};
-Ot.node;
-var kt = T(Ot), At = {
+Pt.node;
+var Ft = T(Pt), It = {
name: "memory-stick",
size: 24,
node: [
@@ -2154,8 +2188,8 @@ var kt = T(Ot), At = {
}]
]
};
-At.node;
-var jt = T(At), Mt = {
+It.node;
+var Lt = T(It), Rt = {
name: "menu",
size: 24,
node: [
@@ -2173,8 +2207,8 @@ var jt = T(At), Mt = {
}]
]
};
-Mt.node;
-var Nt = T(Mt), Pt = {
+Rt.node;
+var zt = T(Rt), Bt = {
name: "message-square",
size: 24,
node: [["path", {
@@ -2182,8 +2216,8 @@ var Nt = T(Mt), Pt = {
key: "18887p"
}]]
};
-Pt.node;
-var Ft = T(Pt), It = {
+Bt.node;
+var Vt = T(Bt), Ht = {
name: "minimize",
size: 24,
node: [
@@ -2205,8 +2239,8 @@ var Ft = T(Pt), It = {
}]
]
};
-It.node;
-var Lt = T(It), Rt = {
+Ht.node;
+var Ut = T(Ht), Wt = {
name: "minimize-2",
size: 24,
node: [
@@ -2228,8 +2262,8 @@ var Lt = T(It), Rt = {
}]
]
};
-Rt.node;
-var zt = T(Rt), Bt = {
+Wt.node;
+var Gt = T(Wt), Kt = {
name: "minus",
size: 24,
node: [["path", {
@@ -2237,8 +2271,8 @@ var zt = T(Rt), Bt = {
key: "1ays0h"
}]]
};
-Bt.node;
-var Vt = T(Bt), Ht = {
+Kt.node;
+var qt = T(Kt), Jt = {
name: "monitor",
size: 24,
node: [
@@ -2266,8 +2300,8 @@ var Vt = T(Bt), Ht = {
}]
]
};
-Ht.node;
-var Ut = T(Ht), Wt = {
+Jt.node;
+var Yt = T(Jt), Xt = {
name: "moon",
size: 24,
node: [["path", {
@@ -2275,8 +2309,8 @@ var Ut = T(Ht), Wt = {
key: "kfwtm"
}]]
};
-Wt.node;
-var Gt = T(Wt), Kt = {
+Xt.node;
+var Zt = T(Xt), Qt = {
name: "mouse-pointer-2",
size: 24,
node: [["path", {
@@ -2284,8 +2318,8 @@ var Gt = T(Wt), Kt = {
key: "edeuup"
}]]
};
-Kt.node;
-var qt = T(Kt), Jt = {
+Qt.node;
+var $t = T(Qt), en = {
name: "network",
size: 24,
node: [
@@ -2323,8 +2357,8 @@ var qt = T(Kt), Jt = {
}]
]
};
-Jt.node;
-var Yt = T(Jt), Xt = {
+en.node;
+var tn = T(en), nn = {
name: "octagon-x",
size: 24,
node: [
@@ -2343,8 +2377,8 @@ var Yt = T(Jt), Xt = {
],
aliases: ["x-octagon"]
};
-Xt.node;
-var Zt = T(Xt), Qt = {
+nn.node;
+var rn = T(nn), an = {
name: "panel-left",
size: 24,
node: [["rect", {
@@ -2360,8 +2394,8 @@ var Zt = T(Xt), Qt = {
}]],
aliases: ["sidebar"]
};
-Qt.node;
-var $t = T(Qt), en = {
+an.node;
+var on = T(an), sn = {
name: "pause",
size: 24,
node: [["rect", {
@@ -2380,8 +2414,8 @@ var $t = T(Qt), en = {
key: "1wsw3u"
}]]
};
-en.node;
-var tn = T(en), nn = {
+sn.node;
+var cn = T(sn), ln = {
name: "play",
size: 24,
node: [["path", {
@@ -2389,8 +2423,8 @@ var tn = T(en), nn = {
key: "10ikf1"
}]]
};
-nn.node;
-var rn = T(nn), an = {
+ln.node;
+var un = T(ln), dn = {
name: "plus",
size: 24,
node: [["path", {
@@ -2401,8 +2435,8 @@ var rn = T(nn), an = {
key: "s699le"
}]]
};
-an.node;
-var on = T(an), sn = {
+dn.node;
+var fn = T(dn), pn = {
name: "radio",
size: 24,
node: [
@@ -2430,8 +2464,8 @@ var on = T(an), sn = {
}]
]
};
-sn.node;
-var cn = T(sn), ln = {
+pn.node;
+var mn = T(pn), hn = {
name: "refresh-cw",
size: 24,
node: [
@@ -2453,8 +2487,8 @@ var cn = T(sn), ln = {
}]
]
};
-ln.node;
-var un = T(ln), dn = {
+hn.node;
+var gn = T(hn), _n = {
name: "reply",
size: 24,
node: [["path", {
@@ -2465,8 +2499,8 @@ var un = T(ln), dn = {
key: "nvlc11"
}]]
};
-dn.node;
-var fn = T(dn), pn = {
+_n.node;
+var vn = T(_n), yn = {
name: "search",
size: 24,
node: [["path", {
@@ -2479,8 +2513,8 @@ var fn = T(dn), pn = {
key: "4ej97u"
}]]
};
-pn.node;
-var mn = T(pn), hn = {
+yn.node;
+var bn = T(yn), xn = {
name: "send-horizontal",
size: 24,
node: [["path", {
@@ -2492,8 +2526,8 @@ var mn = T(pn), hn = {
}]],
aliases: ["send-horizonal"]
};
-hn.node;
-var gn = T(hn), _n = {
+xn.node;
+var Sn = T(xn), Cn = {
name: "send",
size: 24,
node: [["path", {
@@ -2504,8 +2538,8 @@ var gn = T(hn), _n = {
key: "12cjpa"
}]]
};
-_n.node;
-var vn = T(_n), yn = {
+Cn.node;
+var wn = T(Cn), Tn = {
name: "server",
size: 24,
node: [
@@ -2543,8 +2577,8 @@ var vn = T(_n), yn = {
}]
]
};
-yn.node;
-var bn = T(yn), xn = {
+Tn.node;
+var En = T(Tn), Dn = {
name: "settings-2",
size: 24,
node: [
@@ -2570,8 +2604,22 @@ var bn = T(yn), xn = {
}]
]
};
-xn.node;
-var Sn = T(xn), Cn = {
+Dn.node;
+var On = T(Dn), kn = {
+ name: "settings",
+ size: 24,
+ node: [["path", {
+ d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
+ key: "1i5ecw"
+ }], ["circle", {
+ cx: "12",
+ cy: "12",
+ r: "3",
+ key: "1v7zrd"
+ }]]
+};
+kn.node;
+var An = T(kn), jn = {
name: "shield-alert",
size: 24,
node: [
@@ -2589,8 +2637,8 @@ var Sn = T(xn), Cn = {
}]
]
};
-Cn.node;
-var wn = T(Cn), Tn = {
+jn.node;
+var Mn = T(jn), Nn = {
name: "shield-check",
size: 24,
node: [["path", {
@@ -2601,8 +2649,8 @@ var wn = T(Cn), Tn = {
key: "dzmm74"
}]]
};
-Tn.node;
-var En = T(Tn), Dn = {
+Nn.node;
+var Pn = T(Nn), Fn = {
name: "shield",
size: 24,
node: [["path", {
@@ -2610,8 +2658,34 @@ var En = T(Tn), Dn = {
key: "oel41y"
}]]
};
-Dn.node;
-var On = T(Dn), kn = {
+Fn.node;
+var In = T(Fn), Ln = {
+ name: "sparkles",
+ size: 24,
+ node: [
+ ["path", {
+ d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",
+ key: "1s2grr"
+ }],
+ ["path", {
+ d: "M20 2v4",
+ key: "1rf3ol"
+ }],
+ ["path", {
+ d: "M22 4h-4",
+ key: "gwowj6"
+ }],
+ ["circle", {
+ cx: "4",
+ cy: "20",
+ r: "2",
+ key: "6kqj1y"
+ }]
+ ],
+ aliases: ["stars"]
+};
+Ln.node;
+var Rn = T(Ln), zn = {
name: "square",
size: 24,
node: [["rect", {
@@ -2623,8 +2697,8 @@ var On = T(Dn), kn = {
key: "afitv7"
}]]
};
-kn.node;
-var An = T(kn), jn = {
+zn.node;
+var Bn = T(zn), Vn = {
name: "sun",
size: 24,
node: [
@@ -2668,8 +2742,8 @@ var An = T(kn), jn = {
}]
]
};
-jn.node;
-var Mn = T(jn), Nn = {
+Vn.node;
+var Hn = T(Vn), Un = {
name: "terminal",
size: 24,
node: [["path", {
@@ -2680,8 +2754,8 @@ var Mn = T(jn), Nn = {
key: "1yngyt"
}]]
};
-Nn.node;
-var Pn = T(Nn), Fn = {
+Un.node;
+var Wn = T(Un), Gn = {
name: "timer",
size: 24,
node: [
@@ -2707,8 +2781,8 @@ var Pn = T(Nn), Fn = {
}]
]
};
-Fn.node;
-var In = T(Fn), Ln = {
+Gn.node;
+var Kn = T(Gn), qn = {
name: "trash",
size: 24,
node: [
@@ -2735,8 +2809,8 @@ var In = T(Fn), Ln = {
],
aliases: ["trash-2"]
};
-Ln.node;
-var Rn = T(Ln), zn = {
+qn.node;
+var Jn = T(qn), Yn = {
name: "triangle-alert",
size: 24,
node: [
@@ -2755,8 +2829,8 @@ var Rn = T(Ln), zn = {
],
aliases: ["alert-triangle"]
};
-zn.node;
-var Bn = T(zn), Vn = {
+Yn.node;
+var Xn = T(Yn), Zn = {
name: "unlink",
size: 24,
node: [
@@ -2798,8 +2872,8 @@ var Bn = T(zn), Vn = {
}]
]
};
-Vn.node;
-var Hn = T(Vn), Un = {
+Zn.node;
+var Qn = T(Zn), $n = {
name: "unplug",
size: 24,
node: [
@@ -2829,8 +2903,8 @@ var Hn = T(Vn), Un = {
}]
]
};
-Un.node;
-var Wn = T(Un), Gn = {
+$n.node;
+var er = T($n), tr = {
name: "wifi-off",
size: 24,
node: [
@@ -2864,8 +2938,8 @@ var Wn = T(Un), Gn = {
}]
]
};
-Gn.node;
-var Kn = T(Gn), qn = {
+tr.node;
+var nr = T(tr), rr = {
name: "workflow",
size: 24,
node: [
@@ -2891,8 +2965,8 @@ var Kn = T(Gn), qn = {
}]
]
};
-qn.node;
-var Jn = T(qn), Yn = {
+rr.node;
+var ir = T(rr), ar = {
name: "x",
size: 24,
node: [["path", {
@@ -2903,8 +2977,8 @@ var Jn = T(qn), Yn = {
key: "d8bk6v"
}]]
};
-Yn.node;
-var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
+ar.node;
+var or = T(ar), sr = /* @__PURE__ */ o(((e) => {
function t(e, t) {
var n = e.length;
e.push(t);
@@ -3103,9 +3177,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
};
};
-})), Qn = /* @__PURE__ */ o(((e, t) => {
- t.exports = Zn();
-})), $n = /* @__PURE__ */ o(((e) => {
+})), cr = /* @__PURE__ */ o(((e, t) => {
+ t.exports = sr();
+})), lr = /* @__PURE__ */ o(((e) => {
var t = u();
function n(e) {
var t = "https://react.dev/errors/" + e;
@@ -3233,7 +3307,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}, e.useFormStatus = function() {
return l.H.useHostTransitionStatus();
}, e.version = "19.3.0";
-})), er = /* @__PURE__ */ o(((e, t) => {
+})), ur = /* @__PURE__ */ o(((e, t) => {
function n() {
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE == "function") try {
__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n);
@@ -3241,9 +3315,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
console.error(e);
}
}
- n(), t.exports = $n();
-})), tr = /* @__PURE__ */ o(((e) => {
- var t = Qn(), n = u(), r = er();
+ n(), t.exports = lr();
+})), dr = /* @__PURE__ */ o(((e) => {
+ var t = cr(), n = u(), r = ur();
function i(e) {
var t = "https://react.dev/errors/" + e;
if (1 < arguments.length) {
@@ -4187,7 +4261,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
try {
return e(t);
} finally {
- if (Sn = !1, (yn !== null || bn !== null) && (Rd(), yn && (t = yn, e = bn, bn = yn = null, xn(t), e))) for (t = 0; t < e.length; t++) xn(e[t]);
+ if (Sn = !1, (yn !== null || bn !== null) && (Y(), yn && (t = yn, e = bn, bn = yn = null, xn(t), e))) for (t = 0; t < e.length; t++) xn(e[t]);
}
}
function wn(e, t) {
@@ -4286,7 +4360,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
shiftKey: 0,
altKey: 0,
metaKey: 0,
- getModifierState: nr,
+ getModifierState: er,
button: 0,
buttons: 0,
relatedTarget: function(e) {
@@ -4354,20 +4428,20 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
144: "NumLock",
145: "ScrollLock",
224: "Meta"
- }, $n = {
+ }, Qn = {
Alt: "altKey",
Control: "ctrlKey",
Meta: "metaKey",
Shift: "shiftKey"
};
- function tr(e) {
+ function $n(e) {
var t = this.nativeEvent;
- return t.getModifierState ? t.getModifierState(e) : (e = $n[e]) ? !!t[e] : !1;
+ return t.getModifierState ? t.getModifierState(e) : (e = Qn[e]) ? !!t[e] : !1;
}
- function nr() {
- return tr;
+ function er() {
+ return $n;
}
- var rr = Fn(T({}, Rn, {
+ var tr = Fn(T({}, Rn, {
key: function(e) {
if (e.key) {
var t = Xn[e.key] || e.key;
@@ -4383,7 +4457,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
metaKey: 0,
repeat: 0,
locale: 0,
- getModifierState: nr,
+ getModifierState: er,
charCode: function(e) {
return e.type === "keypress" ? Mn(e) : 0;
},
@@ -4393,7 +4467,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
which: function(e) {
return e.type === "keypress" ? Mn(e) : e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0;
}
- })), ir = Fn(T({}, Un, {
+ })), nr = Fn(T({}, Un, {
pointerId: 0,
width: 0,
height: 0,
@@ -4404,7 +4478,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
twist: 0,
pointerType: 0,
isPrimary: 0
- })), ar = Fn(T({}, In, { submitter: 0 })), or = Fn(T({}, Rn, {
+ })), rr = Fn(T({}, In, { submitter: 0 })), ir = Fn(T({}, Rn, {
touches: 0,
targetTouches: 0,
changedTouches: 0,
@@ -4412,12 +4486,12 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
metaKey: 0,
ctrlKey: 0,
shiftKey: 0,
- getModifierState: nr
- })), sr = Fn(T({}, In, {
+ getModifierState: er
+ })), ar = Fn(T({}, In, {
propertyName: 0,
elapsedTime: 0,
pseudoElement: 0
- })), cr = Fn(T({}, Un, {
+ })), or = Fn(T({}, Un, {
deltaX: function(e) {
return "deltaX" in e ? e.deltaX : "wheelDeltaX" in e ? -e.wheelDeltaX : 0;
},
@@ -4426,11 +4500,11 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
},
deltaZ: 0,
deltaMode: 0
- })), lr = Fn(T({}, In, {
+ })), sr = Fn(T({}, In, {
newState: 0,
oldState: 0,
source: 0
- })), ur = [
+ })), lr = [
9,
13,
27,
@@ -4440,7 +4514,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var pr = Tn && "TextEvent" in window && !fr, mr = Tn && (!dr || fr && 8 < fr && 11 >= fr), hr = " ", gr = !1;
function _r(e, t) {
switch (e) {
- case "keyup": return ur.indexOf(t.keyCode) !== -1;
+ case "keyup": return lr.indexOf(t.keyCode) !== -1;
case "keydown": return t.keyCode !== 229;
case "keypress":
case "mousedown":
@@ -4669,7 +4743,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
function vi(e) {
if (e == null || typeof e == "string") return e;
- var t = null, n = J;
+ var t = null, n = Pd;
if (n !== null) for (var r = 0; r < n.length; r++) {
var i = e[n[r]];
if (i != null) {
@@ -4730,7 +4804,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
return e.tag === 3 ? (a = e.stateNode, i && t !== null && (i = 31 - Ye(n), e = a.hiddenUpdates, r = e[i], r === null ? e[i] = [t] : r.push(t), t.lane = n | 536870912), a) : null;
}
function ki(e) {
- if (50 < Y) throw Y = 0, X = null, Error(i(185));
+ if (50 < Fd) throw Fd = 0, Id = null, Error(i(185));
for (var t = e.return; t !== null;) e = t, t = e.return;
return e.tag === 3 ? e.stateNode : null;
}
@@ -5141,7 +5215,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var Ka = me(null);
function qa() {
var e = Ka.current;
- return e === null ? nd.pooledCache : e;
+ return e === null ? rd.pooledCache : e;
}
function Ja(e, t) {
t === null ? ge(Ka, Ka.current) : ge(Ka, t.pool);
@@ -5164,7 +5238,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
default:
if (typeof t.status == "string") t.then(gn, gn);
else {
- if (e = nd, e !== null && 100 < e.shellSuspendCounter) throw Error(i(482));
+ if (e = rd, e !== null && 100 < e.shellSuspendCounter) throw Error(i(482));
e = t, e.status = "pending", e.then(function(e) {
if (t.status === "pending") {
var n = t;
@@ -5201,18 +5275,18 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
function ao(e) {
if (e === Xa || e === Qa) throw Error(i(483));
}
- var B = null, oo = 0;
- function so(e) {
- var t = oo;
- return oo += 1, B === null && (B = []), to(B, e, t);
+ var oo = null, so = 0;
+ function co(e) {
+ var t = so;
+ return so += 1, oo === null && (oo = []), to(oo, e, t);
}
- function co(e, t) {
+ function lo(e, t) {
t = t.props.ref, e.ref = t === void 0 ? null : t;
}
- function lo(e, t) {
+ function uo(e, t) {
throw t.$$typeof === E ? Error(i(525)) : (e = Object.prototype.toString.call(t), Error(i(31, e === "[object Object]" ? "object with keys {" + Object.keys(t).join(", ") + "}" : e)));
}
- function uo(e) {
+ function fo(e) {
function t(t, n) {
if (e) {
var r = t.deletions;
@@ -5242,7 +5316,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
function l(e, t, n, r) {
var i = n.type;
- return i === k ? (e = d(e, t, n.props.children, r, n.key), co(e, n), e) : t !== null && (t.elementType === i || typeof i == "object" && i && i.$$typeof === re && no(i) === t.type) ? (t = a(t, n.props), co(t, n), t.return = e, t) : (t = Ii(n.type, n.key, n.props, null, e.mode, r), co(t, n), t.return = e, t);
+ return i === k ? (e = d(e, t, n.props.children, r, n.key), lo(e, n), e) : t !== null && (t.elementType === i || typeof i == "object" && i && i.$$typeof === re && no(i) === t.type) ? (t = a(t, n.props), lo(t, n), t.return = e, t) : (t = Ii(n.type, n.key, n.props, null, e.mode, r), lo(t, n), t.return = e, t);
}
function u(e, t, n, r) {
return t === null || t.tag !== 4 || t.stateNode.containerInfo !== n.containerInfo || t.stateNode.implementation !== n.implementation ? (t = Bi(n, e.mode, r), t.return = e, t) : (t = a(t, n.children || []), t.return = e, t);
@@ -5254,14 +5328,14 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (typeof t == "string" && t !== "" || typeof t == "number" || typeof t == "bigint") return t = Ri("" + t, e.mode, n), t.return = e, t;
if (typeof t == "object" && t) {
switch (t.$$typeof) {
- case D: return n = Ii(t.type, t.key, t.props, null, e.mode, n), co(n, t), n.return = e, n;
+ case D: return n = Ii(t.type, t.key, t.props, null, e.mode, n), lo(n, t), n.return = e, n;
case O: return t = Bi(t, e.mode, n), t.return = e, t;
case re: return t = no(t), f(e, t, n);
}
if (le(t) || oe(t)) return t = Li(t, e.mode, n, null), t.return = e, t;
- if (typeof t.then == "function") return f(e, so(t), n);
+ if (typeof t.then == "function") return f(e, co(t), n);
if (t.$$typeof === N) return f(e, Da(e, t), n);
- lo(e, t);
+ uo(e, t);
}
return null;
}
@@ -5275,9 +5349,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case re: return n = no(n), p(e, t, n, r);
}
if (le(n) || oe(n)) return i === null ? d(e, t, n, r, null) : null;
- if (typeof n.then == "function") return p(e, t, so(n), r);
+ if (typeof n.then == "function") return p(e, t, co(n), r);
if (n.$$typeof === N) return p(e, t, Da(e, n), r);
- lo(e, n);
+ uo(e, n);
}
return null;
}
@@ -5290,9 +5364,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case re: return r = no(r), m(e, t, n, r, i);
}
if (le(r) || oe(r)) return e = e.get(n) || null, d(t, e, r, i, null);
- if (typeof r.then == "function") return m(e, t, n, so(r), i);
+ if (typeof r.then == "function") return m(e, t, n, co(r), i);
if (r.$$typeof === N) return m(e, t, n, Da(t, r), i);
- lo(t, r);
+ uo(t, r);
}
return null;
}
@@ -5346,11 +5420,11 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (r.key === l) {
if (l = o.type, l === k) {
if (r.tag === 7) {
- n(e, r.sibling), c = a(r, o.props.children), co(c, o), c.return = e, e = c;
+ n(e, r.sibling), c = a(r, o.props.children), lo(c, o), c.return = e, e = c;
break a;
}
} else if (r.elementType === l || typeof l == "object" && l && l.$$typeof === re && no(l) === r.type) {
- n(e, r.sibling), c = a(r, o.props), co(c, o), c.return = e, e = c;
+ n(e, r.sibling), c = a(r, o.props), lo(c, o), c.return = e, e = c;
break a;
}
n(e, r);
@@ -5358,7 +5432,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
t(e, r), r = r.sibling;
}
- o.type === k ? (c = Li(o.props.children, e.mode, c, o.key), co(c, o), c.return = e, e = c) : (c = Ii(o.type, o.key, o.props, null, e.mode, c), co(c, o), c.return = e, e = c);
+ o.type === k ? (c = Li(o.props.children, e.mode, c, o.key), lo(c, o), c.return = e, e = c) : (c = Ii(o.type, o.key, o.props, null, e.mode, c), lo(c, o), c.return = e, e = c);
}
return s(e);
case O:
@@ -5384,17 +5458,17 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (l = oe(o), typeof l != "function") throw Error(i(150));
return o = l.call(o), g(e, r, o, c);
}
- if (typeof o.then == "function") return _(e, r, so(o), c);
+ if (typeof o.then == "function") return _(e, r, co(o), c);
if (o.$$typeof === N) return _(e, r, Da(e, o), c);
- lo(e, o);
+ uo(e, o);
}
return typeof o == "string" && o !== "" || typeof o == "number" || typeof o == "bigint" ? (o = "" + o, r !== null && r.tag === 6 ? (n(e, r.sibling), c = a(r, o), c.return = e, e = c) : (n(e, r), c = Ri(o, e.mode, c), c.return = e, e = c), s(e)) : n(e, r);
}
return function(e, t, n, r) {
try {
- oo = 0;
+ so = 0;
var i = _(e, t, n, r);
- return B = null, i;
+ return oo = null, i;
} catch (t) {
if (t === Xa || t === Qa) throw t;
var a = Mi(29, t, null, e.mode);
@@ -5402,8 +5476,8 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
};
}
- var fo = uo(!0), po = uo(!1), V = !1;
- function mo(e) {
+ var po = fo(!0), mo = fo(!1), ho = !1;
+ function go(e) {
e.updateQueue = {
baseState: e.memoizedState,
firstBaseUpdate: null,
@@ -5416,7 +5490,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
callbacks: null
};
}
- function ho(e, t) {
+ function B(e, t) {
e = e.updateQueue, t.updateQueue === e && (t.updateQueue = {
baseState: e.baseState,
firstBaseUpdate: e.firstBaseUpdate,
@@ -5425,7 +5499,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
callbacks: null
});
}
- function go(e) {
+ function _o(e) {
return {
lane: e,
tag: 0,
@@ -5434,22 +5508,22 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
next: null
};
}
- function _o(e, t, n) {
+ function vo(e, t, n) {
var r = e.updateQueue;
if (r === null) return null;
- if (r = r.shared, td & 2) {
+ if (r = r.shared, nd & 2) {
var i = r.pending;
return i === null ? t.next = t : (t.next = i.next, i.next = t), r.pending = t, t = ki(e), Oi(e, null, n), t;
}
return Ti(e, r, t, n), ki(e);
}
- function vo(e, t, n) {
+ function yo(e, t, n) {
if (t = t.updateQueue, t !== null && (t = t.shared, n & 4194048)) {
var r = t.lanes;
r &= e.pendingLanes, n |= r, t.lanes = n, ft(e, n);
}
}
- function yo(e, t) {
+ function bo(e, t) {
var n = e.updateQueue, r = e.alternate;
if (r !== null && (r = r.updateQueue, n === r)) {
var i = null, a = null;
@@ -5475,17 +5549,17 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}, e.updateQueue = n;
} else e = n.lastBaseUpdate, e === null ? n.firstBaseUpdate = t : e.next = t, n.lastBaseUpdate = t;
}
- var bo = !1;
- function H() {
- if (bo) {
+ var xo = !1;
+ function So() {
+ if (xo) {
var e = Va;
if (e !== null) throw e;
}
}
- function xo(e, t, n, r) {
- bo = !1;
+ function Co(e, t, n, r) {
+ xo = !1;
var i = e.updateQueue;
- V = !1;
+ ho = !1;
var a = i.firstBaseUpdate, o = i.lastBaseUpdate, s = i.shared.pending;
if (s !== null) {
i.shared.pending = null;
@@ -5499,8 +5573,8 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
o = 0, u = l = c = null, s = a;
do {
var f = s.lane & -536870913, p = f !== s.lane;
- if (p ? (id & f) === f : (r & f) === f) {
- f !== 0 && f === Ba && (bo = !0), u !== null && (u = u.next = {
+ if (p ? (ad & f) === f : (r & f) === f) {
+ f !== 0 && f === Ba && (xo = !0), u !== null && (u = u.next = {
lane: 0,
tag: s.tag,
payload: s.payload,
@@ -5524,7 +5598,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (m = h.payload, f = typeof m == "function" ? m.call(g, d, f) : m, f == null) break a;
d = T({}, d, f);
break a;
- case 2: V = !0;
+ case 2: ho = !0;
}
}
f = s.callback, f !== null && (e.flags |= 64, p && (e.flags |= 8192), p = i.callbacks, p === null ? i.callbacks = [f] : p.push(f));
@@ -5543,47 +5617,47 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
u === null && (c = d), i.baseState = c, i.firstBaseUpdate = l, i.lastBaseUpdate = u, a === null && (i.shared.lanes = 0), fd |= o, e.lanes = o, e.memoizedState = d;
}
}
- function So(e, t) {
+ function V(e, t) {
if (typeof e != "function") throw Error(i(191, e));
e.call(t);
}
- function Co(e, t) {
+ function wo(e, t) {
var n = e.callbacks;
- if (n !== null) for (e.callbacks = null, e = 0; e < n.length; e++) So(n[e], t);
- }
- var wo = me(null), To = me(0);
- function Eo(e, t) {
- e = ud, ge(To, e), ge(wo, t), ud = e | t.baseLanes;
+ if (n !== null) for (e.callbacks = null, e = 0; e < n.length; e++) V(n[e], t);
}
- function Do() {
- ge(To, ud), ge(wo, wo.current);
+ var To = me(null), Eo = me(0);
+ function Do(e, t) {
+ e = ud, ge(Eo, e), ge(To, t), ud = e | t.baseLanes;
}
function Oo() {
- ud = To.current, he(wo), he(To);
+ ge(Eo, ud), ge(To, To.current);
}
- var ko = me(null), Ao = null;
+ function ko() {
+ ud = Eo.current, he(To), he(Eo);
+ }
+ var Ao = me(null), H = null;
function jo(e) {
var t = e.alternate;
- ge(Io, Io.current & 1), ge(ko, e), Ao === null && (t === null || wo.current !== null || t.memoizedState !== null) && (Ao = e);
+ ge(Io, Io.current & 1), ge(Ao, e), H === null && (t === null || To.current !== null || t.memoizedState !== null) && (H = e);
}
function Mo(e) {
- ge(Io, Io.current), ge(ko, e), Ao === null && (Ao = e);
+ ge(Io, Io.current), ge(Ao, e), H === null && (H = e);
}
function No(e) {
- e.tag === 22 ? (ge(Io, Io.current), ge(ko, e), Ao === null && (Ao = e)) : Po();
+ e.tag === 22 ? (ge(Io, Io.current), ge(Ao, e), H === null && (H = e)) : Po();
}
function Po() {
- ge(Io, Io.current), ge(ko, ko.current);
+ ge(Io, Io.current), ge(Ao, Ao.current);
}
function Fo(e) {
- he(ko), Ao === e && (Ao = null), he(Io);
+ he(Ao), H === e && (H = null), he(Io);
}
var Io = me(0);
function Lo(e, t) {
- ge(ko, ko.current), ge(Io, t);
+ ge(Ao, Ao.current), ge(Io, t);
}
function Ro(e) {
- he(Io), he(ko), Ao === e && (Ao = null);
+ he(Io), he(Ao), H === e && (H = null);
}
function zo(e) {
for (var t = e; t !== null;) {
@@ -5747,7 +5821,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var c = s = null, l = null, u = t, d = !1;
do {
var f = u.lane & -536870913;
- if (f === u.lane ? (Bo & f) === f : (id & f) === f) {
+ if (f === u.lane ? (Bo & f) === f : (ad & f) === f) {
var p = u.revertLane;
if (p === 0) l !== null && (l = l.next = {
lane: 0,
@@ -5810,7 +5884,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
} else n = t();
var s = !Vr((Ho || a).memoizedState, n);
if (s && (a.memoizedState = n, Pc = !0), a = a.queue, Vs(ys.bind(null, r, a, e), [e]), e = a.getSnapshot !== t || s || Uo !== null && !!(Uo.memoizedState.tag & 1), Is(e ? 9 : 8, { destroy: void 0 }, vs.bind(null, r, a, n, t), null), e) {
- if (r.flags |= 2048, nd === null) throw Error(i(349));
+ if (r.flags |= 2048, rd === null) throw Error(i(349));
o || Bo & 127 || _s(r, t, n);
}
return n;
@@ -5841,7 +5915,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
function xs(e) {
var t = Di(e, 2);
- t !== null && Nd(t, e, 2);
+ t !== null && Bd(t, e, 2);
}
function Ss(e) {
var t = os();
@@ -5934,7 +6008,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
function js(e, t) {
if (aa) {
- var n = nd.formState;
+ var n = rd.formState;
if (n !== null) {
a: {
var r = Vo;
@@ -6051,7 +6125,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
ref: t,
nextImpl: e
}), function() {
- if (td & 2) throw Error(i(440));
+ if (nd & 2) throw Error(i(440));
return t.impl.apply(void 0, arguments);
};
}
@@ -6099,10 +6173,10 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
return n.memoizedState = [r, t], r;
}
function Zs(e, t, n) {
- return n === void 0 || Bo & 1073741824 && !(id & 261930) ? e.memoizedState = t : (e.memoizedState = n, e = jd(), Vo.lanes |= e, fd |= e, n);
+ return n === void 0 || Bo & 1073741824 && !(ad & 261930) ? e.memoizedState = t : (e.memoizedState = n, e = Rd(), Vo.lanes |= e, fd |= e, n);
}
function Qs(e, t, n, r) {
- return Vr(n, t) ? n : wo.current === null ? !(Bo & 106) || Bo & 1073741824 && !(id & 261930) ? (Pc = !0, e.memoizedState = n) : (e = jd(), Vo.lanes |= e, fd |= e, t) : (e = Zs(e, n, r), Vr(e, t) || (Pc = !0), e);
+ return Vr(n, t) ? n : To.current === null ? !(Bo & 106) || Bo & 1073741824 && !(ad & 261930) ? (Pc = !0, e.memoizedState = n) : (e = Rd(), Vo.lanes |= e, fd |= e, t) : (e = Zs(e, n, r), Vr(e, t) || (Pc = !0), e);
}
function $s(e, t, n, r, i) {
var a = ue.p;
@@ -6111,13 +6185,13 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
s.types = o === null ? null : o.types, z.T = s, dc(e, !1, t, n);
try {
var c = i(), l = z.S;
- l !== null && l(s, c), typeof c == "object" && c && typeof c.then == "function" ? uc(e, t, Wa(c, r), Z(e)) : uc(e, t, r, Z(e));
+ l !== null && l(s, c), typeof c == "object" && c && typeof c.then == "function" ? uc(e, t, Wa(c, r), Ld(e)) : uc(e, t, r, Ld(e));
} catch (n) {
uc(e, t, {
then: function() {},
status: "rejected",
reason: n
- }, Z());
+ }, Ld());
} finally {
ue.p = a, o !== null && s.types !== null && (o.types = s.types), z.T = o;
}
@@ -6163,7 +6237,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
function rc(e) {
var t = nc(e);
- t.next === null && (t = e.alternate.memoizedState), uc(e, t.next.queue, {}, Z());
+ t.next === null && (t = e.alternate.memoizedState), uc(e, t.next.queue, {}, Ld());
}
function ic() {
return Ea(lh);
@@ -6179,17 +6253,17 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
switch (t.tag) {
case 24:
case 3:
- var n = Z();
- e = go(n);
- var r = _o(t, e, n);
- r !== null && (Nd(r, t, n), vo(r, t, n)), t = { cache: Na() }, e.payload = t;
+ var n = Ld();
+ e = _o(n);
+ var r = vo(t, e, n);
+ r !== null && (Bd(r, t, n), yo(r, t, n)), t = { cache: Na() }, e.payload = t;
return;
}
t = t.return;
}
}
function cc(e, t, n) {
- var r = Z();
+ var r = Ld();
n = {
lane: r,
revertLane: 0,
@@ -6198,10 +6272,10 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
hasEagerState: !1,
eagerState: null,
next: null
- }, fc(e) ? pc(t, n) : (n = Ei(e, t, n, r), n !== null && (Nd(n, e, r), mc(n, t, r)));
+ }, fc(e) ? pc(t, n) : (n = Ei(e, t, n, r), n !== null && (Bd(n, e, r), mc(n, t, r)));
}
function lc(e, t, n) {
- uc(e, t, n, Z());
+ uc(e, t, n, Ld());
}
function uc(e, t, n, r) {
var i = {
@@ -6218,9 +6292,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var a = e.alternate;
if (e.lanes === 0 && (a === null || a.lanes === 0) && (a = t.lastRenderedReducer, a !== null)) try {
var o = t.lastRenderedState, s = a(o, n);
- if (i.hasEagerState = !0, i.eagerState = s, Vr(s, o)) return Ti(e, t, i, 0), nd === null && wi(), !1;
+ if (i.hasEagerState = !0, i.eagerState = s, Vr(s, o)) return Ti(e, t, i, 0), rd === null && wi(), !1;
} catch {}
- if (n = Ei(e, t, i, r), n !== null) return Nd(n, e, r), mc(n, t, r), !0;
+ if (n = Ei(e, t, i, r), n !== null) return Bd(n, e, r), mc(n, t, r), !0;
}
return !1;
}
@@ -6235,7 +6309,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
next: null
}, fc(e)) {
if (t) throw Error(i(479));
- } else t = Ei(e, n, r, 2), t !== null && Nd(t, e, 2);
+ } else t = Ei(e, n, r, 2), t !== null && Bd(t, e, 2);
}
function fc(e) {
var t = e.alternate;
@@ -6352,8 +6426,8 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (n === void 0) throw Error(i(407));
n = n();
} else {
- if (n = t(), nd === null) throw Error(i(349));
- id & 127 || _s(r, t, n);
+ if (n = t(), rd === null) throw Error(i(349));
+ ad & 127 || _s(r, t, n);
}
a.memoizedState = n;
var o = {
@@ -6363,7 +6437,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
return a.queue = o, Bs(ys.bind(null, r, o, e), [e]), r.flags |= 2048, Is(9, { destroy: void 0 }, vs.bind(null, r, o, n, t), null), n;
},
useId: function() {
- var e = os(), t = nd.identifierPrefix;
+ var e = os(), t = rd.identifierPrefix;
if (aa) {
var n = Zi, r = Xi;
n = (r & ~(1 << 32 - Ye(r) - 1)).toString(32) + n, t = "_" + t + "R_" + n, n = qo++, 0 < n && (t += "H" + n.toString(32)), t += "_";
@@ -6392,7 +6466,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
useEffectEvent: function(e) {
var t = os(), n = { impl: e };
return t.memoizedState = n, function() {
- if (td & 2) throw Error(i(440));
+ if (nd & 2) throw Error(i(440));
return n.impl.apply(void 0, arguments);
};
}
@@ -6473,18 +6547,18 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var bc = {
enqueueSetState: function(e, t, n) {
e = e._reactInternals;
- var r = Z(), i = go(r);
- i.payload = t, n != null && (i.callback = n), t = _o(e, i, r), t !== null && (Nd(t, e, r), vo(t, e, r));
+ var r = Ld(), i = _o(r);
+ i.payload = t, n != null && (i.callback = n), t = vo(e, i, r), t !== null && (Bd(t, e, r), yo(t, e, r));
},
enqueueReplaceState: function(e, t, n) {
e = e._reactInternals;
- var r = Z(), i = go(r);
- i.tag = 1, i.payload = t, n != null && (i.callback = n), t = _o(e, i, r), t !== null && (Nd(t, e, r), vo(t, e, r));
+ var r = Ld(), i = _o(r);
+ i.tag = 1, i.payload = t, n != null && (i.callback = n), t = vo(e, i, r), t !== null && (Bd(t, e, r), yo(t, e, r));
},
enqueueForceUpdate: function(e, t) {
e = e._reactInternals;
- var n = Z(), r = go(n);
- r.tag = 2, t != null && (r.callback = t), t = _o(e, r, n), t !== null && (Nd(t, e, n), vo(t, e, n));
+ var n = Ld(), r = _o(n);
+ r.tag = 2, t != null && (r.callback = t), t = vo(e, r, n), t !== null && (Bd(t, e, n), yo(t, e, n));
}
};
function xc(e, t, n, r, i, a, o) {
@@ -6532,12 +6606,12 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
}
function kc(e, t, n) {
- return n = go(n), n.tag = 3, n.payload = { element: null }, n.callback = function() {
+ return n = _o(n), n.tag = 3, n.payload = { element: null }, n.callback = function() {
Dc(e, t);
}, n;
}
function Ac(e) {
- return e = go(e), e.tag = 3, e;
+ return e = _o(e), e.tag = 3, e;
}
function jc(e, t, n, r) {
var i = n.type.getDerivedStateFromError;
@@ -6558,11 +6632,11 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
function Mc(e, t, n, r, a) {
if (n.flags |= 32768, typeof r == "object" && r && typeof r.then == "function") {
- if (t = n.alternate, t !== null && Ca(t, n, a, !0), n = ko.current, n !== null) {
+ if (t = n.alternate, t !== null && Ca(t, n, a, !0), n = Ao.current, n !== null) {
switch (n.tag) {
case 31:
case 13:
- case 19: return Ao === null ? Gd() : n.alternate === null && dd === 0 && (dd = 3), n.flags &= -257, n.flags |= 65536, n.lanes = a, r === $a ? n.flags |= 16384 : (t = n.updateQueue, t === null ? n.updateQueue = /* @__PURE__ */ new Set([r]) : t.add(r), mf(e, r, a)), !1;
+ case 19: return H === null ? Gd() : n.alternate === null && dd === 0 && (dd = 3), n.flags &= -257, n.flags |= 65536, n.lanes = a, r === $a ? n.flags |= 16384 : (t = n.updateQueue, t === null ? n.updateQueue = /* @__PURE__ */ new Set([r]) : t.add(r), mf(e, r, a)), !1;
case 22: return n.flags |= 65536, r === $a ? n.flags |= 16384 : (t = n.updateQueue, t === null ? (t = {
transitions: null,
markerInstances: null,
@@ -6573,15 +6647,15 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
return mf(e, r, a), Gd(), !1;
}
- if (aa) return t = ko.current, t === null ? (r !== ca && (t = Error(i(423), { cause: r }), ha(Hi(t, n))), e = e.current.alternate, e.flags |= 65536, a &= -a, e.lanes |= a, r = Hi(r, n), a = kc(e.stateNode, r, a), yo(e, a), dd !== 4 && (dd = 2)) : (!(t.flags & 65536) && (t.flags |= 256), t.flags |= 65536, t.lanes = a, r !== ca && (e = Error(i(422), { cause: r }), ha(Hi(e, n)))), !1;
+ if (aa) return t = Ao.current, t === null ? (r !== ca && (t = Error(i(423), { cause: r }), ha(Hi(t, n))), e = e.current.alternate, e.flags |= 65536, a &= -a, e.lanes |= a, r = Hi(r, n), a = kc(e.stateNode, r, a), bo(e, a), dd !== 4 && (dd = 2)) : (!(t.flags & 65536) && (t.flags |= 256), t.flags |= 65536, t.lanes = a, r !== ca && (e = Error(i(422), { cause: r }), ha(Hi(e, n)))), !1;
var o = Error(i(520), { cause: r });
if (o = Hi(o, n), _d === null ? _d = [o] : _d.push(o), dd !== 4 && (dd = 2), t === null) return !0;
r = Hi(r, n), n = t;
do {
switch (n.tag) {
- case 3: return n.flags |= 65536, e = a & -a, n.lanes |= e, e = kc(n.stateNode, r, e), yo(n, e), !1;
+ case 3: return n.flags |= 65536, e = a & -a, n.lanes |= e, e = kc(n.stateNode, r, e), bo(n, e), !1;
case 1:
- if (t = n.type, o = n.stateNode, !(n.flags & 128) && (typeof t.getDerivedStateFromError == "function" || o !== null && typeof o.componentDidCatch == "function" && (wd === null || !wd.has(o)))) return n.flags |= 65536, a &= -a, n.lanes |= a, a = Ac(a), jc(a, e, n, r), yo(n, a), !1;
+ if (t = n.type, o = n.stateNode, !(n.flags & 128) && (typeof t.getDerivedStateFromError == "function" || o !== null && typeof o.componentDidCatch == "function" && (wd === null || !wd.has(o)))) return n.flags |= 65536, a &= -a, n.lanes |= a, a = Ac(a), jc(a, e, n, r), bo(n, a), !1;
break;
case 22: if (n.memoizedState !== null) return n.flags |= 65536, !1;
}
@@ -6591,7 +6665,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
var Nc = Error(i(461)), Pc = !1;
function Fc(e, t, n, r) {
- t.child = e === null ? po(t, null, n, r) : fo(t, e.child, n, r);
+ t.child = e === null ? mo(t, null, n, r) : po(t, e.child, n, r);
}
function Ic(e, t, n, r, i) {
n = n.render;
@@ -6641,9 +6715,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (n & 536870912) t.memoizedState = {
baseLanes: 0,
cachePool: null
- }, e !== null && Ja(t, a === null ? null : a.cachePool), a === null ? Do() : Eo(t, a), No(t);
+ }, e !== null && Ja(t, a === null ? null : a.cachePool), a === null ? Oo() : Do(t, a), No(t);
else return r = t.lanes = 536870912, Vc(e, t, a === null ? n : a.baseLanes | n, n, r);
- } else a === null ? (e !== null && Ja(t, null), Do(), Po()) : (Ja(t, a.cachePool), Eo(t, a), Po(), t.memoizedState = null);
+ } else a === null ? (e !== null && Ja(t, null), Oo(), Po()) : (Ja(t, a.cachePool), Do(t, a), Po(), t.memoizedState = null);
return Fc(e, t, i, n), t.child;
}
function Bc(e, t) {
@@ -6662,7 +6736,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}, t.memoizedState = {
baseLanes: n,
cachePool: a
- }, e !== null && Ja(t, null), Do(), No(t), e !== null && Ca(e, t, r, !0), t.childLanes = i, null;
+ }, e !== null && Ja(t, null), Oo(), No(t), e !== null && Ca(e, t, r, !0), t.childLanes = i, null;
}
function Hc(e, t) {
return t = tl({
@@ -6671,7 +6745,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}, e.mode), t.ref = e.ref, e.child = t, t.return = e, t;
}
function Uc(e, t, n) {
- return fo(t, e.child, null, n), e = Hc(t, t.pendingProps), e.flags |= 2, Fo(t), t.memoizedState = null, e;
+ return po(t, e.child, null, n), e = Hc(t, t.pendingProps), e.flags |= 2, Fo(t), t.memoizedState = null, e;
}
function Wc(e, t, n) {
var r = t.pendingProps, a = !!(t.flags & 128);
@@ -6702,8 +6776,8 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
else if (t.memoizedState !== null) t.child = e.child, t.flags |= 128, t = null;
else throw Error(i(558));
} else if (Pc || Ca(e, t, n, !1), a = (n & e.childLanes) !== 0, Pc || a) {
- if (wo.current === null) {
- if (r = nd, r !== null && (s = pt(r, n), s !== 0 && s !== o.retryLane)) throw o.retryLane = s, Di(e, s), Nd(r, e, s), Nc;
+ if (To.current === null) {
+ if (r = rd, r !== null && (s = pt(r, n), s !== 0 && s !== o.retryLane)) throw o.retryLane = s, Di(e, s), Bd(r, e, s), Nc;
Gd();
}
t = Uc(e, t, n);
@@ -6732,7 +6806,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
function Jc(e, t, n, r, i) {
if (Ta(t), t.stateNode === null) {
var a = Ai, o = n.contextType;
- typeof o == "object" && o && (a = Ea(o)), a = new n(r, a), t.memoizedState = a.state !== null && a.state !== void 0 ? a.state : null, a.updater = bc, t.stateNode = a, a._reactInternals = t, a = t.stateNode, a.props = r, a.state = t.memoizedState, a.refs = {}, mo(t), o = n.contextType, a.context = typeof o == "object" && o ? Ea(o) : Ai, a.state = t.memoizedState, o = n.getDerivedStateFromProps, typeof o == "function" && (yc(t, n, o, r), a.state = t.memoizedState), typeof n.getDerivedStateFromProps == "function" || typeof a.getSnapshotBeforeUpdate == "function" || typeof a.UNSAFE_componentWillMount != "function" && typeof a.componentWillMount != "function" || (o = a.state, typeof a.componentWillMount == "function" && a.componentWillMount(), typeof a.UNSAFE_componentWillMount == "function" && a.UNSAFE_componentWillMount(), o !== a.state && bc.enqueueReplaceState(a, a.state, null), xo(t, r, a, i), H(), a.state = t.memoizedState), typeof a.componentDidMount == "function" && (t.flags |= 4194308), r = !0;
+ typeof o == "object" && o && (a = Ea(o)), a = new n(r, a), t.memoizedState = a.state !== null && a.state !== void 0 ? a.state : null, a.updater = bc, t.stateNode = a, a._reactInternals = t, a = t.stateNode, a.props = r, a.state = t.memoizedState, a.refs = {}, go(t), o = n.contextType, a.context = typeof o == "object" && o ? Ea(o) : Ai, a.state = t.memoizedState, o = n.getDerivedStateFromProps, typeof o == "function" && (yc(t, n, o, r), a.state = t.memoizedState), typeof n.getDerivedStateFromProps == "function" || typeof a.getSnapshotBeforeUpdate == "function" || typeof a.UNSAFE_componentWillMount != "function" && typeof a.componentWillMount != "function" || (o = a.state, typeof a.componentWillMount == "function" && a.componentWillMount(), typeof a.UNSAFE_componentWillMount == "function" && a.UNSAFE_componentWillMount(), o !== a.state && bc.enqueueReplaceState(a, a.state, null), Co(t, r, a, i), So(), a.state = t.memoizedState), typeof a.componentDidMount == "function" && (t.flags |= 4194308), r = !0;
} else if (e === null) {
a = t.stateNode;
var s = t.memoizedProps, c = Cc(n, s);
@@ -6740,15 +6814,15 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var l = a.context, u = n.contextType;
o = Ai, typeof u == "object" && u && (o = Ea(u));
var d = n.getDerivedStateFromProps;
- u = typeof d == "function" || typeof a.getSnapshotBeforeUpdate == "function", s = t.pendingProps !== s, u || typeof a.UNSAFE_componentWillReceiveProps != "function" && typeof a.componentWillReceiveProps != "function" || (s || l !== o) && Sc(t, a, r, o), V = !1;
+ u = typeof d == "function" || typeof a.getSnapshotBeforeUpdate == "function", s = t.pendingProps !== s, u || typeof a.UNSAFE_componentWillReceiveProps != "function" && typeof a.componentWillReceiveProps != "function" || (s || l !== o) && Sc(t, a, r, o), ho = !1;
var f = t.memoizedState;
- a.state = f, xo(t, r, a, i), H(), l = t.memoizedState, s || f !== l || V ? (typeof d == "function" && (yc(t, n, d, r), l = t.memoizedState), (c = V || xc(t, n, c, r, f, l, o)) ? (u || typeof a.UNSAFE_componentWillMount != "function" && typeof a.componentWillMount != "function" || (typeof a.componentWillMount == "function" && a.componentWillMount(), typeof a.UNSAFE_componentWillMount == "function" && a.UNSAFE_componentWillMount()), typeof a.componentDidMount == "function" && (t.flags |= 4194308)) : (typeof a.componentDidMount == "function" && (t.flags |= 4194308), t.memoizedProps = r, t.memoizedState = l), a.props = r, a.state = l, a.context = o, r = c) : (typeof a.componentDidMount == "function" && (t.flags |= 4194308), r = !1);
+ a.state = f, Co(t, r, a, i), So(), l = t.memoizedState, s || f !== l || ho ? (typeof d == "function" && (yc(t, n, d, r), l = t.memoizedState), (c = ho || xc(t, n, c, r, f, l, o)) ? (u || typeof a.UNSAFE_componentWillMount != "function" && typeof a.componentWillMount != "function" || (typeof a.componentWillMount == "function" && a.componentWillMount(), typeof a.UNSAFE_componentWillMount == "function" && a.UNSAFE_componentWillMount()), typeof a.componentDidMount == "function" && (t.flags |= 4194308)) : (typeof a.componentDidMount == "function" && (t.flags |= 4194308), t.memoizedProps = r, t.memoizedState = l), a.props = r, a.state = l, a.context = o, r = c) : (typeof a.componentDidMount == "function" && (t.flags |= 4194308), r = !1);
} else {
- a = t.stateNode, ho(e, t), o = t.memoizedProps, u = Cc(n, o), a.props = u, d = t.pendingProps, f = a.context, l = n.contextType, c = Ai, typeof l == "object" && l && (c = Ea(l)), s = n.getDerivedStateFromProps, (l = typeof s == "function" || typeof a.getSnapshotBeforeUpdate == "function") || typeof a.UNSAFE_componentWillReceiveProps != "function" && typeof a.componentWillReceiveProps != "function" || (o !== d || f !== c) && Sc(t, a, r, c), V = !1, f = t.memoizedState, a.state = f, xo(t, r, a, i), H();
+ a = t.stateNode, B(e, t), o = t.memoizedProps, u = Cc(n, o), a.props = u, d = t.pendingProps, f = a.context, l = n.contextType, c = Ai, typeof l == "object" && l && (c = Ea(l)), s = n.getDerivedStateFromProps, (l = typeof s == "function" || typeof a.getSnapshotBeforeUpdate == "function") || typeof a.UNSAFE_componentWillReceiveProps != "function" && typeof a.componentWillReceiveProps != "function" || (o !== d || f !== c) && Sc(t, a, r, c), ho = !1, f = t.memoizedState, a.state = f, Co(t, r, a, i), So();
var p = t.memoizedState;
- o !== d || f !== p || V || e !== null && e.dependencies !== null && wa(e.dependencies) ? (typeof s == "function" && (yc(t, n, s, r), p = t.memoizedState), (u = V || xc(t, n, u, r, f, p, c) || e !== null && e.dependencies !== null && wa(e.dependencies)) ? (l || typeof a.UNSAFE_componentWillUpdate != "function" && typeof a.componentWillUpdate != "function" || (typeof a.componentWillUpdate == "function" && a.componentWillUpdate(r, p, c), typeof a.UNSAFE_componentWillUpdate == "function" && a.UNSAFE_componentWillUpdate(r, p, c)), typeof a.componentDidUpdate == "function" && (t.flags |= 4), typeof a.getSnapshotBeforeUpdate == "function" && (t.flags |= 1024)) : (typeof a.componentDidUpdate != "function" || o === e.memoizedProps && f === e.memoizedState || (t.flags |= 4), typeof a.getSnapshotBeforeUpdate != "function" || o === e.memoizedProps && f === e.memoizedState || (t.flags |= 1024), t.memoizedProps = r, t.memoizedState = p), a.props = r, a.state = p, a.context = c, r = u) : (typeof a.componentDidUpdate != "function" || o === e.memoizedProps && f === e.memoizedState || (t.flags |= 4), typeof a.getSnapshotBeforeUpdate != "function" || o === e.memoizedProps && f === e.memoizedState || (t.flags |= 1024), r = !1);
+ o !== d || f !== p || ho || e !== null && e.dependencies !== null && wa(e.dependencies) ? (typeof s == "function" && (yc(t, n, s, r), p = t.memoizedState), (u = ho || xc(t, n, u, r, f, p, c) || e !== null && e.dependencies !== null && wa(e.dependencies)) ? (l || typeof a.UNSAFE_componentWillUpdate != "function" && typeof a.componentWillUpdate != "function" || (typeof a.componentWillUpdate == "function" && a.componentWillUpdate(r, p, c), typeof a.UNSAFE_componentWillUpdate == "function" && a.UNSAFE_componentWillUpdate(r, p, c)), typeof a.componentDidUpdate == "function" && (t.flags |= 4), typeof a.getSnapshotBeforeUpdate == "function" && (t.flags |= 1024)) : (typeof a.componentDidUpdate != "function" || o === e.memoizedProps && f === e.memoizedState || (t.flags |= 4), typeof a.getSnapshotBeforeUpdate != "function" || o === e.memoizedProps && f === e.memoizedState || (t.flags |= 1024), t.memoizedProps = r, t.memoizedState = p), a.props = r, a.state = p, a.context = c, r = u) : (typeof a.componentDidUpdate != "function" || o === e.memoizedProps && f === e.memoizedState || (t.flags |= 4), typeof a.getSnapshotBeforeUpdate != "function" || o === e.memoizedProps && f === e.memoizedState || (t.flags |= 1024), r = !1);
}
- return a = r, Gc(e, t), r = !!(t.flags & 128), a || r ? (a = t.stateNode, n = r && typeof n.getDerivedStateFromError != "function" ? null : a.render(), t.flags |= 1, e !== null && r ? (t.child = fo(t, e.child, null, i), t.child = fo(t, null, n, i)) : Fc(e, t, n, i), t.memoizedState = a.state, e = t.child) : e = ul(e, t, i), e;
+ return a = r, Gc(e, t), r = !!(t.flags & 128), a || r ? (a = t.stateNode, n = r && typeof n.getDerivedStateFromError != "function" ? null : a.render(), t.flags |= 1, e !== null && r ? (t.child = po(t, e.child, null, i), t.child = po(t, null, n, i)) : Fc(e, t, n, i), t.memoizedState = a.state, e = t.child) : e = ul(e, t, i), e;
}
function Yc(e, t, n, r) {
return pa(), t.flags |= 256, Fc(e, t, n, r), t.child;
@@ -6817,13 +6891,13 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
return e = Mi(22, e, null, t), e.lanes = 0, e;
}
function nl(e, t, n) {
- return fo(t, e.child, null, n), e = el(t, t.pendingProps.children), e.flags |= 2, t.memoizedState = null, e;
+ return po(t, e.child, null, n), e = el(t, t.pendingProps.children), e.flags |= 2, t.memoizedState = null, e;
}
function rl(e, t, n, r, a, o, s, c) {
if (n) return t.flags & 256 ? (jo(t), t.flags &= -257, nl(e, t, c)) : t.memoizedState === null ? (Po(), o = a.fallback, s = t.mode, a = tl({
mode: "visible",
children: a.children
- }, s), o = Li(o, s, c, null), o.flags |= 2, a.return = t, o.return = t, a.sibling = o, t.child = a, fo(t, e.child, null, c), a = t.child, a.memoizedState = Zc(c), a.childLanes = Qc(e, r, c), t.memoizedState = Xc, Bc(null, a)) : (Po(), t.child = e.child, t.flags |= 128, null);
+ }, s), o = Li(o, s, c, null), o.flags |= 2, a.return = t, o.return = t, a.sibling = o, t.child = a, po(t, e.child, null, c), a = t.child, a.memoizedState = Zc(c), a.childLanes = Qc(e, r, c), t.memoizedState = Xc, Bc(null, a)) : (Po(), t.child = e.child, t.flags |= 128, null);
if (jo(t), lm(o)) {
if (r = o.nextSibling && o.nextSibling.dataset, r) var l = r.dgst;
return r = l, r !== "" && (a = Error(i(419)), a.stack = "", a.digest = r, ha({
@@ -6833,8 +6907,8 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
})), nl(e, t, c);
}
if (Pc || Ca(e, t, c, !1), r = (c & e.childLanes) !== 0, Pc || r) {
- if (wo.current !== null) return nl(e, t, c);
- if (r = nd, r !== null && (a = pt(r, c), a !== 0 && a !== s.retryLane)) throw s.retryLane = a, Di(e, a), Nd(r, e, a), Nc;
+ if (To.current !== null) return nl(e, t, c);
+ if (r = rd, r !== null && (a = pt(r, c), a !== 0 && a !== s.retryLane)) throw s.retryLane = a, Di(e, a), Bd(r, e, a), Nc;
return cm(o) || Gd(), nl(e, t, c);
}
return cm(o) ? (t.flags |= 192, t.child = e.child, null) : (e = s.treeContext, ia = dm(o.nextSibling), ra = t, aa = !0, oa = null, sa = !1, e !== null && na(t, e), t = el(t, a.children), t.flags |= 134221824, t);
@@ -7015,9 +7089,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (xe(t, t.stateNode.containerInfo), e === null) throw Error(i(387));
r = t.pendingProps;
var o = t.memoizedState;
- a = o.element, ho(e, t), xo(t, r, null, n);
+ a = o.element, B(e, t), Co(t, r, null, n);
var s = t.memoizedState;
- if (r = s.cache, ya(t, Ma, r), r !== o.cache && Sa(t, [Ma], n, !0), H(), r = s.element, o.isDehydrated) {
+ if (r = s.cache, ya(t, Ma, r), r !== o.cache && Sa(t, [Ma], n, !0), So(), r = s.element, o.isDehydrated) {
if (o = {
element: r,
isDehydrated: !1,
@@ -7036,7 +7110,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
break;
default: e = e.nodeName === "HTML" ? e.ownerDocument.body : e;
}
- for (ia = dm(e.firstChild), ra = t, aa = !0, oa = null, sa = !0, n = po(t, null, r, n), t.child = n; n;) n.flags = n.flags & -3 | 134221824, n = n.sibling;
+ for (ia = dm(e.firstChild), ra = t, aa = !0, oa = null, sa = !0, n = mo(t, null, r, n), t.child = n; n;) n.flags = n.flags & -3 | 134221824, n = n.sibling;
} else {
if (pa(), r === a) {
t = ul(e, t, n);
@@ -7052,7 +7126,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case 5: return e === null && aa && ((a = r = ia) && (r = am(r, t.type, t.pendingProps, sa), r === null ? a = !1 : (t.stateNode = r, ra = t, ia = dm(r.firstChild), sa = !1, a = !0)), a || la(t)), Ce(t), a = t.type, o = t.pendingProps, s = e === null ? null : e.memoizedProps, r = o.children, hp(a, o) ? r = null : s !== null && hp(a, s) && (t.flags |= 32), t.memoizedState !== null && (a = $o(e, t, ns, null, null, n), lh._currentValue = a), Gc(e, t), Fc(e, t, r, n), t.child;
case 6: return e === null && aa && ((e = n = ia) && (n = om(n, t.pendingProps, sa), n === null ? e = !1 : (t.stateNode = n, ra = t, ia = null, e = !0)), e || la(t)), null;
case 13: return $c(e, t, n);
- case 4: return xe(t, t.stateNode.containerInfo), r = t.pendingProps, e === null ? t.child = fo(t, null, r, n) : Fc(e, t, r, n), t.child;
+ case 4: return xe(t, t.stateNode.containerInfo), r = t.pendingProps, e === null ? t.child = po(t, null, r, n) : Fc(e, t, r, n), t.child;
case 11: return Ic(e, t, t.type, t.pendingProps, n);
case 7: return r = t.pendingProps, Gc(e, t), Fc(e, t, r, n), t.child;
case 8: return Fc(e, t, t.pendingProps.children, n), t.child;
@@ -7064,10 +7138,10 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case 19: return cl(e, t, n);
case 31: return Wc(e, t, n);
case 22: return zc(e, t, n, t.pendingProps);
- case 24: return Ta(t), r = Ea(Ma), e === null ? (a = qa(), a === null && (a = nd, o = Na(), a.pooledCache = o, o.refCount++, o !== null && (a.pooledCacheLanes |= n), a = o), t.memoizedState = {
+ case 24: return Ta(t), r = Ea(Ma), e === null ? (a = qa(), a === null && (a = rd, o = Na(), a.pooledCache = o, o.refCount++, o !== null && (a.pooledCacheLanes |= n), a = o), t.memoizedState = {
parent: r,
cache: a
- }, mo(t), ya(t, Ma, a)) : ((e.lanes & n) !== 0 && (ho(e, t), xo(t, null, null, n), H()), a = e.memoizedState, o = t.memoizedState, a.parent === r ? (r = o.cache, ya(t, Ma, r), r !== a.cache && Sa(t, [Ma], n, !0)) : (a = {
+ }, go(t), ya(t, Ma, a)) : ((e.lanes & n) !== 0 && (B(e, t), Co(t, null, null, n), So()), a = e.memoizedState, o = t.memoizedState, a.parent === r ? (r = o.cache, ya(t, Ma, r), r !== a.cache && Sa(t, [Ma], n, !0)) : (a = {
parent: r,
cache: r
}, t.memoizedState = a, t.lanes === 0 && (t.memoizedState = t.updateQueue.baseState = a), ya(t, Ma, r))), Fc(e, t, t.pendingProps.children, n), t.child;
@@ -7289,11 +7363,11 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
n = !0;
}
- return r.rendering = e, r.tail = e.sibling, r.renderingStartTime = Le(), e.sibling = null, o = Io.current, o = a ? o & 1 | 2 : o & 1, r.tailMode === "visible" || r.tailMode === "collapsed" || !n || aa ? Lo(t, o) : (n = o, ge(ko, t), ge(Io, n), Ao === null && (Ao = t)), aa && Qi(t, r.treeForkCount), e;
+ return r.rendering = e, r.tail = e.sibling, r.renderingStartTime = Le(), e.sibling = null, o = Io.current, o = a ? o & 1 | 2 : o & 1, r.tailMode === "visible" || r.tailMode === "collapsed" || !n || aa ? Lo(t, o) : (n = o, ge(Ao, t), ge(Io, n), H === null && (H = t)), aa && Qi(t, r.treeForkCount), e;
}
return yl(t), null;
case 22:
- case 23: return Fo(t), Oo(), r = t.memoizedState !== null, e === null ? r && (t.flags |= 8192) : e.memoizedState !== null !== r && (t.flags |= 8192), r ? n & 536870912 && !(t.flags & 128) && (yl(t), t.subtreeFlags & 6 && (t.flags |= 8192)) : yl(t), n = t.updateQueue, n !== null && _l(t, n.retryQueue), n = null, e !== null && e.memoizedState !== null && e.memoizedState.cachePool !== null && (n = e.memoizedState.cachePool.pool), r = null, t.memoizedState !== null && t.memoizedState.cachePool !== null && (r = t.memoizedState.cachePool.pool), r !== n && (t.flags |= 2048), e !== null && he(Ka), null;
+ case 23: return Fo(t), ko(), r = t.memoizedState !== null, e === null ? r && (t.flags |= 8192) : e.memoizedState !== null !== r && (t.flags |= 8192), r ? n & 536870912 && !(t.flags & 128) && (yl(t), t.subtreeFlags & 6 && (t.flags |= 8192)) : yl(t), n = t.updateQueue, n !== null && _l(t, n.retryQueue), n = null, e !== null && e.memoizedState !== null && e.memoizedState.cachePool !== null && (n = e.memoizedState.cachePool.pool), r = null, t.memoizedState !== null && t.memoizedState.cachePool !== null && (r = t.memoizedState.cachePool.pool), r !== n && (t.flags |= 2048), e !== null && he(Ka), null;
case 24: return n = null, e !== null && (n = e.memoizedState.cache), t.memoizedState.cache !== n && (t.flags |= 2048), ba(Ma), yl(t), null;
case 25: return null;
case 30: return t.flags |= 33554432, yl(t), null;
@@ -7323,7 +7397,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case 4: return Se(), null;
case 10: return ba(t.type), null;
case 22:
- case 23: return Fo(t), Oo(), e !== null && he(Ka), e = t.flags, e & 65536 ? (t.flags = e & -65537 | 128, t) : null;
+ case 23: return Fo(t), ko(), e !== null && he(Ka), e = t.flags, e & 65536 ? (t.flags = e & -65537 | 128, t) : null;
case 24: return ba(Ma), null;
case 25: return null;
default: return null;
@@ -7356,7 +7430,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
break;
case 22:
case 23:
- Fo(t), Oo(), e !== null && he(Ka);
+ Fo(t), ko(), e !== null && he(Ka);
break;
case 24: ba(Ma);
}
@@ -7411,7 +7485,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (t !== null) {
var n = e.stateNode;
try {
- Co(t, n);
+ wo(t, n);
} catch (t) {
pf(e, e.return, t);
}
@@ -7590,7 +7664,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
function Zl(e, t) {
if (e.tag === 30) {
var n = e.stateNode, r = e.memoizedProps, i = _i(r, n), a = yi(r.default, n.paired ? r.share : r.enter);
- a === "none" ? Xl(e) : ql(e, i, a, null, !1) ? (Xl(e), n.paired || t || Md(e, r.onEnter)) : Yl(e.child, !1);
+ a === "none" ? Xl(e) : ql(e, i, a, null, !1) ? (Xl(e), n.paired || t || zd(e, r.onEnter)) : Yl(e.child, !1);
} else if (e.subtreeFlags & 33554432) for (e = e.child; e !== null;) Zl(e, t), e = e.sibling;
else Xl(e);
}
@@ -7605,7 +7679,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var i = t.get(r);
if (i !== void 0) {
var a = yi(n.default, n.share);
- if (a !== "none" && (ql(e, r, a, null, !1) ? (a = e.stateNode, i.paired = a, a.paired = i, Md(e, n.onShare)) : Yl(e.child, !1)), t.delete(r), t.size === 0) break;
+ if (a !== "none" && (ql(e, r, a, null, !1) ? (a = e.stateNode, i.paired = a, a.paired = i, zd(e, n.onShare)) : Yl(e.child, !1)), t.delete(r), t.size === 0) break;
}
}
}
@@ -7618,7 +7692,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
function $l(e) {
if (e.tag === 30) {
var t = e.memoizedProps, n = _i(t, e.stateNode), r = Hl === null ? void 0 : Hl.get(n), i = yi(t.default, r === void 0 ? t.exit : t.share);
- i !== "none" && (ql(e, n, i, null, !1) ? r === void 0 ? Md(e, t.onExit) : (i = e.stateNode, r.paired = i, i.paired = r, Hl.delete(n), Md(e, t.onShare)) : Yl(e.child, !1)), Hl !== null && Ql(e);
+ i !== "none" && (ql(e, n, i, null, !1) ? r === void 0 ? zd(e, t.onExit) : (i = e.stateNode, r.paired = i, i.paired = r, Hl.delete(n), zd(e, t.onShare)) : Yl(e.child, !1)), Hl !== null && Ql(e);
} else if (e.subtreeFlags & 33554432) for (e = e.child; e !== null;) $l(e), e = e.sibling;
else Hl !== null && Ql(e);
}
@@ -7685,7 +7759,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
} else o = e.memoizedState, e.memoizedState = null;
r = e;
var s = e.child;
- Kl = 0, i = iu(r, s, i, i, a, o, !1), e.flags & 4 && i && (t || Md(e, n.onUpdate));
+ Kl = 0, i = iu(r, s, i, i, a, o, !1), e.flags & 4 && i && (t || zd(e, n.onUpdate));
} else e.subtreeFlags & 33554432 && au(e, t);
e = e.sibling;
}
@@ -7840,7 +7914,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case 1: t = n.child.stateNode;
}
try {
- Co(e, t);
+ wo(e, t);
} catch (e) {
pf(n, n.return, e);
}
@@ -8289,7 +8363,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var a = e.memoizedProps, o = e.stateNode;
t = _i(a, o), o = _i(n.memoizedProps, o);
var s = yi(a.default, a.update);
- s === "none" ? t = !1 : (a = n.memoizedState, n.memoizedState = null, n = e.child, Kl = 0, t = iu(e, n, t, o, s, a, !0), Kl !== (a === null ? 0 : a.length) && (e.flags |= 32)), e.flags & 4 && t ? (Md(e, e.memoizedProps.onUpdate), Wl = i) : i !== null && (i.push.apply(i, Wl), Wl = i), fu = e.flags & 32 ? !0 : r;
+ s === "none" ? t = !1 : (a = n.memoizedState, n.memoizedState = null, n = e.child, Kl = 0, t = iu(e, n, t, o, s, a, !0), Kl !== (a === null ? 0 : a.length) && (e.flags |= 32)), e.flags & 4 && t ? (zd(e, e.memoizedProps.onUpdate), Wl = i) : i !== null && (i.push.apply(i, Wl), Wl = i), fu = e.flags & 32 ? !0 : r;
break;
default: Iu(t, e);
}
@@ -8353,7 +8427,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var c = r.stateNode;
try {
var l = i.shared.hiddenCallbacks;
- if (l !== null) for (i.shared.hiddenCallbacks = null, i = 0; i < l.length; i++) So(l[i], c);
+ if (l !== null) for (i.shared.hiddenCallbacks = null, i = 0; i < l.length; i++) V(l[i], c);
} catch (e) {
pf(r, r.return, e);
}
@@ -8438,7 +8512,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
break;
case 23: break;
case 22:
- o = t.stateNode, s = t.alternate, t.memoizedState === null ? (i && s !== null && s.memoizedState !== null && nu(t), o._visibility & 2 ? Uu(e, t, n, r) : (o._visibility |= 2, U(e, t, n, r, !!(t.subtreeFlags & 10256) || !1))) : (i && s !== null && s.memoizedState === null && nu(s), o._visibility & 2 ? Uu(e, t, n, r) : Gu(e, t)), a & 2048 && Vu(s, t);
+ o = t.stateNode, s = t.alternate, t.memoizedState === null ? (i && s !== null && s.memoizedState !== null && nu(t), o._visibility & 2 ? Uu(e, t, n, r) : (o._visibility |= 2, Gu(e, t, n, r, !!(t.subtreeFlags & 10256) || !1))) : (i && s !== null && s.memoizedState === null && nu(s), o._visibility & 2 ? Uu(e, t, n, r) : Ku(e, t)), a & 2048 && Vu(s, t);
break;
case 24:
Uu(e, t, n, r), a & 2048 && Hu(t.alternate, t);
@@ -8449,74 +8523,74 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
default: Uu(e, t, n, r);
}
}
- function U(e, t, n, r, i) {
+ function Gu(e, t, n, r, i) {
for (i &&= !!(t.subtreeFlags & 10256) || !1, t = t.child; t !== null;) {
var a = e, o = t, s = n, c = r, l = o.flags;
switch (o.tag) {
case 0:
case 11:
case 15:
- U(a, o, s, c, i), Cl(8, o);
+ Gu(a, o, s, c, i), Cl(8, o);
break;
case 23: break;
case 22:
var u = o.stateNode;
- o.memoizedState === null ? (u._visibility |= 2, U(a, o, s, c, i)) : u._visibility & 2 ? U(a, o, s, c, i) : Gu(a, o), i && l & 2048 && Vu(o.alternate, o);
+ o.memoizedState === null ? (u._visibility |= 2, Gu(a, o, s, c, i)) : u._visibility & 2 ? Gu(a, o, s, c, i) : Ku(a, o), i && l & 2048 && Vu(o.alternate, o);
break;
case 24:
- U(a, o, s, c, i), i && l & 2048 && Hu(o.alternate, o);
+ Gu(a, o, s, c, i), i && l & 2048 && Hu(o.alternate, o);
break;
- default: U(a, o, s, c, i);
+ default: Gu(a, o, s, c, i);
}
t = t.sibling;
}
}
- function Gu(e, t) {
+ function Ku(e, t) {
if (t.subtreeFlags & 10256) for (t = t.child; t !== null;) {
var n = e, r = t, i = r.flags;
switch (r.tag) {
case 22:
- Gu(n, r), i & 2048 && Vu(r.alternate, r);
+ Ku(n, r), i & 2048 && Vu(r.alternate, r);
break;
case 24:
- Gu(n, r), i & 2048 && Hu(r.alternate, r);
+ Ku(n, r), i & 2048 && Hu(r.alternate, r);
break;
- default: Gu(n, r);
+ default: Ku(n, r);
}
t = t.sibling;
}
}
- var Ku = 8192;
- function qu(e, t, n) {
- if (e.subtreeFlags & Ku) for (e = e.child; e !== null;) Ju(e, t, n), e = e.sibling;
- }
+ var qu = 8192;
function Ju(e, t, n) {
+ if (e.subtreeFlags & qu) for (e = e.child; e !== null;) Yu(e, t, n), e = e.sibling;
+ }
+ function Yu(e, t, n) {
switch (e.tag) {
case 26:
- qu(e, t, n), e.flags & Ku && (e.memoizedState === null ? (e = e.stateNode, (t & 335544128) === t && $m(n, e)) : eh(n, Mu, e.memoizedState, e.memoizedProps));
+ Ju(e, t, n), e.flags & qu && (e.memoizedState === null ? (e = e.stateNode, (t & 335544128) === t && $m(n, e)) : eh(n, Mu, e.memoizedState, e.memoizedProps));
break;
case 5:
- qu(e, t, n), e.flags & Ku && (e = e.stateNode, (t & 335544128) === t && $m(n, e));
+ Ju(e, t, n), e.flags & qu && (e = e.stateNode, (t & 335544128) === t && $m(n, e));
break;
case 3:
case 4:
var r = Mu;
- Mu = Sm(e.stateNode.containerInfo), qu(e, t, n), Mu = r;
+ Mu = Sm(e.stateNode.containerInfo), Ju(e, t, n), Mu = r;
break;
case 22:
- e.memoizedState === null && (r = e.alternate, r !== null && r.memoizedState !== null ? (r = Ku, Ku = 16777216, qu(e, t, n), Ku = r) : qu(e, t, n));
+ e.memoizedState === null && (r = e.alternate, r !== null && r.memoizedState !== null ? (r = qu, qu = 16777216, Ju(e, t, n), qu = r) : Ju(e, t, n));
break;
case 30:
- if ((e.flags & Ku) !== 0 && (r = e.memoizedProps.name, r != null && r !== "auto")) {
+ if ((e.flags & qu) !== 0 && (r = e.memoizedProps.name, r != null && r !== "auto")) {
var i = e.stateNode;
i.paired = null, Hl === null && (Hl = /* @__PURE__ */ new Map()), Hl.set(r, i);
}
- qu(e, t, n);
+ Ju(e, t, n);
break;
- default: qu(e, t, n);
+ default: Ju(e, t, n);
}
}
- function Yu(e) {
+ function Xu(e) {
var t = e.alternate;
if (t !== null && (e = t.child, e !== null)) {
t.child = null;
@@ -8525,62 +8599,62 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
while (e !== null);
}
}
- function W(e) {
+ function Zu(e) {
var t = e.deletions;
if (e.flags & 16) {
if (t !== null) for (var n = 0; n < t.length; n++) {
var r = t[n];
- du = r, Qu(r, e);
+ du = r, ed(r, e);
}
- Yu(e);
+ Xu(e);
}
- if (e.subtreeFlags & 10256) for (e = e.child; e !== null;) Xu(e), e = e.sibling;
+ if (e.subtreeFlags & 10256) for (e = e.child; e !== null;) Qu(e), e = e.sibling;
}
- function Xu(e) {
+ function Qu(e) {
switch (e.tag) {
case 0:
case 11:
case 15:
- W(e), e.flags & 2048 && wl(9, e, e.return);
+ Zu(e), e.flags & 2048 && wl(9, e, e.return);
break;
case 3:
- W(e);
+ Zu(e);
break;
case 12:
- W(e);
+ Zu(e);
break;
case 22:
var t = e.stateNode;
- e.memoizedState !== null && t._visibility & 2 && (e.return === null || e.return.tag !== 13) ? (t._visibility &= -3, Zu(e)) : W(e);
+ e.memoizedState !== null && t._visibility & 2 && (e.return === null || e.return.tag !== 13) ? (t._visibility &= -3, $u(e)) : Zu(e);
break;
- default: W(e);
+ default: Zu(e);
}
}
- function Zu(e) {
+ function $u(e) {
var t = e.deletions;
if (e.flags & 16) {
if (t !== null) for (var n = 0; n < t.length; n++) {
var r = t[n];
- du = r, Qu(r, e);
+ du = r, ed(r, e);
}
- Yu(e);
+ Xu(e);
}
for (e = e.child; e !== null;) {
switch (t = e, t.tag) {
case 0:
case 11:
case 15:
- wl(8, t, t.return), Zu(t);
+ wl(8, t, t.return), $u(t);
break;
case 22:
- n = t.stateNode, n._visibility & 2 && (n._visibility &= -3, Zu(t));
+ n = t.stateNode, n._visibility & 2 && (n._visibility &= -3, $u(t));
break;
- default: Zu(t);
+ default: $u(t);
}
e = e.sibling;
}
}
- function Qu(e, t) {
+ function ed(e, t) {
for (; du !== null;) {
var n = du;
switch (n.tag) {
@@ -8614,7 +8688,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
}
}
- var $u = {
+ var U = {
getCacheForType: function(e) {
var t = Ea(Ma), n = t.data.get(e);
return n === void 0 && (n = e(), t.data.set(e, n)), n;
@@ -8622,37 +8696,37 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
cacheSignal: function() {
return Ea(Ma).controller.signal;
}
- }, ed = typeof WeakMap == "function" ? WeakMap : Map, td = 0, nd = null, rd = null, id = 0, ad = 0, od = null, sd = !1, cd = !1, ld = !1, ud = 0, dd = 0, fd = 0, pd = 0, md = 0, hd = 0, gd = 0, _d = null, vd = null, yd = !1, bd = 0, xd = 0, Sd = Infinity, Cd = null, wd = null, Td = 0, Ed = null, Dd = null, Od = 0, kd = 0, Ad = null, G = null, K = null, q = null, J = null, Y = 0, X = null;
- function Z() {
- return td & 2 && id !== 0 ? id & -id : z.T === null ? gt() : Pf();
+ }, td = typeof WeakMap == "function" ? WeakMap : Map, nd = 0, rd = null, id = null, ad = 0, W = 0, od = null, sd = !1, cd = !1, ld = !1, ud = 0, dd = 0, fd = 0, pd = 0, md = 0, hd = 0, gd = 0, _d = null, vd = null, yd = !1, bd = 0, xd = 0, Sd = Infinity, Cd = null, wd = null, Td = 0, Ed = null, Dd = null, Od = 0, kd = 0, Ad = null, jd = null, Md = null, Nd = null, Pd = null, Fd = 0, Id = null;
+ function Ld() {
+ return nd & 2 && ad !== 0 ? ad & -ad : z.T === null ? gt() : Pf();
}
- function jd() {
+ function Rd() {
if (hd === 0) {
- if (!(id & 536870912) || aa) {
+ if (!(ad & 536870912) || aa) {
var e = et;
et <<= 1, !(et & 3932160) && (et = 262144), hd = e;
} else hd = 536870912;
}
- return e = ko.current, e !== null && (e.flags |= 32), hd;
+ return e = Ao.current, e !== null && (e.flags |= 32), hd;
}
- function Md(e, t) {
+ function zd(e, t) {
if (t != null) {
var n = e.stateNode, r = n.ref;
- r === null && (r = n.ref = Ip(_i(e.memoizedProps, n))), q === null && (q = []), q.push(t.bind(null, r));
+ r === null && (r = n.ref = Ip(_i(e.memoizedProps, n))), Nd === null && (Nd = []), Nd.push(t.bind(null, r));
}
}
- function Nd(e, t, n) {
- (e === nd && (ad === 2 || ad === 9) || e.cancelPendingCommit !== null) && (Bd(e, 0), Ld(e, id, hd, !1)), lt(e, n), (!(td & 2) || e !== nd) && (e === nd && (!(td & 2) && (pd |= n), dd === 4 && Ld(e, id, hd, !1)), Ef(e));
+ function Bd(e, t, n) {
+ (e === rd && (W === 2 || W === 9) || e.cancelPendingCommit !== null) && (Z(e, 0), J(e, ad, hd, !1)), lt(e, n), (!(nd & 2) || e !== rd) && (e === rd && (!(nd & 2) && (pd |= n), dd === 4 && J(e, ad, hd, !1)), Ef(e));
}
- function Pd(e, t, n) {
- if (td & 6) throw Error(i(327));
+ function G(e, t, n) {
+ if (nd & 6) throw Error(i(327));
var r = !n && !(t & 127) && (t & e.expiredLanes) === 0 || it(e, t), a = r ? Jd(e, t) : Kd(e, t, !0), o = r;
do {
if (a === 0) {
- cd && !r && Ld(e, t, 0, !1);
+ cd && !r && J(e, t, 0, !1);
break;
}
- if (n = e.current.alternate, o && !Id(n)) a = Kd(e, t, !1), o = !1;
+ if (n = e.current.alternate, o && !q(n)) a = Kd(e, t, !1), o = !1;
else {
if (a === 2) {
if (o = t, e.errorRecoveryDisabledLanes & o) var s = 0;
@@ -8663,7 +8737,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var c = e;
a = _d;
var l = c.current.memoizedState.isDehydrated;
- if (l && (Bd(c, s).flags |= 256), s = Kd(c, s, !1), s !== 2 && s !== 6) {
+ if (l && (Z(c, s).flags |= 256), s = Kd(c, s, !1), s !== 2 && s !== 6) {
if (ld && !l) {
c.errorRecoveryDisabledLanes |= o, pd |= o, a = 4;
break a;
@@ -8676,7 +8750,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
}
if (a === 1) {
- Bd(e, 0), Ld(e, t, 0, !0);
+ Z(e, 0), J(e, t, 0, !0);
break;
}
a: {
@@ -8685,7 +8759,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case 1: throw Error(i(345));
case 4: if ((t & 4194048) !== t && (t & 62914560) !== t) break;
case 6:
- Ld(r, t, hd, !sd);
+ J(r, t, hd, !sd);
break a;
case 2:
vd = null;
@@ -8695,18 +8769,18 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
default: throw Error(i(329));
}
if ((t & 62914560) === t && (a = bd + 300 - Le(), 10 < a)) {
- if (Ld(r, t, hd, !sd), rt(r, 0, !0) !== 0) break a;
- Od = t, r.timeoutHandle = vp(Fd.bind(null, r, n, vd, Cd, yd, t, hd, pd, gd, sd, o, "Throttled", -0, 0), a);
+ if (J(r, t, hd, !sd), rt(r, 0, !0) !== 0) break a;
+ Od = t, r.timeoutHandle = vp(K.bind(null, r, n, vd, Cd, yd, t, hd, pd, gd, sd, o, "Throttled", -0, 0), a);
break a;
}
- Fd(r, n, vd, Cd, yd, t, hd, pd, gd, sd, o, null, -0, 0);
+ K(r, n, vd, Cd, yd, t, hd, pd, gd, sd, o, null, -0, 0);
}
break;
}
} while (1);
Ef(e);
}
- function Fd(e, t, n, r, i, a, o, s, c, l, u, d, f, p) {
+ function K(e, t, n, r, i, a, o, s, c, l, u, d, f, p) {
e.timeoutHandle = -1;
var m = t.subtreeFlags, h = (a & 335544064) === a;
d = null, (h || m & 8192 || (m & 16785408) == 16785408) && (d = {
@@ -8718,9 +8792,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
waitingForImages: !0,
waitingForViewTransition: !1,
unsuspend: gn
- }, Hl = null, Ju(t, a, d), h && (m = d, h = e.containerInfo, h = (h.nodeType === 9 ? h : h.ownerDocument).__reactViewTransition, h != null && (m.count++, m.waitingForViewTransition = !0, m = ih.bind(m), h.finished.then(m, m))), m = (a & 62914560) === a ? bd - Le() : (a & 4194048) === a ? xd - Le() : 0, m = nh(d, m), m !== null) ? (Od = a, e.cancelPendingCommit = m(tf.bind(null, e, t, a, n, r, i, o, s, c, l, u, d, null, f, p)), Ld(e, a, o, !l)) : tf(e, t, a, n, r, i, o, s, c, l, u, d);
+ }, Hl = null, Yu(t, a, d), h && (m = d, h = e.containerInfo, h = (h.nodeType === 9 ? h : h.ownerDocument).__reactViewTransition, h != null && (m.count++, m.waitingForViewTransition = !0, m = ih.bind(m), h.finished.then(m, m))), m = (a & 62914560) === a ? bd - Le() : (a & 4194048) === a ? xd - Le() : 0, m = nh(d, m), m !== null) ? (Od = a, e.cancelPendingCommit = m(tf.bind(null, e, t, a, n, r, i, o, s, c, l, u, d, null, f, p)), J(e, a, o, !l)) : tf(e, t, a, n, r, i, o, s, c, l, u, d);
}
- function Id(e) {
+ function q(e) {
for (var t = e;;) {
var n = t.tag;
if ((n === 0 || n === 11 || n === 15) && t.flags & 16384 && (n = t.updateQueue, n !== null && (n = n.stores, n !== null))) for (var r = 0; r < n.length; r++) {
@@ -8744,7 +8818,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
return !0;
}
- function Ld(e, t, n, r) {
+ function J(e, t, n, r) {
t = at(e, t), t &= ~md, t &= ~pd, e.suspendedLanes |= t, e.pingedLanes &= ~t, r && (e.warmLanes |= t), r = e.expirationTimes;
for (var i = t; 0 < i;) {
var a = 31 - Ye(i), o = 1 << a;
@@ -8752,27 +8826,27 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
n !== 0 && dt(e, n, t);
}
- function Rd() {
- return td & 6 ? !0 : (Df(0, !1), !1);
+ function Y() {
+ return nd & 6 ? !0 : (Df(0, !1), !1);
}
- function zd() {
- if (rd !== null) {
- if (ad === 0) var e = rd.return;
- else e = rd, va = _a = null, as(e), B = null, oo = 0, e = rd;
+ function X() {
+ if (id !== null) {
+ if (W === 0) var e = id.return;
+ else e = id, va = _a = null, as(e), oo = null, so = 0, e = id;
for (; e !== null;) Sl(e.alternate, e), e = e.return;
- rd = null;
+ id = null;
}
}
- function Bd(e, t) {
+ function Z(e, t) {
var n = e.timeoutHandle;
- return n !== -1 && (e.timeoutHandle = -1, yp(n)), n = e.cancelPendingCommit, n !== null && (e.cancelPendingCommit = null, n()), Od = 0, zd(), nd = e, rd = n = Pi(e.current, null), id = t, ad = 0, od = null, sd = !1, cd = it(e, t), ld = !1, gd = hd = md = pd = fd = dd = 0, vd = _d = null, yd = !1, ud = at(e, t), wi(), n;
+ return n !== -1 && (e.timeoutHandle = -1, yp(n)), n = e.cancelPendingCommit, n !== null && (e.cancelPendingCommit = null, n()), Od = 0, X(), rd = e, id = n = Pi(e.current, null), ad = t, W = 0, od = null, sd = !1, cd = it(e, t), ld = !1, gd = hd = md = pd = fd = dd = 0, vd = _d = null, yd = !1, ud = at(e, t), wi(), n;
}
function Vd(e, t) {
- Vo = null, z.H = hc, t === Xa || t === Qa ? (t = io(), ad = 3) : t === Za ? (t = io(), ad = 4) : ad = t === Nc ? 8 : typeof t == "object" && t && typeof t.then == "function" ? 6 : 1, od = t, rd === null && (dd = 1, Dc(e, Hi(t, e.current)));
+ Vo = null, z.H = hc, t === Xa || t === Qa ? (t = io(), W = 3) : t === Za ? (t = io(), W = 4) : W = t === Nc ? 8 : typeof t == "object" && t && typeof t.then == "function" ? 6 : 1, od = t, id === null && (dd = 1, Dc(e, Hi(t, e.current)));
}
function Hd() {
- var e = ko.current;
- return e === null ? !0 : (id & 4194048) === id ? Ao === null : (id & 62914560) === id || id & 536870912 ? e === Ao : !1;
+ var e = Ao.current;
+ return e === null ? !0 : (ad & 4194048) === ad ? H === null : (ad & 62914560) === ad || ad & 536870912 ? e === H : !1;
}
function Ud() {
var e = z.H;
@@ -8780,37 +8854,37 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
function Wd() {
var e = z.A;
- return z.A = $u, e;
+ return z.A = U, e;
}
function Gd() {
- dd = 4, sd || (id & 4194048) !== id && ko.current !== null || (cd = !0), !(fd & 134217727) && !(pd & 134217727) || nd === null || Ld(nd, id, hd, !1);
+ dd = 4, sd || (ad & 4194048) !== ad && Ao.current !== null || (cd = !0), !(fd & 134217727) && !(pd & 134217727) || rd === null || J(rd, ad, hd, !1);
}
function Kd(e, t, n) {
- var r = td;
- td |= 2;
+ var r = nd;
+ nd |= 2;
var i = Ud(), a = Wd();
- (nd !== e || id !== t) && (Cd = null, Bd(e, t)), t = !1;
+ (rd !== e || ad !== t) && (Cd = null, Z(e, t)), t = !1;
var o = dd;
a: do
try {
- if (ad !== 0 && rd !== null) {
- var s = rd, c = od;
- switch (ad) {
+ if (W !== 0 && id !== null) {
+ var s = id, c = od;
+ switch (W) {
case 8:
- zd(), o = 6;
+ X(), o = 6;
break a;
case 3:
case 2:
case 9:
case 6:
- ko.current === null && (t = !0);
- var l = ad;
- if (ad = 0, od = null, Qd(e, s, c, l), n && cd) {
+ Ao.current === null && (t = !0);
+ var l = W;
+ if (W = 0, od = null, Qd(e, s, c, l), n && cd) {
o = 0;
break a;
}
break;
- default: l = ad, ad = 0, od = null, Qd(e, s, c, l);
+ default: l = W, W = 0, od = null, Qd(e, s, c, l);
}
}
qd(), o = dd;
@@ -8819,69 +8893,69 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
Vd(e, t);
}
while (1);
- return t && e.shellSuspendCounter++, va = _a = null, td = r, z.H = i, z.A = a, rd === null && (nd = null, id = 0, wi()), o;
+ return t && e.shellSuspendCounter++, va = _a = null, nd = r, z.H = i, z.A = a, id === null && (rd = null, ad = 0, wi()), o;
}
function qd() {
- for (; rd !== null;) Xd(rd);
+ for (; id !== null;) Xd(id);
}
function Jd(e, t) {
- var n = td;
- td |= 2;
+ var n = nd;
+ nd |= 2;
var r = Ud(), a = Wd();
- nd !== e || id !== t ? (Cd = null, Sd = Le() + 500, Bd(e, t)) : cd = it(e, t);
+ rd !== e || ad !== t ? (Cd = null, Sd = Le() + 500, Z(e, t)) : cd = it(e, t);
a: do
try {
- if (ad !== 0 && rd !== null) {
- t = rd;
+ if (W !== 0 && id !== null) {
+ t = id;
var o = od;
- b: switch (ad) {
+ b: switch (W) {
case 1:
- ad = 0, od = null, Qd(e, t, o, 1);
+ W = 0, od = null, Qd(e, t, o, 1);
break;
case 2:
case 9:
if (eo(o)) {
- ad = 0, od = null, Zd(t);
+ W = 0, od = null, Zd(t);
break;
}
t = function() {
- ad !== 2 && ad !== 9 || nd !== e || (ad = 7), Ef(e);
+ W !== 2 && W !== 9 || rd !== e || (W = 7), Ef(e);
}, o.then(t, t);
break a;
case 3:
- ad = 7;
+ W = 7;
break a;
case 4:
- ad = 5;
+ W = 5;
break a;
case 7:
- eo(o) ? (ad = 0, od = null, Zd(t)) : (ad = 0, od = null, Qd(e, t, o, 7));
+ eo(o) ? (W = 0, od = null, Zd(t)) : (W = 0, od = null, Qd(e, t, o, 7));
break;
case 5:
var s = null;
- switch (rd.tag) {
- case 26: s = rd.memoizedState;
+ switch (id.tag) {
+ case 26: s = id.memoizedState;
case 5:
case 27:
- var c = rd;
+ var c = id;
if (s ? Zm(s) : c.stateNode.complete) {
- ad = 0, od = null;
+ W = 0, od = null;
var l = c.sibling;
- if (l !== null) rd = l;
+ if (l !== null) id = l;
else {
var u = c.return;
- u === null ? rd = null : (rd = u, $d(u));
+ u === null ? id = null : (id = u, $d(u));
}
break b;
}
}
- ad = 0, od = null, Qd(e, t, o, 5);
+ W = 0, od = null, Qd(e, t, o, 5);
break;
case 6:
- ad = 0, od = null, Qd(e, t, o, 6);
+ W = 0, od = null, Qd(e, t, o, 6);
break;
case 8:
- zd(), dd = 6;
+ X(), dd = 6;
break a;
default: throw Error(i(462));
}
@@ -8892,47 +8966,47 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
Vd(e, t);
}
while (1);
- return va = _a = null, z.H = r, z.A = a, td = n, rd === null ? (nd = null, id = 0, wi(), dd) : 0;
+ return va = _a = null, z.H = r, z.A = a, nd = n, id === null ? (rd = null, ad = 0, wi(), dd) : 0;
}
function Yd() {
- for (; rd !== null && !Fe();) Xd(rd);
+ for (; id !== null && !Fe();) Xd(id);
}
function Xd(e) {
var t = pl(e.alternate, e, ud);
- e.memoizedProps = e.pendingProps, t === null ? $d(e) : rd = t;
+ e.memoizedProps = e.pendingProps, t === null ? $d(e) : id = t;
}
function Zd(e) {
var t = e, n = t.alternate;
switch (t.tag) {
case 15:
case 0:
- t = qc(n, t, t.pendingProps, t.type, void 0, id);
+ t = qc(n, t, t.pendingProps, t.type, void 0, ad);
break;
case 11:
- t = qc(n, t, t.pendingProps, t.type.render, t.ref, id);
+ t = qc(n, t, t.pendingProps, t.type.render, t.ref, ad);
break;
case 5:
as(t);
var r = t;
r === ra && (aa ? (da(r), r.tag === 5 && r.stateNode != null && (ia = r.stateNode)) : (da(r), aa = !0));
- default: Sl(n, t), t = rd = Fi(t, ud), t = pl(n, t, ud);
+ default: Sl(n, t), t = id = Fi(t, ud), t = pl(n, t, ud);
}
- e.memoizedProps = e.pendingProps, t === null ? $d(e) : rd = t;
+ e.memoizedProps = e.pendingProps, t === null ? $d(e) : id = t;
}
function Qd(e, t, n, r) {
- va = _a = null, as(t), B = null, oo = 0;
+ va = _a = null, as(t), oo = null, so = 0;
var i = t.return;
try {
- if (Mc(e, i, t, n, id)) {
- dd = 1, Dc(e, Hi(n, e.current)), rd = null;
+ if (Mc(e, i, t, n, ad)) {
+ dd = 1, Dc(e, Hi(n, e.current)), id = null;
return;
}
} catch (t) {
- if (i !== null) throw rd = i, t;
- dd = 1, Dc(e, Hi(n, e.current)), rd = null;
+ if (i !== null) throw id = i, t;
+ dd = 1, Dc(e, Hi(n, e.current)), id = null;
return;
}
- t.flags & 32768 ? (aa || r === 1 ? e = !0 : cd || id & 536870912 ? e = !1 : (sd = e = !0, (r === 2 || r === 9 || r === 3 || r === 6) && (r = ko.current, r !== null && r.tag === 13 && (r.flags |= 16384))), ef(t, e)) : $d(t);
+ t.flags & 32768 ? (aa || r === 1 ? e = !0 : cd || ad & 536870912 ? e = !1 : (sd = e = !0, (r === 2 || r === 9 || r === 3 || r === 6) && (r = Ao.current, r !== null && r.tag === 13 && (r.flags |= 16384))), ef(t, e)) : $d(t);
}
function $d(e) {
var t = e;
@@ -8944,14 +9018,14 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
e = t.return;
var n = bl(t.alternate, t, ud);
if (n !== null) {
- rd = n;
+ id = n;
return;
}
if (t = t.sibling, t !== null) {
- rd = t;
+ id = t;
return;
}
- rd = t = e;
+ id = t = e;
} while (t !== null);
dd === 0 && (dd = 5);
}
@@ -8959,41 +9033,41 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
do {
var n = xl(e.alternate, e);
if (n !== null) {
- n.flags &= 32767, rd = n;
+ n.flags &= 32767, id = n;
return;
}
if (n = e.return, n !== null && (n.flags |= 32768, n.subtreeFlags = 0, n.deletions = null), !t && (e = e.sibling, e !== null)) {
- rd = e;
+ id = e;
return;
}
- rd = e = n;
+ id = e = n;
} while (e !== null);
- dd = 6, rd = null;
+ dd = 6, id = null;
}
function tf(e, t, n, r, a, o, s, c, l, u, d, f) {
e.cancelPendingCommit = null;
do
uf();
while (Td !== 0);
- if (td & 6) throw Error(i(327));
+ if (nd & 6) throw Error(i(327));
if (t !== null) {
if (t === e.current) throw Error(i(177));
- e === nd && (rd = nd = null, id = 0), Dd = t, Ed = e, Od = n, Ad = a, G = r, nf(e, t, n, s, c, l, f);
+ e === rd && (id = rd = null, ad = 0), Dd = t, Ed = e, Od = n, Ad = a, jd = r, nf(e, t, n, s, c, l, f);
}
}
function nf(e, t, n, r, i, a, o) {
var s = t.lanes | t.childLanes;
- if (kd = s, s |= Ci, ut(e, n, s, r, i, a), q = null, (n & 335544064) === n ? (J = La(e), r = 10262) : (J = null, r = 10256), (t.subtreeFlags & r) !== 0 || (t.flags & r) !== 0 ? (e.callbackNode = null, e.callbackPriority = 0, yf(Ve, function() {
+ if (kd = s, s |= Ci, ut(e, n, s, r, i, a), Nd = null, (n & 335544064) === n ? (Pd = La(e), r = 10262) : (Pd = null, r = 10256), (t.subtreeFlags & r) !== 0 || (t.flags & r) !== 0 ? (e.callbackNode = null, e.callbackPriority = 0, yf(Ve, function() {
return df(), null;
})) : (e.callbackNode = null, e.callbackPriority = 0), Vl = !1, r = !!(t.flags & 13878), t.subtreeFlags & 13878 || r) {
- r = z.T, z.T = null, i = ue.p, ue.p = 2, a = td, td |= 4;
+ r = z.T, z.T = null, i = ue.p, ue.p = 2, a = nd, nd |= 4;
try {
gu(e, t, n);
} finally {
- td = a, ue.p = i, z.T = r;
+ nd = a, ue.p = i, z.T = r;
}
}
- Td = 1, Vl ? K = Pp(o, e.containerInfo, J, of, sf, af, cf, df, rf, null, null) : (of(), sf(), cf());
+ Td = 1, Vl ? Md = Pp(o, e.containerInfo, Pd, of, sf, af, cf, df, rf, null, null) : (of(), sf(), cf());
}
function rf(e) {
if (Td !== 0) {
@@ -9012,8 +9086,8 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
r = z.T, z.T = null;
var i = ue.p;
ue.p = 2;
- var a = td;
- td |= 4;
+ var a = nd;
+ nd |= 4;
try {
pu = mu = !1, Nu(t, e, n), n = up;
var o = qr(e.containerInfo), s = n.focusedElem, c = n.selectionRange;
@@ -9046,7 +9120,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
vh = !!lp, up = lp = null;
} finally {
- td = a, ue.p = i, z.T = r;
+ nd = a, ue.p = i, z.T = r;
}
}
e.current = t, Td = 2;
@@ -9060,12 +9134,12 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
n = z.T, z.T = null;
var r = ue.p;
ue.p = 2;
- var i = td;
- td |= 4;
+ var i = nd;
+ nd |= 4;
try {
vu(e, t.alternate, t);
} finally {
- td = i, ue.p = r, z.T = n;
+ nd = i, ue.p = r, z.T = n;
}
}
Td = 3;
@@ -9074,9 +9148,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
function cf() {
if (Td === 4 || Td === 3) {
Td = 0;
- var e = K;
- K = null, Ie();
- var t = Ed, n = Dd, r = Od, i = G, a = (r & 335544064) === r ? 10262 : 10256;
+ var e = Md;
+ Md = null, Ie();
+ var t = Ed, n = Dd, r = Od, i = jd, a = (r & 335544064) === r ? 10262 : 10256;
if ((n.subtreeFlags & a) !== 0 || (n.flags & a) !== 0 ? Td = 5 : (Td = 0, Dd = Ed = null, lf(t, t.pendingLanes)), a = t.pendingLanes, a === 0 && (wd = null), ht(r), n = n.stateNode, qe && typeof qe.onCommitFiberRoot == "function") try {
qe.onCommitFiberRoot(Ke, n, void 0, (n.current.flags & 128) == 128);
} catch {}
@@ -9091,15 +9165,15 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
z.T = n, ue.p = a;
}
}
- if (i = q, o = J, J = null, i !== null && (q = null, o === null && (o = []), e !== null)) for (c = 0; c < i.length; c++) n = (0, i[c])(o), n !== void 0 && e.finished.finally(n);
- Od & 3 && uf(), Ef(t), a = t.pendingLanes, r & 261930 && a & 42 ? t === X ? Y++ : (Y = 0, X = t) : (Y = 0, X = null), Df(0, !1);
+ if (i = Nd, o = Pd, Pd = null, i !== null && (Nd = null, o === null && (o = []), e !== null)) for (c = 0; c < i.length; c++) n = (0, i[c])(o), n !== void 0 && e.finished.finally(n);
+ Od & 3 && uf(), Ef(t), a = t.pendingLanes, r & 261930 && a & 42 ? t === Id ? Fd++ : (Fd = 0, Id = t) : (Fd = 0, Id = null), Df(0, !1);
}
}
function lf(e, t) {
(e.pooledCacheLanes &= t) === 0 && (t = e.pooledCache, t != null && (e.pooledCache = null, Pa(t)));
}
function uf() {
- return K !== null && (K.skipTransition(), K = null), of(), sf(), cf(), df();
+ return Md !== null && (Md.skipTransition(), Md = null), of(), sf(), cf(), df();
}
function df() {
if (Td !== 5) return !1;
@@ -9109,9 +9183,9 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
try {
ue.p = 32 > n ? 32 : n, z.T = null, n = Ad, Ad = null;
var o = Ed, s = Od;
- if (Td = 0, Dd = Ed = null, Od = 0, td & 6) throw Error(i(331));
- var c = td;
- if (td |= 4, Xu(o.current), Wu(o, o.current, s, n), td = c, Df(0, !1), qe && typeof qe.onPostCommitFiberRoot == "function") try {
+ if (Td = 0, Dd = Ed = null, Od = 0, nd & 6) throw Error(i(331));
+ var c = nd;
+ if (nd |= 4, Qu(o.current), Wu(o, o.current, s, n), nd = c, Df(0, !1), qe && typeof qe.onPostCommitFiberRoot == "function") try {
qe.onPostCommitFiberRoot(Ke, o);
} catch {}
return !0;
@@ -9120,7 +9194,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
}
function ff(e, t, n) {
- t = Hi(n, t), t = kc(e.stateNode, t, 2), e = _o(e, t, 2), e !== null && (lt(e, 2), Ef(e));
+ t = Hi(n, t), t = kc(e.stateNode, t, 2), e = vo(e, t, 2), e !== null && (lt(e, 2), Ef(e));
}
function pf(e, t, n) {
if (e.tag === 3) ff(e, e, n);
@@ -9132,7 +9206,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (t.tag === 1) {
var r = t.stateNode;
if (typeof t.type.getDerivedStateFromError == "function" || typeof r.componentDidCatch == "function" && (wd === null || !wd.has(r))) {
- e = Hi(n, e), n = Ac(2), r = _o(t, n, 2), r !== null && (jc(n, r, t, e), lt(r, 2), Ef(r));
+ e = Hi(n, e), n = Ac(2), r = vo(t, n, 2), r !== null && (jc(n, r, t, e), lt(r, 2), Ef(r));
break;
}
}
@@ -9142,7 +9216,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
function mf(e, t, n) {
var r = e.pingCache;
if (r === null) {
- r = e.pingCache = new ed();
+ r = e.pingCache = new td();
var i = /* @__PURE__ */ new Set();
r.set(t, i);
} else i = r.get(t), i === void 0 && (i = /* @__PURE__ */ new Set(), r.set(t, i));
@@ -9150,7 +9224,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
}
function hf(e, t, n) {
var r = e.pingCache;
- r !== null && r.delete(t), e.pingedLanes |= e.suspendedLanes & n, e.warmLanes &= ~n, nd === e && (id & n) === n && (dd === 4 || dd === 3 && (id & 62914560) === id && 300 > Le() - bd ? td & 2 ? md |= n : Bd(e, 0) : md |= n, gd === id && (gd = 0)), Ef(e);
+ r !== null && r.delete(t), e.pingedLanes |= e.suspendedLanes & n, e.warmLanes &= ~n, rd === e && (ad & n) === n && (dd === 4 || dd === 3 && (ad & 62914560) === ad && 300 > Le() - bd ? nd & 2 ? md |= n : Z(e, 0) : md |= n, gd === ad && (gd = 0)), Ef(e);
}
function gf(e, t) {
t === 0 && (t = st()), e = Di(e, t), e !== null && (lt(e, t), Ef(e));
@@ -9198,7 +9272,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
a = (1 << 31 - Ye(42 | e) + 1) - 1, a &= i & ~(o & ~s), a = a & 201326741 ? a & 201326741 | 1 : a ? a | 2 : 0;
}
a !== 0 && (n = !0, Mf(r, a));
- } else a = id, a = rt(r, r === nd ? a : 0, r.cancelPendingCommit !== null || r.timeoutHandle !== -1), !(a & 3) || it(r, a) || (n = !0, Mf(r, a));
+ } else a = ad, a = rt(r, r === rd ? a : 0, r.cancelPendingCommit !== null || r.timeoutHandle !== -1), !(a & 3) || it(r, a) || (n = !0, Mf(r, a));
}
r = r.next;
}
@@ -9224,7 +9298,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var o = 31 - Ye(a), s = 1 << o, c = i[o];
c === -1 ? ((s & n) === 0 || (s & r) !== 0) && (i[o] = ot(s, t)) : c <= t && (e.expiredLanes |= s), a &= ~s;
}
- if (t = nd, n = id, n = rt(e, e === t ? n : 0, e.cancelPendingCommit !== null || e.timeoutHandle !== -1), r = e.callbackNode, n === 0 || e === t && (ad === 2 || ad === 9) || e.cancelPendingCommit !== null) return r !== null && r !== null && Pe(r), e.callbackNode = null, e.callbackPriority = 0;
+ if (t = rd, n = ad, n = rt(e, e === t ? n : 0, e.cancelPendingCommit !== null || e.timeoutHandle !== -1), r = e.callbackNode, n === 0 || e === t && (W === 2 || W === 9) || e.cancelPendingCommit !== null) return r !== null && r !== null && Pe(r), e.callbackNode = null, e.callbackPriority = 0;
if (!(n & 3) || it(e, n)) {
if (t = n & -n, t === e.callbackPriority) return t;
switch (r !== null && Pe(r), ht(n)) {
@@ -9248,16 +9322,16 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (Td !== 0 && Td !== 5) return e.callbackNode = null, e.callbackPriority = 0, null;
var n = e.callbackNode;
if (uf() && e.callbackNode !== n) return null;
- var r = id;
- return r = rt(e, e === nd ? r : 0, e.cancelPendingCommit !== null || e.timeoutHandle !== -1), r === 0 ? null : (Pd(e, r, t), Af(e, Le()), e.callbackNode != null && e.callbackNode === n ? jf.bind(null, e) : null);
+ var r = ad;
+ return r = rt(e, e === rd ? r : 0, e.cancelPendingCommit !== null || e.timeoutHandle !== -1), r === 0 ? null : (G(e, r, t), Af(e, Le()), e.callbackNode != null && e.callbackNode === n ? jf.bind(null, e) : null);
}
function Mf(e, t) {
if (uf()) return null;
- Pd(e, t, !0);
+ G(e, t, !0);
}
function Nf() {
Sp(function() {
- td & 6 ? Ne(ze, Of) : kf();
+ nd & 6 ? Ne(ze, Of) : kf();
});
}
function Pf() {
@@ -9413,7 +9487,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case "keypress": if (Mn(n) === 0) break a;
case "keydown":
case "keyup":
- l = rr;
+ l = tr;
break;
case "focusin":
u = "focus", l = Kn;
@@ -9450,7 +9524,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case "touchend":
case "touchmove":
case "touchstart":
- l = or;
+ l = ir;
break;
case oi:
case si:
@@ -9458,14 +9532,14 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
l = qn;
break;
case fi:
- l = sr;
+ l = ar;
break;
case "scroll":
case "scrollend":
l = zn;
break;
case "wheel":
- l = cr;
+ l = or;
break;
case "copy":
case "cut":
@@ -9480,13 +9554,13 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
case "pointerout":
case "pointerover":
case "pointerup":
- l = ir;
+ l = nr;
break;
case "submit":
- l = ar;
+ l = rr;
break;
case "toggle":
- case "beforetoggle": l = lr;
+ case "beforetoggle": l = sr;
}
var d = !!(t & 4), f = !d && (e === "scroll" || e === "scrollend"), p = d ? c === null ? null : c + "Capture" : c;
d = [];
@@ -9504,7 +9578,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
if (!(t & 7)) {
a: {
if (l = e === "mouseover" || e === "pointerover", c = e === "mouseout" || e === "pointerout", l && n !== _n && (u = n.relatedTarget || n.fromElement) && (kt(u) || u[xt])) break a;
- (c || l) && (u = i.window === i ? i : (l = i.ownerDocument) ? l.defaultView || l.parentWindow : window, c ? (l = n.relatedTarget || n.toElement, c = r, l = l ? kt(l) : null, l !== null && (f = o(l), d = l.tag, l !== f || d !== 5 && d !== 27 && d !== 6) && (l = null)) : (c = null, l = r), c !== l && (d = Wn, g = "onMouseLeave", p = "onMouseEnter", m = "mouse", (e === "pointerout" || e === "pointerover") && (d = ir, g = "onPointerLeave", p = "onPointerEnter", m = "pointer"), f = c == null ? u : jt(c), h = l == null ? u : jt(l), u = new d(g, m + "leave", c, n, i), u.target = f, u.relatedTarget = h, g = null, kt(i) === r && (d = new d(p, m + "enter", l, n, i), d.target = h, d.relatedTarget = f, g = d), f = g, d = c && l ? w(c, l, Xf) : null, c !== null && Zf(s, u, c, d, !1), l !== null && f !== null && Zf(s, f, l, d, !0)));
+ (c || l) && (u = i.window === i ? i : (l = i.ownerDocument) ? l.defaultView || l.parentWindow : window, c ? (l = n.relatedTarget || n.toElement, c = r, l = l ? kt(l) : null, l !== null && (f = o(l), d = l.tag, l !== f || d !== 5 && d !== 27 && d !== 6) && (l = null)) : (c = null, l = r), c !== l && (d = Wn, g = "onMouseLeave", p = "onMouseEnter", m = "mouse", (e === "pointerout" || e === "pointerover") && (d = nr, g = "onPointerLeave", p = "onPointerEnter", m = "pointer"), f = c == null ? u : jt(c), h = l == null ? u : jt(l), u = new d(g, m + "leave", c, n, i), u.target = f, u.relatedTarget = h, g = null, kt(i) === r && (d = new d(p, m + "enter", l, n, i), d.target = h, d.relatedTarget = f, g = d), f = g, d = c && l ? w(c, l, Xf) : null, c !== null && Zf(s, u, c, d, !1), l !== null && f !== null && Zf(s, f, l, d, !0)));
}
a: {
if (c = r ? jt(r) : window, l = c.nodeName && c.nodeName.toLowerCase(), l === "select" || l === "input" && c.type === "file") var _ = kr;
@@ -10797,7 +10871,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
M: Pm
};
function wm() {
- var e = Cm.f(), t = Rd();
+ var e = Cm.f(), t = Y();
return e || t;
}
function Tm(e) {
@@ -11215,13 +11289,13 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
element: r,
isDehydrated: n,
cache: t
- }, mo(a), e;
+ }, go(a), e;
}
function fh(e) {
return e ? (e = Ai, e) : Ai;
}
function ph(e, t, n, r, i, a) {
- i = fh(i), r.context === null ? r.context = i : r.pendingContext = i, r = go(t), r.payload = { element: n }, a = a === void 0 ? null : a, a !== null && (r.callback = a), n = _o(e, r, t), n !== null && (Nd(n, e, t), vo(n, e, t));
+ i = fh(i), r.context === null ? r.context = i : r.pendingContext = i, r = _o(t), r.payload = { element: n }, a = a === void 0 ? null : a, a !== null && (r.callback = a), n = vo(e, r, t), n !== null && (Bd(n, e, t), yo(n, e, t));
}
function mh(e, t) {
if (e = e.memoizedState, e !== null && e.dehydrated !== null) {
@@ -11235,15 +11309,15 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
function gh(e) {
if (e.tag === 13 || e.tag === 31) {
var t = Di(e, 67108864);
- t !== null && Nd(t, e, 67108864), hh(e, 67108864);
+ t !== null && Bd(t, e, 67108864), hh(e, 67108864);
}
}
function _h(e) {
if (e.tag === 13 || e.tag === 31) {
- var t = Z();
+ var t = Ld();
t = mt(t);
var n = Di(e, t);
- n !== null && Nd(n, e, t), hh(e, t);
+ n !== null && Bd(n, e, t), hh(e, t);
}
}
var vh = !0;
@@ -11285,12 +11359,12 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var c = 1 << 31 - Ye(o);
s.entanglements[1] |= c, o &= ~c;
}
- Ef(a), !(td & 6) && (Sd = Le() + 500, Df(0, !1));
+ Ef(a), !(nd & 6) && (Sd = Le() + 500, Df(0, !1));
}
}
break;
case 31:
- case 13: s = Di(a, 2), s !== null && Nd(s, a, 2), Rd(), hh(a, 2);
+ case 13: s = Di(a, 2), s !== null && Bd(s, a, 2), Y(), hh(a, 2);
}
if (a = Sh(r), a === null && qf(e, t, r, Ch, n), a === i) break;
i = a;
@@ -11583,13 +11657,13 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var t = this._internalRoot;
if (t === null) throw Error(i(409));
var n = t.current;
- ph(n, Z(), e, t, null, null);
+ ph(n, Ld(), e, t, null, null);
}, qh.prototype.unmount = Kh.prototype.unmount = function() {
var e = this._internalRoot;
if (e !== null) {
this._internalRoot = null;
var t = e.containerInfo;
- ph(e.current, 2, null, e, null, null), Rd(), t[xt] = null;
+ ph(e.current, 2, null, e, null, null), Y(), t[xt] = null;
}
};
function qh(e) {
@@ -11632,7 +11706,7 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
var n = !1, r = "", o = wc, s = Tc, c = Ec;
return t != null && (!0 === t.unstable_strictMode && (n = !0), t.identifierPrefix !== void 0 && (r = t.identifierPrefix), t.onUncaughtError !== void 0 && (o = t.onUncaughtError), t.onCaughtError !== void 0 && (s = t.onCaughtError), t.onRecoverableError !== void 0 && (c = t.onRecoverableError)), t = dh(e, 1, !1, null, null, n, r, null, o, s, c, Gh), e[xt] = t.current, Gf(e), new Kh(t);
};
-})), nr = /* @__PURE__ */ o(((e, t) => {
+})), fr = /* @__PURE__ */ o(((e, t) => {
function n() {
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE == "function") try {
__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n);
@@ -11640,19 +11714,19 @@ var Xn = T(Yn), Zn = /* @__PURE__ */ o(((e) => {
console.error(e);
}
}
- n(), t.exports = tr();
-})), rr = /^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i, ir = /^[\\/]{2}/;
-function ar(e, t) {
+ n(), t.exports = dr();
+})), pr = /^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i, mr = /^[\\/]{2}/;
+function hr(e, t) {
return t + e.replace(/\\/g, "/");
}
-var or = "popstate";
-function sr(e) {
+var gr = "popstate";
+function _r(e) {
return typeof e == "object" && !!e && "pathname" in e && "search" in e && "hash" in e && "state" in e && "key" in e;
}
-function cr(e = {}) {
+function vr(e = {}) {
function t(e, t) {
- let { pathname: n = "/", search: r = "", hash: i = "" } = hr(e.location.hash.substring(1));
- return !n.startsWith("/") && !n.startsWith(".") && (n = "/" + n), pr("", {
+ let { pathname: n = "/", search: r = "", hash: i = "" } = Tr(e.location.hash.substring(1));
+ return !n.startsWith("/") && !n.startsWith(".") && (n = "/" + n), Cr("", {
pathname: n,
search: r,
hash: i
@@ -11664,17 +11738,17 @@ function cr(e = {}) {
let t = e.location.href, n = t.indexOf("#");
r = n === -1 ? t : t.slice(0, n);
}
- return r + "#" + (typeof t == "string" ? t : mr(t));
+ return r + "#" + (typeof t == "string" ? t : wr(t));
}
function r(e, t) {
- ur(e.pathname.charAt(0) === "/", `relative pathnames are not supported in hash history.push(${JSON.stringify(t)})`);
+ br(e.pathname.charAt(0) === "/", `relative pathnames are not supported in hash history.push(${JSON.stringify(t)})`);
}
- return gr(t, n, r, e);
+ return Er(t, n, r, e);
}
-function lr(e, t) {
+function yr(e, t) {
if (e === !1 || e == null) throw Error(t);
}
-function ur(e, t) {
+function br(e, t) {
if (!e) {
typeof console < "u" && console.warn(t);
try {
@@ -11682,10 +11756,10 @@ function ur(e, t) {
} catch {}
}
}
-function dr() {
+function xr() {
return Math.random().toString(36).substring(2, 10);
}
-function fr(e, t) {
+function Sr(e, t) {
return {
usr: e.state,
key: e.key,
@@ -11697,21 +11771,21 @@ function fr(e, t) {
} : void 0
};
}
-function pr(e, t, n = null, r, i) {
+function Cr(e, t, n = null, r, i) {
return {
pathname: typeof e == "string" ? e : e.pathname,
search: "",
hash: "",
- ...typeof t == "string" ? hr(t) : t,
+ ...typeof t == "string" ? Tr(t) : t,
state: n,
- key: t && t.key || r || dr(),
+ key: t && t.key || r || xr(),
mask: i
};
}
-function mr({ pathname: e = "/", search: t = "", hash: n = "" }) {
+function wr({ pathname: e = "/", search: t = "", hash: n = "" }) {
return t && t !== "?" && (e += t.charAt(0) === "?" ? t : "?" + t), n && n !== "#" && (e += n.charAt(0) === "#" ? n : "#" + n), e;
}
-function hr(e) {
+function Tr(e) {
let t = {};
if (e) {
let n = e.indexOf("#");
@@ -11721,7 +11795,7 @@ function hr(e) {
}
return t;
}
-function gr(e, t, n, r = {}) {
+function Er(e, t, n, r = {}) {
let { window: i = document.defaultView, v5Compat: a = !1 } = r, o = i.history, s = "POP", c = null, l = u();
l ?? (l = 0, o.replaceState({
...o.state,
@@ -11741,9 +11815,9 @@ function gr(e, t, n, r = {}) {
}
function f(e, t) {
s = "PUSH";
- let r = sr(e) ? e : pr(h.location, e, t);
+ let r = _r(e) ? e : Cr(h.location, e, t);
n && n(r, e), l = u() + 1;
- let d = fr(r, l), f = h.createHref(r.mask || r);
+ let d = Sr(r, l), f = h.createHref(r.mask || r);
try {
o.pushState(d, "", f);
} catch (e) {
@@ -11758,9 +11832,9 @@ function gr(e, t, n, r = {}) {
}
function p(e, t) {
s = "REPLACE";
- let r = sr(e) ? e : pr(h.location, e, t);
+ let r = _r(e) ? e : Cr(h.location, e, t);
n && n(r, e), l = u();
- let i = fr(r, l), d = h.createHref(r.mask || r);
+ let i = Sr(r, l), d = h.createHref(r.mask || r);
o.replaceState(i, "", d), a && c && c({
action: s,
location: h.location,
@@ -11768,7 +11842,7 @@ function gr(e, t, n, r = {}) {
});
}
function m(e) {
- return _r(i, e);
+ return Dr(i, e);
}
let h = {
get action() {
@@ -11779,8 +11853,8 @@ function gr(e, t, n, r = {}) {
},
listen(e) {
if (c) throw Error("A history only accepts one active listener");
- return i.addEventListener(or, d), c = e, () => {
- i.removeEventListener(or, d), c = null;
+ return i.addEventListener(gr, d), c = e, () => {
+ i.removeEventListener(gr, d), c = null;
};
},
createHref(e) {
@@ -11803,27 +11877,27 @@ function gr(e, t, n, r = {}) {
};
return h;
}
-function _r(e, t, n = !1) {
+function Dr(e, t, n = !1) {
let r = "http://localhost";
- e && (r = e.location.origin === "null" ? e.location.href : e.location.origin), lr(r, "No window.location.(origin|href) available to create URL");
- let i = typeof t == "string" ? t : mr(t);
- return i = i.replace(/ $/, "%20"), !n && ir.test(i) && (i = r + i), new URL(i, r);
+ e && (r = e.location.origin === "null" ? e.location.href : e.location.origin), yr(r, "No window.location.(origin|href) available to create URL");
+ let i = typeof t == "string" ? t : wr(t);
+ return i = i.replace(/ $/, "%20"), !n && mr.test(i) && (i = r + i), new URL(i, r);
}
-function vr(e, t, n = "/") {
- return yr(e, t, n, !1);
+function Or(e, t, n = "/") {
+ return kr(e, t, n, !1);
}
-function yr(e, t, n, r, i) {
- let a = Rr((typeof t == "string" ? hr(t) : t).pathname || "/", n);
+function kr(e, t, n, r, i) {
+ let a = Jr((typeof t == "string" ? Tr(t) : t).pathname || "/", n);
if (a == null) return null;
- let o = i ?? br(e), s = null, c = Lr(a);
- for (let e = 0; s == null && e < o.length; ++e) s = Nr(o[e], c, r);
+ let o = i ?? Ar(e), s = null, c = qr(a);
+ for (let e = 0; s == null && e < o.length; ++e) s = Ur(o[e], c, r);
return s;
}
-function br(e) {
- let t = xr(e);
- return Cr(t), t;
+function Ar(e) {
+ let t = jr(e);
+ return Nr(t), t;
}
-function xr(e, t = [], n = [], r = "", i = !1) {
+function jr(e, t = [], n = [], r = "", i = !1) {
let a = (e, a, o = i, s) => {
let c = {
relativePath: s === void 0 ? e.path || "" : s,
@@ -11833,14 +11907,14 @@ function xr(e, t = [], n = [], r = "", i = !1) {
};
if (c.relativePath.startsWith("/")) {
if (!c.relativePath.startsWith(r) && o) return;
- lr(c.relativePath.startsWith(r), `Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`), c.relativePath = c.relativePath.slice(r.length);
+ yr(c.relativePath.startsWith(r), `Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`), c.relativePath = c.relativePath.slice(r.length);
}
- let l = Kr([r, c.relativePath]), u = n.concat(c);
- e.children && e.children.length > 0 && (lr(e.index !== !0, `Index routes must not have child routes. Please remove all child routes from route path "${l}".`), xr(e.children, t, u, l, o)), (e.path != null || e.index) && t.push({
+ let l = ni([r, c.relativePath]), u = n.concat(c);
+ e.children && e.children.length > 0 && (yr(e.index !== !0, `Index routes must not have child routes. Please remove all child routes from route path "${l}".`), jr(e.children, t, u, l, o)), (e.path != null || e.index) && t.push({
path: l,
- score: jr(l, e.index),
+ score: Vr(l, e.index),
routesMeta: u.map((e, t) => {
- let [n, r] = Ir(e.relativePath, e.caseSensitive, t === u.length - 1);
+ let [n, r] = Kr(e.relativePath, e.caseSensitive, t === u.length - 1);
return {
...e,
matcher: n,
@@ -11851,68 +11925,68 @@ function xr(e, t = [], n = [], r = "", i = !1) {
};
return e.forEach((e, t) => {
if (e.path === "" || !e.path?.includes("?")) a(e, t);
- else for (let n of Sr(e.path)) a(e, t, !0, n);
+ else for (let n of Mr(e.path)) a(e, t, !0, n);
}), t;
}
-function Sr(e) {
+function Mr(e) {
let t = e.split("/");
if (t.length === 0) return [];
let [n, ...r] = t, i = n.endsWith("?"), a = n.replace(/\?$/, "");
if (r.length === 0) return i ? [a, ""] : [a];
- let o = Sr(r.join("/")), s = [];
+ let o = Mr(r.join("/")), s = [];
return s.push(...o.map((e) => e === "" ? a : [a, e].join("/"))), i && s.push(...o), s.map((t) => e.startsWith("/") && t === "" ? "/" : t);
}
-function Cr(e) {
- e.sort((e, t) => e.score === t.score ? Mr(e.routesMeta.map((e) => e.childrenIndex), t.routesMeta.map((e) => e.childrenIndex)) : t.score - e.score);
+function Nr(e) {
+ e.sort((e, t) => e.score === t.score ? Hr(e.routesMeta.map((e) => e.childrenIndex), t.routesMeta.map((e) => e.childrenIndex)) : t.score - e.score);
}
-var wr = /^:[\w-]+$/, Tr = 3, Er = 2, Dr = 1, Or = 10, kr = -2, Ar = (e) => e === "*";
-function jr(e, t) {
+var Pr = /^:[\w-]+$/, Fr = 3, Ir = 2, Lr = 1, Rr = 10, zr = -2, Br = (e) => e === "*";
+function Vr(e, t) {
let n = e.split("/"), r = n.length;
- return n.some(Ar) && (r += kr), t && (r += Er), n.filter((e) => !Ar(e)).reduce((e, t) => e + (wr.test(t) ? Tr : t === "" ? Dr : Or), r);
+ return n.some(Br) && (r += zr), t && (r += Ir), n.filter((e) => !Br(e)).reduce((e, t) => e + (Pr.test(t) ? Fr : t === "" ? Lr : Rr), r);
}
-function Mr(e, t) {
+function Hr(e, t) {
return e.length === t.length && e.slice(0, -1).every((e, n) => e === t[n]) ? e[e.length - 1] - t[t.length - 1] : 0;
}
-function Nr(e, t, n = !1) {
+function Ur(e, t, n = !1) {
let { routesMeta: r } = e, i = {}, a = "/", o = [];
for (let e = 0; e < r.length; ++e) {
let s = r[e], c = e === r.length - 1, l = a === "/" ? t : t.slice(a.length) || "/", u = {
path: s.relativePath,
caseSensitive: s.caseSensitive,
end: c
- }, d = s.matcher && s.compiledParams ? Fr(u, l, s.matcher, s.compiledParams) : Pr(u, l), f = s.route;
- if (!d && c && n && !r[r.length - 1].route.index && (d = Pr({
+ }, d = s.matcher && s.compiledParams ? Gr(u, l, s.matcher, s.compiledParams) : Wr(u, l), f = s.route;
+ if (!d && c && n && !r[r.length - 1].route.index && (d = Wr({
path: s.relativePath,
caseSensitive: s.caseSensitive,
end: !1
}, l)), !d) return null;
Object.assign(i, d.params), o.push({
params: i,
- pathname: Kr([a, d.pathname]),
- pathnameBase: Jr(Kr([a, d.pathnameBase])),
+ pathname: ni([a, d.pathname]),
+ pathnameBase: ii(ni([a, d.pathnameBase])),
route: f
- }), d.pathnameBase !== "/" && (a = Kr([a, d.pathnameBase]));
+ }), d.pathnameBase !== "/" && (a = ni([a, d.pathnameBase]));
}
return o;
}
-function Pr(e, t) {
+function Wr(e, t) {
typeof e == "string" && (e = {
path: e,
caseSensitive: !1,
end: !0
});
- let [n, r] = Ir(e.path, e.caseSensitive, e.end);
- return Fr(e, t, n, r);
+ let [n, r] = Kr(e.path, e.caseSensitive, e.end);
+ return Gr(e, t, n, r);
}
-function Fr(e, t, n, r) {
+function Gr(e, t, n, r) {
let i = t.match(n);
if (!i) return null;
- let a = i[0], o = qr(a, 1), s = i.slice(1);
+ let a = i[0], o = ri(a, 1), s = i.slice(1);
return {
params: r.reduce((e, { paramName: t, isOptional: n }, r) => {
if (t === "*") {
let e = s[r] || "";
- o = qr(a.slice(0, a.length - e.length), 1);
+ o = ri(a.slice(0, a.length - e.length), 1);
}
let i = s[r];
return e[t] = n && !i ? void 0 : (i || "").replace(/%2F/g, "/"), e;
@@ -11922,8 +11996,8 @@ function Fr(e, t, n, r) {
pattern: e
};
}
-function Ir(e, t = !1, n = !0) {
- ur(e === "*" || !e.endsWith("*") || e.endsWith("/*"), `Route path "${e}" will be treated as if it were "${e.replace(/\*$/, "/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/, "/*")}".`);
+function Kr(e, t = !1, n = !0) {
+ br(e === "*" || !e.endsWith("*") || e.endsWith("/*"), `Route path "${e}" will be treated as if it were "${e.replace(/\*$/, "/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/, "/*")}".`);
let r = [], i = "^" + e.replace(/\/*\*?$/, "").replace(/^\/*/, "/").replace(/[\\.*+^${}|()[\]]/g, "\\$&").replace(/\/:([\w-]+)(\?)?/g, (e, t, n, i, a) => {
if (r.push({
paramName: t,
@@ -11936,46 +12010,46 @@ function Ir(e, t = !1, n = !0) {
}).replace(/\/([\w-]+)\?(\/|$)/g, "(/$1)?$2");
return e.endsWith("*") ? (r.push({ paramName: "*" }), i += e === "*" || e === "/*" ? "(.*)$" : "(?:\\/(.+)|\\/*)$") : n ? i += "\\/*$" : e !== "" && e !== "/" && (i += "(?:(?=\\/|$))"), [new RegExp(i, t ? void 0 : "i"), r];
}
-function Lr(e) {
+function qr(e) {
try {
return e.split("/").map((e) => decodeURIComponent(e).replace(/\//g, "%2F")).join("/");
} catch (t) {
- return ur(!1, `The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`), e;
+ return br(!1, `The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`), e;
}
}
-function Rr(e, t) {
+function Jr(e, t) {
if (t === "/") return e;
if (!e.toLowerCase().startsWith(t.toLowerCase())) return null;
let n = t.endsWith("/") ? t.length - 1 : t.length, r = e.charAt(n);
return r && r !== "/" ? null : e.slice(n) || "/";
}
-function zr(e, t = "/") {
- let { pathname: n, search: r = "", hash: i = "" } = typeof e == "string" ? hr(e) : e, a;
- return n ? (n = Gr(n), a = n.startsWith("/") || n.startsWith("\\") ? Br(n.substring(1), "/") : Br(n, t)) : a = t, {
+function Yr(e, t = "/") {
+ let { pathname: n, search: r = "", hash: i = "" } = typeof e == "string" ? Tr(e) : e, a;
+ return n ? (n = ti(n), a = n.startsWith("/") || n.startsWith("\\") ? Xr(n.substring(1), "/") : Xr(n, t)) : a = t, {
pathname: a,
- search: Yr(r),
- hash: Xr(i)
+ search: ai(r),
+ hash: oi(i)
};
}
-function Br(e, t) {
- let n = qr(t).split("/");
+function Xr(e, t) {
+ let n = ri(t).split("/");
return e.split("/").forEach((e) => {
e === ".." ? n.length > 1 && n.pop() : e !== "." && n.push(e);
}), n.length > 1 ? n.join("/") : "/";
}
-function Vr(e, t, n, r) {
+function Zr(e, t, n, r) {
return `Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`;
}
-function Hr(e) {
+function Qr(e) {
return e.filter((e, t) => t === 0 || e.route.path && e.route.path.length > 0);
}
-function Ur(e) {
- let t = Hr(e);
+function $r(e) {
+ let t = Qr(e);
return t.map((e, n) => n === t.length - 1 ? e.pathname : e.pathnameBase);
}
-function Wr(e, t, n, r = !1) {
+function ei(e, t, n, r = !1) {
let i;
- typeof e == "string" ? i = hr(e) : (i = { ...e }, lr(!i.pathname || !i.pathname.includes("?"), Vr("?", "pathname", "search", i)), lr(!i.pathname || !i.pathname.includes("#"), Vr("#", "pathname", "hash", i)), lr(!i.search || !i.search.includes("#"), Vr("#", "search", "hash", i)));
+ typeof e == "string" ? i = Tr(e) : (i = { ...e }, yr(!i.pathname || !i.pathname.includes("?"), Zr("?", "pathname", "search", i)), yr(!i.pathname || !i.pathname.includes("#"), Zr("#", "pathname", "hash", i)), yr(!i.search || !i.search.includes("#"), Zr("#", "search", "hash", i)));
let a = e === "" || i.pathname === "", o = a ? "/" : i.pathname, s;
if (o == null) s = n;
else {
@@ -11987,40 +12061,40 @@ function Wr(e, t, n, r = !1) {
}
s = e >= 0 ? t[e] : "/";
}
- let c = zr(i, s), l = o && o !== "/" && o.endsWith("/"), u = (a || o === ".") && n.endsWith("/");
+ let c = Yr(i, s), l = o && o !== "/" && o.endsWith("/"), u = (a || o === ".") && n.endsWith("/");
return !c.pathname.endsWith("/") && (l || u) && (c.pathname += "/"), c;
}
-var Gr = (e) => e.replace(/[\\/]{2,}/g, "/"), Kr = (e) => Gr(e.join("/"));
-function qr(e, t = 0) {
+var ti = (e) => e.replace(/[\\/]{2,}/g, "/"), ni = (e) => ti(e.join("/"));
+function ri(e, t = 0) {
let n = e.length;
for (; n > t && e.charCodeAt(n - 1) === 47;) n--;
return n === e.length ? e : e.slice(0, n);
}
-var Jr = (e) => qr(e).replace(/^\/*/, "/"), Yr = (e) => !e || e === "?" ? "" : e.startsWith("?") ? e : "?" + e, Xr = (e) => !e || e === "#" ? "" : e.startsWith("#") ? e : "#" + e, Zr = class {
+var ii = (e) => ri(e).replace(/^\/*/, "/"), ai = (e) => !e || e === "?" ? "" : e.startsWith("?") ? e : "?" + e, oi = (e) => !e || e === "#" ? "" : e.startsWith("#") ? e : "#" + e, si = class {
constructor(e, t, n, r = !1) {
this.status = e, this.statusText = t || "", this.internal = r, n instanceof Error ? (this.data = n.toString(), this.error = n) : this.data = n;
}
};
-function Qr(e) {
+function ci(e) {
return e != null && typeof e.status == "number" && typeof e.statusText == "string" && typeof e.internal == "boolean" && "data" in e;
}
-function $r(e) {
- return Kr(e.map((e) => e.route.path).filter(Boolean)) || "/";
+function li(e) {
+ return ni(e.map((e) => e.route.path).filter(Boolean)) || "/";
}
-var ei = typeof window < "u" && window.document !== void 0 && window.document.createElement !== void 0;
-function ti(e, t) {
+var ui = typeof window < "u" && window.document !== void 0 && window.document.createElement !== void 0;
+function di(e, t) {
let n = e;
- if (typeof n != "string" || !rr.test(n)) return {
+ if (typeof n != "string" || !pr.test(n)) return {
absoluteURL: void 0,
isExternal: !1,
to: n
};
let r = n, i = !1;
- if (ei) try {
- let e = new URL(window.location.href), r = ir.test(n) ? new URL(ar(n, e.protocol)) : new URL(n), a = Rr(r.pathname, t);
+ if (ui) try {
+ let e = new URL(window.location.href), r = mr.test(n) ? new URL(hr(n, e.protocol)) : new URL(n), a = Jr(r.pathname, t);
r.origin === e.origin && a != null ? n = a + r.search + r.hash : i = !0;
} catch {
- ur(!1, ` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`);
+ br(!1, ` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`);
}
return {
absoluteURL: r,
@@ -12029,43 +12103,43 @@ function ti(e, t) {
};
}
Object.getOwnPropertyNames(Object.prototype).sort().join("\0");
-var ni = new URL("http://localhost");
-function ri(e) {
+var fi = new URL("http://localhost");
+function pi(e) {
if (e.createURL) return e.createURL("/");
try {
- return new URL(e.createHref("/"), ni);
+ return new URL(e.createHref("/"), fi);
} catch {
- return ni;
+ return fi;
}
}
-function ii(e, t) {
+function mi(e, t) {
return e.origin === t.origin && (e.origin !== "null" || e.protocol === t.protocol && e.host === t.host);
}
-function ai(e, t) {
+function hi(e, t) {
if (e.startsWith("//")) return !0;
let n = t.protocol.toLowerCase();
return e.toLowerCase().startsWith(n) ? t.host === "" || e.slice(n.length).startsWith("//") : !1;
}
-function oi(e, t, n, r) {
+function gi(e, t, n, r) {
let i = null;
try {
i = e == null ? null : new URL(e, n);
} catch {}
- let a = new URL(t, n), o = i != null && !ii(i, n), s = !ii(a, n);
+ let a = new URL(t, n), o = i != null && !mi(i, n), s = !mi(a, n);
if (r === "reject") {
if (o || s) throw Error("External navigation is not allowed");
- } else if (s && (i == null || !ai(e, i) || !ii(i, a))) throw Error("External navigation is not allowed");
+ } else if (s && (i == null || !hi(e, i) || !mi(i, a))) throw Error("External navigation is not allowed");
}
-var si = [
+var _i = [
"POST",
"PUT",
"PATCH",
"DELETE"
];
-new Set(si);
-var ci = ["GET", ...si];
-new Set(ci);
-var li = [
+new Set(_i);
+var vi = ["GET", ..._i];
+new Set(vi);
+var yi = [
"about:",
"blob:",
"chrome:",
@@ -12077,88 +12151,88 @@ var li = [
"filesystem:",
"javascript:"
];
-function ui(e) {
+function bi(e) {
try {
- return li.includes(new URL(e).protocol);
+ return yi.includes(new URL(e).protocol);
} catch {
return !1;
}
}
-var di = x.createContext(null);
-di.displayName = "DataRouter";
-var fi = x.createContext(null);
-fi.displayName = "DataRouterState";
-var pi = x.createContext(!1);
-function mi() {
- return x.useContext(pi);
-}
-var hi = x.createContext({ isTransitioning: !1 });
-hi.displayName = "ViewTransition";
-var gi = x.createContext(/* @__PURE__ */ new Map());
-gi.displayName = "Fetchers";
-var _i = x.createContext(null);
-_i.displayName = "Await";
-var vi = x.createContext(null);
-vi.displayName = "Navigation";
-var yi = x.createContext(null);
-yi.displayName = "Location";
-var bi = x.createContext({
+var xi = x.createContext(null);
+xi.displayName = "DataRouter";
+var Si = x.createContext(null);
+Si.displayName = "DataRouterState";
+var Ci = x.createContext(!1);
+function wi() {
+ return x.useContext(Ci);
+}
+var Ti = x.createContext({ isTransitioning: !1 });
+Ti.displayName = "ViewTransition";
+var Ei = x.createContext(/* @__PURE__ */ new Map());
+Ei.displayName = "Fetchers";
+var Di = x.createContext(null);
+Di.displayName = "Await";
+var Oi = x.createContext(null);
+Oi.displayName = "Navigation";
+var ki = x.createContext(null);
+ki.displayName = "Location";
+var Ai = x.createContext({
outlet: null,
matches: [],
isDataRoute: !1
});
-bi.displayName = "Route";
-var xi = x.createContext(null);
-xi.displayName = "RouteError";
-var Si = "REACT_ROUTER_ERROR", Ci = "REDIRECT", wi = "ROUTE_ERROR_RESPONSE";
-function Ti(e) {
- if (e.startsWith(`${Si}:${Ci}:{`)) try {
+Ai.displayName = "Route";
+var ji = x.createContext(null);
+ji.displayName = "RouteError";
+var Mi = "REACT_ROUTER_ERROR", Ni = "REDIRECT", Pi = "ROUTE_ERROR_RESPONSE";
+function Fi(e) {
+ if (e.startsWith(`${Mi}:${Ni}:{`)) try {
let t = JSON.parse(e.slice(28));
if (typeof t == "object" && t && typeof t.status == "number" && typeof t.statusText == "string" && typeof t.location == "string" && typeof t.reloadDocument == "boolean" && typeof t.replace == "boolean") return t;
} catch {}
}
-function Ei(e) {
- if (e.startsWith(`${Si}:${wi}:{`)) try {
+function Ii(e) {
+ if (e.startsWith(`${Mi}:${Pi}:{`)) try {
let t = JSON.parse(e.slice(40));
- if (typeof t == "object" && t && typeof t.status == "number" && typeof t.statusText == "string") return new Zr(t.status, t.statusText, t.data);
+ if (typeof t == "object" && t && typeof t.status == "number" && typeof t.statusText == "string") return new si(t.status, t.statusText, t.data);
} catch {}
}
-function Di(e, { relative: t } = {}) {
- lr(Oi(), "useHref() may be used only in the context of a component.");
- let { basename: n, navigator: r } = x.useContext(vi), { hash: i, pathname: a, search: o } = Pi(e, { relative: t }), s = a;
- return n !== "/" && (s = a === "/" ? n : Kr([n, a])), r.createHref({
+function Li(e, { relative: t } = {}) {
+ yr(Ri(), "useHref() may be used only in the context of a component.");
+ let { basename: n, navigator: r } = x.useContext(Oi), { hash: i, pathname: a, search: o } = Wi(e, { relative: t }), s = a;
+ return n !== "/" && (s = a === "/" ? n : ni([n, a])), r.createHref({
pathname: s,
search: o,
hash: i
});
}
-function Oi() {
- return x.useContext(yi) != null;
+function Ri() {
+ return x.useContext(ki) != null;
}
-function ki() {
- return lr(Oi(), "useLocation() may be used only in the context of a component."), x.useContext(yi).location;
+function zi() {
+ return yr(Ri(), "useLocation() may be used only in the context of a component."), x.useContext(ki).location;
}
-var Ai = "You should call navigate() in a React.useEffect(), not when your component is first rendered.";
-function ji(e) {
- x.useContext(vi).static || x.useLayoutEffect(e);
+var Bi = "You should call navigate() in a React.useEffect(), not when your component is first rendered.";
+function Vi(e) {
+ x.useContext(Oi).static || x.useLayoutEffect(e);
}
-function Mi() {
- let { isDataRoute: e } = x.useContext(bi);
- return e ? Zi() : Ni();
+function Hi() {
+ let { isDataRoute: e } = x.useContext(Ai);
+ return e ? sa() : Ui();
}
-function Ni() {
- lr(Oi(), "useNavigate() may be used only in the context of a component.");
- let e = x.useContext(di), { basename: t, navigator: n } = x.useContext(vi), { matches: r } = x.useContext(bi), { pathname: i } = ki(), a = JSON.stringify(Ur(r)), o = x.useRef(!1);
- return ji(() => {
+function Ui() {
+ yr(Ri(), "useNavigate() may be used only in the context of a component.");
+ let e = x.useContext(xi), { basename: t, navigator: n } = x.useContext(Oi), { matches: r } = x.useContext(Ai), { pathname: i } = zi(), a = JSON.stringify($r(r)), o = x.useRef(!1);
+ return Vi(() => {
o.current = !0;
}), x.useCallback((r, s = {}) => {
- if (ur(o.current, Ai), !o.current) return;
+ if (br(o.current, Bi), !o.current) return;
if (typeof r == "number") {
n.go(r);
return;
}
- let c = Wr(r, JSON.parse(a), i, s.relative === "path");
- e == null && t !== "/" && (c.pathname = c.pathname === "/" ? t : Kr([t, c.pathname])), oi(typeof r == "string" ? r : mr(r), n.createHref(c), ri(n), "reject"), (s.replace ? n.replace : n.push)(c, s.state, s);
+ let c = ei(r, JSON.parse(a), i, s.relative === "path");
+ e == null && t !== "/" && (c.pathname = c.pathname === "/" ? t : ni([t, c.pathname])), gi(typeof r == "string" ? r : wr(r), n.createHref(c), pi(n), "reject"), (s.replace ? n.replace : n.push)(c, s.state, s);
}, [
t,
n,
@@ -12168,45 +12242,45 @@ function Ni() {
]);
}
x.createContext(null);
-function Pi(e, { relative: t } = {}) {
- let { matches: n } = x.useContext(bi), { pathname: r } = ki(), i = JSON.stringify(Ur(n));
- return x.useMemo(() => Wr(e, JSON.parse(i), r, t === "path"), [
+function Wi(e, { relative: t } = {}) {
+ let { matches: n } = x.useContext(Ai), { pathname: r } = zi(), i = JSON.stringify($r(n));
+ return x.useMemo(() => ei(e, JSON.parse(i), r, t === "path"), [
e,
i,
r,
t
]);
}
-function Fi(e, t) {
- return Ii(e, t);
+function Gi(e, t) {
+ return Ki(e, t);
}
-function Ii(e, t, n) {
- lr(Oi(), "useRoutes() may be used only in the context of a component.");
- let { navigator: r } = x.useContext(vi), { matches: i } = x.useContext(bi), a = i[i.length - 1], o = a ? a.params : {}, s = a ? a.pathname : "/", c = a ? a.pathnameBase : "/", l = a && a.route;
+function Ki(e, t, n) {
+ yr(Ri(), "useRoutes() may be used only in the context of a component.");
+ let { navigator: r } = x.useContext(Oi), { matches: i } = x.useContext(Ai), a = i[i.length - 1], o = a ? a.params : {}, s = a ? a.pathname : "/", c = a ? a.pathnameBase : "/", l = a && a.route;
{
let e = l && l.path || "";
- $i(s, !l || e.endsWith("*") || e.endsWith("*?"), `You rendered descendant (or called \`useRoutes()\`) at "${s}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
+ la(s, !l || e.endsWith("*") || e.endsWith("*?"), `You rendered descendant (or called \`useRoutes()\`) at "${s}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
Please change the parent to .`);
}
- let u = ki(), d;
+ let u = zi(), d;
if (t) {
- let e = typeof t == "string" ? hr(t) : t;
- lr(c === "/" || e.pathname?.startsWith(c), `When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`), d = e;
+ let e = typeof t == "string" ? Tr(t) : t;
+ yr(c === "/" || e.pathname?.startsWith(c), `When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`), d = e;
} else d = u;
let f = d.pathname || "/", p = f;
if (c !== "/") {
let e = c.replace(/^\//, "").split("/");
p = "/" + f.replace(/^\//, "").split("/").slice(e.length).join("/");
}
- let m = n && n.state.matches.length ? n.state.matches.map((e) => Object.assign(e, { route: n.manifest[e.route.id] || e.route })) : vr(e, { pathname: p });
- ur(l || m != null, `No routes matched location "${d.pathname}${d.search}${d.hash}" `), ur(m == null || m[m.length - 1].route.element !== void 0 || m[m.length - 1].route.Component !== void 0 || m[m.length - 1].route.lazy !== void 0, `Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);
- let h = Ui(m && m.map((e) => Object.assign({}, e, {
+ let m = n && n.state.matches.length ? n.state.matches.map((e) => Object.assign(e, { route: n.manifest[e.route.id] || e.route })) : Or(e, { pathname: p });
+ br(l || m != null, `No routes matched location "${d.pathname}${d.search}${d.hash}" `), br(m == null || m[m.length - 1].route.element !== void 0 || m[m.length - 1].route.Component !== void 0 || m[m.length - 1].route.lazy !== void 0, `Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);
+ let h = $i(m && m.map((e) => Object.assign({}, e, {
params: Object.assign({}, o, e.params),
- pathname: Kr([c, r.encodeLocation ? r.encodeLocation(e.pathname.replace(/%/g, "%25").replace(/\?/g, "%3F").replace(/#/g, "%23")).pathname : e.pathname]),
- pathnameBase: e.pathnameBase === "/" ? c : Kr([c, r.encodeLocation ? r.encodeLocation(e.pathnameBase.replace(/%/g, "%25").replace(/\?/g, "%3F").replace(/#/g, "%23")).pathname : e.pathnameBase])
+ pathname: ni([c, r.encodeLocation ? r.encodeLocation(e.pathname.replace(/%/g, "%25").replace(/\?/g, "%3F").replace(/#/g, "%23")).pathname : e.pathname]),
+ pathnameBase: e.pathnameBase === "/" ? c : ni([c, r.encodeLocation ? r.encodeLocation(e.pathnameBase.replace(/%/g, "%25").replace(/\?/g, "%3F").replace(/#/g, "%23")).pathname : e.pathnameBase])
})), i, n);
- return t && h ? /* @__PURE__ */ x.createElement(yi.Provider, { value: {
+ return t && h ? /* @__PURE__ */ x.createElement(ki.Provider, { value: {
location: {
pathname: "/",
search: "",
@@ -12219,8 +12293,8 @@ Please change the parent to window.__reactRouterDataRouter.navigate(a.to, { replace: e.replace }));
- throw Bi.set(t, n), n;
+ throw Xi.set(t, n), n;
}
}
return /* @__PURE__ */ x.createElement("meta", {
@@ -12293,11 +12367,11 @@ function Vi({ children: e, error: t }) {
}
return e;
}
-function Hi({ routeContext: e, match: t, children: n }) {
- let r = x.useContext(di);
- return r && r.static && r.staticContext && (t.route.errorElement || t.route.ErrorBoundary) && (r.staticContext._deepestRenderedBoundaryId = t.route.id), /* @__PURE__ */ x.createElement(bi.Provider, { value: e }, n);
+function Qi({ routeContext: e, match: t, children: n }) {
+ let r = x.useContext(xi);
+ return r && r.static && r.staticContext && (t.route.errorElement || t.route.ErrorBoundary) && (r.staticContext._deepestRenderedBoundaryId = t.route.id), /* @__PURE__ */ x.createElement(Ai.Provider, { value: e }, n);
}
-function Ui(e, t = [], n) {
+function $i(e, t = [], n) {
let r = n?.state;
if (e == null) {
if (!r) return null;
@@ -12308,7 +12382,7 @@ function Ui(e, t = [], n) {
let i = e, a = r?.errors;
if (a != null) {
let e = i.findIndex((e) => e.route.id && a?.[e.route.id] !== void 0);
- lr(e >= 0, `Could not find a matching route for errors on route IDs: ${Object.keys(a).join(",")}`), i = i.slice(0, Math.min(i.length, e + 1));
+ yr(e >= 0, `Could not find a matching route for errors on route IDs: ${Object.keys(a).join(",")}`), i = i.slice(0, Math.min(i.length, e + 1));
}
let o = !1, s = -1;
if (n && r) {
@@ -12328,16 +12402,16 @@ function Ui(e, t = [], n) {
c(e, {
location: r.location,
params: r.matches?.[0]?.params ?? {},
- pattern: $r(r.matches),
+ pattern: li(r.matches),
errorInfo: t
});
} : void 0;
return i.reduceRight((e, n, c) => {
let u, d = !1, f = null, p = null;
- r && (u = a && n.route.id ? a[n.route.id] : void 0, f = n.route.errorElement || Ri, o && (s < 0 && c === 0 ? ($i("route-fallback", !1, "No `HydrateFallback` element provided to render during initial hydration"), d = !0, p = null) : s === c && (d = !0, p = n.route.hydrateFallbackElement || null)));
+ r && (u = a && n.route.id ? a[n.route.id] : void 0, f = n.route.errorElement || Ji, o && (s < 0 && c === 0 ? (la("route-fallback", !1, "No `HydrateFallback` element provided to render during initial hydration"), d = !0, p = null) : s === c && (d = !0, p = n.route.hydrateFallbackElement || null)));
let m = t.concat(i.slice(0, c + 1)), h = () => {
let t;
- return t = u ? f : d ? p : n.route.Component ? /* @__PURE__ */ x.createElement(n.route.Component, null) : n.route.element ? n.route.element : e, /* @__PURE__ */ x.createElement(Hi, {
+ return t = u ? f : d ? p : n.route.Component ? /* @__PURE__ */ x.createElement(n.route.Component, null) : n.route.element ? n.route.element : e, /* @__PURE__ */ x.createElement(Qi, {
match: n,
routeContext: {
outlet: e,
@@ -12347,7 +12421,7 @@ function Ui(e, t = [], n) {
children: t
});
};
- return r && (n.route.ErrorBoundary || n.route.errorElement || c === 0) ? /* @__PURE__ */ x.createElement(zi, {
+ return r && (n.route.ErrorBoundary || n.route.errorElement || c === 0) ? /* @__PURE__ */ x.createElement(Yi, {
location: r.location,
revalidation: r.revalidation,
component: f,
@@ -12362,50 +12436,50 @@ function Ui(e, t = [], n) {
}) : h();
}, null);
}
-function Wi(e) {
+function ea(e) {
return `${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;
}
-function Gi(e) {
- let t = x.useContext(di);
- return lr(t, Wi(e)), t;
+function ta(e) {
+ let t = x.useContext(xi);
+ return yr(t, ea(e)), t;
}
-function Ki(e) {
- let t = x.useContext(fi);
- return lr(t, Wi(e)), t;
+function na(e) {
+ let t = x.useContext(Si);
+ return yr(t, ea(e)), t;
}
-function qi(e) {
- let t = x.useContext(bi);
- return lr(t, Wi(e)), t;
+function ra(e) {
+ let t = x.useContext(Ai);
+ return yr(t, ea(e)), t;
}
-function Ji(e) {
- let t = qi(e), n = t.matches[t.matches.length - 1];
- return lr(n.route.id, `${e} can only be used on routes that contain a unique "id"`), n.route.id;
+function ia(e) {
+ let t = ra(e), n = t.matches[t.matches.length - 1];
+ return yr(n.route.id, `${e} can only be used on routes that contain a unique "id"`), n.route.id;
}
-function Yi() {
- return Ji("useRouteId");
+function aa() {
+ return ia("useRouteId");
}
-function Xi() {
- let e = x.useContext(xi), t = Ki("useRouteError"), n = Ji("useRouteError");
+function oa() {
+ let e = x.useContext(ji), t = na("useRouteError"), n = ia("useRouteError");
return e === void 0 ? t.errors?.[n] : e;
}
-function Zi() {
- let { router: e } = Gi("useNavigate"), t = Ji("useNavigate"), n = x.useRef(!1);
- return ji(() => {
+function sa() {
+ let { router: e } = ta("useNavigate"), t = ia("useNavigate"), n = x.useRef(!1);
+ return Vi(() => {
n.current = !0;
}), x.useCallback(async (r, i = {}) => {
- ur(n.current, Ai), n.current && (typeof r == "number" ? await e.navigate(r) : await e.navigate(r, {
+ br(n.current, Bi), n.current && (typeof r == "number" ? await e.navigate(r) : await e.navigate(r, {
fromRouteId: t,
...i
}));
}, [e, t]);
}
-var Qi = {};
-function $i(e, t, n) {
- !t && !Qi[e] && (Qi[e] = !0, ur(!1, n));
+var ca = {};
+function la(e, t, n) {
+ !t && !ca[e] && (ca[e] = !0, br(!1, n));
}
-x.memo(ea);
-function ea({ routes: e, manifest: t, future: n, state: r, isStatic: i, onError: a }) {
- return Ii(e, void 0, {
+x.memo(ua);
+function ua({ routes: e, manifest: t, future: n, state: r, isStatic: i, onError: a }) {
+ return Ki(e, void 0, {
manifest: t,
state: r,
isStatic: i,
@@ -12413,12 +12487,12 @@ function ea({ routes: e, manifest: t, future: n, state: r, isStatic: i, onError:
future: n
});
}
-function ta({ to: e, replace: t, state: n, relative: r }) {
- lr(Oi(), " may be used only in the context of a component.");
- let { static: i, navigator: a } = x.useContext(vi);
- ur(!i, " must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");
- let { matches: o } = x.useContext(bi), { pathname: s } = ki(), c = Mi(), l = Wr(e, Ur(o), s, r === "path");
- oi(typeof e == "string" ? e : mr(e), a.createHref(l), ri(a), "reject");
+function da({ to: e, replace: t, state: n, relative: r }) {
+ yr(Ri(), " may be used only in the context of a component.");
+ let { static: i, navigator: a } = x.useContext(Oi);
+ br(!i, " must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");
+ let { matches: o } = x.useContext(Ai), { pathname: s } = zi(), c = Hi(), l = ei(e, $r(o), s, r === "path");
+ gi(typeof e == "string" ? e : wr(e), a.createHref(l), pi(a), "reject");
let u = JSON.stringify(l);
return x.useEffect(() => {
c(JSON.parse(u), {
@@ -12434,11 +12508,11 @@ function ta({ to: e, replace: t, state: n, relative: r }) {
n
]), null;
}
-function na(e) {
- lr(!1, "A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .");
+function fa(e) {
+ yr(!1, "A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .");
}
-function ra({ basename: e = "/", children: t = null, location: n, navigationType: r = "POP", navigator: i, static: a = !1, useTransitions: o }) {
- lr(!Oi(), "You cannot render a inside another . You should never have more than one in your app.");
+function pa({ basename: e = "/", children: t = null, location: n, navigationType: r = "POP", navigator: i, static: a = !1, useTransitions: o }) {
+ yr(!Ri(), "You cannot render a inside another . You should never have more than one in your app.");
let s = e.replace(/^\/*/, "/"), c = x.useMemo(() => ({
basename: s,
navigator: i,
@@ -12451,9 +12525,9 @@ function ra({ basename: e = "/", children: t = null, location: n, navigationType
a,
o
]);
- typeof n == "string" && (n = hr(n));
+ typeof n == "string" && (n = Tr(n));
let { pathname: l = "/", search: u = "", hash: d = "", state: f = null, key: p = "default", mask: m } = n, h = x.useMemo(() => {
- let e = Rr(l, s);
+ let e = Jr(l, s);
return e == null ? null : {
location: {
pathname: e,
@@ -12475,25 +12549,25 @@ function ra({ basename: e = "/", children: t = null, location: n, navigationType
r,
m
]);
- return ur(h != null, ` is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the won't render anything.`), h == null ? null : /* @__PURE__ */ x.createElement(vi.Provider, { value: c }, /* @__PURE__ */ x.createElement(yi.Provider, {
+ return br(h != null, ` is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the won't render anything.`), h == null ? null : /* @__PURE__ */ x.createElement(Oi.Provider, { value: c }, /* @__PURE__ */ x.createElement(ki.Provider, {
children: t,
value: h
}));
}
-function ia({ children: e, location: t }) {
- return Fi(aa(e), t);
+function ma({ children: e, location: t }) {
+ return Gi(ha(e), t);
}
x.Component;
-function aa(e, t = []) {
+function ha(e, t = []) {
let n = [];
return x.Children.forEach(e, (e, r) => {
if (!x.isValidElement(e)) return;
let i = [...t, r];
if (e.type === x.Fragment) {
- n.push.apply(n, aa(e.props.children, i));
+ n.push.apply(n, ha(e.props.children, i));
return;
}
- lr(e.type === na, `[${typeof e.type == "string" ? e.type : e.type.name}] is not a component. All component children of must be a or `), lr(!e.props.index || !e.props.children, "An index route cannot have child routes.");
+ yr(e.type === fa, `[${typeof e.type == "string" ? e.type : e.type.name}] is not a component. All component children of must be a or `), yr(!e.props.index || !e.props.children, "An index route cannot have child routes.");
let a = {
id: e.props.id || i.join("-"),
caseSensitive: e.props.caseSensitive,
@@ -12513,77 +12587,77 @@ function aa(e, t = []) {
handle: e.props.handle,
lazy: e.props.lazy
};
- e.props.children && (a.children = aa(e.props.children, i)), n.push(a);
+ e.props.children && (a.children = ha(e.props.children, i)), n.push(a);
}), n;
}
-var oa = "get", sa = "application/x-www-form-urlencoded";
-function ca(e) {
+var ga = "get", _a = "application/x-www-form-urlencoded";
+function va(e) {
return typeof HTMLElement < "u" && e instanceof HTMLElement;
}
-function la(e) {
- return ca(e) && e.tagName.toLowerCase() === "button";
+function ya(e) {
+ return va(e) && e.tagName.toLowerCase() === "button";
}
-function ua(e) {
- return ca(e) && e.tagName.toLowerCase() === "form";
+function ba(e) {
+ return va(e) && e.tagName.toLowerCase() === "form";
}
-function da(e) {
- return ca(e) && e.tagName.toLowerCase() === "input";
+function xa(e) {
+ return va(e) && e.tagName.toLowerCase() === "input";
}
-function fa(e) {
+function Sa(e) {
return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey);
}
-function pa(e, t) {
- return e.button === 0 && (!t || t === "_self") && !fa(e);
+function Ca(e, t) {
+ return e.button === 0 && (!t || t === "_self") && !Sa(e);
}
-function ma(e = "") {
+function wa(e = "") {
return new URLSearchParams(typeof e == "string" || Array.isArray(e) || e instanceof URLSearchParams ? e : Object.keys(e).reduce((t, n) => {
let r = e[n];
return t.concat(Array.isArray(r) ? r.map((e) => [n, e]) : [[n, r]]);
}, []));
}
-function ha(e, t) {
- let n = ma(e);
+function Ta(e, t) {
+ let n = wa(e);
return t && t.forEach((e, r) => {
n.has(r) || t.getAll(r).forEach((e) => {
n.append(r, e);
});
}), n;
}
-var ga = null;
-function _a() {
- if (ga === null) try {
- new FormData(document.createElement("form"), 0), ga = !1;
+var Ea = null;
+function Da() {
+ if (Ea === null) try {
+ new FormData(document.createElement("form"), 0), Ea = !1;
} catch {
- ga = !0;
+ Ea = !0;
}
- return ga;
+ return Ea;
}
-var va = /* @__PURE__ */ new Set([
+var Oa = /* @__PURE__ */ new Set([
"application/x-www-form-urlencoded",
"multipart/form-data",
"text/plain"
]);
-function ya(e) {
- return e != null && !va.has(e) ? (ur(!1, `"${e}" is not a valid \`encType\` for \`