@venturewild/workspace 0.6.13 → 0.6.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,108 @@
1
+ # Third-party notices
2
+
3
+ ## Bundled reading fonts (chat typography — "Aa" reading options)
4
+
5
+ `@venturewild/workspace` bundles a small Latin subset of the following open
6
+ fonts, served locally from the app's own bundle (`web/dist/assets/*.woff2`).
7
+ They are licensed under the **SIL Open Font License, Version 1.1** (OFL-1.1),
8
+ which permits bundling and redistribution with attribution. The font source
9
+ files are NOT modified.
10
+
11
+ - **Inter** — Copyright 2016 The Inter Project Authors
12
+ (https://github.com/rsms/inter)
13
+ - **Literata** — Copyright 2017 The Literata Project Authors
14
+ (https://github.com/googlefonts/literata)
15
+ - **Atkinson Hyperlegible** — Copyright 2020 Braille Institute of America, Inc.
16
+
17
+ The fonts are regenerated by `tools/gen-fonts.mjs` from the `@fontsource` /
18
+ `@fontsource-variable` packages (dev dependencies).
19
+
20
+ ---
21
+
22
+ ### SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
23
+
24
+ PREAMBLE
25
+
26
+ The goals of the Open Font License (OFL) are to stimulate worldwide
27
+ development of collaborative font projects, to support the font creation
28
+ efforts of academic and linguistic communities, and to provide a free and
29
+ open framework in which fonts may be shared and improved in partnership
30
+ with others.
31
+
32
+ The OFL allows the licensed fonts to be used, studied, modified and
33
+ redistributed freely as long as they are not sold by themselves. The
34
+ fonts, including any derivative works, can be bundled, embedded,
35
+ redistributed and/or sold with any software provided that any reserved
36
+ names are not used by derivative works. The fonts and derivatives,
37
+ however, cannot be released under any other type of license. The
38
+ requirement for fonts to remain under this license does not apply to any
39
+ document created using the fonts or their derivatives.
40
+
41
+ DEFINITIONS
42
+
43
+ "Font Software" refers to the set of files released by the Copyright
44
+ Holder(s) under this license and clearly marked as such. This may include
45
+ source files, build scripts and documentation.
46
+
47
+ "Reserved Font Name" refers to any names specified as such after the
48
+ copyright statement(s).
49
+
50
+ "Original Version" refers to the collection of Font Software components as
51
+ distributed by the Copyright Holder(s).
52
+
53
+ "Modified Version" refers to any derivative made by adding to, deleting,
54
+ or substituting -- in part or in whole -- any of the components of the
55
+ Original Version, by changing formats or by porting the Font Software to a
56
+ new environment.
57
+
58
+ "Author" refers to any designer, engineer, programmer, technical writer or
59
+ other person who contributed to the Font Software.
60
+
61
+ PERMISSION & CONDITIONS
62
+
63
+ Permission is hereby granted, free of charge, to any person obtaining a
64
+ copy of the Font Software, to use, study, copy, merge, embed, modify,
65
+ redistribute, and sell modified and unmodified copies of the Font
66
+ Software, subject to the following conditions:
67
+
68
+ 1) Neither the Font Software nor any of its individual components, in
69
+ Original or Modified Versions, may be sold by itself.
70
+
71
+ 2) Original or Modified Versions of the Font Software may be bundled,
72
+ redistributed and/or sold with any software, provided that each copy
73
+ contains the above copyright notice and this license. These can be
74
+ included either as stand-alone text files, human-readable headers or in
75
+ the appropriate machine-readable metadata fields within text or binary
76
+ files as long as those fields can be easily viewed by the user.
77
+
78
+ 3) No Modified Version of the Font Software may use the Reserved Font
79
+ Name(s) unless explicit written permission is granted by the corresponding
80
+ Copyright Holder. This restriction only applies to the primary font name
81
+ as presented to the users.
82
+
83
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
84
+ Software shall not be used to promote, endorse or advertise any Modified
85
+ Version, except to acknowledge the contribution(s) of the Copyright
86
+ Holder(s) and the Author(s) or with their explicit written permission.
87
+
88
+ 5) The Font Software, modified or unmodified, in part or in whole, must be
89
+ distributed entirely under this license, and must not be distributed under
90
+ any other license. The requirement for fonts to remain under this license
91
+ does not apply to any document created using the Font Software.
92
+
93
+ TERMINATION
94
+
95
+ This license becomes null and void if any of the above conditions are not
96
+ met.
97
+
98
+ DISCLAIMER
99
+
100
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
101
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
102
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
103
+ COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
104
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
105
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
106
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
107
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
108
+ DEALINGS IN THE FONT SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venturewild/workspace",
3
- "version": "0.6.13",
3
+ "version": "0.6.15",
4
4
  "description": "Claude Code Web — Replit/Lovable-style chat-first browser UI that wraps the AI agent already installed on your machine.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -11,7 +11,8 @@
11
11
  "server/src",
12
12
  "web/dist",
13
13
  "README.md",
14
- "LICENSE"
14
+ "LICENSE",
15
+ "THIRD_PARTY_NOTICES.md"
15
16
  ],
16
17
  "engines": {
17
18
  "node": ">=18.0.0"
@@ -48,6 +49,9 @@
48
49
  "@venturewild/workspace-daemon-win32-x64": "0.1.4"
49
50
  },
50
51
  "devDependencies": {
52
+ "@fontsource-variable/inter": "^5.2.8",
53
+ "@fontsource-variable/literata": "^5.2.8",
54
+ "@fontsource/atkinson-hyperlegible": "^5.2.8",
51
55
  "@testing-library/jest-dom": "^6.9.1",
52
56
  "@testing-library/react": "^16.3.2",
53
57
  "@testing-library/user-event": "^14.6.1",
@@ -37,6 +37,26 @@ export const TOKEN_KEYS = [
37
37
  'bg', 'bgElev', 'surface', 'border', 'text', 'textMuted', 'canvas1', 'canvas2', 'canvas3',
38
38
  ];
39
39
 
40
+ // Reading typography (chat "Aa" controls). The server only ever stores allowlisted
41
+ // ids — never a raw font string — so a stored value can only ever be one the client
42
+ // maps to a hard-coded font stack (no CSS injection). Keep in lockstep with
43
+ // READING_FONTS / FONT_SIZES / LINE_SPACINGS in web/src/reading.js.
44
+ export const READING_FONT_IDS = ['system', 'inter', 'literata', 'atkinson', 'georgia', 'mono'];
45
+ export const READING_SIZE_IDS = ['xs', 's', 'm', 'l', 'xl', 'xxl'];
46
+ export const READING_SPACING_IDS = ['compact', 'cozy', 'relaxed'];
47
+ const DEFAULT_READING = { font: 'system', size: 'm', spacing: 'cozy' };
48
+
49
+ // Validate a raw reading pref down to known ids — unknown values degrade to the
50
+ // default (defence-in-depth; the client re-validates too).
51
+ export function normalizeReading(raw = {}) {
52
+ const r = raw && typeof raw === 'object' ? raw : {};
53
+ return {
54
+ font: READING_FONT_IDS.includes(r.font) ? r.font : DEFAULT_READING.font,
55
+ size: READING_SIZE_IDS.includes(r.size) ? r.size : DEFAULT_READING.size,
56
+ spacing: READING_SPACING_IDS.includes(r.spacing) ? r.spacing : DEFAULT_READING.spacing,
57
+ };
58
+ }
59
+
40
60
  const HEX = /^#[0-9a-f]{6}$/i;
41
61
  export function isHex(v) {
42
62
  return typeof v === 'string' && HEX.test(v.trim());
@@ -234,6 +254,7 @@ export function createCanvas({ baseDir, personKey } = {}) {
234
254
  const layoutFile = path.join(stateDir, 'layout.json');
235
255
  const templatesFile = path.join(stateDir, 'templates.json');
236
256
  const userThemeFile = path.join(stateDir, 'user-theme.json');
257
+ const userReadingFile = path.join(stateDir, 'user-reading.json');
237
258
 
238
259
  function ensureDir() {
239
260
  try {
@@ -391,6 +412,21 @@ export function createCanvas({ baseDir, personKey } = {}) {
391
412
  return theme;
392
413
  }
393
414
 
415
+ // --- user reading typography (chat font/size/spacing from the "Aa" panel) ---
416
+ // Person-scoped like the user theme, so it follows the user across devices.
417
+
418
+ function getUserReading() {
419
+ const v = readJsonSafe(userReadingFile, null);
420
+ return v && typeof v === 'object' ? normalizeReading(v) : null;
421
+ }
422
+
423
+ function saveUserReading(raw) {
424
+ const reading = normalizeReading(raw);
425
+ ensureStateDir();
426
+ try { writeJsonAtomic(userReadingFile, reading); } catch { /* best-effort */ }
427
+ return reading;
428
+ }
429
+
394
430
  // Darken helper (standalone — can't import from theme.js which is client-only)
395
431
  function darkenHex(hex, f = 0.16) {
396
432
  const h = hex.replace('#', '');
@@ -406,6 +442,7 @@ export function createCanvas({ baseDir, personKey } = {}) {
406
442
  layout: getLayout(),
407
443
  templates: getTemplates(),
408
444
  userTheme: getUserTheme(),
445
+ userReading: getUserReading(),
409
446
  };
410
447
  }
411
448
 
@@ -414,15 +451,17 @@ export function createCanvas({ baseDir, personKey } = {}) {
414
451
  if (updates.layout) result.layout = saveLayout(updates.layout);
415
452
  if (updates.templates) result.templates = saveTemplates(updates.templates);
416
453
  if (updates.userTheme) result.userTheme = saveUserTheme(updates.userTheme);
454
+ if (updates.userReading) result.userReading = saveUserReading(updates.userReading);
417
455
  return result;
418
456
  }
419
457
 
420
458
  return {
421
- dir, stateDir, blocksFile, themeFile, layoutFile, templatesFile, userThemeFile,
459
+ dir, stateDir, blocksFile, themeFile, layoutFile, templatesFile, userThemeFile, userReadingFile,
422
460
  listBlocks, getBlock, addBlock, updateBlock, removeBlock,
423
461
  getTheme, setTheme,
424
462
  getLayout, saveLayout, getTemplates, saveTemplates,
425
463
  getUserTheme, saveUserTheme,
464
+ getUserReading, saveUserReading,
426
465
  getState, saveState,
427
466
  };
428
467
  }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) 2014 The xterm.js authors. All rights reserved.
3
+ * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
4
+ * https://github.com/chjj/term.js
5
+ * @license MIT
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in
15
+ * all copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ * THE SOFTWARE.
24
+ *
25
+ * Originally forked from (with the author's permission):
26
+ * Fabrice Bellard's javascript vt100 for jslinux:
27
+ * http://bellard.org/jslinux/
28
+ * Copyright (c) 2011 Fabrice Bellard
29
+ * The original design remains. The terminal itself
30
+ * has been extended to include xterm CSI codes, among
31
+ * other features.
32
+ */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.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{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{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;position:absolute;top:0;right:0;pointer-events:none}.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;background:#0000;transition:opacity .1s linear;z-index:11}.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{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.ob-root{position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(1200px 600px at 12% -10%,var(--canvas-1),transparent 60%),radial-gradient(1000px 700px at 100% 0%,var(--canvas-2),transparent 55%),linear-gradient(160deg,var(--canvas-3),var(--bg) 70%);display:flex;align-items:center;justify-content:center;z-index:1000;overflow-y:auto;padding:32px 16px}.ob-layout{width:100%;max-width:900px;display:grid;grid-template-columns:minmax(0,1fr) 256px;align-items:center;gap:44px}.ob-stage{width:100%;max-width:560px;justify-self:end;display:flex;flex-direction:column;gap:24px}.ob-aside{align-self:center}.ob-aside-inner{border-left:1px solid var(--border);padding-left:26px}.ob-aside-label{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--accent-hot);opacity:.85;margin-bottom:6px}.ob-aside .peer-stream-ambient{margin-top:10px;max-width:none}@media (max-width: 860px){.ob-layout{grid-template-columns:1fr;max-width:560px;gap:0}.ob-stage{max-width:none;justify-self:stretch}.ob-aside{align-self:stretch}.ob-aside-inner{border-left:none;padding-left:0;margin-top:20px;text-align:center}.ob-aside .peer-stream-ambient{margin-left:auto;margin-right:auto;max-width:340px}}.ob-brand{font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--text);opacity:.85;display:flex;align-items:center;gap:6px}.ob-brand .ob-brand-mark{color:var(--accent-hot);font-size:15px}.ob-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:32px}.ob-step-dots{display:flex;gap:8px}.ob-dot{width:8px;height:8px;border-radius:999px;background:var(--border);transition:background .2s,transform .2s}.ob-dot.active{background:var(--accent);transform:scale(1.4)}.ob-dot.done{background:var(--accent);opacity:.55}.ob-back{background:transparent;border:none;color:var(--text-muted);font-size:13px;padding:4px 8px}.ob-back:hover{color:var(--text)}.ob-step{display:flex;flex-direction:column;gap:24px;animation:ob-rise .44s var(--ease-out, cubic-bezier(.16, 1, .3, 1)) both}@keyframes ob-rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.ob-step,.ob-reveal{animation:none}}.ob-bubble{padding:16px 18px;border-radius:16px;border:1px solid var(--border);background:var(--bg-elev);max-width:90%;align-self:flex-start}.ob-bubble-agent{border-top-left-radius:4px}.ob-bubble-user{align-self:flex-end;background:var(--bg-elev-2);border-top-right-radius:4px}.ob-bubble-text{margin:0 0 6px;font-size:17px;line-height:1.4}.ob-bubble-text:last-child{margin-bottom:0}.ob-bubble-wow{font-size:19px;line-height:1.5;font-weight:500}.ob-bubble-subtle{margin:0;font-size:14px;color:var(--text-muted);line-height:1.5}.ob-bubble code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;padding:1px 6px;background:var(--bg-elev-2);border-radius:4px}.ob-bubble-streaming{border-color:var(--accent)}.ob-caret{display:inline-block;margin-left:2px;color:var(--accent);animation:ob-blink .9s steps(2,end) infinite;font-weight:600}.ob-bubble-error{color:var(--error)}@keyframes ob-blink{to{visibility:hidden}}.ob-reveal{animation:ob-rise .28s ease-out both}.ob-card{display:flex;flex-direction:column;gap:8px}.ob-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-top:12px}.ob-input{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:16px;outline:none;transition:border-color .16s}.ob-input:focus{border-color:var(--accent)}.ob-tone-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.ob-tone{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 14px;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;text-align:left;transition:border-color .16s,background .16s}.ob-tone:hover{background:var(--bg-elev-2)}.ob-tone.selected{border-color:var(--accent);background:var(--bg-elev-2)}.ob-tone-label{font-size:14px;font-weight:500}.ob-tone-sample{font-size:12px;color:var(--text-muted);font-style:italic}.ob-color-row{display:flex;gap:10px;flex-wrap:wrap}.ob-color-swatch{width:32px;height:32px;padding:0;border-radius:999px;border:2px solid transparent;cursor:pointer;transition:transform .16s}.ob-color-swatch:hover{transform:scale(1.1)}.ob-color-swatch.selected{border-color:var(--text);transform:scale(1.15)}.ob-error{background:#f871711f;border:1px solid rgba(248,113,113,.4);color:var(--error);padding:8px 12px;border-radius:8px;font-size:13px}.ob-login-cmd{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-family:ui-monospace,JetBrains Mono,Menlo,Consolas,monospace;font-size:14px;color:var(--text);overflow-x:auto;white-space:nowrap}.ob-login-cmd code{color:var(--accent)}.ob-login-link{display:inline-block;background:var(--accent);color:#0b0b0c;text-decoration:none;border-radius:10px;padding:12px 16px;font-size:14px;font-weight:600}.ob-login-link:hover{filter:brightness(1.08)}.ob-disclose{font-size:13px;color:var(--text-muted);line-height:1.5;margin-top:8px}.ob-disclose summary{cursor:pointer;color:var(--accent-hot);font-weight:550;list-style:none;width:fit-content}.ob-disclose summary::-webkit-details-marker{display:none}.ob-disclose summary:before{content:"▸ ";opacity:.7}.ob-disclose[open] summary:before{content:"▾ "}.ob-disclose[open] summary{margin-bottom:6px}.ob-consent-note{margin:22px auto 0;max-width:520px;font-size:12px;line-height:1.5;color:var(--text-muted);opacity:.85}.ob-consent-note summary{cursor:pointer;list-style:none;text-align:center;color:var(--text-muted)}.ob-consent-note summary::-webkit-details-marker{display:none}.ob-consent-note[open] summary{margin-bottom:6px}.ob-consent-note[open]{text-align:center;padding:0 6px}.ob-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ob-actions-block{justify-content:stretch;margin-top:14px}.ob-next-full{width:100%;text-align:center}.ob-next{padding:10px 18px;font-size:14px;border-radius:10px}.ob-skip{padding:10px 14px;font-size:13px;color:var(--text-muted);background:transparent;border:1px solid transparent}.ob-skip:hover{color:var(--text);border-color:var(--border)}.ob-dropzone{border:2px dashed var(--border);border-radius:16px;padding:48px 24px;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;transition:border-color .2s,background .2s;background:var(--bg-elev)}.ob-dropzone:hover{border-color:var(--accent)}.ob-dropzone.over{border-color:var(--accent);background:var(--bg-elev-2)}.ob-dropzone.peeking{cursor:wait}.ob-drop-icon{font-size:40px}.ob-drop-title{font-size:16px;font-weight:500}.ob-drop-sub{font-size:13px;color:var(--text-muted)}.ob-drop-hint{margin-top:8px;font-size:12px;color:var(--accent);text-align:center}.ob-tile-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.ob-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;text-align:left;transition:border-color .16s,background .16s}.ob-tile:hover{background:var(--bg-elev-2)}.ob-tile.selected{border-color:var(--accent);background:var(--bg-elev-2)}.ob-tile-label{font-size:14px;font-weight:500}.ob-tile-note{font-size:12px;color:var(--text-muted)}.ob-tile-check{position:absolute;top:10px;right:12px;color:var(--accent);font-size:14px}.ob-soon{font-size:12px;color:var(--text-muted);font-style:italic;padding:8px 4px}.ob-qr-placeholder{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px}.ob-qr-box{width:200px;height:200px;border:2px dashed var(--border);border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:13px;text-align:center;background:var(--bg-elev)}.ob-qr-soon{line-height:1.5}.ob-jobs{display:flex;flex-direction:column;gap:8px}.ob-job{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 18px;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;text-align:left;transition:border-color .16s,transform .16s}.ob-job:hover{border-color:var(--accent);transform:translate(2px)}.ob-job-title{font-size:15px;font-weight:500}.ob-job-sub{font-size:13px;color:var(--text-muted)}.ob-job-remix{margin-bottom:4px;border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 12%,var(--bg-elev)),var(--bg-elev) 70%)}.ob-job-remix .ob-job-title{color:var(--accent)}.ob-job-remix:disabled{opacity:.7;cursor:default;transform:none}.ob-remix{display:flex;flex-direction:column;gap:8px}.ob-remix-card{display:flex;align-items:center;gap:14px;padding:14px 18px;text-align:left;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;transition:border-color .16s,transform .16s,background .16s}.ob-remix-card:hover{border-color:var(--accent);transform:translate(2px);background:var(--bg-elev-2)}.ob-remix-main{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.ob-remix-title{font-size:15px;font-weight:600}.ob-remix-by{font-size:12px;color:var(--text-muted)}.ob-remix-pitch{font-size:12.5px;color:var(--text-muted);line-height:1.45;margin-top:2px}.ob-remix-worked{font-size:11.5px;font-weight:600;color:var(--positive);margin-top:5px;font-variant-numeric:tabular-nums}.ob-remix-go{flex:none;align-self:center;white-space:nowrap;font-size:13px;font-weight:600;color:var(--accent-hot)}.ob-remix-card:hover .ob-remix-go{color:var(--accent)}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px;opacity:0}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-italic-DpCbqKDY.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-wght-normal-DLxlUchJ.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-wght-italic-Bm_GJfSc.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2) format("woff2")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2) format("woff2")}@font-face{font-family:Atkinson Hyperlegible;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-italic-D-qjh7ci.woff2) format("woff2")}@font-face{font-family:Atkinson Hyperlegible;font-style:italic;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-italic-Bq4J7U7l.woff2) format("woff2")}:root{--canvas-1: #e8f7f0;--canvas-2: #e7f0fb;--canvas-3: #fef8ee;--bg: #ffffff;--bg-elev: #ffffff;--bg-elev-2: #eef1f6;--surface: #ffffff;--surface-2: #fbfcfe;--surface-tint: #ffffff;--border: #e2e6ee;--text: #1d2430;--text-muted: #687083;--accent: #0891b2;--accent-hot: #0e7490;--accent-ink: #ffffff;--positive: #0f9d58;--warn: #c2790b;--error: #dc2626;--chat-user: #eef2ff;--chat-agent: #ffffff;--glass: rgba(255, 255, 255, .72);--shadow: 0 1px 2px rgba(16,24,40,.05), 0 10px 28px -14px rgba(16,24,40,.22);--shadow-sm: 0 1px 2px rgba(16,24,40,.06), 0 2px 6px -2px rgba(16,24,40,.1);--shadow-lg: 0 2px 4px rgba(16,24,40,.05), 0 24px 60px -22px rgba(16,24,40,.3);--fs-hero: clamp(30px, 4.6vw, 46px);--fs-h1: 28px;--fs-h2: 22px;--fs-h3: 18px;--fs-lead: 17px;--fs-body: 15px;--fs-sm: 13px;--fs-xs: 11px;--lh-tight: 1.15;--lh-snug: 1.35;--lh-body: 1.55;--tracking-caps: .08em;--reading-font: -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;--reading-scale: 1;--reading-leading: 1.6;--r-xs: 6px;--r-sm: 8px;--r-md: 10px;--r-lg: 12px;--r-xl: 16px;--r-2xl: 20px;--r-pill: 999px;--ease-spring: cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-1: .14s;--dur-2: .22s;--dur-3: .32s;--dur-4: .52s}:root[data-theme=dark]{--canvas-1: #0b1620;--canvas-2: #0c1320;--canvas-3: #0a0f14;--bg: #0a0c10;--bg-elev: #11141a;--bg-elev-2: #161b22;--surface: #11141a;--surface-2: #0d1117;--surface-tint: #11141a;--border: #1f242d;--text: #e8eaed;--text-muted: #8b95a3;--positive: #34d399;--warn: #fbbf24;--error: #f87171;--chat-user: #161b22;--chat-agent: #0d1117;--glass: rgba(10, 14, 20, .66);--shadow: 0 1px 2px rgba(0,0,0,.45), 0 10px 28px -14px rgba(0,0,0,.75);--shadow-sm: 0 1px 2px rgba(0,0,0,.5), 0 2px 6px -2px rgba(0,0,0,.6);--shadow-lg: 0 2px 4px rgba(0,0,0,.5), 0 24px 60px -22px rgba(0,0,0,.85)}:root[data-theme=dark] *{scrollbar-color:rgba(255,255,255,.16) transparent}:root[data-theme=dark] *::-webkit-scrollbar-thumb{background:#ffffff24}:root[data-theme=dark] *::-webkit-scrollbar-thumb:hover{background:#ffffff42}.fd-wallpaper,.app.fd-wallpaper{background:radial-gradient(1200px 600px at 12% -10%,var(--canvas-1),transparent 60%),radial-gradient(1000px 700px at 100% 0%,var(--canvas-2),transparent 55%),linear-gradient(160deg,var(--canvas-3),var(--bg) 70%)}.fd-brand{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-sm);font-weight:700;letter-spacing:.01em;color:var(--text)}.fd-brand-mark{color:var(--accent-hot);font-size:15px;line-height:1}.fd-eyebrow{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-muted)}.fd-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-lg)}@media (prefers-reduced-motion: reduce){.fd-anim,.fd-anim *{animation:none!important;transition:none!important}}*{box-sizing:border-box}*{scrollbar-width:thin;scrollbar-color:rgba(20,30,50,.22) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:#141e3233;border-radius:999px}*::-webkit-scrollbar-thumb:hover{background:#141e3257}*::-webkit-scrollbar-track{background:transparent}html,body,#root{height:100%;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}#root{padding-top:var(--support-banner-h, 0px)}button,input,textarea,select{font-family:inherit;color:inherit}button{cursor:pointer;background:var(--bg-elev-2);color:var(--text);border:1px solid var(--border);padding:6px 12px;border-radius:6px;font-size:13px;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:var(--bg);border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.primary:hover:not(:disabled){background:var(--accent-hot)}button:disabled{opacity:.45;cursor:not-allowed}.app{display:grid;grid-template-rows:auto 1fr 32px;height:100%;background:var(--bg)}.topbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;align-content:center;min-height:48px;padding:6px 16px;border-bottom:1px solid var(--border);background:var(--bg-elev);position:relative}.topbar-more{display:inline-flex}.more-menu{position:absolute;top:calc(100% + 4px);right:10px;z-index:30;display:flex;flex-direction:column;gap:2px;padding:6px;width:max-content;min-width:160px;max-width:calc(100vw - 16px);border:1px solid var(--border);border-radius:10px;background:var(--bg-elev);box-shadow:var(--shadow)}.more-menu button{display:block;width:100%;min-height:38px;padding:9px 12px;text-align:left;white-space:nowrap;font-size:13px;border:none;border-radius:7px;background:transparent;color:inherit;cursor:pointer}.more-menu button:hover{background:var(--surface-2, var(--surface))}.topbar .brand{font-weight:600;font-size:14px;letter-spacing:.02em}.topbar .badge{font-size:11px;padding:3px 8px;border-radius:999px;border:1px solid var(--border);color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.topbar .badge.partner{color:var(--positive);border-color:#34d3994d}.topbar .badge.viewer{color:var(--accent-hot);border-color:#818cf866}.topbar .badge.client{color:var(--warn);border-color:#fbbf2466}.topbar .spacer{flex:1}.bottombar{display:flex;align-items:center;gap:16px;padding:0 16px;border-top:1px solid var(--border);background:var(--bg-elev);font-size:12px;color:var(--text-muted)}.bottombar .pill{padding:2px 8px;border-radius:999px;background:var(--bg-elev-2);border:1px solid var(--border)}.bottombar .pill.live:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--positive);margin-right:6px;animation:pulse 1.6s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.workspace{display:grid;grid-template-columns:240px 1fr 1fr;gap:0;overflow:hidden}.workspace.collapsed-tree{grid-template-columns:36px 1fr 1fr}.workspace.no-preview{grid-template-columns:240px 1fr}.workspace.no-preview.collapsed-tree{grid-template-columns:36px 1fr}.workspace.no-tree{grid-template-columns:1fr 1fr}.workspace.no-tree.no-preview{grid-template-columns:1fr}.tree-pane,.chat-pane,.preview-pane{border-right:1px solid var(--border);overflow:hidden;display:flex;flex-direction:column;min-width:0}.preview-pane{border-right:none}.chat-pane{background:var(--bg)}.chat-header{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--bg-elev);font-size:13px}.chat-mode-toggle{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;font-size:12px}.chat-mode-toggle button{border:none;border-radius:0;padding:4px 10px;background:transparent;color:var(--text-muted)}.chat-mode-toggle button.active{background:var(--accent);color:var(--accent-ink)}.chat-messages{flex:1;min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.chat-msg{font-size:14px;line-height:1.6;word-wrap:break-word}.chat-msg.user{align-self:flex-end;max-width:85%;padding:9px 13px;border-radius:13px 13px 3px;background:var(--chat-user);border:1px solid rgba(99,102,241,.28)}.chat-msg.user .msg-plain{white-space:pre-wrap;font-family:var(--reading-font);font-size:calc(16px * var(--reading-scale));line-height:var(--reading-leading)}.chat-msg.agent{align-self:stretch;max-width:100%;display:flex;flex-direction:column;gap:10px}.chat-msg.error{align-self:stretch;padding:10px 14px;border-radius:10px;background:#f8717117;border:1px solid rgba(248,113,113,.4);color:var(--error);font-size:13px}.chat-msg.system{align-self:center;max-width:90%;text-align:center;font-size:12px;color:var(--text-muted);padding:5px 14px;border:1px dashed var(--border);border-radius:999px}.chat-toolbar{display:flex;align-items:center;flex:none;gap:8px;padding:6px 16px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.chat-toolbar-spacer{flex:1}.chat-newbtn{font-size:12px;padding:3px 10px;background:transparent;border:1px solid var(--border);color:var(--text-muted)}.chat-newbtn:hover:not(:disabled){color:var(--accent-hot);border-color:var(--accent)}.chat-aabtn{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:3px 10px;background:transparent;border:1px solid var(--border);color:var(--text-muted)}.chat-aabtn:hover:not(:disabled){color:var(--accent-hot);border-color:var(--accent)}.chat-aa-glyph{font-weight:700;letter-spacing:.02em;font-size:13px}.chat-aa-glyph:first-letter{font-size:1.15em}.chat-input{flex:none;border-top:1px solid var(--border);padding:12px;background:var(--bg-elev);display:flex;gap:8px}.chat-input textarea{flex:1;resize:none;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:14px;min-height:44px;max-height:200px}.chat-input textarea:focus{outline:none;border-color:var(--accent)}.chat-input .send-btn{align-self:flex-end}.tree-pane{background:var(--bg-elev)}.tree-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.tree-list{flex:1;overflow:auto;padding:8px;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tree-node{padding:2px 4px;border-radius:4px;cursor:pointer;display:flex;align-items:center;gap:4px;color:var(--text)}.tree-node:hover{background:var(--bg-elev-2)}.tree-node.dir{color:var(--accent-hot)}.tree-node .indent{display:inline-block;width:12px}.tree-collapsed-rail{width:36px;background:var(--bg-elev);display:flex;align-items:center;justify-content:center;padding-top:12px}.preview-pane{background:#050507}.preview-tabs{display:flex;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid var(--border);background:var(--bg-elev);font-size:12px}.preview-tabs button{border:1px solid transparent;background:transparent;border-radius:6px;padding:4px 10px;color:var(--text-muted)}.preview-tabs button.active{background:var(--bg-elev-2);color:var(--text);border-color:var(--border)}.preview-body{flex:1;overflow:hidden;position:relative;background:#0c0c10}.preview-iframe{width:100%;height:100%;border:0;background:#fff}.preview-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-muted);font-size:13px;text-align:center;padding:20px}.preview-port-input{display:flex;gap:6px;align-items:center}.preview-port-input input{width:80px;background:var(--bg);color:var(--text);border:1px solid var(--border);padding:4px 8px;border-radius:6px}.preview-code-view{width:100%;height:100%;overflow:auto;padding:12px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--text)}.preview-code-view pre{margin:0;white-space:pre}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:24px;width:min(520px,90%);box-shadow:0 20px 60px #00000073;max-height:calc(100vh - 48px);overflow-y:auto}.modal h2{margin:0 0 4px;font-size:16px}.modal .muted{color:var(--text-muted);font-size:12px;margin-bottom:18px}.modal label{font-size:12px;color:var(--text-muted);margin-bottom:6px;display:block}.modal .row{display:flex;gap:8px;align-items:center;margin-bottom:12px}.modal .url-output{background:var(--bg);border:1px solid var(--border);padding:10px 12px;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;word-break:break-all;margin-bottom:12px}.modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.inbox-card{margin:0 16px 16px;padding:12px 14px;border:1px dashed rgba(129,140,248,.45);border-radius:10px;background:#818cf812;font-size:13px;color:var(--text)}.inbox-card strong{color:var(--accent-hot)}.inbox-card .muted{color:var(--text-muted);font-size:12px;margin-top:6px;display:block}.terminal-overlay{position:fixed;bottom:32px;left:0;right:0;height:320px;display:flex;flex-direction:column;background:#1e1e1e;border-top:1px solid var(--border);padding:10px 12px 12px;z-index:30;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--text-muted)}.terminal-overlay header{flex:none;display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.terminal-overlay header strong{color:#d4d4d4}.terminal-block{flex:1;min-height:0;display:flex;flex-direction:column}.terminal-host{flex:1;min-height:0;width:100%}.terminal-msg{padding:6px 2px;font-size:12px}.terminal-msg.err{color:var(--error)}.spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;display:inline-block;animation:spin .8s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.agent-text{font-family:var(--reading-font);font-size:calc(16px * var(--reading-scale));line-height:var(--reading-leading)}.agent-error{padding:8px 12px;border-radius:8px;background:#f8717117;border:1px solid rgba(248,113,113,.35);color:var(--error);font-size:13px}.stream-cursor{display:inline-block;width:7px;height:1.05em;margin-left:1px;background:var(--accent-hot);border-radius:1px;vertical-align:text-bottom;animation:blink 1.05s steps(2,start) infinite}@keyframes blink{50%{opacity:0}}.agent-working{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:13px}.agent-working .dots{display:inline-flex;gap:3px}.agent-working .dots i{width:5px;height:5px;border-radius:50%;background:var(--accent-hot);display:inline-block;animation:dotpulse 1.2s ease-in-out infinite}.agent-working .dots i:nth-child(2){animation-delay:.18s}.agent-working .dots i:nth-child(3){animation-delay:.36s}@keyframes dotpulse{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}.usage-footer{display:flex;gap:12px;font-size:11px;color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.stderr-block{font-size:12px}.stderr-block summary{color:var(--warn);cursor:pointer}.stderr-block pre{white-space:pre-wrap;margin:6px 0 0;color:var(--text-muted);font-size:11px}.chat-empty{margin:auto;text-align:center;max-width:380px;padding:32px 16px;color:var(--text-muted)}.chat-empty-mark{font-size:28px;color:var(--accent-hot);margin-bottom:8px}.chat-empty-title{font-size:16px;color:var(--text);font-weight:600;margin:0 0 6px}.chat-empty-sub{font-size:13px;margin:0 0 16px;line-height:1.5}.chat-empty-hints{display:flex;flex-direction:column;gap:6px}.chat-empty-hints span{font-size:12px;padding:6px 10px;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px}.chat-empty-starters{display:flex;flex-direction:column;gap:8px}.chat-empty-starter{font-size:13px;font-weight:550;padding:10px 14px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;text-align:center;transition:border-color .14s,background .14s,transform .14s,box-shadow .14s}.chat-empty-starter:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--surface));transform:translateY(-1px)}.chat-empty-starter.primary{color:var(--accent-ink);background:var(--accent);border-color:var(--accent);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 30%,transparent)}.chat-empty-starter.primary:hover:not(:disabled){background:var(--accent-hot);border-color:var(--accent-hot)}.chat-empty-starter:disabled{opacity:.5;cursor:default}.chat-empty-warn{font-size:12px;color:var(--warn);margin-top:14px}.chat-readonly-banner{padding:10px 16px;border-top:1px solid var(--border);color:var(--text-muted);font-size:12px}.markdown{font-family:var(--reading-font)}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:.5em 0}.markdown h1,.markdown h2,.markdown h3,.markdown h4{margin:16px 0 8px;line-height:1.3;font-weight:600}.markdown h1{font-size:1.3em}.markdown h2{font-size:1.15em}.markdown h3{font-size:1.05em}.markdown h4{font-size:.95em;color:var(--text-muted)}.markdown ul,.markdown ol{margin:.5em 0;padding-left:1.4em}.markdown li{margin:.2em 0}.markdown li::marker{color:var(--text-muted)}.markdown a{color:var(--accent-hot);text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown strong{color:var(--text);font-weight:650}.markdown blockquote{margin:8px 0;padding:2px 12px;border-left:3px solid var(--border);color:var(--text-muted)}.markdown hr{border:none;border-top:1px solid var(--border);margin:14px 0}.md-code-inline{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--accent-hot)}.md-table-wrap{overflow-x:auto;margin:10px 0}.markdown table{border-collapse:collapse;font-size:.85em;width:100%}.markdown th,.markdown td{border:1px solid var(--border);padding:5px 10px;text-align:left}.markdown th{background:var(--bg-elev)}.code-block{margin:10px 0;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--bg-elev-2)}.code-block-head{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;background:var(--bg-elev);border-bottom:1px solid var(--border)}.code-lang{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.code-copy{font-size:11px;padding:2px 8px;background:transparent}.code-block-body{margin:0;padding:11px 13px;overflow-x:auto;max-height:440px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.55;background:transparent}.tool-card{border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;background:var(--bg-elev);font-size:13px;overflow:hidden}.tool-card.running{border-left-color:var(--accent)}.tool-card.done{border-left-color:var(--positive)}.tool-card.error{border-left-color:var(--error)}.tool-head{display:flex;align-items:center;gap:7px;padding:7px 11px}.tool-icon{font-size:13px}.tool-verb{font-weight:600;color:var(--text);white-space:nowrap}.tool-target{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--accent-hot);background:var(--bg-elev-2);padding:1px 6px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.tool-tag{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--warn);border:1px solid rgba(251,191,36,.4);border-radius:4px;padding:0 5px}.tool-status{margin-left:auto;font-size:12px}.tool-card.done .tool-status{color:var(--positive)}.tool-card.error .tool-status{color:var(--error)}.tool-spinner{width:11px;height:11px;display:inline-block;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.tool-desc{padding:0 11px 8px;color:var(--text-muted);font-size:12px}.tool-raw{margin:0 11px 9px;padding:8px;font-size:11px;background:var(--bg);border-radius:6px;overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text-muted)}.tool-result{border-top:1px solid var(--border);font-size:12px}.tool-result summary{padding:6px 11px;cursor:pointer;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tool-result.err summary{color:var(--error)}.tool-result pre{margin:0;padding:8px 11px 11px;white-space:pre-wrap;word-break:break-word;font-size:11.5px;color:var(--text-muted);max-height:280px;overflow-y:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.diff-view{margin:0 11px 10px;border:1px solid var(--border);border-radius:7px;overflow:hidden;background:var(--bg)}.diff-stat{display:flex;gap:10px;padding:4px 10px;background:var(--bg-elev);border-bottom:1px solid var(--border);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.diff-stat-add{color:var(--positive)}.diff-stat-del{color:var(--error)}.diff-body{margin:0;padding:5px 0;overflow-x:auto;max-height:360px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5}.diff-line{display:flex;padding:0 4px}.diff-line.add{background:#34d3991c}.diff-line.del{background:#f871711c}.diff-gutter{width:16px;flex:none;text-align:center;color:var(--text-muted);-webkit-user-select:none;user-select:none}.diff-line.add .diff-gutter{color:var(--positive)}.diff-line.del .diff-gutter{color:var(--error)}.diff-line.add .diff-text{color:#b9f4dc}.diff-line.del .diff-text{color:#f8c4c4}.diff-line.ctx .diff-text{color:var(--text-muted)}.diff-text{white-space:pre-wrap;word-break:break-word}.diff-more{padding:4px 10px;font-size:11px;color:var(--text-muted);background:var(--bg-elev);border-top:1px solid var(--border)}.thinking-block{border:1px dashed var(--border);border-radius:7px;background:#818cf80a;font-size:12px}.thinking-block summary{padding:6px 11px;cursor:pointer;color:var(--text-muted)}.thinking-body{padding:0 11px 9px;color:var(--text-muted);white-space:pre-wrap;line-height:1.5;font-size:12px}.sync-state{padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elev-2);font-size:13px;margin-bottom:14px;display:flex;flex-direction:column;gap:4px}.sync-state.ok{border-color:#34d39966;background:#34d39912}.sync-state.warn{border-color:#fbbf2466;background:#fbbf2412}.sync-state .muted{margin:0;font-size:12px}.sync-input{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:6px 10px;border-radius:6px;font-size:13px}.sync-input:focus{outline:none;border-color:var(--accent)}.conflict-banner{position:fixed;top:48px;left:0;right:0;z-index:40;display:flex;align-items:center;gap:10px;padding:8px 16px;background:#fbbf2421;border-bottom:1px solid rgba(251,191,36,.5);color:var(--text);font-size:13px}.conflict-banner .ico{font-size:14px}.conflict-banner code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--warn)}.conflict-banner .spacer{flex:1}.conflict-banner button{font-size:11px;padding:3px 9px}.bottombar .pill.synced{color:var(--positive);border-color:#34d39959}.bottombar .pill.sync-off{color:var(--text-muted)}.bottombar .pill.conflict-badge{background:#f871711f;border-color:#f8717173;color:var(--error, #ef4444);cursor:pointer;font-weight:600}.bottombar .pill.conflict-badge:hover{background:#f8717138}.conflict-panel{position:fixed;right:16px;bottom:56px;width:min(720px,92vw);max-height:70vh;z-index:60;display:flex;flex-direction:column;background:var(--surface, #1f2937);color:var(--text);border:1px solid var(--border, rgba(255,255,255,.1));border-radius:8px;box-shadow:0 14px 40px #0006;overflow:hidden}.conflict-panel-header{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#f8717114;border-bottom:1px solid var(--border, rgba(255,255,255,.1));font-size:13px}.conflict-panel-header .spacer{flex:1}.conflict-panel-header button{font-size:11px;padding:3px 9px}.conflict-panel-error{padding:8px 14px;font-size:12px;color:var(--error, #ef4444)}.conflict-list{list-style:none;margin:0;padding:0;overflow:auto}.conflict-row{border-bottom:1px solid var(--border, rgba(255,255,255,.06))}.conflict-row-head{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;font-size:13px}.conflict-row-head:hover{background:#ffffff0a}.conflict-row-head code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.conflict-row-head .spacer{flex:1}.conflict-row-head .muted{color:var(--text-muted);font-size:12px}.conflict-row-body{padding:8px 14px 14px}.conflict-meta{display:flex;gap:14px;font-size:11px;color:var(--text-muted);margin-bottom:8px}.conflict-meta code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.conflict-actions{margin-top:10px;display:flex;gap:8px}.conflict-actions button{font-size:12px;padding:6px 12px}.bazaar-card{margin:10px 0;border-radius:12px;font-size:13.5px;line-height:1.55;animation:bz-in .32s cubic-bezier(.2,.8,.2,1)}@keyframes bz-in{0%{opacity:0;transform:translateY(6px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.bz-call{display:flex;align-items:center;gap:8px;padding:9px 13px;background:var(--bg-elev);border:1px solid var(--border);color:var(--text-muted)}.bz-call-label{color:var(--text);font-weight:500}.bz-call-need{color:var(--text-muted);font-style:italic}.bz-icon{font-size:15px}.bz-dots{display:inline-flex;gap:3px;margin-left:2px}.bz-dots i{width:4px;height:4px;border-radius:50%;background:var(--accent-hot);opacity:.5;animation:bz-blink 1s infinite}.bz-dots i:nth-child(2){animation-delay:.2s}.bz-dots i:nth-child(3){animation-delay:.4s}@keyframes bz-blink{0%,to{opacity:.25}50%{opacity:1}}.bz-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.bz-head-title{font-weight:600;font-size:13px;letter-spacing:.01em}.bz-search,.bz-recipe,.bz-preview,.bz-publish,.bz-empty{padding:13px 15px;background:var(--bg-elev);border:1px solid var(--border)}.bz-search{border-left:3px solid var(--accent)}.bz-empty{display:flex;align-items:center;gap:8px;color:var(--text-muted)}.bz-hit{display:flex;align-items:center;justify-content:space-between;gap:12px}.bz-hit-main{display:flex;flex-direction:column}.bz-hit-title{font-weight:600;color:var(--text)}.bz-hit-by{font-size:12px;color:var(--text-muted)}.bz-outcome{flex:none;text-align:right;font-size:12px;color:var(--text-muted)}.bz-outcome strong{color:var(--positive);font-size:15px;display:block}.bz-hit-pitch{margin:8px 0 0;color:var(--text-muted);font-size:12.5px}.bz-others{margin-top:8px;font-size:11.5px;color:var(--text-muted)}.bz-recipe,.bz-preview{display:flex;align-items:center;gap:9px;border-left:3px solid var(--accent-hot)}.bz-recipe-text strong{color:var(--text)}.bz-badge{margin-left:8px;font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:999px;vertical-align:middle;background:#34d39924;color:var(--positive)}.bz-badge-new{background:#818cf829;color:var(--accent-hot)}.bz-trust-ok{background:#34d39924;color:var(--positive);border:1px solid rgba(52,211,153,.35)}.bz-trust-neutral{background:#818cf81f;color:var(--accent-hot);border:1px solid rgba(129,140,248,.3)}.bz-trust-warn{background:#f59e0b29;color:var(--warn);border:1px solid rgba(245,158,11,.4);cursor:help}.bz-threeway{padding:16px;background:linear-gradient(180deg,#6366f11a,#6366f105),var(--bg-elev);border:1px solid rgba(129,140,248,.35);box-shadow:0 6px 24px -12px #6366f180}.bz-receipt{padding:13px 15px;margin-bottom:8px;border-radius:12px;background:var(--bg-elev);border:1px solid var(--border)}.bz-receipt-high{border-color:#f59e0b80;background:#f59e0b0f}.bz-receipt-head{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;color:var(--text)}.bz-receipt-title{min-width:0}.bz-receipt-lines{margin:8px 0 0;padding-left:18px;font-size:12.5px;line-height:1.55;color:var(--text)}.bz-receipt-lines li{margin:2px 0}.bz-receipt-lines strong{color:var(--text)}.bz-receipt-warn{color:var(--warn)}.bz-receipt-foot{color:var(--text-muted);font-size:11.5px}.bz-receipt-confirm{margin-top:10px;padding:8px 10px;border-radius:8px;font-size:12px;background:#f59e0b1f;color:var(--warn);border:1px solid rgba(245,158,11,.35)}.bz-tw-head{font-weight:700;font-size:13px;letter-spacing:.02em;margin-bottom:12px;color:var(--text);display:flex;align-items:center;gap:7px}.bz-tw-spark{color:var(--accent-hot)}.bz-tw-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}@media (max-width: 720px){.bz-tw-cols{grid-template-columns:1fr}}.bz-tw-col{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:11px;display:flex;flex-direction:column;gap:5px}.bz-tw-producer{border-color:#818cf866}.bz-tw-who{font-size:12px;font-weight:600;color:var(--text)}.bz-tw-what{font-size:12px;color:var(--text-muted);line-height:1.5}.bz-tw-meter{margin-top:auto;padding-top:6px;display:flex;align-items:baseline;gap:7px}.bz-meter-amount{font-size:18px;font-weight:700;color:var(--positive);transition:color .3s}.bz-meter-sub{font-size:11px;color:var(--text-muted)}.bz-represented{display:inline-block;font-size:10px;color:var(--text-muted);opacity:.85;font-style:italic}.bz-publish{border-left:3px solid var(--positive)}.bz-publish-text{margin:0 0 8px}.bz-draft{padding:13px 15px;background:var(--bg-elev);border:1px solid var(--border);border-left:3px solid var(--warn)}.bz-draft-source{font-size:11.5px;color:var(--text-muted);margin:6px 0 2px}.bz-draft-knowhow{margin:8px 0}.bz-draft-knowhow summary{cursor:pointer;font-size:12px;color:var(--accent-hot)}.bz-draft-knowhow pre{margin:8px 0 0;max-height:220px;overflow:auto;font-size:11.5px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px;white-space:pre-wrap;word-break:break-word;line-height:1.5}.bz-draft-hint{font-size:11.5px;color:var(--text-muted);margin-top:6px;font-style:italic}.bz-draft-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}.bz-draft-actions .bz-draft-hint{margin:0}.bz-draft-skip{padding:6px 12px;border-radius:8px;font-size:12px;background:transparent;border:1px solid var(--border);color:var(--text-muted)}.bz-draft-skip:hover:not(:disabled){color:var(--text);border-color:#3a3a48;background:var(--bg-elev-2)}.bazaar-modal{max-width:880px;width:94vw}.bz-store-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.bz-store-headings h2{margin:0 0 4px}.bz-store-sub{margin:0;font-size:12.5px;line-height:1.55;max-width:58ch}.bz-store-stats{display:flex;gap:8px;flex:none}.bz-stat{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 13px;border-radius:10px;background:var(--bg-elev);border:1px solid var(--border);font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.bz-stat strong{font-size:17px;color:var(--text);font-variant-numeric:tabular-nums}.bz-err{color:var(--error);font-size:12px;margin-bottom:10px}.bz-you-banner{display:flex;align-items:center;gap:9px;margin:0 0 14px;padding:9px 13px;border-radius:10px;font-size:12.5px;color:var(--text);background:linear-gradient(90deg,#6366f129,#6366f108);border:1px solid rgba(129,140,248,.32)}.bz-you-banner strong{color:var(--accent-hot)}.bz-you-spark{color:var(--accent-hot);font-size:15px;flex:none}.bz-shelf-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-height:58vh;overflow:auto;padding:2px 4px 2px 2px}@media (max-width: 640px){.bz-shelf-grid{grid-template-columns:1fr}}.bz-theme-section{margin:6px 0 14px}.bz-theme-section-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}.bz-theme-section-head .gallery-section{margin:0}.bz-theme-section-sub{font-size:11.5px}.bz-theme-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media (max-width: 720px){.bz-theme-grid{grid-template-columns:repeat(2,1fr)}}.bz-theme-card-wrap{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface);display:flex;flex-direction:column}.bz-theme-card-wrap.mine{border-color:var(--accent)}.bz-theme-swatch{position:relative;height:64px;width:100%;border-bottom:1px solid var(--border)}.bz-theme-card{position:absolute;left:10px;top:12px;width:56%;height:38px;border-radius:7px;border:1px solid;box-shadow:0 2px 6px #0000001f;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:0 8px}.bz-theme-line{height:4px;width:80%;border-radius:2px;opacity:.9}.bz-theme-line.short{width:50%;opacity:.6}.bz-theme-dot{position:absolute;right:12px;bottom:12px;width:18px;height:18px;border-radius:999px;box-shadow:0 0 0 3px #fff9,0 2px 6px #0003}.bz-theme-meta{display:flex;flex-direction:column;gap:2px;padding:9px 11px 4px}.bz-theme-title{font-size:13px;font-weight:650;color:var(--text)}.bz-theme-by{font-size:11px;color:var(--text-muted)}.bz-theme-pitch{font-size:11.5px;color:var(--text-muted);line-height:1.4;margin-top:2px}.bz-theme-foot{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}.bz-theme-rating{font-size:11px;color:var(--warn);letter-spacing:1px}.bz-theme-actions{display:flex;gap:6px;margin:8px 11px 4px}.bz-theme-apply{flex:1;padding:7px 0;border-radius:8px;background:var(--accent);border:1px solid var(--accent);color:var(--accent-ink);font-size:12.5px;font-weight:600}.bz-theme-apply:hover:not(:disabled){background:var(--accent-hot);border-color:var(--accent-hot)}.bz-theme-remix{flex:none;padding:7px 12px;border-radius:8px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:12.5px;font-weight:600;cursor:pointer}.bz-theme-remix:hover{border-color:var(--accent);color:var(--accent)}.bz-theme-lineage{display:block;padding:0 11px 9px;font-size:10.5px;color:var(--text-muted);font-style:italic}.bz-theme-report{flex:none;padding:7px 10px;border-radius:8px;background:transparent;border:1px solid var(--border);color:var(--text-muted);font-size:11.5px;font-weight:500;cursor:pointer}.bz-theme-report:hover:not(:disabled){border-color:var(--danger, #e5484d);color:var(--danger, #e5484d)}.bz-theme-report:disabled{opacity:.7;cursor:default}.bz-loading{padding:14px 2px;font-size:13px}.bz-net-note{display:block;font-size:11px;margin-top:4px}.bz-net-info,.bz-net-empty{color:var(--text-muted)}.bz-net-offline{color:var(--warn, #c98a00)}.bz-net-live{color:var(--accent)}.bz-earn-honesty{font-size:11px}.bz-card{border:1px solid var(--border);border-radius:12px;padding:13px 14px;background:var(--bg-elev);display:flex;flex-direction:column;gap:9px;cursor:pointer;transition:border-color .14s,transform .14s,box-shadow .14s,background .14s}.bz-card:hover{border-color:color-mix(in srgb,var(--text) 28%,var(--border));transform:translateY(-1px);box-shadow:var(--shadow)}.bz-card.mine{border-color:#818cf88c;background:linear-gradient(180deg,rgba(99,102,241,.08),var(--bg-elev) 60%)}.bz-card.open{background:var(--bg-elev-2)}.bz-card-head{display:flex;align-items:flex-start;gap:11px}.bz-card-glyph{font-size:20px;line-height:1;flex:none;width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:var(--bg-elev-2);border:1px solid var(--border)}.bz-card.mine .bz-card-glyph{border-color:#818cf866}.bz-card-titles{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.bz-card-title{font-weight:650;font-size:13.5px;line-height:1.3}.bz-card-by{font-size:11.5px;color:var(--text-muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.bz-kind{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;padding:1px 6px;border-radius:999px;border:1px solid var(--border);color:var(--text-muted)}.bz-kind-vendor{color:var(--accent-hot);border-color:#818cf866;background:#818cf814}.bz-kind-you{color:var(--accent-ink);border-color:var(--accent);background:var(--accent)}.bz-kind-tool{color:var(--warn);border-color:#fbbf2466;background:#fbbf2412}.bz-card-score{flex:none;display:flex;flex-direction:column;align-items:flex-end;line-height:1}.bz-score-pct{color:var(--positive);font-weight:750;font-size:16px;font-variant-numeric:tabular-nums}.bz-score-label{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-top:2px}.bz-new{font-size:9.5px;font-weight:700;letter-spacing:.06em;color:var(--accent-hot);border:1px solid rgba(129,140,248,.5);border-radius:999px;padding:2px 7px;background:#818cf814}.bz-score-bar{height:4px;border-radius:999px;background:var(--bg-elev-2);overflow:hidden}.bz-score-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--positive),#6ee7b7)}.bz-card-pitch{margin:0;font-size:12px;color:var(--text);opacity:.82;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bz-card.open .bz-card-pitch{-webkit-line-clamp:unset}.bz-card-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;margin-top:auto}.bz-card-rating{color:var(--warn);font-size:12px;letter-spacing:.5px}.bz-reward-pill{font-size:10px;padding:2px 8px;border-radius:999px;color:var(--text-muted);border:1px solid var(--border);background:var(--bg-elev-2)}.bz-badge-verified{background:#34d39924;color:var(--positive);border:1px solid rgba(52,211,153,.35)}.bz-badge-tested{background:#818cf81f;color:var(--accent-hot);border:1px solid rgba(129,140,248,.3)}.bz-card-expand{margin-left:auto;color:var(--text-muted);font-size:11px}.bz-card-detail{border-top:1px solid var(--border);margin-top:2px;padding-top:9px;display:flex;flex-direction:column;gap:6px}.bz-detail-summary{margin:0;font-size:12px;line-height:1.55;color:var(--text);opacity:.9}.bz-detail-stat{margin:0;font-size:11px}.bz-detail-hint{margin:0;font-size:11.5px;color:var(--accent-hot);opacity:.9}.bz-build-btn{align-self:flex-start;margin-top:2px;padding:6px 13px;border-radius:8px;background:var(--accent);border:1px solid var(--accent);color:var(--accent-ink);font-size:12px;font-weight:600}.bz-build-btn:hover:not(:disabled){background:var(--accent-hot);border-color:var(--accent-hot)}.ask-card{border:1px solid rgba(129,140,248,.35);border-radius:12px;padding:12px 13px;margin:8px 0;background:linear-gradient(180deg,rgba(99,102,241,.07),var(--bg-elev) 70%);display:flex;flex-direction:column;gap:10px}.ask-head{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--accent-hot)}.ask-icon{font-size:14px}.ask-q{display:flex;flex-direction:column;gap:8px}.ask-q-header{font-size:9.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.ask-q-text{margin:0;font-size:13px;line-height:1.45;color:var(--text)}.ask-options{display:flex;flex-direction:column;gap:6px}.ask-opt{display:flex;align-items:center;gap:10px;text-align:left;width:100%;padding:9px 11px;border-radius:9px;border:1px solid var(--border);background:var(--bg-elev-2);transition:border-color .12s,background .12s,transform .12s}.ask-opt:hover:not(:disabled){border-color:var(--accent);background:#20202c;transform:translate(2px)}.ask-opt:disabled{opacity:.5;cursor:default}.ask-opt.sel{border-color:var(--accent);background:#6366f11f}.ask-opt-main{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.ask-opt-label{font-size:12.5px;font-weight:600;color:var(--text)}.ask-opt-desc{font-size:11px;color:var(--text-muted);line-height:1.4}.ask-opt-go{color:var(--accent-hot);font-size:14px;flex:none}.ask-opt-check{font-size:14px;color:var(--accent-hot);flex:none}.ask-send{align-self:flex-start}.ask-foot{font-size:11px;color:var(--text-muted);font-style:italic}.markdown strong{color:var(--text)}:where(:root:not([data-theme=dark])) button:hover:not(:disabled){background:#e6eaf2}:where(:root:not([data-theme=dark])) .ask-opt:hover:not(:disabled){background:#eef1fb}:where(:root:not([data-theme=dark])) .diff-line.add .diff-text{color:#15803d}:where(:root:not([data-theme=dark])) .diff-line.del .diff-text{color:#b91c1c}.usage-footer{display:none}.canvas-wrap{display:flex;flex-direction:column;min-height:0;overflow:hidden;background:radial-gradient(1200px 600px at 12% -10%,var(--canvas-1),transparent 60%),radial-gradient(1000px 700px at 100% 0%,var(--canvas-2),transparent 55%),linear-gradient(160deg,var(--canvas-3),var(--bg) 70%)}.block-canvas{flex:1;min-height:0;overflow:auto}.block-canvas .rgl{min-height:100%}.arrange-bar{display:flex;align-items:center;gap:12px;padding:8px 18px;background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--border)}.arrange-hint{font-size:12.5px;color:var(--text-muted)}.arrange-bar .spacer{flex:1}.block{display:flex;flex-direction:column;height:100%;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);overflow:hidden;transition:box-shadow .16s,transform .16s;animation:block-enter .28s var(--ease-spring) both}@keyframes block-enter{0%{opacity:0;translate:0 10px;scale:.985}to{opacity:1;translate:0 0;scale:1}}@media (prefers-reduced-motion: reduce){.block{animation:none}}.block.is-arranging{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent),var(--shadow);animation:block-enter .28s var(--ease-spring) both,block-jiggle .4s ease-in-out}@keyframes block-jiggle{0%,to{rotate:0deg}25%{rotate:-.4deg}75%{rotate:.4deg}}.block-header{display:flex;align-items:center;gap:8px;padding:9px 13px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,var(--surface),var(--surface-2));font-size:13px;flex:none}.block-header.block-handle{cursor:grab}.block-header.block-handle:active{cursor:grabbing}.block-icon{font-size:14px}.block-title{font-weight:650;color:var(--text);letter-spacing:.01em}.block-header .spacer{flex:1}.block-actions{display:inline-flex;gap:4px}.block-actions button{padding:2px 7px;font-size:12px;border-radius:7px;background:var(--bg-elev-2);border:1px solid var(--border);color:var(--text-muted)}.block-actions button:hover:not(:disabled){color:var(--text)}.block-pin{font-size:12px;opacity:.55}.block-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.chat-block-bar{display:flex;align-items:center;gap:8px;padding:7px 12px;border-bottom:1px solid var(--border);flex:none}.session-picker{position:relative}.session-picker-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 9px;border-radius:8px;border:1px solid var(--border);background:var(--surface, transparent);color:var(--text);cursor:pointer;max-width:240px}.session-picker-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.session-live-dot{width:7px;height:7px;border-radius:999px;background:#22c55e;flex:none}.session-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:40;min-width:260px;max-width:340px;max-height:320px;overflow-y:auto;background:var(--surface, #fff);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);padding:4px}.session-empty{padding:12px;font-size:12px;color:var(--text-muted)}.session-row{display:flex;align-items:center;gap:4px;border-radius:7px}.session-row.active{background:var(--bg-elev, rgba(127,127,127,.08))}.session-open{flex:1;min-width:0;display:flex;align-items:center;gap:6px;text-align:left;background:none;border:none;color:inherit;font:inherit;cursor:pointer;padding:7px 8px;border-radius:7px}.session-title{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-meta{margin-left:auto;font-size:11px;color:var(--text-muted);white-space:nowrap;flex:none}.session-actions{display:inline-flex;gap:2px;padding-right:4px}.session-actions button{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:12px;padding:4px;border-radius:6px}.session-actions button:hover{color:var(--text)}.session-rename{flex:1;margin:4px;padding:6px 8px;font:inherit;font-size:13px;border:1px solid var(--accent, #4a90d9);border-radius:6px;background:var(--surface, transparent);color:inherit}.session-new{width:100%;text-align:left;padding:8px;margin-top:2px;background:none;border:none;border-top:1px solid var(--border);color:var(--accent, #4a90d9);cursor:pointer;font:inherit;font-size:12.5px}.liveview-frame{width:100%;height:100%;border:0;background:#fff;flex:1}.liveview-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:24px;color:var(--text-muted)}.liveview-empty-mark{font-size:30px;opacity:.7}.liveview-empty-title{font-size:14px;font-weight:600;color:var(--text);margin:0}.liveview-empty-sub{font-size:12.5px;margin:0;max-width:240px;line-height:1.5}.notes-block{flex:1;width:100%;border:0;resize:none;outline:none;padding:14px 16px;font-size:14px;line-height:1.6;color:var(--text);background:var(--surface);font-family:inherit}.earn-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:5px;padding:16px 18px;overflow:hidden}.earn-who{display:flex;flex-direction:column;gap:1px}.earn-name{font-size:14px;font-weight:700;color:var(--text);display:inline-flex;align-items:center;gap:6px}.earn-you-tag{font-size:9px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--accent-ink);background:var(--accent);border-radius:999px;padding:1px 6px}.earn-sub{font-size:11.5px;color:var(--text-muted)}.earn-amount{font-size:30px;font-weight:800;letter-spacing:-.01em;margin-top:2px;color:color-mix(in srgb,var(--accent) 80%,#134e4a);font-variant-numeric:tabular-nums}.earn-meta{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:12px;color:var(--text-muted)}.earn-meta strong{color:var(--text)}.earn-rep,.an-foot{font-size:10.5px;color:var(--text-muted);opacity:.85}.earn-spark{margin-top:auto;position:relative;height:50px;padding-top:6px;display:flex;align-items:flex-end}.earn-bars{flex:1;display:flex;align-items:flex-end;gap:3px;height:100%}.earn-bar{flex:1 1 0;min-width:3px;max-width:14px;border-radius:3px 3px 0 0;background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 38%,var(--surface-tint)));transition:height .32s cubic-bezier(.2,.8,.2,1)}.earn-spark.is-baseline .earn-bar{background:color-mix(in srgb,var(--accent) 22%,var(--bg-elev-2))}.earn-spark-live{position:absolute;top:0;right:0;font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:4px}.earn-spark-live:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);animation:earn-pulse 1.6s ease-in-out infinite}@keyframes earn-pulse{0%,to{opacity:.3}50%{opacity:1}}.earn-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:22px;color:var(--text-muted)}.earn-empty-mark{font-size:28px;opacity:.75}.earn-empty-title{font-size:14px;font-weight:650;color:var(--text);margin:0}.earn-empty-sub{font-size:12px;margin:0;max-width:230px;line-height:1.5}.analytics-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;padding:14px 16px;overflow:auto}.an-stats{display:flex;gap:9px}.an-stat{flex:1;min-width:0;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:11px;padding:9px 10px;display:flex;flex-direction:column;gap:1px}.an-stat-num{font-size:16px;font-weight:750;color:var(--text);font-variant-numeric:tabular-nums}.an-stat-lbl{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.an-board{display:flex;flex-direction:column;gap:7px}.an-row{display:grid;grid-template-columns:1fr 1.3fr auto;align-items:center;gap:8px;font-size:12px}.an-row-name{font-weight:600;color:var(--text);display:inline-flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.an-row-bar{height:8px;background:var(--bg-elev-2);border-radius:999px;overflow:hidden}.an-row-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 52%,var(--surface-tint)),var(--accent));transition:width .36s cubic-bezier(.2,.8,.2,1)}.an-row-val{font-variant-numeric:tabular-nums;color:var(--text-muted);font-size:11.5px}.an-foot{text-align:right}.usage-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;padding:16px 18px;overflow:hidden}.usage-gauge{display:flex;flex-direction:column;gap:5px}.usage-gauge-head{display:flex;align-items:baseline;justify-content:space-between}.usage-gauge-label{font-size:12px;font-weight:650;color:var(--text)}.usage-gauge-val{font-size:14px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}.usage-bar{height:9px;background:var(--bg-elev-2);border-radius:999px;overflow:hidden}.usage-bar-fill{display:block;height:100%;border-radius:999px;transition:width .42s cubic-bezier(.2,.8,.2,1);background:var(--accent)}.usage-bar-fill.tone-weekly{background:color-mix(in srgb,var(--accent) 60%,#6d28d9)}.usage-bar-fill.tone-memory{background:color-mix(in srgb,var(--accent) 45%,#0e7490)}.usage-gauge-sub{font-size:10.5px;color:var(--text-muted)}.usage-extra{font-size:11px;color:var(--text-muted)}.usage-foot{margin-top:auto;display:flex;align-items:center;gap:6px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.usage-live-dot{width:7px;height:7px;border-radius:999px;background:var(--text-muted)}.usage-live-dot[data-status=live]{background:#16a34a;box-shadow:0 0 0 3px color-mix(in srgb,#16a34a 22%,transparent)}.usage-live-dot[data-status=stale]{background:#d97706}.usage-live-dot[data-status=unavailable]{background:#9ca3af}.usage-block.is-stale{opacity:.82}.usage-stale-note{font-size:10.5px;color:#b45309}.usage-unavailable{display:flex;flex-direction:column;gap:2px;padding:4px 0}.usage-unavailable-title{font-size:12.5px;font-weight:650;color:var(--text)}.usage-unavailable-sub{font-size:11px;color:var(--text-muted);line-height:1.45}.usage-skeleton{height:26px;border-radius:8px;background:var(--bg-elev-2);animation:usage-pulse 1.4s ease-in-out infinite}.usage-skeleton.short{width:55%}@keyframes usage-pulse{0%,to{opacity:.55}50%{opacity:.95}}.usage-disclose{align-items:flex-start;justify-content:center;gap:8px}.usage-disclose-mark{font-size:26px}.usage-disclose-title{font-size:14px;font-weight:700;color:var(--text);margin:0}.usage-disclose-body{font-size:12px;color:var(--text-muted);line-height:1.5;margin:0}.usage-disclose-ok{margin-top:4px;align-self:flex-start;padding:7px 14px;border-radius:8px;border:none;background:var(--accent);color:var(--accent-ink);font-weight:650;font-size:12.5px;cursor:pointer}.usage-disclose-ok:disabled{opacity:.6;cursor:default}.powers-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:14px 16px;overflow:hidden}.powers-head{display:flex;align-items:center;justify-content:space-between}.powers-title{font-size:13px;font-weight:750;color:var(--text)}.powers-edit{font-size:11px;font-weight:600;color:var(--accent-hot);background:none;border:none;cursor:pointer;padding:2px 4px}.powers-list{display:flex;flex-direction:column;gap:6px;overflow:auto;min-height:0}.powers-run{display:flex;flex-direction:column;gap:1px;align-items:flex-start;text-align:left;padding:8px 10px;border-radius:9px;border:1px solid var(--border);background:var(--bg-elev-2);cursor:pointer;position:relative}.powers-run:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--bg-elev-2))}.powers-run-name{font-size:12.5px;font-weight:650;color:var(--text);font-family:var(--mono, ui-monospace, monospace)}.powers-run-desc{font-size:11px;color:var(--text-muted);line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.powers-tag{position:absolute;top:7px;right:8px;font-size:8.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--accent-ink);background:var(--accent);border-radius:999px;padding:1px 5px}.powers-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;background:var(--bg-elev-2);font-size:12px}.powers-row.is-hidden{opacity:.5}.powers-row-name{font-family:var(--mono, ui-monospace, monospace);color:var(--text)}.powers-reorder{display:inline-flex;flex-direction:column;gap:1px}.powers-reorder button{border:none;background:none;cursor:pointer;color:var(--text-muted);font-size:8px;line-height:1;padding:1px}.powers-reorder button:hover{color:var(--accent)}.powers-hide{font-size:10.5px;color:var(--text-muted);background:none;border:1px solid var(--border);border-radius:6px;padding:2px 8px;cursor:pointer}.powers-allhidden{font-size:11.5px;color:var(--text-muted);padding:6px 2px}.powers-empty{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding:14px 8px}.powers-empty-mark{font-size:26px;opacity:.75}.powers-empty-title{font-size:13.5px;font-weight:650;color:var(--text);margin:0}.powers-empty-sub{font-size:11.5px;color:var(--text-muted);margin:0;line-height:1.5;max-width:230px}.powers-empty-sub code,.powers-run-name code{font-size:.92em}.powers-bazaar{margin-top:auto;padding-top:4px}.powers-divider{text-align:center;font-size:9.5px;letter-spacing:.06em;color:var(--text-muted);opacity:.7}.powers-bazaar-note{font-size:10px;color:var(--text-muted);text-align:center;margin:2px 0 0;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.powers-skel{height:38px;border-radius:9px;background:var(--bg-elev-2);animation:usage-pulse 1.4s ease-in-out infinite}.settings-menu{max-width:520px}.set-section{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:16px 0 8px}.muted.small{font-size:11px;margin-top:6px}.autonomy-dial{display:flex;flex-direction:column;gap:8px}.autonomy-tier{display:flex;gap:11px;align-items:flex-start;text-align:left;padding:11px 13px;border-radius:11px;border:1.5px solid var(--border);background:var(--bg-elev-2);cursor:pointer;transition:border-color .12s,background .12s}.autonomy-tier:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}.autonomy-tier.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--bg-elev-2))}.autonomy-tier.coming-soon{opacity:.6;cursor:not-allowed}.autonomy-emoji{font-size:20px;line-height:1.2}.autonomy-body{display:flex;flex-direction:column;gap:3px}.autonomy-title{font-size:13.5px;font-weight:700;color:var(--text);display:inline-flex;align-items:center;gap:7px}.autonomy-desc{font-size:11.5px;color:var(--text-muted);line-height:1.45}.autonomy-soon{font-size:8.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--text-muted);background:var(--border);border-radius:999px;padding:1px 6px}.autonomy-check{color:var(--accent);font-weight:800}.autonomy-note{font-size:11.5px;color:var(--text-muted);margin:8px 2px 0;line-height:1.5;padding:8px 10px;border-radius:8px;background:var(--bg-elev-2)}.set-rename{display:flex;gap:8px}.set-rename input{flex:1;padding:8px 11px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px}.set-rename button,.set-row{padding:8px 13px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);font-size:13px;cursor:pointer}.set-row{width:100%;text-align:left}.set-row:hover{border-color:var(--accent)}.set-account{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--text)}.set-account-email{font-size:11.5px;color:var(--text-muted)}.set-support{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:var(--text)}.set-support label{display:flex;align-items:center;gap:6px}.set-support select{padding:6px 8px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px}.set-support button{padding:8px 13px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);font-size:13px;cursor:pointer;font-weight:600;margin-left:auto}.set-support button:hover{border-color:var(--accent)}.set-support-warn{color:#b45309;font-weight:600;font-size:12px;width:100%}.files-block{flex:1;min-height:0;overflow:auto;padding:6px 4px;font-size:12.5px}.fnode{display:flex;align-items:center;gap:5px;padding:3px 6px;border-radius:7px;cursor:pointer;white-space:nowrap;color:var(--text)}.fnode:hover{background:var(--bg-elev-2)}.fnode.sel{background:color-mix(in srgb,var(--accent) 16%,var(--surface-tint))}.fnode-tw{width:12px;flex:none;color:var(--text-muted);font-size:10px}.fnode-ic{flex:none;font-size:12px}.fnode-nm{overflow:hidden;text-overflow:ellipsis}.files-msg{padding:10px;color:var(--text-muted);font-size:12px}.files-msg.err{color:var(--error)}.logs-block{flex:1;min-height:0;display:flex;flex-direction:column}.logs-bar{flex:none;display:flex;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--surface-2)}.logs-select{border:1px solid var(--border);border-radius:7px;padding:3px 8px;font-size:12px;color:var(--text);background:var(--surface)}.logs-select:focus{outline:none;border-color:var(--accent)}.logs-hint{font-size:10px;color:var(--text-muted);margin-left:auto}.logs-body{flex:1;min-height:0;overflow:auto}.logs-msg{padding:12px;color:var(--text-muted);font-size:12px}.logs-msg.err{color:var(--error)}.logs-out{margin:0;padding:10px 12px;min-height:100%;box-sizing:border-box;background:#1e1e1e;color:#d4d4d4;white-space:pre-wrap;word-break:break-word;font:11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.dtable-block{flex:1;min-height:0;display:flex;flex-direction:column}.dtable-bar{flex:none;display:flex;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--surface-2)}.dtable-path,.dtable-filter{border:1px solid var(--border);border-radius:7px;padding:4px 8px;font-size:12px;color:var(--text);background:var(--surface)}.dtable-path{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dtable-filter{width:130px;flex:none}.dtable-path:focus,.dtable-filter:focus{outline:none;border-color:var(--accent)}.dtable-load{flex:none}.dtable-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.dtable-scroll{flex:1;min-height:0;overflow:auto}.dtable-msg{padding:14px;color:var(--text-muted);font-size:12.5px;line-height:1.5}.dtable-msg.err{color:var(--error)}.dtable{border-collapse:collapse;font-size:12px;width:100%}.dtable th,.dtable td{border:1px solid var(--border);padding:4px 8px;text-align:left;white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis}.dtable th{position:sticky;top:0;background:var(--surface-2);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600}.dtable th:hover{background:var(--bg-elev-2)}.dtable tbody tr:nth-child(2n){background:color-mix(in srgb,var(--text) 3%,transparent)}.dtable td{color:var(--text)}.dtable-foot{flex:none;padding:5px 10px;font-size:10.5px;color:var(--text-muted);border-top:1px solid var(--border)}.deploy-block{flex:1;min-height:0;display:flex;flex-direction:column;overflow:auto}.deploy-empty{padding:18px 16px;text-align:center}.deploy-icon{font-size:30px}.deploy-title{margin:8px 0 4px;font-weight:600;color:var(--text)}.deploy-sub{margin:0 auto 12px;max-width:320px;font-size:12px;line-height:1.5;color:var(--text-muted)}.deploy-note{font-size:12px;color:var(--text-muted)}.deploy-history{border-top:1px solid var(--border);padding:10px 14px}.deploy-history-h{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.deploy-msg{padding:8px 0 2px;font-size:12px;color:var(--text-muted)}.codeblock{flex:1;min-height:0;display:flex;flex-direction:column}.codeblock-bar{flex:none;display:flex;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--surface-2)}.codeblock-path{flex:1;min-width:0;border:1px solid var(--border);border-radius:7px;padding:4px 8px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text);background:var(--surface)}.codeblock-path:focus{outline:none;border-color:var(--accent)}.codeblock-trunc{flex:none;font-size:10px;color:var(--text-muted)}.codeblock-body{flex:1;min-height:0;overflow:auto}.codeblock-msg{padding:16px;color:var(--text-muted);font-size:12.5px;line-height:1.5}.codeblock-msg.err{color:var(--error)}.codeblock-pre{margin:0;padding:10px 0;min-height:100%;box-sizing:border-box;background:#1e1e1e;color:#d4d4d4;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}.codeblock-line{display:flex;padding:0 12px}.codeblock-ln{width:34px;flex:none;text-align:right;padding-right:14px;color:#5a5a5a;-webkit-user-select:none;user-select:none}.codeblock-lc{white-space:pre}.todo-block{flex:1;min-height:0;display:flex;flex-direction:column}.todo-add{flex:none;display:flex;gap:6px;padding:10px;border-bottom:1px solid var(--border)}.todo-add input{flex:1;min-width:0;border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:13px;color:var(--text);background:var(--surface);font-family:inherit}.todo-add input:focus{outline:none;border-color:var(--accent)}.todo-list{flex:1;min-height:0;overflow:auto;padding:6px}.todo-msg{padding:10px;color:var(--text-muted);font-size:12.5px}.todo-item{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:8px;font-size:13px}.todo-item:hover{background:var(--bg-elev-2)}.todo-item label{display:flex;align-items:center;gap:8px;flex:1;cursor:pointer;min-width:0}.todo-item input[type=checkbox]{accent-color:var(--accent);flex:none}.todo-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-item.done .todo-text{text-decoration:line-through;color:var(--text-muted)}.todo-del{flex:none;opacity:0;padding:1px 6px;font-size:11px;border-radius:6px;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border)}.todo-item:hover .todo-del{opacity:1}.todo-del:hover{color:var(--error);border-color:var(--error)}.todo-foot{flex:none;padding:7px 12px;font-size:11px;color:var(--text-muted);border-top:1px solid var(--border)}.react-grid-item.react-grid-placeholder{background:color-mix(in srgb,var(--accent) 22%,var(--surface-tint));border:2px dashed color-mix(in srgb,var(--accent) 55%,var(--surface-tint));border-radius:16px;opacity:.7}.react-grid-item>.react-resizable-handle{display:none}.block-canvas.arranging .react-grid-item>.react-resizable-handle{display:block;z-index:3}.react-grid-item.cssTransforms:not(.react-draggable-dragging):not(.resizing){transition-property:transform,width,height;transition-duration:.24s;transition-timing-function:var(--ease-spring)}@media (prefers-reduced-motion: reduce){.react-grid-item.cssTransforms:not(.react-draggable-dragging):not(.resizing){transition-duration:0ms}}.block-canvas.arranging{background-image:radial-gradient(circle,color-mix(in srgb,var(--accent) 32%,transparent) 1.3px,transparent 1.6px);background-size:var(--row-pitch, 46px) var(--row-pitch, 46px);background-position:20px 20px}.add-gallery{max-width:560px;width:92vw}.gallery-section{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:16px 0 8px}.gallery-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}@media (max-width: 520px){.gallery-grid{grid-template-columns:1fr 1fr}}.gallery-item{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:13px;border-radius:13px;border:1px solid var(--border);background:var(--surface);text-align:left;transition:border-color .13s,transform .13s,box-shadow .13s}.gallery-item:hover:not(:disabled){border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}.gallery-item:disabled{opacity:.6;cursor:not-allowed}.gallery-glyph{font-size:22px}.gallery-name{font-size:13px;font-weight:650;color:var(--text)}.gallery-desc{font-size:11.5px;color:var(--text-muted);line-height:1.4}.gallery-soon{position:absolute;top:9px;right:9px;font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:1px 6px}.template-gallery{max-width:600px;width:94vw}.template-card{gap:6px}.tpl-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.tpl-chip{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:1px 7px}.tpl-chip-icon{font-size:10px}.template-card.saved{padding:0;position:relative;overflow:hidden}.template-card.saved:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}.tpl-apply{display:flex;flex-direction:column;align-items:flex-start;gap:5px;width:100%;padding:13px;background:transparent;border:0;text-align:left}.tpl-del{position:absolute;top:8px;right:8px;width:22px;height:22px;padding:0;border-radius:7px;font-size:12px;line-height:1;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border)}.tpl-del:hover{color:var(--error);border-color:var(--error)}.tpl-save-row{display:flex;gap:8px;margin-top:16px}.tpl-save-input{flex:1;padding:9px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:13px;font-family:inherit}.tpl-save-input:focus{outline:none;border-color:var(--accent)}.mobile-canvas{flex:1;min-height:0;display:flex;flex-direction:column}.mobile-tabs{display:flex;gap:6px;padding:8px 10px;flex:none;overflow-x:auto;border-bottom:1px solid var(--border);background:var(--glass);-webkit-overflow-scrolling:touch;scrollbar-width:none}.mobile-tabs::-webkit-scrollbar{display:none}.mtab{display:inline-flex;align-items:center;gap:6px;flex:none;padding:7px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:12.5px;font-weight:600}.mtab.active{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.mtab-label{white-space:nowrap}.mtab-x{margin-left:2px;opacity:.85;font-size:11px}.mobile-block{flex:1;min-height:0;padding:12px;display:flex}.mobile-block .block{width:100%;height:100%;border-radius:14px}@media (max-width: 640px){.app{overflow-x:hidden;max-width:100vw}.topbar{gap:8px;padding:0 10px}.topbar .brand{font-size:13px}.topbar [data-testid=role-badge],.topbar [data-testid=workspace-name]{display:none}.topbar button{padding:5px 9px;font-size:12px}.more-menu button{padding:9px 12px;font-size:13px}.arrange-bar{padding:8px 12px}.arrange-hint{display:none}}.cb-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:14px 16px;overflow:auto}.cb-note{font-size:11.5px;color:var(--text-muted);margin:0}.cb-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:12.5px;text-align:center;padding:16px}.cb-metric{flex:1;min-height:0;display:flex;flex-direction:column;gap:3px}.cb-metric-value{font-size:34px;font-weight:800;letter-spacing:-.01em;color:color-mix(in srgb,var(--accent) 80%,#134e4a);font-variant-numeric:tabular-nums;line-height:1.05}.cb-metric-label{font-size:12.5px;color:var(--text-muted)}.cb-metric-delta{font-size:12px;font-weight:600;color:var(--text-muted)}.cb-metric-delta.is-up{color:#15803d}.cb-metric-delta.is-down{color:var(--error, #dc2626)}.cb-spark{margin-top:auto;padding-top:8px;height:46px;display:flex;align-items:flex-end;gap:3px}.cb-spark-bar{flex:1 1 0;min-width:3px;max-width:16px;border-radius:3px 3px 0 0;background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 38%,var(--surface-tint)))}.cb-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.cb-list-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}.cb-list-row:last-child{border-bottom:none}.cb-list-label{color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cb-list-value{color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.cb-table-wrap{overflow:auto;flex:1;min-height:0}.cb-table{border-collapse:collapse;width:100%;font-size:12.5px}.cb-table th,.cb-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.cb-table th{color:var(--text-muted);font-weight:700;background:var(--bg-elev);position:sticky;top:0}.cb-table td{color:var(--text)}.cb-markdown{font-size:13px}.canvas-card{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;margin:4px 0;border-radius:10px;background:color-mix(in srgb,var(--accent) 7%,var(--bg-elev));border:1px solid color-mix(in srgb,var(--accent) 24%,var(--border));font-size:13px;color:var(--text)}.canvas-card.is-pending{color:var(--text-muted)}.canvas-card.is-error{border-color:color-mix(in srgb,var(--error, #dc2626) 40%,var(--border))}.canvas-card-icon{font-size:16px}.gallery-agent-hint{margin-top:14px;padding:10px 14px;border-radius:10px;background:color-mix(in srgb,var(--accent) 6%,var(--bg-elev));border:1px dashed color-mix(in srgb,var(--accent) 30%,var(--border));font-size:12.5px;color:var(--text-muted);line-height:1.5}.gallery-agent-hint em{color:var(--text);font-style:italic}.peer-stream{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--text-muted);text-align:center}.peer-stream-ambient{margin-top:22px;max-width:300px}.chat-empty .peer-stream-ambient{margin-left:auto;margin-right:auto}.peer-stream-block{flex:1;min-height:0;overflow:auto;padding:14px 16px;text-align:left;gap:11px}.peer-item{display:flex;flex-direction:column;gap:2px}.peer-stream-ambient .peer-item{animation:peer-in .7s ease both}@keyframes peer-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.peer-stream-ambient .peer-item{animation:none}}.peer-who{font-weight:650;color:var(--text);font-size:12.5px}.peer-occ{font-weight:500;color:var(--text-muted)}.peer-built{line-height:1.45}.peer-honest{margin:4px 0 0;font-size:10.5px;font-style:italic;color:var(--text-muted);opacity:.8;line-height:1.4}.peer-stream-block .peer-item{padding:9px 11px;border-radius:10px;background:var(--bg-elev-2);border:1px solid var(--border)}.peer-stream-block .peer-honest{margin-top:auto;padding-top:8px;text-align:center}.win-card{align-self:stretch;display:flex;gap:11px;align-items:flex-start;padding:13px 15px;border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,var(--bg-elev));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));box-shadow:0 6px 22px -12px color-mix(in srgb,var(--accent) 55%,transparent);animation:bz-in .32s cubic-bezier(.2,.8,.2,1)}.win-spark{font-size:18px;line-height:1.2;flex:none}.win-body{display:flex;flex-direction:column;gap:3px;min-width:0}.win-lead{font-size:13px;font-weight:700;color:var(--text)}.win-url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px;font-weight:650;color:var(--accent-hot);text-decoration:none;word-break:break-all}.win-url:hover{text-decoration:underline}.win-sub{font-size:11.5px;color:var(--text-muted)}.theme-picker{width:min(440px,92%)}.theme-section{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:16px 0 8px}.theme-modes{display:flex;gap:10px}.theme-mode{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface);text-align:left}.theme-mode.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.theme-mode-glyph{font-size:18px}.theme-mode-name{font-size:13px;font-weight:600;color:var(--text)}.theme-mode-desc{font-size:11.5px;color:var(--text-muted)}.theme-swatches{display:flex;flex-wrap:wrap;gap:10px}.theme-swatch{width:34px;height:34px;border-radius:999px;border:2px solid transparent;padding:0;font-size:14px;font-weight:700;line-height:1;box-shadow:0 1px 3px #0000002e;transition:transform .1s}.theme-swatch:hover:not(:disabled){transform:scale(1.08)}.theme-swatch.active{border-color:var(--text)}.theme-custom{display:flex;align-items:center;gap:10px;margin-top:14px}.theme-custom label{margin:0}.theme-custom input[type=color]{width:34px;height:34px;padding:0;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer}.theme-hex-input{width:96px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-family:ui-monospace,Menlo,monospace;font-size:12.5px}.theme-remixing{margin:-2px 0 6px;font-size:12px;color:var(--accent)}.theme-publish-sub{margin:2px 0 8px;font-size:12px}.theme-publish{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.theme-publish-title{flex:1 1 100%;width:auto;font-family:inherit}.theme-publish-pitch{flex:1 1 60%;width:auto;font-family:inherit}.theme-publish .primary{flex:0 0 auto}.theme-publish-msg{margin:8px 0 0;font-size:12px}.theme-publish-msg.ok{color:var(--accent)}.theme-publish-msg.err{color:var(--error)}.reading-panel{width:min(440px,92%)}.reading-panel h2{display:flex;align-items:center;gap:8px}.reading-aa{display:inline-grid;place-items:center;min-width:30px;height:24px;padding:0 6px;border-radius:7px;background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent-hot);font-weight:700;letter-spacing:.02em;font-size:14px}.reading-controls{display:flex;flex-direction:column}.reading-section{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:14px 0 8px}.reading-preview{padding:16px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2);color:var(--text);margin-top:4px;min-height:64px;transition:font-size .12s var(--ease-out)}.reading-fonts{display:flex;flex-direction:column;gap:8px}.reading-font{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;width:100%;text-align:left;padding:10px 14px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);transition:border-color .12s,background .12s,transform .12s}.reading-font:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.reading-font.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.reading-font-name{font-size:17px;font-weight:600;color:var(--text);line-height:1.1}.reading-font-vibe{font-size:11.5px;color:var(--text-muted);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;flex-basis:100%}.reading-font-check{margin-left:auto;color:var(--accent-hot);font-weight:700}.reading-sizes{display:flex;align-items:center;justify-content:center;gap:14px;padding:4px 0}.reading-step{display:inline-flex;align-items:baseline;justify-content:center;gap:1px;min-width:54px;height:44px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text)}.reading-step:hover:not(:disabled){border-color:var(--accent)}.reading-step:disabled{opacity:.4}.reading-step-a{font-weight:600}.reading-step-a.small{font-size:13px}.reading-step-a.large{font-size:20px}.reading-step-minus,.reading-step-plus{font-size:14px;color:var(--text-muted)}.reading-size-label{min-width:78px;text-align:center;font-size:13px;font-weight:600;color:var(--text)}.reading-spacings{display:flex;gap:8px}.reading-spacing{flex:1;padding:8px 6px;font-size:12.5px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text-muted)}.reading-spacing:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.reading-spacing.active{border-color:var(--accent);color:var(--text);box-shadow:0 0 0 1px var(--accent) inset}.set-row-aa{display:inline-grid;place-items:center;min-width:22px;height:18px;margin-right:4px;font-weight:700;font-size:12px;color:var(--accent-hot)}.update-nudge{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--surface);background:color-mix(in srgb,var(--accent) 12%,var(--surface));border-bottom:1px solid var(--border);color:var(--text);font-size:13px}.update-nudge.is-error{background:color-mix(in srgb,var(--warn) 14%,var(--surface))}.update-nudge-spark{font-size:14px;flex:0 0 auto}.update-nudge-text{flex:1 1 auto;min-width:0}.update-nudge-go{flex:0 0 auto;border:0;background:var(--accent);color:var(--accent-ink);padding:5px 12px;border-radius:8px;font-weight:600;cursor:pointer}.update-nudge-go:hover{background:var(--accent-hot)}.update-nudge-x{flex:0 0 auto;border:0;background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;line-height:1;padding:4px 6px}.update-nudge-x:hover{color:var(--text)}.update-nudge.is-busy .update-nudge-spark{animation:nudge-pulse 1.2s ease-in-out infinite}@keyframes nudge-pulse{0%,to{opacity:1}50%{opacity:.4}}.set-signout{margin-top:8px;color:var(--text-muted)}.set-signout:hover:not(:disabled){color:var(--error);border-color:var(--error)}