synabun 2.0.0-beta → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +65 -0
- package/NOTICE +5 -0
- package/README.md +1 -1
- package/THIRD-PARTY-LICENSES.md +51 -0
- package/benchmarks/fixtures/browser/README.md +1 -1
- package/benchmarks/fixtures/desktop/README.md +1 -1
- package/docs/whatsapp.md +2 -2
- package/hooks/claude-code/pre-compact.mjs +11 -0
- package/hooks/claude-code/prompt-submit.mjs +60 -184
- package/hooks/claude-code/session-start.mjs +73 -16
- package/hooks/claude-code/shared.mjs +20 -0
- package/hooks/claude-code/stop.mjs +5 -5
- package/launcher.mjs +40 -0
- package/lib/claude-hooks.js +61 -8
- package/lib/client-config-repair.js +4 -3
- package/lib/data-home-migration.js +4 -0
- package/lib/desktop-pwa.js +206 -0
- package/lib/external-tools.js +221 -0
- package/lib/first-launch-protection.js +5 -0
- package/lib/packaged-runtime.js +110 -0
- package/lib/start-launcher.js +1396 -0
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -3
- package/neural-interface/i18n/en.json +1540 -154
- package/neural-interface/i18n/pt-BR.json +1538 -153
- package/neural-interface/lib/assistant-api.js +62 -6
- package/neural-interface/lib/assistant-brains/claude.js +4 -0
- package/neural-interface/lib/assistant-catalog.js +179 -27
- package/neural-interface/lib/assistant-config.js +31 -2
- package/neural-interface/lib/assistant-dispatch.js +62 -13
- package/neural-interface/lib/assistant-envelope.js +9 -6
- package/neural-interface/lib/assistant-hidden-models.js +393 -66
- package/neural-interface/lib/assistant-memory.js +24 -10
- package/neural-interface/lib/assistant-persona.js +6 -2
- package/neural-interface/lib/assistant-pricing.js +21 -6
- package/neural-interface/lib/assistant-runtime.js +181 -12
- package/neural-interface/lib/assistant-task-prompt.js +13 -3
- package/neural-interface/lib/assistant-test-density.js +142 -0
- package/neural-interface/lib/assistant-user-context-budgets.js +123 -0
- package/neural-interface/lib/assistant-user-context.js +908 -0
- package/neural-interface/lib/assistant-user-knowledge.js +328 -0
- package/neural-interface/lib/assistant-user-learn.js +404 -0
- package/neural-interface/lib/assistant-user-threads.js +226 -0
- package/neural-interface/lib/assistant-user-writer.js +181 -0
- package/neural-interface/lib/augmented-path.js +23 -3
- package/neural-interface/lib/browser-background-tab.js +134 -0
- package/neural-interface/lib/browser-language.js +83 -0
- package/neural-interface/lib/browser-screenshot.js +678 -61
- package/neural-interface/lib/claude-agent-bridge.js +87 -153
- package/neural-interface/lib/claude-executable.js +241 -0
- package/neural-interface/lib/claude-model-catalog.js +82 -93
- package/neural-interface/lib/claude-temporary.js +46 -7
- package/neural-interface/lib/cloudflared/install.js +533 -0
- package/neural-interface/lib/cloudflared/manager.js +545 -0
- package/neural-interface/lib/cloudflared/pins.js +115 -0
- package/neural-interface/lib/cloudflared/pins.json +63 -0
- package/neural-interface/lib/cloudflared/tunnel.js +265 -0
- package/neural-interface/lib/editor-completion-endpoint.js +264 -0
- package/neural-interface/lib/editor-completion-opencode.js +436 -0
- package/neural-interface/lib/editor-completion.js +714 -0
- package/neural-interface/lib/editor-config.js +149 -0
- package/neural-interface/lib/editor-files-api.js +268 -0
- package/neural-interface/lib/editor-git-api.js +134 -0
- package/neural-interface/lib/file-explorer-api.js +1039 -0
- package/neural-interface/lib/file-explorer-system.js +355 -0
- package/neural-interface/lib/file-explorer-trash.ps1 +85 -0
- package/neural-interface/lib/file-explorer-watch.js +239 -0
- package/neural-interface/lib/git-diff-api.js +103 -0
- package/neural-interface/lib/git-read.js +202 -0
- package/neural-interface/lib/greeting/api.js +89 -0
- package/neural-interface/lib/greeting/budgets.js +90 -0
- package/neural-interface/lib/greeting/engine.js +461 -0
- package/neural-interface/lib/greeting/facts.js +320 -0
- package/neural-interface/lib/greeting/sources.js +252 -0
- package/neural-interface/lib/greeting/writer.js +139 -0
- package/neural-interface/lib/http-guards.js +189 -13
- package/neural-interface/lib/machine-names.js +88 -0
- package/neural-interface/lib/memory-api.js +31 -7
- package/neural-interface/lib/native-binary-runtime.js +69 -337
- package/neural-interface/lib/native-loop-providers.js +40 -49
- package/neural-interface/lib/offline-page.js +54 -0
- package/neural-interface/lib/plugin-installer.js +4 -2
- package/neural-interface/lib/project-storage.js +5 -7
- package/neural-interface/lib/request-gate.js +589 -0
- package/neural-interface/lib/session-title-generator.js +5 -0
- package/neural-interface/lib/synabun-update-plan.js +19 -0
- package/neural-interface/lib/ui-blob-api.js +108 -0
- package/neural-interface/lib/ui-blob-store.js +68 -0
- package/neural-interface/package-lock.json +701 -253
- package/neural-interface/package.json +13 -2
- package/neural-interface/public/install-app.html +34 -0
- package/neural-interface/public/manifest.json +2 -0
- package/neural-interface/public/offline.html +402 -66
- package/neural-interface/public/onboarding.html +264 -147
- package/neural-interface/public/shared/agent-runtime-options.js +22 -6
- package/neural-interface/public/shared/assistant/asst-automation.js +286 -0
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +312 -62
- package/neural-interface/public/shared/assistant/asst-composer.js +11 -1
- package/neural-interface/public/shared/assistant/asst-mascot.js +26 -64
- package/neural-interface/public/shared/assistant/asst-menu.js +12 -8
- package/neural-interface/public/shared/assistant/asst-panel.js +150 -28
- package/neural-interface/public/shared/assistant/asst-rack-styles.js +0 -3
- package/neural-interface/public/shared/assistant/asst-render.js +219 -67
- package/neural-interface/public/shared/assistant/asst-route-models.js +108 -0
- package/neural-interface/public/shared/assistant/asst-route.js +23 -329
- package/neural-interface/public/shared/assistant/asst-routes-editor.js +495 -0
- package/neural-interface/public/shared/assistant/asst-sanitize.js +8 -1
- package/neural-interface/public/shared/assistant/asst-sidepanel.js +31 -9
- package/neural-interface/public/shared/assistant/asst-state.js +185 -1
- package/neural-interface/public/shared/assistant/asst-styles.js +162 -6
- package/neural-interface/public/shared/blob-store.js +111 -22
- package/neural-interface/public/shared/cdx/cdx-panel.js +32 -11
- package/neural-interface/public/shared/cdx/cdx-render.js +25 -89
- package/neural-interface/public/shared/cdx/cdx-styles.js +36 -0
- package/neural-interface/public/shared/cdx/cdx-tabs.js +87 -4
- package/neural-interface/public/shared/command-runner-model.js +30 -0
- package/neural-interface/public/shared/constants.js +6 -1
- package/neural-interface/public/shared/cp/cp-rehydrate.js +2 -1
- package/neural-interface/public/shared/cp/cp-styles.js +15 -0
- package/neural-interface/public/shared/editor/editor-ai-logic.js +409 -0
- package/neural-interface/public/shared/editor/editor-ai.js +619 -0
- package/neural-interface/public/shared/editor/editor-commands.js +212 -0
- package/neural-interface/public/shared/editor/editor-compare.js +103 -0
- package/neural-interface/public/shared/editor/editor-completion-list.js +172 -0
- package/neural-interface/public/shared/editor/editor-doc.js +257 -0
- package/neural-interface/public/shared/editor/editor-git-logic.js +131 -0
- package/neural-interface/public/shared/editor/editor-git.js +95 -0
- package/neural-interface/public/shared/editor/editor-languages.js +156 -0
- package/neural-interface/public/shared/editor/editor-lint.js +229 -0
- package/neural-interface/public/shared/editor/editor-loader.js +51 -0
- package/neural-interface/public/shared/editor/editor-markdown.js +90 -0
- package/neural-interface/public/shared/editor/editor-menu.js +233 -0
- package/neural-interface/public/shared/editor/editor-minimap.js +371 -0
- package/neural-interface/public/shared/editor/editor-palette-logic.js +192 -0
- package/neural-interface/public/shared/editor/editor-palette.js +125 -0
- package/neural-interface/public/shared/editor/editor-panel-logic.js +288 -0
- package/neural-interface/public/shared/editor/editor-panel.js +2099 -0
- package/neural-interface/public/shared/editor/editor-prefs.js +224 -0
- package/neural-interface/public/shared/editor/editor-safety.js +500 -0
- package/neural-interface/public/shared/editor/editor-search.js +352 -0
- package/neural-interface/public/shared/editor/editor-statusbar.js +144 -0
- package/neural-interface/public/shared/editor/editor-tabs-logic.js +331 -0
- package/neural-interface/public/shared/editor/editor-tabs.js +233 -0
- package/neural-interface/public/shared/editor/editor-theme.js +244 -0
- package/neural-interface/public/shared/editor/editor-view.js +332 -0
- package/neural-interface/public/shared/explorer/fx-api.js +216 -0
- package/neural-interface/public/shared/explorer/fx-links.js +204 -0
- package/neural-interface/public/shared/explorer/fx-logic.js +537 -0
- package/neural-interface/public/shared/explorer/fx-main.js +865 -0
- package/neural-interface/public/shared/explorer/fx-names.js +87 -0
- package/neural-interface/public/shared/explorer/fx-ops.js +370 -0
- package/neural-interface/public/shared/explorer/fx-popups.js +490 -0
- package/neural-interface/public/shared/explorer/fx-tree.js +790 -0
- package/neural-interface/public/shared/file-links.js +339 -0
- package/neural-interface/public/shared/greeting/greeting-card.js +178 -0
- package/neural-interface/public/shared/greeting/greeting-view.js +148 -0
- package/neural-interface/public/shared/html-shell.js +169 -170
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +4 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-greeting.js +47 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +99 -17
- package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +7 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +5 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +40 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +3 -2
- package/neural-interface/public/shared/pwa-install-page.js +62 -0
- package/neural-interface/public/shared/pwa-install.css +12 -0
- package/neural-interface/public/shared/pwa-install.js +127 -0
- package/neural-interface/public/shared/settings/settings-code-editor-pane.js +412 -0
- package/neural-interface/public/shared/settings/settings-code-editor.js +328 -0
- package/neural-interface/public/shared/settings/settings-greeting.js +133 -0
- package/neural-interface/public/shared/settings/settings-ia.js +18 -4
- package/neural-interface/public/shared/settings/settings-rules.js +160 -0
- package/neural-interface/public/shared/settings/settings-user-context.js +154 -0
- package/neural-interface/public/shared/start-bridge.js +802 -0
- package/neural-interface/public/shared/styleguide/sg-colors.js +5 -2
- package/neural-interface/public/shared/styleguide/sg-import-export.js +4 -3
- package/neural-interface/public/shared/styleguide/sg-kit.js +4 -1
- package/neural-interface/public/shared/styleguide/sg-panel.js +9 -1
- package/neural-interface/public/shared/styleguide/sg-typography.js +1 -0
- package/neural-interface/public/shared/styles.css +2219 -1117
- package/neural-interface/public/shared/synabun-mascot.js +20 -56
- package/neural-interface/public/shared/term-ready.js +307 -0
- package/neural-interface/public/shared/tunnel-view.js +167 -0
- package/neural-interface/public/shared/ui-claude-panel.js +160 -19
- package/neural-interface/public/shared/ui-command-runner.js +251 -468
- package/neural-interface/public/shared/ui-detail.js +15 -0
- package/neural-interface/public/shared/ui-explorer.js +22 -0
- package/neural-interface/public/shared/ui-file-explorer.js +481 -2496
- package/neural-interface/public/shared/ui-file-links.js +103 -0
- package/neural-interface/public/shared/ui-help.js +26 -0
- package/neural-interface/public/shared/ui-invite.js +126 -116
- package/neural-interface/public/shared/ui-judgments.js +1 -1
- package/neural-interface/public/shared/ui-keybinds.js +4 -0
- package/neural-interface/public/shared/ui-loading.js +367 -12
- package/neural-interface/public/shared/ui-menubar.js +21 -55
- package/neural-interface/public/shared/ui-native-loop-router-state.js +11 -0
- package/neural-interface/public/shared/ui-native-loop-router.js +15 -2
- package/neural-interface/public/shared/ui-navbar.js +45 -21
- package/neural-interface/public/shared/ui-settings.js +491 -547
- package/neural-interface/public/shared/ui-sidepanel-runtime.js +2 -1
- package/neural-interface/public/shared/ui-sync.js +16 -0
- package/neural-interface/public/shared/ui-terminal.js +153 -149
- package/neural-interface/public/shared/ui-tunnel.js +130 -0
- package/neural-interface/public/shared/ui-tutorial-steps.js +6 -2
- package/neural-interface/public/shared/ui-whiteboard.js +12 -0
- package/neural-interface/public/shared/ui-worker-end.js +245 -0
- package/neural-interface/public/shared/ui-workspaces.js +41 -27
- package/neural-interface/public/shared/worker-end.js +251 -0
- package/neural-interface/public/sw.js +3 -1
- package/neural-interface/public/variant/2d/main.js +2 -1
- package/neural-interface/public/variant/3d/main.js +2 -1
- package/neural-interface/public/vendor/codemirror/chunks/apl-CSDKT72Z.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/asciiarmor-JYYPU5BM.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/asn1-NRWCZDA6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/asterisk-5OU6D4ZQ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/brainfuck-ID4N4SYC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-4RZWGCS2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-ACTJM3JR.js +11 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-S6BMAXLK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-TO2RDOHQ.js +3 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-US2GMZZQ.js +13 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-WYYO5ZAJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-XALZTDJC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-YRNUTRDV.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/chunk-Z3QOKH62.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/clike-OWQBSOGL.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/clojure-KV75UQWC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/cmake-GTEP5Y3C.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/cobol-WCZ7QEGJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/coffeescript-TGLBOT6B.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/commonlisp-WVVI432V.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/crystal-S6R6HLKQ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/css-PDA2RINP.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/cypher-HL5QPL4C.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/d-HHJH2HAJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/diff-MN3A35BY.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-25SQLBVS.js +3 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-27ZGGJJS.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-4E52OJIF.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-6FT73XDC.js +2 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-BE6YGRMW.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-CJSGKW2O.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-CRPH2WLI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-CTG7JEQN.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-I3FEVELX.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-IM5BBSWZ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-KERUKTIF.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-LXTMWZAM.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-MABASSET.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-MJVBUZLL.js +3 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-MNB3WZVU.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-QYWXOE3U.js +7 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-TEBOFWLZ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-UNXFROM3.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-XL2SLQO6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-XO42Y3AP.js +6 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-Y2WWDWJK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-YFEZKWMU.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dist-ZY7SWQO6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dockerfile-3Y4R4NCH.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dtd-5343GJ4P.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/dylan-FI2CXSW2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ebnf-GNQ77YWA.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ecl-MRPUAE2L.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/eiffel-DZROES27.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/elm-4KICRFKQ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/erlang-3IHYC263.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/factor-C6D3E5UK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/fcl-VYTWUJMI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/forth-ZBO2EH5M.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/fortran-5NDCRWIK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/gas-SKRMOXFP.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/gherkin-L45YXZLW.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/groovy-GLPTLN44.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/haskell-E7NF7P4Y.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/haxe-K2NVDOB6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/http-Q6DRQIJB.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/idl-MZYNJVLN.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/javascript-6YRYK2HR.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/julia-HXEL2T5G.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/livescript-MV7CI2JZ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/lua-E36NHOOD.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mathematica-3XOZZCMC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mbox-ODYGFKS7.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mirc-WB43AWF5.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mllike-ZT6ET7ZH.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/modelica-LLMZPFGA.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mscgen-2OPNNYFH.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/mumps-6P3HWJH6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/nginx-TCGKQTRW.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/nsis-ATIGIXTJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ntriples-5PLBI5OV.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/octave-QF2S3NL6.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/oz-JFIVFFH2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/pascal-JG6SW76V.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/perl-4B3IWVVO.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/pig-ABEBH4MI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/powershell-H32XE7TL.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/properties-NN644MMA.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/protobuf-YKWQK2J3.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/pug-RIYXEKFW.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/puppet-JZQ5WPEV.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/python-EBCGGHAC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/q-5UMH2YQY.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/r-7XMGG453.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/rpm-IEV7TSLR.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ruby-T4SPFPNM.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/sas-GEDX67ET.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/scheme-FTLOWKPC.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/shell-HUFRKFSJ.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/sieve-P5QUDVYO.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/smalltalk-2SORJNQI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/solr-M22TGAR5.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/sparql-4M3KL752.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/spreadsheet-3K23LA4N.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/sql-VHRFMUBI.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/stex-QZDAQUY2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/stylus-7ZDKAKBD.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/swift-WCLCLGMR.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/tcl-JLMU6WOK.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/textile-4CHDKZ4T.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/tiddlywiki-DKMCZZQ4.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/tiki-F4JIG36Q.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/toml-BHMHTIM2.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/troff-YQ2KV5NT.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ttcn-ZHRCVFJY.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/ttcn-cfg-KJOVTY4X.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/turtle-535P5N6I.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/vb-76UMQHOT.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/vbscript-CGNDTK6Z.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/velocity-VSJDO5T5.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/verilog-4T6ETXIP.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/vhdl-T7FNAXUN.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/webidl-P6MJSJ6J.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/xquery-UOVILRGN.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/yacas-CV2APROL.js +1 -0
- package/neural-interface/public/vendor/codemirror/chunks/z80-3KFNVM4M.js +1 -0
- package/neural-interface/public/vendor/codemirror/codemirror-6.43.14-75f05e67.min.js +2 -0
- package/neural-interface/public/vendor/codemirror/manifest.json +60 -0
- package/neural-interface/scripts/build-vendor.mjs +78 -2
- package/neural-interface/scripts/rebuild-pty.js +15 -12
- package/neural-interface/scripts/vendor-codemirror-entry.js +121 -0
- package/neural-interface/server.js +1092 -1212
- package/neural-interface/templates/rulesets/README.md +1 -1
- package/package.json +13 -7
- package/postinstall.js +11 -81
- package/setup.js +111 -6
- package/benchmarks/browser-live-results.json +0 -79
- package/benchmarks/browser-v2-results.json +0 -258
- package/docs/browser-v2.md +0 -109
- package/docs/hook-integrity.md +0 -89
- package/docs/judgments.md +0 -182
- package/docs/style-guide.md +0 -246
- package/neural-interface/lib/codex-capabilities.d.ts +0 -41
- package/neural-interface/public/category-logos/claude.svg +0 -1
- package/neural-interface/public/category-logos/gemini-color.svg +0 -1
- package/neural-interface/public/category-logos/openai.svg +0 -1
- package/neural-interface/public/category-logos/synabun.png +0 -0
- package/neural-interface/public/claude.svg +0 -1
- package/neural-interface/public/gallery.svg +0 -6
- package/neural-interface/public/leonardoai.svg +0 -1
- package/neural-interface/public/mcp.svg +0 -4
- package/neural-interface/public/opencode-logo-dark-square.svg +0 -1
- package/neural-interface/public/pin-svgrepo-com.svg +0 -25
- package/neural-interface/public/sessionicon.svg +0 -8
- package/neural-interface/public/toolbar-album.svg +0 -8
- package/neural-interface/public/toolbar-question.svg +0 -6
- package/neural-interface/public/toolbar-sessions.svg +0 -6
- package/neural-interface/scripts/codex-protocol-fixture.mjs +0 -83
- package/scripts/audit-claude-hook-usage.mjs +0 -12
- package/scripts/audit-memory-duplicates.mjs +0 -44
- package/scripts/measure-claude-hook-overhead.mjs +0 -77
- package/scripts/recover-user-config.mjs +0 -254
- package/skills/synabun/synabunicon.png +0 -0
|
@@ -457,12 +457,19 @@
|
|
|
457
457
|
user-select: none;
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
-
/* ── Toolbar (vertical, left side) ──
|
|
460
|
+
/* ── Toolbar (vertical, left side) ──
|
|
461
|
+
Centred on the board, but no higher than just below the top-right toolbar's row (navbar + 20px + its 40px +
|
|
462
|
+
12px) as long as the whole rail still fits under it: on a short window the rail would otherwise rise under
|
|
463
|
+
that row where the row reaches this far left. Where it cannot fit there, it sits as low as it can and still
|
|
464
|
+
ends 20px above the board's bottom. (In translateY, 50% and 100% are the rail's own height.) */
|
|
461
465
|
#wb-toolbar {
|
|
462
466
|
position: absolute;
|
|
463
|
-
top:
|
|
467
|
+
--wb-rail-top: calc(var(--navbar-height, 48px) + 72px);
|
|
468
|
+
--wb-board-h: calc(100dvh - var(--terminal-height, 0px));
|
|
469
|
+
--wb-rail-y: max(calc(var(--wb-board-h) / 2 - 50%), min(var(--wb-rail-top), calc(var(--wb-board-h) - 100% - 20px)));
|
|
470
|
+
top: 0;
|
|
464
471
|
left: calc(var(--sidebar-total-width, 0px) + 20px);
|
|
465
|
-
transform: translateY(-
|
|
472
|
+
transform: translateY(var(--wb-rail-y));
|
|
466
473
|
z-index: 10;
|
|
467
474
|
display: flex;
|
|
468
475
|
flex-direction: column;
|
|
@@ -470,21 +477,6 @@
|
|
|
470
477
|
gap: 2px;
|
|
471
478
|
padding: 8px 4px;
|
|
472
479
|
pointer-events: auto;
|
|
473
|
-
transition: opacity 0.3s ease,
|
|
474
|
-
transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
|
|
475
|
-
visibility 0s;
|
|
476
|
-
}
|
|
477
|
-
/* "Hide all toolbars" (top-right chevron) — body.toolbars-hidden is set by ui-navbar.js.
|
|
478
|
-
visibility (not display) keeps layout so whiteboard shortcuts and picker positioning
|
|
479
|
-
keep working while the rail is hidden. Same idiom as #terminal-panel.hidden. */
|
|
480
|
-
body.toolbars-hidden #wb-toolbar {
|
|
481
|
-
opacity: 0;
|
|
482
|
-
transform: translate(-12px, -50%);
|
|
483
|
-
visibility: hidden;
|
|
484
|
-
pointer-events: none;
|
|
485
|
-
transition: opacity 0.3s ease,
|
|
486
|
-
transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
|
|
487
|
-
visibility 0s 0.45s;
|
|
488
480
|
}
|
|
489
481
|
.wb-tool {
|
|
490
482
|
width: 32px;
|
|
@@ -543,6 +535,24 @@
|
|
|
543
535
|
}
|
|
544
536
|
.wb-tool-sm { width: 26px; height: 26px; }
|
|
545
537
|
.wb-tool-sm svg { width: 14px; height: 14px; }
|
|
538
|
+
/* A setting the rail switches (Snap to grid), not a tool: on, it keeps the accent mark it had in the top-right
|
|
539
|
+
bar, so it never reads as the tool in use. */
|
|
540
|
+
.wb-tool.wb-toggle { position: relative; }
|
|
541
|
+
.wb-tool.wb-toggle.active { background: transparent; color: var(--t-bright); }
|
|
542
|
+
.wb-tool.wb-toggle.active:hover { background: var(--s-hover); }
|
|
543
|
+
.wb-tool.wb-toggle.active::after {
|
|
544
|
+
content: '';
|
|
545
|
+
position: absolute;
|
|
546
|
+
bottom: 2px;
|
|
547
|
+
left: 50%;
|
|
548
|
+
transform: translateX(-50%);
|
|
549
|
+
width: 6px;
|
|
550
|
+
height: 2.5px;
|
|
551
|
+
border-radius: 2px;
|
|
552
|
+
background: var(--accent-blue);
|
|
553
|
+
opacity: 0.9;
|
|
554
|
+
box-shadow: 0 0 6px var(--accent-blue);
|
|
555
|
+
}
|
|
546
556
|
.wb-tool-sep {
|
|
547
557
|
width: 20px;
|
|
548
558
|
height: 1px;
|
|
@@ -2197,6 +2207,9 @@
|
|
|
2197
2207
|
gap: 0;
|
|
2198
2208
|
}
|
|
2199
2209
|
|
|
2210
|
+
/* an entry the shell marks [hidden] stays out of the menu whatever else sets display */
|
|
2211
|
+
.menu-item[hidden] { display: none !important; }
|
|
2212
|
+
|
|
2200
2213
|
.menu-item:hover,
|
|
2201
2214
|
.menu-item.focused {
|
|
2202
2215
|
background: rgba(255,255,255,0.06);
|
|
@@ -3957,10 +3970,7 @@
|
|
|
3957
3970
|
background: rgba(255,82,82,0.08);
|
|
3958
3971
|
}
|
|
3959
3972
|
|
|
3960
|
-
/*
|
|
3961
|
-
.cc-greeting-field {
|
|
3962
|
-
margin-bottom: 10px;
|
|
3963
|
-
}
|
|
3973
|
+
/* A small uppercase row label (Settings → Setup uses it; the greeting editor it came from is gone) */
|
|
3964
3974
|
.cc-greeting-label {
|
|
3965
3975
|
font-size: 10.5px;
|
|
3966
3976
|
text-transform: uppercase;
|
|
@@ -3970,40 +3980,6 @@
|
|
|
3970
3980
|
margin-bottom: 5px;
|
|
3971
3981
|
display: block;
|
|
3972
3982
|
}
|
|
3973
|
-
.cc-greeting-textarea {
|
|
3974
|
-
width: 100%;
|
|
3975
|
-
min-height: 60px;
|
|
3976
|
-
max-height: 160px;
|
|
3977
|
-
resize: vertical;
|
|
3978
|
-
background: rgba(255,255,255,0.03);
|
|
3979
|
-
border: 1px solid var(--b-subtle);
|
|
3980
|
-
border-radius: 6px;
|
|
3981
|
-
padding: 8px 10px;
|
|
3982
|
-
font-family: 'JetBrains Mono', monospace;
|
|
3983
|
-
font-size: 11px;
|
|
3984
|
-
line-height: 1.5;
|
|
3985
|
-
color: var(--t-primary);
|
|
3986
|
-
box-sizing: border-box;
|
|
3987
|
-
transition: border-color 0.15s;
|
|
3988
|
-
}
|
|
3989
|
-
.cc-greeting-textarea:focus {
|
|
3990
|
-
outline: none;
|
|
3991
|
-
border-color: rgba(255,255,255,0.15);
|
|
3992
|
-
}
|
|
3993
|
-
.cc-greeting-textarea::placeholder { color: var(--t-faint); }
|
|
3994
|
-
.cc-greeting-project-select {
|
|
3995
|
-
background: rgba(255,255,255,0.04);
|
|
3996
|
-
border: 1px solid var(--b-subtle);
|
|
3997
|
-
border-radius: 6px;
|
|
3998
|
-
padding: 5px 8px;
|
|
3999
|
-
font-family: inherit;
|
|
4000
|
-
font-size: 12px;
|
|
4001
|
-
color: var(--t-primary);
|
|
4002
|
-
cursor: pointer;
|
|
4003
|
-
min-width: 120px;
|
|
4004
|
-
}
|
|
4005
|
-
.cc-greeting-project-select:focus { outline: none; border-color: rgba(255,255,255,0.15); }
|
|
4006
|
-
.cc-greeting-project-select option { background: #1a1a1a; color: var(--t-primary); }
|
|
4007
3983
|
|
|
4008
3984
|
/* Custom dropdown */
|
|
4009
3985
|
.cc-dropdown {
|
|
@@ -4631,93 +4607,6 @@
|
|
|
4631
4607
|
margin-top: 4px;
|
|
4632
4608
|
}
|
|
4633
4609
|
|
|
4634
|
-
.cc-greeting-reminder-list { display: flex; flex-direction: column; gap: 4px; }
|
|
4635
|
-
.cc-greeting-reminder-row {
|
|
4636
|
-
display: flex;
|
|
4637
|
-
align-items: center;
|
|
4638
|
-
gap: 6px;
|
|
4639
|
-
padding: 4px 0;
|
|
4640
|
-
border-radius: 4px;
|
|
4641
|
-
transition: background 0.1s;
|
|
4642
|
-
}
|
|
4643
|
-
.cc-greeting-reminder-row:hover { background: rgba(255,255,255,0.02); }
|
|
4644
|
-
.cc-greeting-drag-handle {
|
|
4645
|
-
cursor: grab;
|
|
4646
|
-
color: var(--t-faint);
|
|
4647
|
-
font-size: 11px;
|
|
4648
|
-
padding: 2px;
|
|
4649
|
-
user-select: none;
|
|
4650
|
-
opacity: 0.4;
|
|
4651
|
-
transition: opacity 0.15s;
|
|
4652
|
-
}
|
|
4653
|
-
.cc-greeting-reminder-row:hover .cc-greeting-drag-handle { opacity: 0.8; }
|
|
4654
|
-
.cc-greeting-reminder-input {
|
|
4655
|
-
flex: 1;
|
|
4656
|
-
background: transparent;
|
|
4657
|
-
border: 1px solid transparent;
|
|
4658
|
-
border-radius: 4px;
|
|
4659
|
-
padding: 4px 6px;
|
|
4660
|
-
font-family: inherit;
|
|
4661
|
-
font-size: 12px;
|
|
4662
|
-
color: var(--t-primary);
|
|
4663
|
-
transition: border-color 0.15s, background 0.15s;
|
|
4664
|
-
}
|
|
4665
|
-
.cc-greeting-reminder-input:hover { border-color: var(--b-subtle); }
|
|
4666
|
-
.cc-greeting-reminder-input:focus {
|
|
4667
|
-
outline: none;
|
|
4668
|
-
border-color: rgba(255,255,255,0.12);
|
|
4669
|
-
background: rgba(255,255,255,0.03);
|
|
4670
|
-
}
|
|
4671
|
-
.cc-greeting-reminder-input::placeholder { color: var(--t-faint); }
|
|
4672
|
-
.cc-greeting-reminder-input.cmd {
|
|
4673
|
-
font-family: 'JetBrains Mono', monospace;
|
|
4674
|
-
font-size: 11px;
|
|
4675
|
-
}
|
|
4676
|
-
.cc-greeting-reminder-remove {
|
|
4677
|
-
background: none;
|
|
4678
|
-
border: none;
|
|
4679
|
-
color: var(--t-faint);
|
|
4680
|
-
cursor: pointer;
|
|
4681
|
-
padding: 2px 4px;
|
|
4682
|
-
font-size: 14px;
|
|
4683
|
-
line-height: 1;
|
|
4684
|
-
opacity: 0;
|
|
4685
|
-
transition: opacity 0.15s, color 0.15s;
|
|
4686
|
-
}
|
|
4687
|
-
.cc-greeting-reminder-row:hover .cc-greeting-reminder-remove { opacity: 0.6; }
|
|
4688
|
-
.cc-greeting-reminder-remove:hover { opacity: 1 !important; color: var(--accent-red); }
|
|
4689
|
-
.cc-greeting-checkboxes {
|
|
4690
|
-
display: flex;
|
|
4691
|
-
gap: 16px;
|
|
4692
|
-
margin-bottom: 10px;
|
|
4693
|
-
}
|
|
4694
|
-
.cc-greeting-var-hint {
|
|
4695
|
-
font-size: 10px;
|
|
4696
|
-
color: var(--t-faint);
|
|
4697
|
-
margin-top: 3px;
|
|
4698
|
-
line-height: 1.4;
|
|
4699
|
-
}
|
|
4700
|
-
.cc-greeting-cheatsheet-toggle {
|
|
4701
|
-
font-size: 10px;
|
|
4702
|
-
color: var(--accent-blue);
|
|
4703
|
-
margin-top: 4px;
|
|
4704
|
-
cursor: pointer;
|
|
4705
|
-
user-select: none;
|
|
4706
|
-
display: inline-flex;
|
|
4707
|
-
align-items: center;
|
|
4708
|
-
gap: 4px;
|
|
4709
|
-
opacity: 0.7;
|
|
4710
|
-
transition: opacity 0.15s;
|
|
4711
|
-
}
|
|
4712
|
-
.cc-greeting-cheatsheet-toggle:hover { opacity: 1; }
|
|
4713
|
-
.cc-greeting-cheatsheet-toggle.open { opacity: 1; }
|
|
4714
|
-
.cc-greeting-cheatsheet {
|
|
4715
|
-
margin-top: 6px;
|
|
4716
|
-
border: 1px solid var(--b-subtle);
|
|
4717
|
-
border-radius: 6px;
|
|
4718
|
-
background: rgba(255,255,255,0.02);
|
|
4719
|
-
overflow: hidden;
|
|
4720
|
-
}
|
|
4721
4610
|
.cc-cheatsheet-table {
|
|
4722
4611
|
width: 100%;
|
|
4723
4612
|
border-collapse: collapse;
|
|
@@ -5931,9 +5820,19 @@
|
|
|
5931
5820
|
position: fixed;
|
|
5932
5821
|
top: calc(var(--navbar-height, 48px) + 20px);
|
|
5933
5822
|
right: calc(20px + var(--right-panel-width, var(--claude-panel-width, 0px)));
|
|
5823
|
+
/* One row in the band between the left panels (Memory Explorer, File Explorer) and the right one, 20px clear of
|
|
5824
|
+
each, never over a left panel: where the band is narrower than the row, the dock takes a line of its own under
|
|
5825
|
+
the buttons (wrap-reverse: the buttons' line stays on top; see "Fit" below). What still reaches left of the
|
|
5826
|
+
band (no band at all between wide panels, a dropdown that opens leftwards) is cut off at the band's edge:
|
|
5827
|
+
nothing of the toolbar is drawn, or takes a click, over a left panel. */
|
|
5828
|
+
max-width: var(--topright-band);
|
|
5829
|
+
min-height: 40px; /* the dock's height: the buttons and the pills stay where they are when it hides */
|
|
5830
|
+
justify-content: flex-end;
|
|
5831
|
+
clip-path: inset(-100vh -100vw -200vh calc(var(--sidebar-total-width, 0px) + var(--right-panel-width, var(--claude-panel-width, 0px)) + 40px + 100% - 100vw));
|
|
5934
5832
|
transition: right 0.3s cubic-bezier(0.22, 1, 0.36, 1);
|
|
5935
5833
|
z-index: 400;
|
|
5936
5834
|
display: flex;
|
|
5835
|
+
flex-wrap: wrap-reverse;
|
|
5937
5836
|
align-items: center;
|
|
5938
5837
|
gap: 6px;
|
|
5939
5838
|
font-family: inherit;
|
|
@@ -5954,25 +5853,26 @@
|
|
|
5954
5853
|
display: none;
|
|
5955
5854
|
}
|
|
5956
5855
|
|
|
5957
|
-
/* ── Unified frosted glass dock bar ──
|
|
5856
|
+
/* ── Unified frosted glass dock bar ──
|
|
5857
|
+
z-index: the session pills (#term-minimized-tray) hang right below the bar, and what the dock opens
|
|
5858
|
+
(workspaces, bookmarks, invite) drops over them. Its backdrop-filter makes it a stacking context, so those
|
|
5859
|
+
menus' own z-index stops at the dock's: the dock itself has to be above the tray. */
|
|
5958
5860
|
#topright-inner {
|
|
5861
|
+
position: relative;
|
|
5862
|
+
z-index: 1;
|
|
5959
5863
|
display: flex;
|
|
5960
5864
|
align-items: center;
|
|
5961
|
-
|
|
5865
|
+
flex-shrink: 0;
|
|
5866
|
+
gap: 2px;
|
|
5962
5867
|
overflow: visible;
|
|
5963
|
-
max-width: 2000px;
|
|
5964
|
-
opacity: 1;
|
|
5965
5868
|
background: rgba(18, 18, 22, 0.65);
|
|
5966
5869
|
backdrop-filter: blur(var(--blur-heavy)) saturate(1.3);
|
|
5967
5870
|
-webkit-backdrop-filter: blur(var(--blur-heavy)) saturate(1.3);
|
|
5968
5871
|
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
5969
5872
|
border-radius: 14px;
|
|
5970
|
-
padding: 4px
|
|
5873
|
+
padding: 4px;
|
|
5971
5874
|
box-shadow: var(--shadow-md), var(--shadow-highlight);
|
|
5972
|
-
transition:
|
|
5973
|
-
opacity 0.3s ease,
|
|
5974
|
-
gap 0.35s ease,
|
|
5975
|
-
border-color 0.3s ease,
|
|
5875
|
+
transition: border-color 0.3s ease,
|
|
5976
5876
|
box-shadow 0.3s ease;
|
|
5977
5877
|
}
|
|
5978
5878
|
#topright-inner:hover {
|
|
@@ -5980,130 +5880,94 @@
|
|
|
5980
5880
|
box-shadow: var(--shadow-lg), var(--shadow-highlight);
|
|
5981
5881
|
}
|
|
5982
5882
|
|
|
5983
|
-
|
|
5984
|
-
|
|
5985
|
-
opacity: 0;
|
|
5986
|
-
gap: 0;
|
|
5987
|
-
overflow: hidden;
|
|
5988
|
-
pointer-events: none;
|
|
5989
|
-
padding: 0;
|
|
5990
|
-
border-width: 0;
|
|
5991
|
-
}
|
|
5992
|
-
|
|
5993
|
-
/* ── Thin divider between groups ── */
|
|
5994
|
-
.tr-divider {
|
|
5995
|
-
width: 1px;
|
|
5996
|
-
height: 14px;
|
|
5997
|
-
background: rgba(255, 255, 255, 0.08);
|
|
5998
|
-
flex-shrink: 0;
|
|
5999
|
-
margin: 0 2px;
|
|
6000
|
-
border-radius: 1px;
|
|
6001
|
-
}
|
|
6002
|
-
|
|
6003
|
-
/* ── Collapse toggle button ── */
|
|
6004
|
-
.topright-collapse-btn {
|
|
6005
|
-
width: 32px;
|
|
6006
|
-
height: 32px;
|
|
5883
|
+
/* The tools toggle and the agent side panels: one row of their own that never wraps, at the bar's right edge. */
|
|
5884
|
+
#topright-buttons {
|
|
6007
5885
|
display: flex;
|
|
6008
5886
|
align-items: center;
|
|
6009
|
-
justify-content: center;
|
|
6010
|
-
background: rgba(18, 18, 22, 0.65);
|
|
6011
|
-
backdrop-filter: blur(var(--blur-heavy)) saturate(1.3);
|
|
6012
|
-
-webkit-backdrop-filter: blur(var(--blur-heavy)) saturate(1.3);
|
|
6013
|
-
border: 1px solid rgba(255,255,255,0.06);
|
|
6014
|
-
border-radius: 10px;
|
|
6015
|
-
color: var(--t-muted);
|
|
6016
|
-
cursor: pointer;
|
|
6017
|
-
transition: all 0.4s cubic-bezier(0.22, 1, 0.36, 1);
|
|
6018
|
-
position: relative;
|
|
6019
|
-
padding: 0;
|
|
6020
5887
|
flex-shrink: 0;
|
|
6021
|
-
|
|
6022
|
-
|
|
6023
|
-
box-shadow: var(--shadow-md), var(--shadow-highlight);
|
|
5888
|
+
gap: 6px;
|
|
5889
|
+
min-height: 40px; /* the dock's height: a bar that wraps keeps its lines 40px apart, the buttons where they were */
|
|
6024
5890
|
}
|
|
6025
5891
|
|
|
6026
|
-
|
|
6027
|
-
|
|
6028
|
-
|
|
6029
|
-
color: var(--t-primary);
|
|
5892
|
+
/* Hidden by the tools toggle (#topright-tools-btn, ui-navbar.js): the buttons and the pills stay where they are. */
|
|
5893
|
+
#topright-controls.tools-hidden > #topright-inner {
|
|
5894
|
+
display: none;
|
|
6030
5895
|
}
|
|
6031
5896
|
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
|
|
6036
|
-
|
|
6037
|
-
|
|
6038
|
-
|
|
6039
|
-
|
|
6040
|
-
|
|
5897
|
+
/* ── Fit: the buttons one row in any band, nothing hidden, nothing over a left panel ──
|
|
5898
|
+
--topright-row is the row at its widest without the workspace name: the dock (the switcher with its save button,
|
|
5899
|
+
50px; seven tools of 30px and the update button; two dividers; the dock's gaps and edges: 298px in all, 266px
|
|
5900
|
+
while the update button is hidden), then --topright-buttons, the tools toggle and the four agent buttons with
|
|
5901
|
+
the gaps before them (190px). Below row + 45px of band the workspace name goes into the switcher's tooltip
|
|
5902
|
+
(--topright-compact; it shows from 40px on, up to 120px, and takes what the band leaves it). Below the row itself
|
|
5903
|
+
the bar wraps (#topright-controls: flex-wrap: wrap-reverse): the toggle and the agent buttons stay on top, in one
|
|
5904
|
+
row, and the dock takes a line of its own right under them, right-aligned, still one row. --topright-compact is
|
|
5905
|
+
1 below its width and 0 from it up (tan(atan2()) divides a length by a length); it lives on :root so that a
|
|
5906
|
+
style query reaches the name. Change --topright-row (or --topright-buttons) with the controls of the row. */
|
|
5907
|
+
@property --topright-compact {
|
|
5908
|
+
syntax: '<number>';
|
|
5909
|
+
inherits: true;
|
|
5910
|
+
initial-value: 0;
|
|
6041
5911
|
}
|
|
6042
|
-
|
|
6043
|
-
|
|
6044
|
-
|
|
6045
|
-
|
|
6046
|
-
|
|
6047
|
-
gap: 3px;
|
|
6048
|
-
align-items: center;
|
|
6049
|
-
opacity: 0;
|
|
6050
|
-
transition: opacity 0.3s ease;
|
|
6051
|
-
pointer-events: none;
|
|
5912
|
+
:root {
|
|
5913
|
+
--topright-band: calc(100vw - var(--sidebar-total-width, 0px) - var(--right-panel-width, var(--claude-panel-width, 0px)) - 40px);
|
|
5914
|
+
--topright-buttons: 190px;
|
|
5915
|
+
--topright-row: calc(298px + var(--topright-buttons));
|
|
5916
|
+
--topright-compact: clamp(0, tan(atan2(calc(var(--topright-row) + 45px - var(--topright-band)), 0.01px)), 1);
|
|
6052
5917
|
}
|
|
6053
|
-
|
|
6054
|
-
|
|
6055
|
-
width: 3px;
|
|
6056
|
-
height: 3px;
|
|
6057
|
-
border-radius: 50%;
|
|
6058
|
-
background: rgba(160, 200, 255, 0.45);
|
|
6059
|
-
transition: background 0.3s ease;
|
|
5918
|
+
:root:has(#topright-update-btn[style*="none"]) {
|
|
5919
|
+
--topright-row: calc(266px + var(--topright-buttons));
|
|
6060
5920
|
}
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
height: 32px;
|
|
6066
|
-
border-radius: 10px;
|
|
6067
|
-
background: rgba(16, 16, 20, 0.7);
|
|
6068
|
-
border-color: rgba(110, 181, 255, 0.08);
|
|
6069
|
-
box-shadow: 0 0 12px rgba(110, 181, 255, 0.04),
|
|
6070
|
-
inset 0 0 8px rgba(110, 181, 255, 0.02);
|
|
5921
|
+
@container style(--topright-compact: 1) {
|
|
5922
|
+
#ws-active-name {
|
|
5923
|
+
display: none;
|
|
5924
|
+
}
|
|
6071
5925
|
}
|
|
6072
|
-
|
|
6073
|
-
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
5926
|
+
/* The session pills (#term-minimized-tray, a child of the row): a column under the bar, one pill per line,
|
|
5927
|
+
right-aligned with its right edge (the last agent button). The same
|
|
5928
|
+
place whether the tools show or not; under the dock's line where the bar wrapped. Never wider than the band, so
|
|
5929
|
+
nothing of them lies over a left panel (a pill gives its label up first); in Focus Mode they also keep clear of
|
|
5930
|
+
the whiteboard rail at the band's left edge (--topright-tray-inset: its 42px and 8px). The row slides left with
|
|
5931
|
+
a right side panel and takes them along. Nothing in the row hides them: the menus the dock opens draw over them
|
|
5932
|
+
(#topright-inner's z-index, an opaque menu). Only the code editor hides the whole row, pills included
|
|
5933
|
+
(body.fe-editor-open): it fills the band they hang in. The tray's own box takes no click: what lies beside the
|
|
5934
|
+
pills is the canvas's. */
|
|
5935
|
+
:root {
|
|
5936
|
+
--topright-tray-inset: 0px;
|
|
6077
5937
|
}
|
|
6078
|
-
|
|
6079
|
-
|
|
6080
|
-
#topright-controls.collapsed .collapse-chevron {
|
|
6081
|
-
opacity: 0;
|
|
6082
|
-
transform: scale(0.5);
|
|
5938
|
+
:root:has(#static-bg.visible) {
|
|
5939
|
+
--topright-tray-inset: 50px;
|
|
6083
5940
|
}
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
|
|
5941
|
+
#topright-controls > #term-minimized-tray {
|
|
5942
|
+
right: 0;
|
|
5943
|
+
width: max-content;
|
|
5944
|
+
max-width: calc(var(--topright-band) - var(--topright-tray-inset));
|
|
6087
5945
|
flex-direction: column;
|
|
5946
|
+
flex-wrap: nowrap;
|
|
5947
|
+
align-items: flex-end;
|
|
5948
|
+
gap: 6px;
|
|
5949
|
+
pointer-events: none;
|
|
6088
5950
|
}
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
#topright-controls.collapsed .collapse-dots span {
|
|
6092
|
-
animation: dotPulse 2.4s ease-in-out infinite;
|
|
5951
|
+
#topright-controls > #term-minimized-tray > * {
|
|
5952
|
+
pointer-events: auto;
|
|
6093
5953
|
}
|
|
6094
|
-
|
|
6095
|
-
|
|
6096
|
-
|
|
6097
|
-
|
|
6098
|
-
|
|
6099
|
-
#topright-controls
|
|
6100
|
-
|
|
6101
|
-
background: rgba(110, 181, 255, 0.7);
|
|
5954
|
+
/* A pill's label: 100px as everywhere, less in a narrow band, so that two pills share a line (the pill around its
|
|
5955
|
+
label is 60px, 62 with rounding, and 6px apart): a narrow band gets rows of two, not a stack of one, down to a
|
|
5956
|
+
band of 182px (two pills at the shortest label, 28px). It keeps that width on hover (widening, a pill would push the others onto another line under the pointer):
|
|
5957
|
+
its whole name is its tooltip (ui-navbar.js). */
|
|
5958
|
+
#topright-controls > #term-minimized-tray > .term-minimized-pill .term-minimized-pill-label,
|
|
5959
|
+
#topright-controls > #term-minimized-tray > .term-minimized-pill:hover .term-minimized-pill-label {
|
|
5960
|
+
max-width: clamp(28px, calc(var(--topright-band) - var(--topright-tray-inset) - 62px), 100px);
|
|
6102
5961
|
}
|
|
6103
5962
|
|
|
6104
|
-
|
|
6105
|
-
|
|
6106
|
-
|
|
5963
|
+
/* ── Thin divider between groups ── */
|
|
5964
|
+
.tr-divider {
|
|
5965
|
+
width: 1px;
|
|
5966
|
+
height: 14px;
|
|
5967
|
+
background: rgba(255, 255, 255, 0.08);
|
|
5968
|
+
flex-shrink: 0;
|
|
5969
|
+
margin: 0 2px;
|
|
5970
|
+
border-radius: 1px;
|
|
6107
5971
|
}
|
|
6108
5972
|
|
|
6109
5973
|
/* ── Icon buttons inside unified dock (transparent, no individual glass) ── */
|
|
@@ -6189,7 +6053,8 @@
|
|
|
6189
6053
|
font-weight: 600;
|
|
6190
6054
|
}
|
|
6191
6055
|
|
|
6192
|
-
/* ── Standalone buttons outside the unified bar (side panels) ── */
|
|
6056
|
+
/* ── Standalone buttons outside the unified bar (the tools toggle, the side panels) ── */
|
|
6057
|
+
#topright-tools-btn,
|
|
6193
6058
|
#topright-assistant-panel-btn,
|
|
6194
6059
|
#topright-claude-panel-btn,
|
|
6195
6060
|
#topright-codex-panel-btn,
|
|
@@ -6203,6 +6068,7 @@
|
|
|
6203
6068
|
width: 32px;
|
|
6204
6069
|
height: 32px;
|
|
6205
6070
|
}
|
|
6071
|
+
#topright-tools-btn:hover,
|
|
6206
6072
|
#topright-assistant-panel-btn:hover,
|
|
6207
6073
|
#topright-claude-panel-btn:hover,
|
|
6208
6074
|
#topright-codex-panel-btn:hover,
|
|
@@ -6210,64 +6076,114 @@
|
|
|
6210
6076
|
background: rgba(24, 24, 30, 0.8);
|
|
6211
6077
|
border-color: rgba(255, 255, 255, 0.1);
|
|
6212
6078
|
}
|
|
6079
|
+
/* The toggle's chevrons point the way the tools go: right to tuck them away, left to bring them back. */
|
|
6080
|
+
#topright-tools-btn svg {
|
|
6081
|
+
transition: transform 0.2s ease, filter 0.3s ease;
|
|
6082
|
+
}
|
|
6083
|
+
#topright-controls.tools-hidden #topright-tools-btn svg {
|
|
6084
|
+
transform: rotate(180deg);
|
|
6085
|
+
}
|
|
6086
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6087
|
+
#topright-tools-btn svg {
|
|
6088
|
+
transition: none;
|
|
6089
|
+
}
|
|
6090
|
+
}
|
|
6091
|
+
/* An update waits behind the hidden tools: the update badge's green, as a dot on the toggle. */
|
|
6092
|
+
.topright-tools-dot {
|
|
6093
|
+
display: none;
|
|
6094
|
+
position: absolute;
|
|
6095
|
+
top: 5px;
|
|
6096
|
+
right: 5px;
|
|
6097
|
+
width: 6px;
|
|
6098
|
+
height: 6px;
|
|
6099
|
+
border-radius: 50%;
|
|
6100
|
+
background: #34c759;
|
|
6101
|
+
box-shadow: 0 0 0 2px rgba(18, 18, 22, 0.9);
|
|
6102
|
+
pointer-events: none;
|
|
6103
|
+
}
|
|
6104
|
+
#topright-controls.tools-hidden:has(#topright-update-btn:not([style*="none"])) .topright-tools-dot {
|
|
6105
|
+
display: block;
|
|
6106
|
+
}
|
|
6213
6107
|
|
|
6214
|
-
|
|
6215
|
-
|
|
6216
|
-
|
|
6217
|
-
|
|
6108
|
+
/* Keyboard focus on the bar's own controls (the Style Guide's focus ring). */
|
|
6109
|
+
#topright-controls :is(.topright-icon-btn, #ws-indicator, #ws-quick-save):focus-visible {
|
|
6110
|
+
outline: 2px solid var(--stg-focus, #93c5fd);
|
|
6111
|
+
outline-offset: 2px;
|
|
6218
6112
|
}
|
|
6219
6113
|
|
|
6220
|
-
|
|
6114
|
+
/* The workspace switcher opens the dock: the layers icon, the active workspace's name (only while one is
|
|
6115
|
+
loaded, truncated, full in the tooltip) and its save button, or a chevron while none is. */
|
|
6116
|
+
#workspace-overlay {
|
|
6117
|
+
position: relative;
|
|
6221
6118
|
display: flex;
|
|
6222
6119
|
align-items: center;
|
|
6223
|
-
|
|
6120
|
+
flex-shrink: 0;
|
|
6224
6121
|
height: 30px;
|
|
6225
|
-
padding: 0 10px;
|
|
6226
6122
|
border-radius: 8px;
|
|
6227
6123
|
background: rgba(255, 255, 255, 0.04);
|
|
6228
|
-
border:
|
|
6229
|
-
|
|
6230
|
-
transition: background 0.2s ease,
|
|
6231
|
-
|
|
6124
|
+
/* its edge is a ring, not a border: the switch inside keeps the whole 30px of height */
|
|
6125
|
+
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04);
|
|
6126
|
+
transition: background 0.2s ease, box-shadow 0.2s ease;
|
|
6127
|
+
font-family: inherit;
|
|
6128
|
+
user-select: none;
|
|
6232
6129
|
}
|
|
6233
6130
|
|
|
6234
|
-
#ws-indicator:hover {
|
|
6131
|
+
#workspace-overlay:has(> #ws-indicator:hover, > .ws-quick-save:hover) {
|
|
6235
6132
|
background: rgba(255, 255, 255, 0.08);
|
|
6236
|
-
|
|
6133
|
+
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08);
|
|
6237
6134
|
}
|
|
6238
6135
|
|
|
6239
|
-
#ws-indicator.open {
|
|
6136
|
+
#workspace-overlay:has(> #ws-indicator.open) {
|
|
6240
6137
|
background: rgba(110, 181, 255, 0.08);
|
|
6241
|
-
|
|
6242
|
-
}
|
|
6243
|
-
|
|
6244
|
-
.ws-icon {
|
|
6245
|
-
width: 13px; height: 13px;
|
|
6246
|
-
stroke: var(--t-muted);
|
|
6247
|
-
stroke-width: 1.7;
|
|
6248
|
-
fill: none;
|
|
6249
|
-
flex-shrink: 0;
|
|
6138
|
+
box-shadow: inset 0 0 0 1px rgba(110, 181, 255, 0.15);
|
|
6250
6139
|
}
|
|
6251
6140
|
|
|
6252
|
-
#ws-indicator
|
|
6253
|
-
|
|
6254
|
-
|
|
6141
|
+
#ws-indicator {
|
|
6142
|
+
display: flex;
|
|
6143
|
+
align-items: center;
|
|
6144
|
+
gap: 5px;
|
|
6145
|
+
height: 100%;
|
|
6146
|
+
padding: 0 8px;
|
|
6147
|
+
background: none;
|
|
6148
|
+
border: 0;
|
|
6149
|
+
border-radius: inherit;
|
|
6150
|
+
color: inherit;
|
|
6151
|
+
font: inherit;
|
|
6152
|
+
cursor: pointer;
|
|
6153
|
+
white-space: nowrap;
|
|
6154
|
+
}
|
|
6155
|
+
|
|
6156
|
+
.ws-icon {
|
|
6157
|
+
width: 14px; height: 14px;
|
|
6158
|
+
stroke: var(--t-muted);
|
|
6159
|
+
stroke-width: 1.7;
|
|
6160
|
+
fill: none;
|
|
6161
|
+
flex-shrink: 0;
|
|
6162
|
+
}
|
|
6163
|
+
|
|
6164
|
+
#ws-indicator.has-workspace .ws-icon {
|
|
6165
|
+
stroke: var(--accent-blue);
|
|
6166
|
+
}
|
|
6255
6167
|
|
|
6256
6168
|
#ws-active-name {
|
|
6257
6169
|
font-size: 11.5px;
|
|
6258
6170
|
color: var(--t-secondary);
|
|
6259
|
-
max-width:
|
|
6171
|
+
max-width: clamp(40px, calc(var(--topright-band, 100vw) - var(--topright-row, 450px) - 5px), 120px);
|
|
6260
6172
|
overflow: hidden;
|
|
6261
6173
|
text-overflow: ellipsis;
|
|
6262
6174
|
}
|
|
6263
6175
|
|
|
6176
|
+
#ws-indicator:not(.has-workspace) #ws-active-name {
|
|
6177
|
+
display: none;
|
|
6178
|
+
}
|
|
6179
|
+
|
|
6264
6180
|
#ws-indicator.has-workspace #ws-active-name {
|
|
6265
6181
|
color: var(--t-primary);
|
|
6266
6182
|
}
|
|
6267
6183
|
|
|
6268
6184
|
.ws-chevron {
|
|
6269
6185
|
width: 11px; height: 11px;
|
|
6270
|
-
stroke: var(--t-
|
|
6186
|
+
stroke: var(--t-muted);
|
|
6271
6187
|
stroke-width: 2;
|
|
6272
6188
|
fill: none;
|
|
6273
6189
|
transition: transform 0.15s;
|
|
@@ -6292,8 +6208,7 @@
|
|
|
6292
6208
|
padding: 0;
|
|
6293
6209
|
transition: color 0.12s, background 0.12s;
|
|
6294
6210
|
flex-shrink: 0;
|
|
6295
|
-
margin-
|
|
6296
|
-
margin-right: -2px;
|
|
6211
|
+
margin-right: 4px;
|
|
6297
6212
|
}
|
|
6298
6213
|
|
|
6299
6214
|
.ws-quick-save svg {
|
|
@@ -6313,25 +6228,25 @@
|
|
|
6313
6228
|
color: var(--accent-blue);
|
|
6314
6229
|
}
|
|
6315
6230
|
|
|
6316
|
-
#ws-indicator.has-workspace .ws-quick-save {
|
|
6231
|
+
#ws-indicator.has-workspace ~ .ws-quick-save {
|
|
6317
6232
|
display: flex;
|
|
6318
6233
|
}
|
|
6319
6234
|
#ws-indicator.has-workspace .ws-chevron {
|
|
6320
6235
|
display: none;
|
|
6321
6236
|
}
|
|
6322
6237
|
#ws-indicator.has-workspace {
|
|
6323
|
-
padding-right:
|
|
6238
|
+
padding-right: 4px;
|
|
6324
6239
|
}
|
|
6325
6240
|
|
|
6326
6241
|
/* ── Dropdown (glassmorphic, matching topright-icon-btn style) ── */
|
|
6327
6242
|
#ws-dropdown {
|
|
6328
6243
|
position: absolute;
|
|
6329
6244
|
top: calc(100% + 12px);
|
|
6330
|
-
|
|
6245
|
+
left: -5px;
|
|
6331
6246
|
z-index: 100001;
|
|
6332
6247
|
width: 260px;
|
|
6333
6248
|
border-radius: 12px;
|
|
6334
|
-
background:
|
|
6249
|
+
background: rgb(18, 18, 22); /* opaque, as the bookmarks and invite menus: it drops over the session pills */
|
|
6335
6250
|
backdrop-filter: blur(var(--blur-heavy)) saturate(1.4);
|
|
6336
6251
|
-webkit-backdrop-filter: blur(var(--blur-heavy)) saturate(1.4);
|
|
6337
6252
|
border: 1px solid rgba(255,255,255,0.07);
|
|
@@ -6639,7 +6554,7 @@
|
|
|
6639
6554
|
max-height: 360px;
|
|
6640
6555
|
overflow-y: auto;
|
|
6641
6556
|
border-radius: 12px;
|
|
6642
|
-
background:
|
|
6557
|
+
background: rgb(18, 18, 22); /* opaque: it drops over the session pills (see #term-minimized-tray) */
|
|
6643
6558
|
backdrop-filter: blur(var(--blur-heavy)) saturate(1.4);
|
|
6644
6559
|
-webkit-backdrop-filter: blur(var(--blur-heavy)) saturate(1.4);
|
|
6645
6560
|
border: 1px solid rgba(255,255,255,0.07);
|
|
@@ -6673,7 +6588,7 @@
|
|
|
6673
6588
|
z-index: 100001;
|
|
6674
6589
|
width: 280px;
|
|
6675
6590
|
border-radius: 12px;
|
|
6676
|
-
background:
|
|
6591
|
+
background: rgb(18, 18, 22); /* opaque: it drops over the session pills (see #term-minimized-tray) */
|
|
6677
6592
|
backdrop-filter: blur(var(--blur-heavy)) saturate(1.4);
|
|
6678
6593
|
-webkit-backdrop-filter: blur(var(--blur-heavy)) saturate(1.4);
|
|
6679
6594
|
border: 1px solid rgba(255,255,255,0.07);
|
|
@@ -7016,6 +6931,66 @@
|
|
|
7016
6931
|
to { transform: rotate(360deg); }
|
|
7017
6932
|
}
|
|
7018
6933
|
|
|
6934
|
+
/* The tunnel block of the Connection section (ui-invite.js tunnelBlock): the state as a word, one sentence
|
|
6935
|
+
about it, and the progress of the tunnel program's download. */
|
|
6936
|
+
.invite-status-dot.error { background: var(--accent-red); }
|
|
6937
|
+
.invite-status-dot.warn { background: var(--accent-orange); }
|
|
6938
|
+
|
|
6939
|
+
.invite-tunnel-spinner {
|
|
6940
|
+
width: 11px;
|
|
6941
|
+
height: 11px;
|
|
6942
|
+
flex-shrink: 0;
|
|
6943
|
+
fill: none;
|
|
6944
|
+
stroke: var(--accent-blue);
|
|
6945
|
+
stroke-width: 2.5;
|
|
6946
|
+
stroke-linecap: round;
|
|
6947
|
+
}
|
|
6948
|
+
|
|
6949
|
+
.invite-tunnel-state {
|
|
6950
|
+
flex: 1;
|
|
6951
|
+
min-width: 0;
|
|
6952
|
+
font-size: 11px;
|
|
6953
|
+
font-weight: 500;
|
|
6954
|
+
color: var(--t-primary);
|
|
6955
|
+
}
|
|
6956
|
+
|
|
6957
|
+
.invite-tunnel-state.error { color: var(--accent-red); }
|
|
6958
|
+
|
|
6959
|
+
.invite-tunnel-percent {
|
|
6960
|
+
font-size: 10px;
|
|
6961
|
+
font-family: 'JetBrains Mono', monospace;
|
|
6962
|
+
font-variant-numeric: tabular-nums;
|
|
6963
|
+
color: var(--t-secondary);
|
|
6964
|
+
}
|
|
6965
|
+
|
|
6966
|
+
.invite-progress {
|
|
6967
|
+
height: 3px;
|
|
6968
|
+
margin: 2px 0 6px;
|
|
6969
|
+
border-radius: 2px;
|
|
6970
|
+
background: var(--s-light);
|
|
6971
|
+
overflow: hidden;
|
|
6972
|
+
}
|
|
6973
|
+
|
|
6974
|
+
.invite-progress > span {
|
|
6975
|
+
display: block;
|
|
6976
|
+
height: 100%;
|
|
6977
|
+
border-radius: 2px;
|
|
6978
|
+
background: var(--accent-blue);
|
|
6979
|
+
transition: width 0.3s ease;
|
|
6980
|
+
}
|
|
6981
|
+
|
|
6982
|
+
.invite-tunnel-detail {
|
|
6983
|
+
font-size: 11px;
|
|
6984
|
+
line-height: 1.45;
|
|
6985
|
+
color: var(--t-secondary);
|
|
6986
|
+
overflow-wrap: anywhere;
|
|
6987
|
+
}
|
|
6988
|
+
|
|
6989
|
+
.invite-tunnel-copy {
|
|
6990
|
+
margin-top: 2px;
|
|
6991
|
+
font-size: 10px;
|
|
6992
|
+
}
|
|
6993
|
+
|
|
7019
6994
|
.count-badge--blue {
|
|
7020
6995
|
background: var(--accent-blue);
|
|
7021
6996
|
color: #000;
|
|
@@ -12900,8 +12875,7 @@
|
|
|
12900
12875
|
letter-spacing: 0.08em;
|
|
12901
12876
|
color: rgba(255,255,255,0.4);
|
|
12902
12877
|
}
|
|
12903
|
-
.settings-tab-body .cc-cheatsheet-table td:last-child
|
|
12904
|
-
.settings-tab-body .cc-greeting-cheatsheet-toggle {
|
|
12878
|
+
.settings-tab-body .cc-cheatsheet-table td:last-child {
|
|
12905
12879
|
color: rgba(255,255,255,0.42);
|
|
12906
12880
|
}
|
|
12907
12881
|
.settings-tab-body .cc-cheatsheet-table code,
|
|
@@ -13483,7 +13457,9 @@
|
|
|
13483
13457
|
a plain page head, and every section card drawn as a grouped inset list — the title above the box,
|
|
13484
13458
|
rows inside it separated by hairlines, the label on the left and the control on the right.
|
|
13485
13459
|
═══════════════════════════════════════════ */
|
|
13486
|
-
.settings-panel
|
|
13460
|
+
.settings-panel,
|
|
13461
|
+
.command-runner-panel,
|
|
13462
|
+
.styleguide-panel {
|
|
13487
13463
|
/* Text roles for the dark panel. Each clears WCAG AA (4.5:1) on the panel and inside a group. */
|
|
13488
13464
|
--stg-text: rgba(255,255,255,0.92);
|
|
13489
13465
|
--stg-body: rgba(255,255,255,0.84);
|
|
@@ -13516,7 +13492,9 @@
|
|
|
13516
13492
|
}
|
|
13517
13493
|
/* Perceptual lightness keeps white text readable on the fill whatever hue the user picks (a yellow accent too) */
|
|
13518
13494
|
@supports (color: oklch(from red l c h)) {
|
|
13519
|
-
.settings-panel
|
|
13495
|
+
.settings-panel,
|
|
13496
|
+
.command-runner-panel,
|
|
13497
|
+
.styleguide-panel {
|
|
13520
13498
|
--stg-accent-fill: oklch(from var(--accent-blue) 0.5 c h);
|
|
13521
13499
|
--stg-accent-fill-hover: oklch(from var(--accent-blue) 0.55 c h);
|
|
13522
13500
|
}
|
|
@@ -13592,6 +13570,7 @@
|
|
|
13592
13570
|
.settings-nav-item[data-tab="browser"] { --stg-tile: #d9772b; }
|
|
13593
13571
|
.settings-nav-item[data-tab="connected-tools"] { --stg-tile: #a07a52; }
|
|
13594
13572
|
.settings-nav-item[data-tab="tool-access"] { --stg-tile: #c2577a; }
|
|
13573
|
+
.settings-nav-item[data-tab="code-editor"] { --stg-tile: #7da136; }
|
|
13595
13574
|
.settings-nav-item[data-tab="automations"] { --stg-tile: #c99a1e; }
|
|
13596
13575
|
.settings-nav-item[data-tab="messages"] { --stg-tile: #2fa84f; }
|
|
13597
13576
|
.settings-nav-item[data-tab="notifications"] { --stg-tile: #d9483f; }
|
|
@@ -13826,6 +13805,17 @@
|
|
|
13826
13805
|
.settings-panel .stg-pill[data-state="busy"]::before { background: var(--stg-help); animation: stgPulse 1s ease-in-out infinite; }
|
|
13827
13806
|
@keyframes stgPulse { 50% { opacity: 0.2; } }
|
|
13828
13807
|
|
|
13808
|
+
/* Online access → Public address (ui-settings.js tunnelRowHtml / tunnelExtraHtml): what sits under the tunnel's
|
|
13809
|
+
row belongs to it: the download's progress, the sentence about the state, the retry or copy button. */
|
|
13810
|
+
.settings-panel .stg-card-body > .stg-tunnel-extra { margin-top: calc(var(--stg-row-y) * -0.5); margin-bottom: var(--stg-row-y); }
|
|
13811
|
+
.settings-panel .stg-tunnel-extra:empty { display: none; }
|
|
13812
|
+
.settings-panel .stg-tunnel-extra > * + * { margin-top: 6px; }
|
|
13813
|
+
.settings-panel .stg-tunnel-extra > .stg-help { margin-top: 0; }
|
|
13814
|
+
.settings-panel .stg-tunnel-extra > * + .stg-help { margin-top: 6px; }
|
|
13815
|
+
.settings-panel .stg-tunnel-extra > * + .cc-copy-btn { margin-top: 8px; }
|
|
13816
|
+
.settings-panel .stg-tunnel-progress { height: 4px; max-width: 72ch; border-radius: 2px; background: var(--stg-control); overflow: hidden; }
|
|
13817
|
+
.settings-panel .stg-tunnel-progress > span { display: block; height: 100%; border-radius: 2px; background: var(--stg-accent-fill); transition: width 0.3s ease; }
|
|
13818
|
+
|
|
13829
13819
|
/* Switches: the macOS capsule, accent when on, a visible edge when off, and a focus ring (the input itself is 0×0) */
|
|
13830
13820
|
.settings-panel .recall-toggle-track { width: 32px; height: 18px; border-radius: 999px; background: rgba(255,255,255,0.16); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.22); }
|
|
13831
13821
|
.settings-panel .recall-toggle-track::after { top: 2px; left: 2px; width: 14px; height: 14px; background: #e8e8ea; box-shadow: 0 1px 2px rgba(0,0,0,0.35); }
|
|
@@ -13914,17 +13904,25 @@
|
|
|
13914
13904
|
(markup: the build*Tab functions in ui-settings.js, ui-judgments.js, ui-whatsapp.js)
|
|
13915
13905
|
═══════════════════════════════════════════ */
|
|
13916
13906
|
|
|
13917
|
-
/* A pane's own save bar
|
|
13907
|
+
/* A pane's own save bar is the foot of the content column: it sits on the column's bottom edge while its page scrolls,
|
|
13908
|
+
and stays there when the page is shorter than the column.
|
|
13918
13909
|
The page itself never scrolls (.settings-content does), so it must not be a scroll container for sticky. */
|
|
13919
13910
|
.settings-panel .settings-content > .stg-page { overflow: visible; }
|
|
13911
|
+
/* A page with a save bar fills the column, and so does its pane: the bar takes the free space above it (margin-top: auto)
|
|
13912
|
+
instead of trailing the last section. The column gives up its bottom padding there, so the bar ends on the panel's edge. */
|
|
13913
|
+
.stg-main > .settings-content:has(> .stg-page.active > .stg-pane > .stg-pane-actions) { display: flex; flex-direction: column; padding-bottom: 0; }
|
|
13914
|
+
.settings-panel .settings-content > .stg-page.active:has(> .stg-pane > .stg-pane-actions),
|
|
13915
|
+
.settings-panel .settings-content > .stg-page.active > .stg-pane:has(> .stg-pane-actions) { display: flex; flex-direction: column; flex: 1 0 auto; }
|
|
13916
|
+
/* margins do not collapse in a flex column: the last section keeps the bar's 12px by itself */
|
|
13917
|
+
.settings-panel .settings-content > .stg-page > .stg-pane > :has(+ .stg-pane-actions) { margin-bottom: 12px; }
|
|
13920
13918
|
/* One row: what the buttons do on the left, the result of the last save, then the buttons. It wraps when the panel is narrow.
|
|
13921
13919
|
The background is opaque: rows scroll under the bar, and nothing may show through it. The shell tells the scroller how
|
|
13922
13920
|
tall the bar is (scroll-padding-bottom), so a control that takes focus or a deep link never lands under it. */
|
|
13923
13921
|
.settings-panel .stg-pane-actions {
|
|
13924
13922
|
position: sticky; bottom: 0; z-index: 3;
|
|
13925
13923
|
display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px;
|
|
13926
|
-
margin-top:
|
|
13927
|
-
background: #16161b; border: 1px solid var(--stg-line); border-radius: 10px 10px 0 0;
|
|
13924
|
+
margin-top: auto; padding: 10px 14px;
|
|
13925
|
+
background: #16161b; border: 1px solid var(--stg-line); border-bottom: 0; border-radius: 10px 10px 0 0;
|
|
13928
13926
|
}
|
|
13929
13927
|
.settings-panel .stg-pane-actions .bc-actions { order: 3; display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 0 auto; padding-top: 0; border-top: 0; }
|
|
13930
13928
|
.settings-panel .stg-pane-actions .bc-action-btn { padding: 0 16px; }
|
|
@@ -13985,7 +13983,8 @@
|
|
|
13985
13983
|
font-family: var(--ff-mono, monospace); font-size: 12px; line-height: 1.5;
|
|
13986
13984
|
color: var(--stg-text); background: rgba(0,0,0,0.28); border: 1px solid var(--stg-line); border-radius: 6px;
|
|
13987
13985
|
}
|
|
13988
|
-
.settings-panel .stg-help a
|
|
13986
|
+
.settings-panel .stg-help a,
|
|
13987
|
+
.settings-panel .settings-hint a { color: var(--stg-focus); text-decoration: underline; }
|
|
13989
13988
|
|
|
13990
13989
|
/* ── Tool access, social, YouTube ── */
|
|
13991
13990
|
.settings-panel .stg-card .cc-tool-category:first-child { margin-top: 0; }
|
|
@@ -14005,11 +14004,8 @@
|
|
|
14005
14004
|
.settings-panel .stg-card .cc-integration-label { font-size: 13px; color: var(--stg-text); white-space: normal; }
|
|
14006
14005
|
.settings-panel .stg-card .cc-integration-path { font-size: 12px; color: var(--stg-help); white-space: normal; overflow: visible; text-overflow: clip; }
|
|
14007
14006
|
.settings-panel .stg-card .cc-greeting-label { font-size: 13px; font-weight: 600; color: var(--stg-text); text-transform: none; letter-spacing: 0; }
|
|
14008
|
-
.settings-panel .stg-card .cc-greeting-cheatsheet-toggle { font-size: 12px; color: var(--stg-body); }
|
|
14009
14007
|
.settings-panel .stg-card .cc-cheatsheet-table :is(th, td),
|
|
14010
|
-
.settings-panel .stg-card .cc-cheatsheet-preview
|
|
14011
|
-
.settings-panel .stg-card .cc-greeting-reminder-input { font-size: 12px; }
|
|
14012
|
-
.settings-panel .stg-card .cc-greeting-checkboxes { display: block; }
|
|
14008
|
+
.settings-panel .stg-card .cc-cheatsheet-preview { font-size: 12px; }
|
|
14013
14009
|
.settings-panel .stg-mini-number {
|
|
14014
14010
|
width: 52px; padding: 2px 4px; font: inherit; font-size: 12px; text-align: center;
|
|
14015
14011
|
color: var(--stg-text); background: rgba(255,255,255,0.04); border: 1px solid var(--stg-line); border-radius: 4px;
|
|
@@ -14063,7 +14059,7 @@
|
|
|
14063
14059
|
.cc-dropdown-item, .browser-cfg-range-val, .bc-profile-name, .bc-profile-divider, .stg-mcp-note strong, .stg-mcp-note span,
|
|
14064
14060
|
.stg-mx-corner-head, .stg-mx-profile-name, .stg-mx-profile-del, .stg-mx-grp-name, .stg-mx-grp-count, .stg-mcp-section-header, .stg-mx-always-chip,
|
|
14065
14061
|
.stg-mx-ext-name, .stg-mx-ext-type, .stg-mx-ext-sub, .stg-mx-ext-toggle-name, .stg-mx-ext-cli-badge, .stg-mcp-empty-note, .stg-mcp-source-tab,
|
|
14066
|
-
.stg-mcp-page-tab, .cc-
|
|
14062
|
+
.stg-mcp-page-tab, .cc-cheatsheet-table code, .wa-mode-notes li, .recall-control-scale span,
|
|
14067
14063
|
select option
|
|
14068
14064
|
) { font-size: 12px; }
|
|
14069
14065
|
/* the capability chips grow with their letter */
|
|
@@ -14083,11 +14079,11 @@
|
|
|
14083
14079
|
.stg-mcp-note span, .stg-ocp-oauth-wait, .stg-cap-filter, .stg-provider-status-disconnected, .ocp-config-footer, .ocp-config-link, .ocp-danger-meta,
|
|
14084
14080
|
.stg-callout-note, .project-storage-path, .project-storage-item-meta, .project-storage-protection, .project-storage-group-path, .project-storage-group-total,
|
|
14085
14081
|
.project-storage-group-empty, .project-storage-stat span, .project-storage-safety-note, .cc-cheatsheet-table th, .cc-tool-category-count, .cc-panel-row-label,
|
|
14086
|
-
.cc-
|
|
14082
|
+
.cc-compat-note, .recall-control-scale span, .bc-profile-divider, .browser-cfg-range-val
|
|
14087
14083
|
) { color: var(--stg-help); opacity: 1; }
|
|
14088
14084
|
.settings-panel .settings-content :is(
|
|
14089
14085
|
.cc-dropdown-item, .cc-dropdown-value, .stg-code, .gfx-reset-btn, .stg-ocp-toggle-all, .project-storage-item-size, .project-storage-item-title-row strong,
|
|
14090
|
-
.wa-btn:not(.wa-btn-accent):not(.wa-btn-danger)
|
|
14086
|
+
.wa-btn:not(.wa-btn-accent):not(.wa-btn-danger)
|
|
14091
14087
|
) { color: var(--stg-body); }
|
|
14092
14088
|
.settings-panel .settings-content .cc-dropdown-item.active { color: var(--stg-text); }
|
|
14093
14089
|
.settings-panel .settings-content :is(.project-storage-risk.safe) { color: var(--stg-ok); }
|
|
@@ -14095,8 +14091,7 @@
|
|
|
14095
14091
|
.settings-panel .settings-content :is(.project-storage-risk.blocked, .ocp-srv-btn-stop, .wa-btn-danger) { color: var(--stg-err); }
|
|
14096
14092
|
.settings-panel .settings-content .project-storage-risk.protected { color: var(--stg-focus); }
|
|
14097
14093
|
/* Controls that only showed on hover stay visible: an action nobody can see is an action nobody finds. */
|
|
14098
|
-
.settings-panel .settings-content :is(.stg-ocp-remove-btn, .stg-model-all-btn, .stg-model-none-btn, .stg-ocp-apikey-btn, .stg-ocp-oauth-btn
|
|
14099
|
-
.cc-greeting-reminder-remove) { opacity: 1; }
|
|
14094
|
+
.settings-panel .settings-content :is(.stg-ocp-remove-btn, .stg-model-all-btn, .stg-model-none-btn, .stg-ocp-apikey-btn, .stg-ocp-oauth-btn) { opacity: 1; }
|
|
14100
14095
|
.settings-panel .settings-content :is(.stg-cap, .stg-cap-filter-letter) { color: var(--cap-c, var(--stg-body)); }
|
|
14101
14096
|
|
|
14102
14097
|
/* ── Reflow, phase 2b: nothing scrolls sideways in a 320–560px panel (a data table scrolls inside its own box) ── */
|
|
@@ -14124,9 +14119,6 @@
|
|
|
14124
14119
|
.settings-panel .settings-content :is(.stg-provider-subname, .stg-provider-note) { font-size: 12px; }
|
|
14125
14120
|
/* A field in an input row had its own, fainter focus style (a 2px glow at 8% and no outline): it takes the ring too. */
|
|
14126
14121
|
.settings-panel .stg-inline-field .stg-input-row :is(input, select):focus-visible { outline: 2px solid var(--stg-focus); outline-offset: 2px; }
|
|
14127
|
-
/* the save bar sticks above the page's bottom padding: this fills the strip under it (a little taller than the padding:
|
|
14128
|
-
the scroll area clips the rest, and no line of text shows between the strip and the panel's edge) */
|
|
14129
|
-
.settings-panel .stg-pane-actions::after { content: ''; position: absolute; left: -1px; right: -1px; top: 100%; height: 32px; background: inherit; pointer-events: none; }
|
|
14130
14122
|
/* <<< settings-redesign:panes */
|
|
14131
14123
|
/* ── Settings panel container queries — responsive at any panel width ── */
|
|
14132
14124
|
|
|
@@ -14813,7 +14805,9 @@
|
|
|
14813
14805
|
Push button 22px · text-weight action · 22px fields and popups · 26×15 switch · 14px checkbox ·
|
|
14814
14806
|
regular-weight row labels · lighter secondary text · no box inside a box.
|
|
14815
14807
|
═══════════════════════════════════════════ */
|
|
14816
|
-
.settings-panel
|
|
14808
|
+
.settings-panel,
|
|
14809
|
+
.command-runner-panel,
|
|
14810
|
+
.styleguide-panel {
|
|
14817
14811
|
--stg-help: rgba(255,255,255,0.55);
|
|
14818
14812
|
--stg-line: rgba(255,255,255,0.07);
|
|
14819
14813
|
--stg-sep: rgba(255,255,255,0.06);
|
|
@@ -14948,8 +14942,7 @@
|
|
|
14948
14942
|
.settings-panel .settings-content .project-storage-icon-btn svg { width: 12px; height: 12px; }
|
|
14949
14943
|
|
|
14950
14944
|
/* ── Text-weight action: the default for secondary and in-row actions ── */
|
|
14951
|
-
.settings-panel .settings-content :is(.stg-text-btn, .ocp-config-link, .ocp-history-clear-btn, .
|
|
14952
|
-
.cc-greeting-reminder-remove),
|
|
14945
|
+
.settings-panel .settings-content :is(.stg-text-btn, .ocp-config-link, .ocp-history-clear-btn, .stg-mcp-env-add, .wa-link-btn),
|
|
14953
14946
|
.settings-panel .settings-content .stg-card :is(.stg-text-btn, .cc-copy-btn.stg-text-btn),
|
|
14954
14947
|
.settings-panel .settings-content .stg-provider-card .stg-action-btn.compact.stg-text-btn,
|
|
14955
14948
|
.settings-panel .settings-content #stg-ocp-providers > .stg-ocp-toggle-all {
|
|
@@ -14960,19 +14953,19 @@
|
|
|
14960
14953
|
color: var(--stg-link); background: none; border: 0; border-radius: 4px; box-shadow: none; opacity: 1;
|
|
14961
14954
|
cursor: pointer; transition: color 0.15s ease;
|
|
14962
14955
|
}
|
|
14963
|
-
.settings-panel .settings-content :is(.stg-text-btn, .ocp-config-link, .
|
|
14956
|
+
.settings-panel .settings-content :is(.stg-text-btn, .ocp-config-link, .stg-mcp-env-add, .wa-link-btn),
|
|
14964
14957
|
.settings-panel .settings-content #stg-ocp-providers > .stg-ocp-toggle-all { color: var(--stg-link); }
|
|
14965
|
-
.settings-panel .settings-content :is(.stg-text-btn, .ocp-config-link, .
|
|
14958
|
+
.settings-panel .settings-content :is(.stg-text-btn, .ocp-config-link, .stg-mcp-env-add, .wa-link-btn):hover:not(:disabled),
|
|
14966
14959
|
.settings-panel .settings-content .stg-card .stg-text-btn:hover:not(:disabled),
|
|
14967
14960
|
.settings-panel .settings-content #stg-ocp-providers > .stg-ocp-toggle-all:hover { color: var(--accent-blue); background: none; border: 0; text-decoration: none; }
|
|
14968
14961
|
.settings-panel .settings-content .stg-provider-card .stg-action-btn.compact.stg-text-btn:hover:not(:disabled) { color: var(--accent-blue); background: none; border: 0; }
|
|
14969
14962
|
.settings-panel .settings-content .stg-provider-card .stg-action-btn.compact.stg-text-btn.stg-text-btn-danger:hover:not(:disabled) { color: var(--stg-err); }
|
|
14970
14963
|
.settings-panel .settings-content :is(.stg-text-btn, .ocp-config-link, .wa-link-btn) svg { width: 11px; height: 11px; opacity: 0.9; fill: none; stroke: currentColor; stroke-width: 2; }
|
|
14971
14964
|
/* destructive text actions: grey at rest, red on hover */
|
|
14972
|
-
.settings-panel .settings-content :is(.stg-text-btn-danger, .ocp-history-clear-btn
|
|
14965
|
+
.settings-panel .settings-content :is(.stg-text-btn-danger, .ocp-history-clear-btn),
|
|
14973
14966
|
.settings-panel .settings-content .stg-card .stg-text-btn.stg-text-btn-danger,
|
|
14974
14967
|
.settings-panel .settings-content .stg-provider-card .stg-action-btn.compact.stg-text-btn-danger { color: rgba(255,255,255,0.6); }
|
|
14975
|
-
.settings-panel .settings-content :is(.stg-text-btn-danger, .ocp-history-clear-btn
|
|
14968
|
+
.settings-panel .settings-content :is(.stg-text-btn-danger, .ocp-history-clear-btn):hover:not(:disabled),
|
|
14976
14969
|
.settings-panel .settings-content .stg-card .stg-text-btn.stg-text-btn-danger:hover:not(:disabled),
|
|
14977
14970
|
.settings-panel .settings-content .stg-provider-side .stg-ocp-remove-btn:hover:not(:disabled),
|
|
14978
14971
|
.settings-panel .settings-content .ocp-danger-row .ocp-history-clear-btn:hover:not(:disabled) { color: var(--stg-err); background: none; }
|
|
@@ -15200,6 +15193,45 @@
|
|
|
15200
15193
|
.settings-panel .settings-content .stg-mcp-note svg { display: none; }
|
|
15201
15194
|
.settings-panel .settings-content .wa-callout-err { color: var(--stg-err); }
|
|
15202
15195
|
.settings-panel .settings-content .wa-callout-warn { color: var(--stg-warn); }
|
|
15196
|
+
/* Automation behavior: the Assistant's user context (three layers, the digest a new conversation starts with) */
|
|
15197
|
+
/* the line above the switches when they cannot be used: an older server, an engine that did not start, no answer */
|
|
15198
|
+
.settings-panel .settings-content .uc-status-note { margin: 0 0 10px; max-width: none; color: var(--stg-warn); }
|
|
15199
|
+
.settings-panel .settings-content .cc-integration-item.uc-disabled :is(.cc-integration-label, .cc-integration-path) { opacity: 0.7; }
|
|
15200
|
+
/* what stands in the way of a layer, under its help: a caption, amber when something is not happening */
|
|
15201
|
+
.settings-panel .settings-content .uc-layer-notes:empty { display: none; }
|
|
15202
|
+
.settings-panel .settings-content .uc-layer-note { margin: 3px 0 0; font-size: 12px; line-height: 1.45; color: var(--stg-help); overflow-wrap: anywhere; }
|
|
15203
|
+
.settings-panel .settings-content .uc-layer-note[data-tone="warn"] { color: var(--stg-warn); }
|
|
15204
|
+
.settings-panel .settings-content .uc-layer-note .uc-note-link { display: inline; width: auto; min-height: 0; margin: 0 0 0 2px; padding: 0; vertical-align: baseline; }
|
|
15205
|
+
.settings-panel .settings-content .uc-save-status { margin: 0 0 8px; max-width: none; color: var(--stg-err); }
|
|
15206
|
+
.settings-panel .settings-content .uc-applies { margin: 0 0 2px; max-width: none; }
|
|
15207
|
+
.settings-panel .settings-content :is(.uc-status-note, .uc-save-status, .uc-applies)[hidden] { display: none; }
|
|
15208
|
+
.settings-panel .settings-content .uc-digest { margin: 14px 0 16px; }
|
|
15209
|
+
/* Settings → Automations → Greeting: the preview is the card every panel shows (shared/greeting/), set left in the section. */
|
|
15210
|
+
.settings-panel .settings-content .gr-preview { margin-bottom: 4px; }
|
|
15211
|
+
.settings-panel .settings-content :is(.gr-preview-lead, .gr-preview-spend) { margin: 8px 0 0; max-width: none; }
|
|
15212
|
+
.settings-panel .settings-content :is(.gr-preview-lead, .gr-preview-spend, #gr-write)[hidden] { display: none; }
|
|
15213
|
+
.settings-panel .settings-content .gr-preview-card .sb-greet { --sbg-text: var(--stg-text); --sbg-2: var(--stg-body); --sbg-3: var(--stg-help); align-items: flex-start; max-width: none; margin: 8px 0 0; padding: 10px 12px; text-align: left; border: 1px solid var(--stg-line); border-radius: var(--r-card); }
|
|
15214
|
+
.settings-panel .settings-content .gr-preview-card:empty { display: none; }
|
|
15215
|
+
.settings-panel .settings-content #gr-write { margin-top: 10px !important; }
|
|
15216
|
+
.settings-panel .settings-content .uc-digest-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
|
|
15217
|
+
.settings-panel .settings-content .uc-digest-title { font-size: 13px; font-weight: 500; color: var(--stg-text); }
|
|
15218
|
+
.settings-panel .settings-content .uc-digest-count { flex-shrink: 0; font-size: 12px; color: var(--stg-help); font-variant-numeric: tabular-nums; white-space: nowrap; }
|
|
15219
|
+
.settings-panel .settings-content .uc-digest-rows { display: flex; flex-direction: column; margin: 8px 0; border: 1px solid var(--stg-line); border-radius: var(--r-small); overflow: hidden; }
|
|
15220
|
+
.settings-panel .settings-content .uc-digest-rows:empty { display: none; }
|
|
15221
|
+
.settings-panel .settings-content .uc-digest-row {
|
|
15222
|
+
display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
|
|
15223
|
+
width: 100%; min-height: 0; margin: 0; padding: 7px 10px; border: 0; border-radius: 0; background: transparent;
|
|
15224
|
+
color: var(--stg-body); font: inherit; font-size: 13px; line-height: 1.4; text-align: left; cursor: pointer;
|
|
15225
|
+
}
|
|
15226
|
+
.settings-panel .settings-content .uc-digest-row + .uc-digest-row { border-top: 1px solid var(--stg-sep); }
|
|
15227
|
+
.settings-panel .settings-content .uc-digest-row:hover { background: var(--stg-group); color: var(--stg-text); }
|
|
15228
|
+
.settings-panel .settings-content .uc-digest-row:focus-visible { outline: 2px solid var(--stg-focus); outline-offset: -2px; }
|
|
15229
|
+
.settings-panel .settings-content .uc-digest-statement { min-width: 0; overflow-wrap: anywhere; }
|
|
15230
|
+
.settings-panel .settings-content .uc-digest-facet { flex-shrink: 0; font-size: 12px; color: var(--stg-help); white-space: nowrap; }
|
|
15231
|
+
.settings-panel .settings-content .uc-digest-rows > .stg-help { margin: 0; padding: 8px 10px; max-width: none; }
|
|
15232
|
+
/* "Knowledge of you" is off: no digest is sent, so none is listed */
|
|
15233
|
+
.settings-panel .settings-content .uc-digest[data-uc-digest-state="off"] .uc-digest-title { color: var(--stg-body); }
|
|
15234
|
+
.settings-panel .settings-content .uc-digest[data-uc-digest-state="off"] .uc-digest-help { display: none; }
|
|
15203
15235
|
/* a status bar above a page's groups: a 12px line of secondary text */
|
|
15204
15236
|
.settings-panel .settings-content .stg-pane > .settings-status,
|
|
15205
15237
|
.settings-panel .settings-content .stg-card .settings-status {
|
|
@@ -15358,7 +15390,8 @@
|
|
|
15358
15390
|
@container stg (max-width: 480px) {
|
|
15359
15391
|
.settings-panel .stg-action-row { flex-direction: row; flex-wrap: wrap; align-items: center; }
|
|
15360
15392
|
.settings-panel .stg-action-btn { width: auto; }
|
|
15361
|
-
|
|
15393
|
+
/* two long labels (a translation) stack at the right instead of running past the bar's edge */
|
|
15394
|
+
.settings-panel .stg-pane-actions .bc-actions { flex: 0 1 auto; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; }
|
|
15362
15395
|
.settings-panel .stg-pane-actions .bc-action-btn { flex: 0 0 auto; min-height: 22px; height: 22px; padding: 0 10px; white-space: nowrap; }
|
|
15363
15396
|
.settings-panel .ocp-history-clear-btn { width: auto; }
|
|
15364
15397
|
}
|
|
@@ -15439,7 +15472,7 @@
|
|
|
15439
15472
|
/* ═══════════════════════════════════════════
|
|
15440
15473
|
SETTINGS — search
|
|
15441
15474
|
(markup: buildSearchHTML in ui-settings.js · behaviour: wireSettingsSearch in settings/settings-shell.js)
|
|
15442
|
-
The sidebar holds a
|
|
15475
|
+
The sidebar holds a 34px search field above the page list. While the field holds a query the page list
|
|
15443
15476
|
gives way to the results: one row per hit, the page's icon tile, the setting's name and its path under it.
|
|
15444
15477
|
The field is the provider search of AI connections at the small-control scale: same glyph, fill and hairline.
|
|
15445
15478
|
Colours are the panel's --stg-* roles. Three literals are the page list's own, restated because a result row
|
|
@@ -15447,29 +15480,29 @@
|
|
|
15447
15480
|
writes on the accent fill (.settings-nav-item.active), the white glyph of an icon tile (.settings-nav-item svg).
|
|
15448
15481
|
═══════════════════════════════════════════ */
|
|
15449
15482
|
.settings-panel .stg-sidebar {
|
|
15450
|
-
display: flex; flex-direction: column; flex-shrink: 0; width:
|
|
15483
|
+
display: flex; flex-direction: column; flex-shrink: 0; width: 240px; min-height: 0;
|
|
15451
15484
|
background: rgba(0,0,0,0.14); border-right: 1px solid var(--stg-line);
|
|
15452
15485
|
}
|
|
15453
15486
|
.settings-panel .stg-sidebar > .settings-nav { flex: 1 1 auto; width: auto; min-height: 0; padding-top: 2px; background: none; border-right: 0; }
|
|
15454
15487
|
.settings-panel .stg-sidebar.stg-searching > .settings-nav { display: none; }
|
|
15455
15488
|
|
|
15456
|
-
.settings-panel .stg-search { position: relative; flex-shrink: 0; padding:
|
|
15489
|
+
.settings-panel .stg-search { position: relative; flex-shrink: 0; padding: 12px 12px 6px; }
|
|
15457
15490
|
.settings-panel .stg-search-input {
|
|
15458
|
-
display: block; width: 100%; height:
|
|
15459
|
-
font-family: var(--stg-font); font-size:
|
|
15491
|
+
display: block; width: 100%; height: 34px; min-height: 34px; box-sizing: border-box; margin: 0; padding: 0 30px 0 36px;
|
|
15492
|
+
font-family: var(--stg-font); font-size: 13.5px; line-height: 32px; color: var(--stg-text);
|
|
15460
15493
|
background: var(--stg-field-bg);
|
|
15461
|
-
border: 1px solid var(--stg-field-line); border-radius:
|
|
15494
|
+
border: 1px solid var(--stg-field-line); border-radius: 9px; box-shadow: none;
|
|
15462
15495
|
-webkit-appearance: none; appearance: none;
|
|
15463
15496
|
}
|
|
15464
15497
|
/* the magnifier: drawn in the colour of the placeholder it sits beside */
|
|
15465
15498
|
.settings-panel .stg-search-glyph {
|
|
15466
|
-
position: absolute; top:
|
|
15467
|
-
color: var(--stg-help); fill: none; stroke: currentColor; stroke-width: 1.
|
|
15499
|
+
position: absolute; top: 22px; left: 24px; width: 15px; height: 15px; pointer-events: none;
|
|
15500
|
+
color: var(--stg-help); fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round;
|
|
15468
15501
|
}
|
|
15469
15502
|
.settings-panel .stg-search-input::placeholder { color: var(--stg-help); opacity: 1; }
|
|
15470
|
-
.settings-panel .stg-search-input:focus-visible { outline: 2px solid var(--stg-focus); outline-offset: 1px; border-radius:
|
|
15503
|
+
.settings-panel .stg-search-input:focus-visible { outline: 2px solid var(--stg-focus); outline-offset: 1px; border-radius: 9px; }
|
|
15471
15504
|
.settings-panel .stg-search-clear {
|
|
15472
|
-
position: absolute; top:
|
|
15505
|
+
position: absolute; top: 12px; right: 16px; display: grid; place-items: center; width: 22px; height: 34px; padding: 0;
|
|
15473
15506
|
color: var(--stg-help); background: none; border: 0; border-radius: 4px; cursor: pointer;
|
|
15474
15507
|
}
|
|
15475
15508
|
.settings-panel .stg-search-clear svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; }
|
|
@@ -15514,18 +15547,108 @@
|
|
|
15514
15547
|
}
|
|
15515
15548
|
|
|
15516
15549
|
@container stg (max-width: 760px) {
|
|
15517
|
-
.settings-panel .stg-sidebar { width:
|
|
15550
|
+
.settings-panel .stg-sidebar { width: 212px; }
|
|
15518
15551
|
}
|
|
15519
15552
|
@container stg (max-width: 560px) {
|
|
15520
15553
|
/* the field sits above the page picker; the results open under it and step aside once one is chosen */
|
|
15521
15554
|
.settings-panel .stg-sidebar { width: auto; max-height: 60%; background: none; border-right: 0; }
|
|
15522
|
-
.settings-panel .stg-search { padding:
|
|
15523
|
-
.settings-panel .stg-search-glyph { top:
|
|
15524
|
-
.settings-panel .stg-search-clear { top:
|
|
15555
|
+
.settings-panel .stg-search { padding: 10px 12px 0; }
|
|
15556
|
+
.settings-panel .stg-search-glyph { top: 20px; left: 24px; }
|
|
15557
|
+
.settings-panel .stg-search-clear { top: 10px; right: 16px; }
|
|
15525
15558
|
.settings-panel .stg-search-results { padding: 6px 12px 8px; border-bottom: 1px solid var(--stg-line); }
|
|
15526
15559
|
.settings-panel .stg-sidebar.stg-search-dismissed .stg-search-results { display: none; }
|
|
15527
15560
|
}
|
|
15528
15561
|
/* <<< settings-redesign:search */
|
|
15562
|
+
/* >>> settings-redesign:nav-polish */
|
|
15563
|
+
/* Sidebar rows: roomier, a 26px tile with a 15px glyph, and a calmer palette. Each tile is one hue pulled to the
|
|
15564
|
+
same lightness and a low chroma, lit from above with a soft gradient and a hairline edge, so the column reads
|
|
15565
|
+
as one set instead of a box of crayons. Loaded last, so it beats the 18px sizing above. */
|
|
15566
|
+
/* The search field: lifted off the sidebar with a lighter fill, a brighter edge and a soft shadow, so it reads as the
|
|
15567
|
+
first thing in the column; a focus ring in the focus colour replaces the plain outline. */
|
|
15568
|
+
.settings-panel .stg-search-input {
|
|
15569
|
+
background: rgba(255,255,255,0.07);
|
|
15570
|
+
border-color: rgba(255,255,255,0.18);
|
|
15571
|
+
box-shadow: 0 1px 2px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.05);
|
|
15572
|
+
transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
|
|
15573
|
+
}
|
|
15574
|
+
.settings-panel .stg-search-input:hover { background: rgba(255,255,255,0.09); border-color: rgba(255,255,255,0.26); }
|
|
15575
|
+
.settings-panel .stg-search-input:focus { background: rgba(255,255,255,0.1); border-color: var(--stg-focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--stg-focus) 28%, transparent); }
|
|
15576
|
+
.settings-panel .stg-search-input:focus-visible { outline: none; }
|
|
15577
|
+
.settings-panel .stg-search-input::placeholder { color: rgba(255,255,255,0.62); }
|
|
15578
|
+
.settings-panel .stg-search-glyph { color: rgba(255,255,255,0.7); }
|
|
15579
|
+
.settings-panel .settings-nav { gap: 2px; padding: 4px 12px 14px; }
|
|
15580
|
+
.settings-panel .stg-nav-group-label { padding: 12px 10px 4px; font-size: 11.5px; letter-spacing: 0.02em; }
|
|
15581
|
+
.settings-panel .stg-nav-group-label:first-child { padding-top: 4px; }
|
|
15582
|
+
.settings-panel .settings-nav-item { min-height: 33px; padding: 3px 10px 3px 7px; gap: 10px; font-size: 13.5px; border-radius: 8px; }
|
|
15583
|
+
.settings-panel .stg-nav-icon,
|
|
15584
|
+
.settings-panel .settings-nav-item:hover .stg-nav-icon,
|
|
15585
|
+
.settings-panel .settings-nav-item.active .stg-nav-icon {
|
|
15586
|
+
width: 26px; height: 26px; border-radius: 7.5px;
|
|
15587
|
+
background: linear-gradient(180deg, color-mix(in oklab, var(--stg-tile, #6b7078) 84%, #fff) 0%, var(--stg-tile, #6b7078) 100%);
|
|
15588
|
+
box-shadow: inset 0 0 0 0.5px rgba(255,255,255,0.22), inset 0 1px 0 rgba(255,255,255,0.18), 0 1px 2px rgba(0,0,0,0.3);
|
|
15589
|
+
}
|
|
15590
|
+
.settings-panel .settings-nav-item svg,
|
|
15591
|
+
.settings-panel .settings-nav-item:hover svg,
|
|
15592
|
+
.settings-panel .settings-nav-item.active svg { width: 16px; height: 16px; stroke: rgba(255,255,255,0.96); stroke-width: 1.8; }
|
|
15593
|
+
.settings-panel .stg-search-result .stg-nav-icon { width: 24px; height: 24px; border-radius: 7px; }
|
|
15594
|
+
.settings-panel .stg-search-result .stg-nav-icon svg { width: 13px; height: 13px; stroke-width: 1.9; }
|
|
15595
|
+
.settings-nav-item[data-tab="ai-connections"] { --stg-tile: #6168c9; }
|
|
15596
|
+
.settings-nav-item[data-tab="memory-backups"] { --stg-tile: #4079bd; }
|
|
15597
|
+
.settings-nav-item[data-tab="ai-decisions"] { --stg-tile: #8562bd; }
|
|
15598
|
+
.settings-nav-item[data-tab="projects"] { --stg-tile: #3a8f9b; }
|
|
15599
|
+
.settings-nav-item[data-tab="browser"] { --stg-tile: #c07b48; }
|
|
15600
|
+
.settings-nav-item[data-tab="connected-tools"] { --stg-tile: #9a7e60; }
|
|
15601
|
+
.settings-nav-item[data-tab="tool-access"] { --stg-tile: #b4607e; }
|
|
15602
|
+
.settings-nav-item[data-tab="code-editor"] { --stg-tile: #7e9948; }
|
|
15603
|
+
|
|
15604
|
+
/* Code editor → AI autocomplete (shared/settings/settings-code-editor-pane.js): the model list, a test's
|
|
15605
|
+
result, the list of files that are never sent. Settings tokens only. */
|
|
15606
|
+
.settings-panel .edt-engine[hidden], .settings-panel .edt-note[hidden], .settings-panel .edt-save-status[hidden] { display: none; }
|
|
15607
|
+
.settings-panel .edt-note, .settings-panel .edt-save-status { margin: 0 0 8px; color: var(--stg-warn); }
|
|
15608
|
+
.settings-panel .edt-save-status { margin: 8px 0 0; color: var(--stg-err); }
|
|
15609
|
+
.settings-panel .edt-models-field, .settings-panel .edt-exclude-field, .settings-panel .edt-usage-field { display: block; margin-top: 12px; }
|
|
15610
|
+
.settings-panel .edt-models-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
|
|
15611
|
+
.settings-panel .edt-models {
|
|
15612
|
+
margin-top: 6px; max-height: 232px; overflow-y: auto;
|
|
15613
|
+
border: 1px solid var(--stg-field-line); border-radius: 5px; background: var(--stg-field-bg);
|
|
15614
|
+
}
|
|
15615
|
+
.settings-panel .edt-models:empty { display: none; }
|
|
15616
|
+
.settings-panel .edt-model {
|
|
15617
|
+
display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0 10px;
|
|
15618
|
+
padding: 4px 10px; border-top: 1px solid var(--stg-sep);
|
|
15619
|
+
}
|
|
15620
|
+
.settings-panel .edt-model:first-child { border-top: 0; }
|
|
15621
|
+
.settings-panel .edt-model.selected { background: rgba(255,255,255,0.04); }
|
|
15622
|
+
.settings-panel .edt-model-pick { display: flex; align-items: center; gap: 8px; min-width: 0; min-height: 22px; margin: 0; cursor: pointer; }
|
|
15623
|
+
.settings-panel .edt-model-pick input { flex-shrink: 0; margin: 0; }
|
|
15624
|
+
.settings-panel .edt-model-name { flex-shrink: 0; max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--stg-text); font-size: 12.5px; }
|
|
15625
|
+
.settings-panel .edt-model-meta { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--stg-help); font-size: 12px; }
|
|
15626
|
+
.settings-panel .edt-model-result { grid-column: 1 / -1; margin: 0 0 3px 22px; overflow-wrap: anywhere; }
|
|
15627
|
+
.settings-panel .edt-model-result[hidden], .settings-panel .edt-result[hidden] { display: none; }
|
|
15628
|
+
.settings-panel .edt-models-message { margin: 0; padding: 8px 10px; }
|
|
15629
|
+
.settings-panel [data-edt-tone="ok"] { color: var(--stg-ok); }
|
|
15630
|
+
.settings-panel [data-edt-tone="warn"] { color: var(--stg-warn); }
|
|
15631
|
+
.settings-panel [data-edt-tone="err"] { color: var(--stg-err); }
|
|
15632
|
+
.settings-panel .edt-note[data-edt-tone="neutral"] { color: var(--stg-help); }
|
|
15633
|
+
/* A model's own result reads as a note; only a failure is coloured. */
|
|
15634
|
+
.settings-panel .edt-model-result[data-edt-tone="ok"] { color: var(--stg-help); }
|
|
15635
|
+
.settings-panel .edt-result { overflow-wrap: anywhere; }
|
|
15636
|
+
.settings-panel .edt-key-row { align-items: center; gap: 8px; }
|
|
15637
|
+
.settings-panel .edt-key-state { margin-top: 4px; }
|
|
15638
|
+
/* File name patterns are code: the Settings code type (12px mono on 1.5). Named through its field, so that the
|
|
15639
|
+
panel's rule for text fields (13px, of the same weight as a plain textarea rule) does not take it over. */
|
|
15640
|
+
.settings-panel .settings-content .edt-exclude-field textarea.edt-exclude {
|
|
15641
|
+
display: block; width: 100%; box-sizing: border-box; min-height: 96px; margin: 6px 0; padding: 8px; resize: vertical;
|
|
15642
|
+
background: var(--stg-field-bg); color: var(--stg-text);
|
|
15643
|
+
border: 1px solid var(--stg-field-line); border-radius: 5px;
|
|
15644
|
+
font-family: var(--stg-mono); font-size: 12px; line-height: 1.5;
|
|
15645
|
+
}
|
|
15646
|
+
.settings-panel .settings-content .edt-exclude-field textarea.edt-exclude:disabled { opacity: 0.45; }
|
|
15647
|
+
.settings-nav-item[data-tab="automations"] { --stg-tile: #b4953f; }
|
|
15648
|
+
.settings-nav-item[data-tab="messages"] { --stg-tile: #4f9b63; }
|
|
15649
|
+
.settings-nav-item[data-tab="notifications"] { --stg-tile: #bd5a52; }
|
|
15650
|
+
.settings-nav-item[data-tab="appearance"] { --stg-tile: #6c717a; }
|
|
15651
|
+
/* <<< settings-redesign:nav-polish */
|
|
15529
15652
|
.tag-add-input {
|
|
15530
15653
|
font-size: var(--fs-sm);
|
|
15531
15654
|
font-weight: 500;
|
|
@@ -16057,18 +16180,35 @@
|
|
|
16057
16180
|
100% { transform: scale(1); opacity: 1; }
|
|
16058
16181
|
}
|
|
16059
16182
|
|
|
16060
|
-
/* ── File Explorer (docked sidebar) ──
|
|
16183
|
+
/* ── File Explorer (docked sidebar) ──
|
|
16184
|
+
The tree and what it does are shared/explorer/ (docs/file-explorer.md).
|
|
16185
|
+
Its colours are the app's tokens; the git marks take the colours the code
|
|
16186
|
+
editor gives the same states (--ed-warn, --ed-add, --ed-del), so tree and
|
|
16187
|
+
editor read as one. The variables are declared for the panel and for what it
|
|
16188
|
+
opens over the page (menu, preview, questions, the branch popover). */
|
|
16189
|
+
#file-explorer-panel, .fe-ctx-flyout, .fe-modal-overlay, .fe-git-popover, .fe-jump-layer {
|
|
16190
|
+
--fe-bg: rgb(18, 18, 20);
|
|
16191
|
+
--fe-focus: var(--accent-blue);
|
|
16192
|
+
--fe-git-modified: #fbbf24;
|
|
16193
|
+
--fe-git-new: #9fe3b4;
|
|
16194
|
+
--fe-git-deleted: #f0a3a3;
|
|
16195
|
+
--fe-git-conflict: var(--accent-red);
|
|
16196
|
+
--fe-menu-bg: #16161a;
|
|
16197
|
+
--fe-menu-border: var(--b-light);
|
|
16198
|
+
--fe-menu-shadow: 0 12px 32px rgba(0,0,0,0.4);
|
|
16199
|
+
}
|
|
16061
16200
|
#file-explorer-panel {
|
|
16062
16201
|
position: fixed;
|
|
16063
16202
|
top: 0;
|
|
16064
16203
|
left: var(--explorer-width, 0px);
|
|
16065
16204
|
width: var(--file-explorer-width, 280px);
|
|
16066
16205
|
min-width: 240px;
|
|
16206
|
+
max-width: 100vw;
|
|
16067
16207
|
height: 100dvh;
|
|
16068
16208
|
z-index: 199;
|
|
16069
16209
|
display: flex;
|
|
16070
16210
|
flex-direction: column;
|
|
16071
|
-
background:
|
|
16211
|
+
background: var(--fe-bg);
|
|
16072
16212
|
border-right: none;
|
|
16073
16213
|
box-shadow: var(--shadow-sm);
|
|
16074
16214
|
transform: translateX(-100%);
|
|
@@ -16079,6 +16219,16 @@
|
|
|
16079
16219
|
transform: translateX(0);
|
|
16080
16220
|
padding-top: var(--navbar-height, 48px);
|
|
16081
16221
|
}
|
|
16222
|
+
/* An invited guest's page: the panel is the owner's and is not there. */
|
|
16223
|
+
#file-explorer-panel[hidden] { display: none; }
|
|
16224
|
+
#file-explorer-panel button:focus-visible,
|
|
16225
|
+
.fe-ctx-flyout button:focus-visible,
|
|
16226
|
+
.fe-modal button:focus-visible,
|
|
16227
|
+
.fe-git-popover button:focus-visible,
|
|
16228
|
+
.fe-git-popover select:focus-visible {
|
|
16229
|
+
outline: 2px solid var(--fe-focus);
|
|
16230
|
+
outline-offset: 1px;
|
|
16231
|
+
}
|
|
16082
16232
|
|
|
16083
16233
|
/* Filter bar */
|
|
16084
16234
|
.fe-filter {
|
|
@@ -16092,58 +16242,52 @@
|
|
|
16092
16242
|
width: 13px;
|
|
16093
16243
|
height: 13px;
|
|
16094
16244
|
fill: none;
|
|
16095
|
-
stroke:
|
|
16245
|
+
stroke: var(--t-secondary);
|
|
16096
16246
|
stroke-width: 2;
|
|
16097
16247
|
stroke-linecap: round;
|
|
16248
|
+
stroke-linejoin: round;
|
|
16098
16249
|
flex-shrink: 0;
|
|
16099
|
-
transition:
|
|
16250
|
+
transition: stroke 0.2s;
|
|
16100
16251
|
position: absolute;
|
|
16101
16252
|
left: 18px;
|
|
16102
16253
|
pointer-events: none;
|
|
16103
16254
|
}
|
|
16104
|
-
.fe-filter:focus-within .fe-filter-icon {
|
|
16105
|
-
stroke: rgba(255,255,255,0.5);
|
|
16106
|
-
}
|
|
16255
|
+
.fe-filter:focus-within .fe-filter-icon { stroke: var(--t-primary); }
|
|
16107
16256
|
.fe-filter input {
|
|
16108
16257
|
flex: 1;
|
|
16109
|
-
|
|
16110
|
-
|
|
16111
|
-
border
|
|
16112
|
-
|
|
16258
|
+
min-width: 0;
|
|
16259
|
+
background: var(--s-subtle);
|
|
16260
|
+
border: 1px solid var(--b-subtle);
|
|
16261
|
+
border-radius: var(--r-small);
|
|
16262
|
+
color: var(--t-bright);
|
|
16113
16263
|
font-size: 11.5px;
|
|
16114
|
-
padding: 7px
|
|
16264
|
+
padding: 7px 26px 7px 28px;
|
|
16115
16265
|
outline: none;
|
|
16116
16266
|
font-family: var(--ff-mono);
|
|
16117
16267
|
text-align: left;
|
|
16118
16268
|
transition: border-color 0.2s, background 0.2s;
|
|
16119
16269
|
}
|
|
16120
16270
|
.fe-filter input:focus {
|
|
16121
|
-
background:
|
|
16122
|
-
border-color:
|
|
16123
|
-
}
|
|
16124
|
-
.fe-filter input::placeholder {
|
|
16125
|
-
color: var(--t-dimmed);
|
|
16271
|
+
background: var(--s-light);
|
|
16272
|
+
border-color: var(--b-hover);
|
|
16126
16273
|
}
|
|
16274
|
+
.fe-filter input:focus-visible { outline: 2px solid var(--fe-focus); outline-offset: -1px; }
|
|
16275
|
+
.fe-filter input::placeholder { color: var(--t-secondary); }
|
|
16127
16276
|
#fe-filter-clear {
|
|
16128
16277
|
position: absolute;
|
|
16129
16278
|
right: 14px;
|
|
16130
16279
|
background: none;
|
|
16131
16280
|
border: none;
|
|
16132
|
-
color: var(--t-
|
|
16281
|
+
color: var(--t-secondary);
|
|
16133
16282
|
cursor: pointer;
|
|
16134
16283
|
font-size: 13px;
|
|
16135
|
-
padding: 2px
|
|
16284
|
+
padding: 2px 5px;
|
|
16136
16285
|
line-height: 1;
|
|
16137
|
-
opacity: 0;
|
|
16138
|
-
transition: opacity 0.15s;
|
|
16139
16286
|
border-radius: 3px;
|
|
16140
16287
|
z-index: 1;
|
|
16141
16288
|
}
|
|
16142
|
-
#fe-filter-clear
|
|
16143
|
-
|
|
16144
|
-
.fe-filter:has(input:not(:placeholder-shown)) .fe-filter-icon {
|
|
16145
|
-
stroke: rgba(255,255,255,0.45);
|
|
16146
|
-
}
|
|
16289
|
+
#fe-filter-clear[hidden] { display: none; }
|
|
16290
|
+
#fe-filter-clear:hover { color: var(--t-bright); background: var(--s-light); }
|
|
16147
16291
|
|
|
16148
16292
|
/* Project row — selector + branch button side by side */
|
|
16149
16293
|
.fe-project-row {
|
|
@@ -16164,10 +16308,10 @@
|
|
|
16164
16308
|
display: flex;
|
|
16165
16309
|
align-items: center;
|
|
16166
16310
|
gap: 7px;
|
|
16167
|
-
background:
|
|
16168
|
-
border: 1px solid
|
|
16169
|
-
border-radius:
|
|
16170
|
-
color: var(--t-
|
|
16311
|
+
background: var(--s-subtle);
|
|
16312
|
+
border: 1px solid var(--b-subtle);
|
|
16313
|
+
border-radius: var(--r-small);
|
|
16314
|
+
color: var(--t-bright);
|
|
16171
16315
|
font-size: 11.5px;
|
|
16172
16316
|
font-family: var(--ff-mono);
|
|
16173
16317
|
padding: 7px 10px;
|
|
@@ -16176,14 +16320,14 @@
|
|
|
16176
16320
|
transition: border-color 0.2s, background 0.2s;
|
|
16177
16321
|
text-align: left;
|
|
16178
16322
|
}
|
|
16179
|
-
.fe-project-btn:hover { border-color:
|
|
16323
|
+
.fe-project-btn:hover { border-color: var(--b-hover); }
|
|
16180
16324
|
.fe-project-selector.open .fe-project-btn {
|
|
16181
|
-
background:
|
|
16182
|
-
border-color:
|
|
16325
|
+
background: var(--s-light);
|
|
16326
|
+
border-color: var(--b-hover);
|
|
16183
16327
|
}
|
|
16184
16328
|
.fe-project-icon {
|
|
16185
16329
|
width: 13px; height: 13px;
|
|
16186
|
-
fill:
|
|
16330
|
+
fill: var(--t-secondary);
|
|
16187
16331
|
flex-shrink: 0;
|
|
16188
16332
|
}
|
|
16189
16333
|
.fe-project-label {
|
|
@@ -16195,7 +16339,7 @@
|
|
|
16195
16339
|
.fe-project-chevron {
|
|
16196
16340
|
width: 12px; height: 12px;
|
|
16197
16341
|
fill: none;
|
|
16198
|
-
stroke:
|
|
16342
|
+
stroke: var(--t-secondary);
|
|
16199
16343
|
stroke-width: 2;
|
|
16200
16344
|
stroke-linecap: round;
|
|
16201
16345
|
stroke-linejoin: round;
|
|
@@ -16209,11 +16353,11 @@
|
|
|
16209
16353
|
display: flex;
|
|
16210
16354
|
align-items: center;
|
|
16211
16355
|
gap: 4px;
|
|
16212
|
-
background:
|
|
16213
|
-
border: 1px solid
|
|
16214
|
-
border-radius:
|
|
16215
|
-
color:
|
|
16216
|
-
font-size:
|
|
16356
|
+
background: var(--s-subtle);
|
|
16357
|
+
border: 1px solid var(--b-subtle);
|
|
16358
|
+
border-radius: var(--r-small);
|
|
16359
|
+
color: var(--t-secondary);
|
|
16360
|
+
font-size: 10.5px;
|
|
16217
16361
|
font-family: var(--ff-mono);
|
|
16218
16362
|
padding: 0 8px;
|
|
16219
16363
|
cursor: pointer;
|
|
@@ -16227,31 +16371,26 @@
|
|
|
16227
16371
|
.fe-branch-btn svg {
|
|
16228
16372
|
width: 11px; height: 11px;
|
|
16229
16373
|
fill: none;
|
|
16230
|
-
stroke:
|
|
16374
|
+
stroke: currentColor;
|
|
16231
16375
|
stroke-width: 2;
|
|
16232
16376
|
stroke-linecap: round;
|
|
16233
16377
|
stroke-linejoin: round;
|
|
16234
16378
|
flex-shrink: 0;
|
|
16235
16379
|
}
|
|
16236
|
-
.fe-branch-btn:hover
|
|
16237
|
-
border-color: rgba(255,255,255,0.18);
|
|
16238
|
-
color: var(--t-primary);
|
|
16239
|
-
background: rgba(255,255,255,0.06);
|
|
16240
|
-
}
|
|
16241
|
-
.fe-branch-btn:hover svg { stroke: rgba(255,255,255,0.5); }
|
|
16380
|
+
.fe-branch-btn:hover,
|
|
16242
16381
|
.fe-branch-btn.active {
|
|
16243
|
-
border-color:
|
|
16244
|
-
|
|
16245
|
-
|
|
16382
|
+
border-color: var(--b-hover);
|
|
16383
|
+
color: var(--t-bright);
|
|
16384
|
+
background: var(--s-light);
|
|
16246
16385
|
}
|
|
16247
16386
|
.fe-branch-btn-name {
|
|
16248
16387
|
overflow: hidden;
|
|
16249
16388
|
text-overflow: ellipsis;
|
|
16250
16389
|
}
|
|
16251
16390
|
.fe-branch-btn-badge {
|
|
16252
|
-
font-size:
|
|
16391
|
+
font-size: 10px;
|
|
16253
16392
|
font-weight: 600;
|
|
16254
|
-
color:
|
|
16393
|
+
color: var(--fe-git-modified);
|
|
16255
16394
|
flex-shrink: 0;
|
|
16256
16395
|
}
|
|
16257
16396
|
.fe-branch-btn-badge:empty { display: none; }
|
|
@@ -16260,10 +16399,11 @@
|
|
|
16260
16399
|
.fe-git-popover {
|
|
16261
16400
|
position: fixed;
|
|
16262
16401
|
width: 240px;
|
|
16263
|
-
|
|
16264
|
-
|
|
16265
|
-
border
|
|
16266
|
-
|
|
16402
|
+
max-width: calc(100vw - 16px);
|
|
16403
|
+
background: var(--fe-menu-bg);
|
|
16404
|
+
border: 1px solid var(--fe-menu-border);
|
|
16405
|
+
border-radius: var(--r-card);
|
|
16406
|
+
box-shadow: var(--fe-menu-shadow);
|
|
16267
16407
|
z-index: 300;
|
|
16268
16408
|
padding: 10px;
|
|
16269
16409
|
opacity: 0;
|
|
@@ -16282,36 +16422,42 @@
|
|
|
16282
16422
|
top: 12px;
|
|
16283
16423
|
width: 10px;
|
|
16284
16424
|
height: 10px;
|
|
16285
|
-
background:
|
|
16286
|
-
border-left: 1px solid
|
|
16287
|
-
border-bottom: 1px solid
|
|
16425
|
+
background: var(--fe-menu-bg);
|
|
16426
|
+
border-left: 1px solid var(--fe-menu-border);
|
|
16427
|
+
border-bottom: 1px solid var(--fe-menu-border);
|
|
16288
16428
|
transform: rotate(45deg);
|
|
16289
16429
|
}
|
|
16430
|
+
.fe-git-popover-arrow.flipped {
|
|
16431
|
+
left: auto;
|
|
16432
|
+
right: -5px;
|
|
16433
|
+
border-left: none;
|
|
16434
|
+
border-bottom: none;
|
|
16435
|
+
border-right: 1px solid var(--fe-menu-border);
|
|
16436
|
+
border-top: 1px solid var(--fe-menu-border);
|
|
16437
|
+
}
|
|
16290
16438
|
.fe-git-pop-label {
|
|
16291
16439
|
display: block;
|
|
16292
|
-
font-size:
|
|
16440
|
+
font-size: 10px;
|
|
16293
16441
|
font-family: var(--ff-mono);
|
|
16294
|
-
color:
|
|
16442
|
+
color: var(--t-secondary);
|
|
16295
16443
|
text-transform: uppercase;
|
|
16296
16444
|
letter-spacing: 0.05em;
|
|
16297
16445
|
margin-bottom: 4px;
|
|
16298
16446
|
}
|
|
16299
|
-
.fe-git-pop-section {
|
|
16300
|
-
padding: 2px 0;
|
|
16301
|
-
}
|
|
16447
|
+
.fe-git-pop-section { padding: 2px 0; }
|
|
16302
16448
|
.fe-git-pop-sep {
|
|
16303
16449
|
height: 1px;
|
|
16304
|
-
background:
|
|
16450
|
+
background: var(--b-subtle);
|
|
16305
16451
|
margin: 6px 0;
|
|
16306
16452
|
}
|
|
16307
16453
|
|
|
16308
16454
|
/* Branch select */
|
|
16309
16455
|
.fe-git-branch-select {
|
|
16310
16456
|
width: 100%;
|
|
16311
|
-
background:
|
|
16312
|
-
border: 1px solid
|
|
16457
|
+
background-color: var(--s-light);
|
|
16458
|
+
border: 1px solid var(--b-light);
|
|
16313
16459
|
border-radius: 5px;
|
|
16314
|
-
color: var(--t-
|
|
16460
|
+
color: var(--t-bright);
|
|
16315
16461
|
font-size: 11px;
|
|
16316
16462
|
font-family: var(--ff-mono);
|
|
16317
16463
|
padding: 5px 22px 5px 8px;
|
|
@@ -16319,16 +16465,16 @@
|
|
|
16319
16465
|
cursor: pointer;
|
|
16320
16466
|
appearance: none;
|
|
16321
16467
|
-webkit-appearance: none;
|
|
16322
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.
|
|
16468
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.5)' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
|
|
16323
16469
|
background-repeat: no-repeat;
|
|
16324
16470
|
background-position: right 7px center;
|
|
16325
16471
|
transition: border-color 0.15s;
|
|
16326
16472
|
}
|
|
16327
|
-
.fe-git-branch-select:hover { border-color:
|
|
16328
|
-
.fe-git-branch-select:focus { border-color:
|
|
16473
|
+
.fe-git-branch-select:hover { border-color: var(--b-hover); }
|
|
16474
|
+
.fe-git-branch-select:focus { border-color: var(--b-visible); }
|
|
16329
16475
|
.fe-git-branch-select option {
|
|
16330
|
-
background:
|
|
16331
|
-
color: var(--t-
|
|
16476
|
+
background: var(--fe-menu-bg);
|
|
16477
|
+
color: var(--t-bright);
|
|
16332
16478
|
}
|
|
16333
16479
|
|
|
16334
16480
|
/* Commit area */
|
|
@@ -16339,114 +16485,106 @@
|
|
|
16339
16485
|
.fe-git-commit-input {
|
|
16340
16486
|
flex: 1;
|
|
16341
16487
|
min-width: 0;
|
|
16342
|
-
background:
|
|
16343
|
-
border: 1px solid
|
|
16488
|
+
background: var(--s-light);
|
|
16489
|
+
border: 1px solid var(--b-light);
|
|
16344
16490
|
border-radius: 5px;
|
|
16345
|
-
color: var(--t-
|
|
16491
|
+
color: var(--t-bright);
|
|
16346
16492
|
font-size: 11px;
|
|
16347
16493
|
font-family: var(--ff-mono);
|
|
16348
16494
|
padding: 5px 8px;
|
|
16349
16495
|
outline: none;
|
|
16350
16496
|
transition: border-color 0.15s;
|
|
16351
16497
|
}
|
|
16352
|
-
.fe-git-commit-input::placeholder { color:
|
|
16353
|
-
.fe-git-commit-input:focus { border-color:
|
|
16354
|
-
.fe-git-commit-
|
|
16498
|
+
.fe-git-commit-input::placeholder { color: var(--t-secondary); }
|
|
16499
|
+
.fe-git-commit-input:focus { border-color: var(--b-visible); }
|
|
16500
|
+
.fe-git-commit-input:focus-visible { outline: 2px solid var(--fe-focus); outline-offset: -1px; }
|
|
16501
|
+
.fe-git-commit-btn,
|
|
16502
|
+
.fe-git-gen-btn {
|
|
16355
16503
|
flex-shrink: 0;
|
|
16356
16504
|
width: 28px; height: 28px;
|
|
16357
16505
|
display: flex;
|
|
16358
16506
|
align-items: center;
|
|
16359
16507
|
justify-content: center;
|
|
16360
|
-
background:
|
|
16361
|
-
border: 1px solid
|
|
16508
|
+
background: var(--s-light);
|
|
16509
|
+
border: 1px solid var(--b-light);
|
|
16362
16510
|
border-radius: 5px;
|
|
16511
|
+
color: var(--t-secondary);
|
|
16363
16512
|
cursor: pointer;
|
|
16364
|
-
transition: background 0.15s, border-color 0.15s;
|
|
16513
|
+
transition: background 0.15s, border-color 0.15s, color 0.15s;
|
|
16365
16514
|
outline: none;
|
|
16366
16515
|
}
|
|
16367
16516
|
.fe-git-commit-btn svg {
|
|
16368
16517
|
width: 13px; height: 13px;
|
|
16369
16518
|
fill: none;
|
|
16370
|
-
stroke:
|
|
16519
|
+
stroke: currentColor;
|
|
16371
16520
|
stroke-width: 2.5;
|
|
16372
16521
|
stroke-linecap: round;
|
|
16373
16522
|
stroke-linejoin: round;
|
|
16374
16523
|
}
|
|
16375
16524
|
.fe-git-commit-btn:hover {
|
|
16376
|
-
|
|
16377
|
-
|
|
16525
|
+
border-color: var(--b-hover);
|
|
16526
|
+
color: var(--fe-git-new);
|
|
16378
16527
|
}
|
|
16379
|
-
.fe-git-commit-btn:hover svg { stroke: #66bb6a; }
|
|
16380
|
-
.fe-git-commit-btn:active { background: rgba(102,187,106,0.2); }
|
|
16381
16528
|
.fe-git-commit-btn.loading,
|
|
16382
16529
|
.fe-git-gen-btn.loading {
|
|
16383
16530
|
pointer-events: none;
|
|
16384
16531
|
opacity: 0.5;
|
|
16385
16532
|
}
|
|
16386
|
-
|
|
16387
|
-
/* Generate message button */
|
|
16388
|
-
.fe-git-gen-btn {
|
|
16389
|
-
flex-shrink: 0;
|
|
16390
|
-
width: 28px; height: 28px;
|
|
16391
|
-
display: flex;
|
|
16392
|
-
align-items: center;
|
|
16393
|
-
justify-content: center;
|
|
16394
|
-
background: rgba(255,255,255,0.05);
|
|
16395
|
-
border: 1px solid rgba(255,255,255,0.08);
|
|
16396
|
-
border-radius: 5px;
|
|
16397
|
-
cursor: pointer;
|
|
16398
|
-
transition: background 0.15s, border-color 0.15s;
|
|
16399
|
-
outline: none;
|
|
16400
|
-
}
|
|
16401
16533
|
.fe-git-gen-btn svg {
|
|
16402
16534
|
width: 12px; height: 12px;
|
|
16403
|
-
fill:
|
|
16535
|
+
fill: currentColor;
|
|
16404
16536
|
stroke: none;
|
|
16405
16537
|
}
|
|
16406
16538
|
.fe-git-gen-btn:hover {
|
|
16407
|
-
|
|
16408
|
-
|
|
16539
|
+
border-color: var(--b-hover);
|
|
16540
|
+
color: var(--accent-orange);
|
|
16409
16541
|
}
|
|
16410
|
-
.fe-git-gen-btn:hover svg { fill: #ffb74d; }
|
|
16411
|
-
.fe-git-gen-btn:active { background: rgba(255,183,77,0.2); }
|
|
16412
16542
|
|
|
16413
16543
|
/* Summary line */
|
|
16414
16544
|
.fe-git-summary {
|
|
16415
|
-
font-size:
|
|
16545
|
+
font-size: 10.5px;
|
|
16416
16546
|
font-family: var(--ff-mono);
|
|
16417
|
-
color: var(--t-
|
|
16547
|
+
color: var(--t-secondary);
|
|
16418
16548
|
line-height: 1.5;
|
|
16419
16549
|
}
|
|
16420
16550
|
.fe-git-summary:empty { display: none; }
|
|
16421
|
-
.fe-git-summary .gs-m { color:
|
|
16422
|
-
.fe-git-summary .gs-a { color:
|
|
16423
|
-
.fe-git-summary .gs-d { color:
|
|
16424
|
-
.fe-git-summary .gs-u { color:
|
|
16551
|
+
.fe-git-summary .gs-m { color: var(--fe-git-modified); }
|
|
16552
|
+
.fe-git-summary .gs-a { color: var(--fe-git-new); }
|
|
16553
|
+
.fe-git-summary .gs-d { color: var(--fe-git-deleted); }
|
|
16554
|
+
.fe-git-summary .gs-u { color: var(--t-primary); }
|
|
16425
16555
|
|
|
16426
16556
|
/* Git commit output */
|
|
16427
16557
|
.fe-git-popover.fe-git-output-mode {
|
|
16428
16558
|
width: 300px;
|
|
16429
16559
|
transition: opacity 0.18s ease, transform 0.18s ease, width 0.18s ease;
|
|
16430
16560
|
}
|
|
16431
|
-
.fe-git-output {
|
|
16432
|
-
display: none;
|
|
16433
|
-
}
|
|
16561
|
+
.fe-git-output { display: none; }
|
|
16434
16562
|
.fe-git-output-header {
|
|
16435
|
-
font-size:
|
|
16563
|
+
font-size: 10px;
|
|
16436
16564
|
font-family: var(--ff-mono);
|
|
16437
|
-
color:
|
|
16565
|
+
color: var(--t-primary);
|
|
16438
16566
|
text-transform: uppercase;
|
|
16439
16567
|
letter-spacing: 0.05em;
|
|
16440
16568
|
margin-bottom: 6px;
|
|
16441
16569
|
}
|
|
16570
|
+
.fe-git-output-icon {
|
|
16571
|
+
width: 11px; height: 11px;
|
|
16572
|
+
stroke: var(--fe-git-deleted);
|
|
16573
|
+
fill: none;
|
|
16574
|
+
stroke-width: 2.5;
|
|
16575
|
+
stroke-linecap: round;
|
|
16576
|
+
stroke-linejoin: round;
|
|
16577
|
+
vertical-align: -1px;
|
|
16578
|
+
}
|
|
16579
|
+
.fe-git-output-icon.ok { stroke: var(--fe-git-new); }
|
|
16442
16580
|
.fe-git-output-pre {
|
|
16443
|
-
background: rgba(0,0,0,0.
|
|
16444
|
-
border: 1px solid
|
|
16581
|
+
background: rgba(0,0,0,0.25);
|
|
16582
|
+
border: 1px solid var(--b-subtle);
|
|
16445
16583
|
border-radius: 5px;
|
|
16446
16584
|
padding: 8px 10px;
|
|
16447
16585
|
font-family: var(--ff-mono);
|
|
16448
|
-
font-size:
|
|
16449
|
-
color:
|
|
16586
|
+
font-size: 10.5px;
|
|
16587
|
+
color: var(--t-primary);
|
|
16450
16588
|
line-height: 1.5;
|
|
16451
16589
|
white-space: pre-wrap;
|
|
16452
16590
|
word-break: break-all;
|
|
@@ -16455,9 +16593,9 @@
|
|
|
16455
16593
|
margin: 0;
|
|
16456
16594
|
}
|
|
16457
16595
|
.fe-git-output-pre.error {
|
|
16458
|
-
background:
|
|
16459
|
-
border-color:
|
|
16460
|
-
color:
|
|
16596
|
+
background: var(--accent-red-bg);
|
|
16597
|
+
border-color: var(--accent-red-hover);
|
|
16598
|
+
color: var(--fe-git-deleted);
|
|
16461
16599
|
}
|
|
16462
16600
|
|
|
16463
16601
|
/* Dropdown panel */
|
|
@@ -16466,11 +16604,12 @@
|
|
|
16466
16604
|
position: absolute;
|
|
16467
16605
|
left: 0; right: 0;
|
|
16468
16606
|
top: calc(100% + 2px);
|
|
16469
|
-
|
|
16470
|
-
|
|
16471
|
-
|
|
16607
|
+
max-height: min(320px, 60vh);
|
|
16608
|
+
overflow-y: auto;
|
|
16609
|
+
background: var(--fe-menu-bg);
|
|
16610
|
+
border: 1px solid var(--fe-menu-border);
|
|
16611
|
+
border-radius: var(--r-small);
|
|
16472
16612
|
z-index: 200;
|
|
16473
|
-
overflow: hidden;
|
|
16474
16613
|
box-shadow: var(--shadow-md);
|
|
16475
16614
|
}
|
|
16476
16615
|
.fe-project-selector.open .fe-project-dropdown { display: block; }
|
|
@@ -16481,7 +16620,7 @@
|
|
|
16481
16620
|
padding: 7px 10px;
|
|
16482
16621
|
font-size: 11.5px;
|
|
16483
16622
|
font-family: var(--ff-mono);
|
|
16484
|
-
color: var(--t-
|
|
16623
|
+
color: var(--t-primary);
|
|
16485
16624
|
cursor: pointer;
|
|
16486
16625
|
transition: background 0.1s;
|
|
16487
16626
|
border: none;
|
|
@@ -16489,14 +16628,16 @@
|
|
|
16489
16628
|
width: 100%;
|
|
16490
16629
|
text-align: left;
|
|
16491
16630
|
}
|
|
16492
|
-
.fe-project-option:hover
|
|
16493
|
-
.fe-project-option
|
|
16631
|
+
.fe-project-option:hover,
|
|
16632
|
+
.fe-project-option:focus-visible { background: var(--s-hover); color: var(--t-bright); }
|
|
16633
|
+
#file-explorer-panel .fe-project-option:focus-visible { outline-offset: -2px; }
|
|
16634
|
+
.fe-project-option.active { color: var(--t-bright); background: var(--s-light); }
|
|
16494
16635
|
.fe-project-option svg {
|
|
16495
16636
|
width: 12px; height: 12px;
|
|
16496
|
-
fill:
|
|
16637
|
+
fill: var(--t-secondary);
|
|
16497
16638
|
flex-shrink: 0;
|
|
16498
16639
|
}
|
|
16499
|
-
.fe-project-option.active svg { fill:
|
|
16640
|
+
.fe-project-option.active svg { fill: var(--t-primary); }
|
|
16500
16641
|
.fe-project-option .fe-opt-label {
|
|
16501
16642
|
flex: 1;
|
|
16502
16643
|
overflow: hidden;
|
|
@@ -16505,16 +16646,15 @@
|
|
|
16505
16646
|
}
|
|
16506
16647
|
.fe-project-sep {
|
|
16507
16648
|
height: 1px;
|
|
16508
|
-
background:
|
|
16649
|
+
background: var(--b-subtle);
|
|
16509
16650
|
margin: 2px 0;
|
|
16510
16651
|
}
|
|
16511
16652
|
.fe-project-option.fe-add-project svg {
|
|
16512
16653
|
fill: none;
|
|
16513
|
-
stroke:
|
|
16654
|
+
stroke: currentColor;
|
|
16514
16655
|
stroke-width: 2;
|
|
16515
16656
|
stroke-linecap: round;
|
|
16516
16657
|
}
|
|
16517
|
-
.fe-project-option.fe-add-project:hover svg { stroke: rgba(255,255,255,0.5); }
|
|
16518
16658
|
|
|
16519
16659
|
/* Toolbar */
|
|
16520
16660
|
.fe-toolbar {
|
|
@@ -16523,12 +16663,24 @@
|
|
|
16523
16663
|
justify-content: center;
|
|
16524
16664
|
gap: 2px;
|
|
16525
16665
|
padding: 4px 8px 6px;
|
|
16526
|
-
border-bottom: 1px solid
|
|
16666
|
+
border-bottom: 1px solid var(--b-subtle);
|
|
16527
16667
|
white-space: nowrap;
|
|
16528
16668
|
flex-wrap: nowrap;
|
|
16529
16669
|
flex-shrink: 0;
|
|
16530
16670
|
}
|
|
16531
|
-
|
|
16671
|
+
.fe-toolbar .detail-action-btn { color: var(--t-secondary); }
|
|
16672
|
+
.fe-toolbar .detail-action-btn:hover { color: var(--t-bright); }
|
|
16673
|
+
.fe-toolbar .detail-action-btn[aria-pressed="true"] {
|
|
16674
|
+
color: var(--t-bright);
|
|
16675
|
+
background: var(--s-medium);
|
|
16676
|
+
border-color: var(--b-hover);
|
|
16677
|
+
}
|
|
16678
|
+
.fe-toolbar .detail-action-btn:disabled {
|
|
16679
|
+
opacity: 0.4;
|
|
16680
|
+
cursor: default;
|
|
16681
|
+
pointer-events: none;
|
|
16682
|
+
}
|
|
16683
|
+
|
|
16532
16684
|
/* Tree container */
|
|
16533
16685
|
.fe-tree {
|
|
16534
16686
|
flex: 1;
|
|
@@ -16536,68 +16688,99 @@
|
|
|
16536
16688
|
overflow-x: hidden;
|
|
16537
16689
|
padding: 4px 0;
|
|
16538
16690
|
min-height: 0;
|
|
16539
|
-
|
|
16540
|
-
|
|
16541
|
-
|
|
16691
|
+
outline: none;
|
|
16692
|
+
/* Isolate the tree's layout/style recalc (see .explorer-tree). Safe: what the
|
|
16693
|
+
explorer opens over the page (menu, preview, questions) is added to the
|
|
16694
|
+
body, not to the tree. Not `paint` — would clip and isn't needed. */
|
|
16542
16695
|
contain: layout style;
|
|
16543
16696
|
scrollbar-width: thin;
|
|
16544
16697
|
scrollbar-color: transparent transparent;
|
|
16545
16698
|
}
|
|
16546
|
-
.fe-tree:hover {
|
|
16547
|
-
scrollbar-color: rgba(255,255,255,0.1) transparent;
|
|
16548
|
-
}
|
|
16699
|
+
.fe-tree:hover { scrollbar-color: var(--b-light) transparent; }
|
|
16549
16700
|
.fe-tree::-webkit-scrollbar { width: 6px; }
|
|
16550
16701
|
.fe-tree::-webkit-scrollbar-track { background: transparent; }
|
|
16551
16702
|
.fe-tree::-webkit-scrollbar-thumb {
|
|
16552
16703
|
background: transparent;
|
|
16553
16704
|
border-radius: 3px;
|
|
16554
16705
|
}
|
|
16555
|
-
.fe-tree:hover::-webkit-scrollbar-thumb {
|
|
16556
|
-
|
|
16557
|
-
|
|
16558
|
-
.fe-tree
|
|
16559
|
-
background: rgba(255,255,255,0.2);
|
|
16560
|
-
}
|
|
16706
|
+
.fe-tree:hover::-webkit-scrollbar-thumb { background: var(--b-light); }
|
|
16707
|
+
.fe-tree:hover::-webkit-scrollbar-thumb:hover { background: var(--b-visible); }
|
|
16708
|
+
/* Rows may be dropped on the project itself. */
|
|
16709
|
+
.fe-tree.fe-drop { box-shadow: inset 0 0 0 1px var(--fe-focus); background: var(--accent-blue-bg); }
|
|
16561
16710
|
|
|
16562
16711
|
/* Tree rows */
|
|
16563
16712
|
.fe-row {
|
|
16564
16713
|
display: flex;
|
|
16565
16714
|
align-items: center;
|
|
16566
16715
|
gap: 6px;
|
|
16567
|
-
padding:
|
|
16716
|
+
padding: 0 8px;
|
|
16568
16717
|
cursor: pointer;
|
|
16569
16718
|
border-radius: 4px;
|
|
16570
16719
|
font-size: 12px;
|
|
16571
16720
|
white-space: nowrap;
|
|
16572
16721
|
transition: background 0.12s;
|
|
16573
16722
|
margin: 0 4px;
|
|
16574
|
-
|
|
16575
|
-
|
|
16576
|
-
|
|
16577
|
-
|
|
16723
|
+
height: 24px;
|
|
16724
|
+
user-select: none;
|
|
16725
|
+
-webkit-user-select: none;
|
|
16726
|
+
}
|
|
16727
|
+
.fe-row:hover { background: var(--s-subtle); }
|
|
16728
|
+
.fe-row--ctx-active { background: var(--s-hover); }
|
|
16729
|
+
.fe-node--selected > .fe-row { background: var(--s-medium); }
|
|
16730
|
+
.fe-node--selected > .fe-row:hover { background: var(--s-active); }
|
|
16731
|
+
/* The keyboard's row, while the tree has the keyboard. */
|
|
16732
|
+
.fe-tree:focus-visible .fe-node--focus > .fe-row {
|
|
16733
|
+
outline: 2px solid var(--fe-focus);
|
|
16734
|
+
outline-offset: -2px;
|
|
16578
16735
|
}
|
|
16579
|
-
.
|
|
16580
|
-
|
|
16736
|
+
/* The file that is showing in the editor. */
|
|
16737
|
+
.fe-node--active > .fe-row { box-shadow: inset 2px 0 0 var(--fe-focus); }
|
|
16738
|
+
.fe-node--active > .fe-row > .fe-name { color: var(--t-bright); }
|
|
16739
|
+
/* A folder rows are about to be dropped into: the folder and what it shows. */
|
|
16740
|
+
.fe-node.fe-drop {
|
|
16741
|
+
background: var(--accent-blue-bg);
|
|
16742
|
+
outline: 1px dashed var(--fe-focus);
|
|
16743
|
+
outline-offset: -1px;
|
|
16744
|
+
border-radius: 4px;
|
|
16581
16745
|
}
|
|
16746
|
+
.fe-tree--dragging .fe-row { cursor: grabbing; }
|
|
16582
16747
|
|
|
16583
16748
|
/* Chevron */
|
|
16584
16749
|
.fe-chevron {
|
|
16585
|
-
font-size: 7px;
|
|
16586
16750
|
width: 12px;
|
|
16587
|
-
|
|
16588
|
-
|
|
16589
|
-
|
|
16751
|
+
height: 12px;
|
|
16752
|
+
display: inline-flex;
|
|
16753
|
+
align-items: center;
|
|
16754
|
+
justify-content: center;
|
|
16755
|
+
color: var(--t-secondary);
|
|
16590
16756
|
flex-shrink: 0;
|
|
16591
|
-
user-select: none;
|
|
16592
16757
|
}
|
|
16593
|
-
.fe-
|
|
16594
|
-
|
|
16758
|
+
.fe-chevron svg {
|
|
16759
|
+
width: 10px;
|
|
16760
|
+
height: 10px;
|
|
16761
|
+
fill: none;
|
|
16762
|
+
stroke: currentColor;
|
|
16763
|
+
stroke-width: 2.5;
|
|
16764
|
+
stroke-linecap: round;
|
|
16765
|
+
stroke-linejoin: round;
|
|
16766
|
+
transition: transform 0.15s ease;
|
|
16595
16767
|
}
|
|
16768
|
+
.fe-node[data-expanded="true"] > .fe-row > .fe-chevron svg { transform: rotate(90deg); }
|
|
16596
16769
|
|
|
16597
|
-
/* Collapsed children hidden */
|
|
16598
|
-
.fe-
|
|
16599
|
-
|
|
16770
|
+
/* Collapsed children hidden; an open folder draws the line its rows hang from. */
|
|
16771
|
+
.fe-children { position: relative; }
|
|
16772
|
+
.fe-node[data-expanded="false"] > .fe-children { display: none; }
|
|
16773
|
+
.fe-children::before {
|
|
16774
|
+
content: '';
|
|
16775
|
+
position: absolute;
|
|
16776
|
+
top: 0;
|
|
16777
|
+
bottom: 0;
|
|
16778
|
+
left: calc(var(--fe-guide, 14px) + 4px);
|
|
16779
|
+
width: 1px;
|
|
16780
|
+
background: var(--b-subtle);
|
|
16781
|
+
pointer-events: none;
|
|
16600
16782
|
}
|
|
16783
|
+
.fe-children:hover::before { background: var(--b-hover); }
|
|
16601
16784
|
|
|
16602
16785
|
/* File/folder icon */
|
|
16603
16786
|
.fe-icon {
|
|
@@ -16607,6 +16790,7 @@
|
|
|
16607
16790
|
display: flex;
|
|
16608
16791
|
align-items: center;
|
|
16609
16792
|
justify-content: center;
|
|
16793
|
+
position: relative;
|
|
16610
16794
|
}
|
|
16611
16795
|
.fe-icon svg {
|
|
16612
16796
|
width: 14px;
|
|
@@ -16617,9 +16801,22 @@
|
|
|
16617
16801
|
stroke-linecap: round;
|
|
16618
16802
|
stroke-linejoin: round;
|
|
16619
16803
|
}
|
|
16620
|
-
.fe-icon--dir { color:
|
|
16621
|
-
.fe-icon--file { color:
|
|
16804
|
+
.fe-icon--dir { color: var(--accent-orange); }
|
|
16805
|
+
.fe-icon--file { color: var(--t-secondary); }
|
|
16622
16806
|
.fe-icon-img { width: 14px; height: 14px; object-fit: contain; }
|
|
16807
|
+
/* A link: a small arrow on its icon. */
|
|
16808
|
+
.fe-link-glyph {
|
|
16809
|
+
position: absolute;
|
|
16810
|
+
right: -4px;
|
|
16811
|
+
bottom: -3px;
|
|
16812
|
+
width: 8px;
|
|
16813
|
+
height: 8px;
|
|
16814
|
+
border-radius: 2px;
|
|
16815
|
+
background: var(--fe-bg);
|
|
16816
|
+
color: var(--t-primary);
|
|
16817
|
+
display: flex;
|
|
16818
|
+
}
|
|
16819
|
+
.fe-icon .fe-link-glyph svg { width: 8px; height: 8px; stroke-width: 3; }
|
|
16623
16820
|
|
|
16624
16821
|
/* File name */
|
|
16625
16822
|
.fe-name {
|
|
@@ -16627,45 +16824,210 @@
|
|
|
16627
16824
|
text-overflow: ellipsis;
|
|
16628
16825
|
flex: 1;
|
|
16629
16826
|
min-width: 0;
|
|
16630
|
-
color: var(--t-
|
|
16827
|
+
color: var(--t-primary);
|
|
16631
16828
|
font-family: var(--ff-mono);
|
|
16632
16829
|
font-size: 12px;
|
|
16633
16830
|
}
|
|
16634
|
-
.fe-node[data-type="dir"] > .fe-row > .fe-name {
|
|
16635
|
-
|
|
16636
|
-
|
|
16831
|
+
.fe-node[data-type="dir"] > .fe-row > .fe-name { font-weight: 500; }
|
|
16832
|
+
/* What git ignores is dimmed, and still text that reads. */
|
|
16833
|
+
.fe-node--ignored > .fe-row > .fe-name { color: var(--t-secondary); }
|
|
16834
|
+
.fe-node--ignored > .fe-row > .fe-icon { opacity: 0.6; }
|
|
16835
|
+
/* Cut: on its way somewhere else. */
|
|
16836
|
+
.fe-node--cut > .fe-row > .fe-name { color: var(--t-secondary); font-style: italic; }
|
|
16837
|
+
.fe-node--cut > .fe-row > .fe-icon { opacity: 0.5; }
|
|
16838
|
+
/* A file git lists as deleted, and a link that cannot be opened from here. */
|
|
16839
|
+
.fe-node--missing > .fe-row > .fe-name { color: var(--t-secondary); text-decoration: line-through; }
|
|
16840
|
+
.fe-node--faint > .fe-row > .fe-name { color: var(--t-secondary); font-style: italic; }
|
|
16841
|
+
/* A selected row under the pointer has the lightest ground of the tree: the dimmed names would read at 4.4:1
|
|
16842
|
+
there, so they take the next text token up (7:1) and stay italic or struck through. */
|
|
16843
|
+
.fe-node--selected.fe-node--ignored > .fe-row:hover > .fe-name,
|
|
16844
|
+
.fe-node--selected.fe-node--cut > .fe-row:hover > .fe-name,
|
|
16845
|
+
.fe-node--selected.fe-node--missing > .fe-row:hover > .fe-name,
|
|
16846
|
+
.fe-node--selected.fe-node--faint > .fe-row:hover > .fe-name { color: var(--t-primary); }
|
|
16847
|
+
.fe-match {
|
|
16848
|
+
background: var(--s-active);
|
|
16849
|
+
color: var(--t-bright);
|
|
16850
|
+
border-radius: 2px;
|
|
16851
|
+
}
|
|
16852
|
+
|
|
16853
|
+
/* Open in the editor (a ring), unsaved there (a dot) */
|
|
16854
|
+
.fe-open-dot {
|
|
16855
|
+
display: none;
|
|
16856
|
+
width: 6px;
|
|
16857
|
+
height: 6px;
|
|
16858
|
+
border-radius: 50%;
|
|
16859
|
+
flex-shrink: 0;
|
|
16860
|
+
box-sizing: border-box;
|
|
16637
16861
|
}
|
|
16862
|
+
.fe-open-dot--open { display: block; border: 1px solid var(--t-secondary); }
|
|
16863
|
+
.fe-open-dot--dirty { display: block; background: var(--t-bright); }
|
|
16638
16864
|
|
|
16639
|
-
/* Git
|
|
16865
|
+
/* Git state: a letter on a file, a dot on a folder that holds changes */
|
|
16640
16866
|
.fe-git-badge {
|
|
16641
|
-
font-size:
|
|
16867
|
+
font-size: 10px;
|
|
16642
16868
|
font-family: var(--ff-mono);
|
|
16643
|
-
font-weight:
|
|
16644
|
-
|
|
16645
|
-
|
|
16869
|
+
font-weight: 600;
|
|
16870
|
+
width: 12px;
|
|
16871
|
+
text-align: center;
|
|
16646
16872
|
flex-shrink: 0;
|
|
16647
16873
|
line-height: 16px;
|
|
16648
16874
|
}
|
|
16649
|
-
.fe-git-
|
|
16650
|
-
.fe-git-
|
|
16651
|
-
|
|
16652
|
-
|
|
16653
|
-
|
|
16654
|
-
|
|
16655
|
-
|
|
16875
|
+
.fe-git-badge[hidden] { display: none; }
|
|
16876
|
+
.fe-git-badge--dot::before {
|
|
16877
|
+
content: '';
|
|
16878
|
+
display: inline-block;
|
|
16879
|
+
width: 5px;
|
|
16880
|
+
height: 5px;
|
|
16881
|
+
border-radius: 50%;
|
|
16882
|
+
background: currentColor;
|
|
16883
|
+
vertical-align: 1px;
|
|
16884
|
+
}
|
|
16885
|
+
.fe-git-modified { color: var(--fe-git-modified); }
|
|
16886
|
+
.fe-git-new { color: var(--fe-git-new); }
|
|
16887
|
+
.fe-git-deleted { color: var(--fe-git-deleted); }
|
|
16888
|
+
.fe-git-conflict { color: var(--fe-git-conflict); }
|
|
16889
|
+
|
|
16890
|
+
/* A line among the rows that is not a row: loading, empty, an error, more to show */
|
|
16891
|
+
.fe-note {
|
|
16892
|
+
display: flex;
|
|
16893
|
+
align-items: center;
|
|
16894
|
+
flex-wrap: wrap;
|
|
16895
|
+
gap: 2px 8px;
|
|
16896
|
+
min-height: 22px;
|
|
16897
|
+
padding-right: 10px;
|
|
16898
|
+
font-size: 11px;
|
|
16899
|
+
line-height: 1.4;
|
|
16900
|
+
font-family: var(--ff-mono);
|
|
16901
|
+
color: var(--t-secondary);
|
|
16902
|
+
}
|
|
16903
|
+
.fe-note--error { color: var(--fe-git-deleted); padding-top: 3px; padding-bottom: 3px; }
|
|
16904
|
+
/* A line that offers something ("Show more", "Retry") while the keyboard is on it: its offer has the ring a row has. */
|
|
16905
|
+
.fe-tree:focus-visible .fe-note--focus > .fe-note-action {
|
|
16906
|
+
outline: 2px solid var(--fe-focus);
|
|
16907
|
+
outline-offset: 2px;
|
|
16908
|
+
border-radius: 2px;
|
|
16909
|
+
}
|
|
16910
|
+
.fe-note-action,
|
|
16911
|
+
.fe-notice-action {
|
|
16912
|
+
background: none;
|
|
16913
|
+
border: none;
|
|
16914
|
+
padding: 0;
|
|
16915
|
+
font: inherit;
|
|
16916
|
+
color: var(--t-bright);
|
|
16917
|
+
text-decoration: underline;
|
|
16918
|
+
text-underline-offset: 2px;
|
|
16919
|
+
cursor: pointer;
|
|
16920
|
+
flex-shrink: 0;
|
|
16921
|
+
}
|
|
16922
|
+
.fe-empty {
|
|
16923
|
+
display: flex;
|
|
16924
|
+
flex-direction: column;
|
|
16925
|
+
align-items: flex-start;
|
|
16926
|
+
gap: 12px;
|
|
16927
|
+
padding: 16px;
|
|
16928
|
+
font-size: 12px;
|
|
16929
|
+
line-height: 1.45;
|
|
16930
|
+
color: var(--t-primary);
|
|
16931
|
+
}
|
|
16932
|
+
.fe-empty p { margin: 0; }
|
|
16933
|
+
|
|
16934
|
+
/* A name typed in place */
|
|
16935
|
+
.fe-rename-input {
|
|
16936
|
+
width: 100%;
|
|
16937
|
+
height: 20px;
|
|
16938
|
+
box-sizing: border-box;
|
|
16939
|
+
background: var(--fe-bg);
|
|
16940
|
+
border: 1px solid var(--fe-focus);
|
|
16941
|
+
border-radius: 3px;
|
|
16942
|
+
color: var(--t-bright);
|
|
16943
|
+
font-family: var(--ff-mono);
|
|
16944
|
+
font-size: 12px;
|
|
16945
|
+
padding: 0 4px;
|
|
16946
|
+
outline: none;
|
|
16947
|
+
}
|
|
16948
|
+
.fe-rename-input[aria-invalid="true"] { border-color: var(--fe-git-deleted); }
|
|
16949
|
+
.fe-rename-tip {
|
|
16950
|
+
margin: 2px 8px 4px 30px;
|
|
16951
|
+
padding: 4px 8px;
|
|
16952
|
+
border-radius: 4px;
|
|
16953
|
+
background: var(--accent-red-bg);
|
|
16954
|
+
color: var(--fe-git-deleted);
|
|
16955
|
+
font-size: 11px;
|
|
16956
|
+
line-height: 1.4;
|
|
16957
|
+
white-space: normal;
|
|
16958
|
+
}
|
|
16959
|
+
.fe-rename-tip[hidden] { display: none; }
|
|
16960
|
+
|
|
16961
|
+
/* What happened, at the foot of the panel */
|
|
16962
|
+
.fe-notice {
|
|
16963
|
+
display: flex;
|
|
16964
|
+
align-items: flex-start;
|
|
16965
|
+
gap: 8px;
|
|
16966
|
+
padding: 6px 6px 6px 12px;
|
|
16967
|
+
border-top: 1px solid var(--b-subtle);
|
|
16968
|
+
background: var(--s-subtle);
|
|
16969
|
+
font-size: 11.5px;
|
|
16970
|
+
line-height: 1.4;
|
|
16971
|
+
color: var(--t-bright);
|
|
16972
|
+
flex-shrink: 0;
|
|
16973
|
+
}
|
|
16974
|
+
.fe-notice[hidden] { display: none; }
|
|
16975
|
+
.fe-notice[data-tone="error"] { color: var(--fe-git-deleted); }
|
|
16976
|
+
.fe-notice-text {
|
|
16977
|
+
flex: 1;
|
|
16978
|
+
min-width: 0;
|
|
16979
|
+
overflow-wrap: anywhere;
|
|
16980
|
+
display: -webkit-box;
|
|
16981
|
+
-webkit-line-clamp: 4;
|
|
16982
|
+
-webkit-box-orient: vertical;
|
|
16983
|
+
overflow: hidden;
|
|
16984
|
+
}
|
|
16985
|
+
.fe-notice-action[hidden] { display: none; }
|
|
16986
|
+
.fe-notice-close {
|
|
16987
|
+
background: none;
|
|
16988
|
+
border: none;
|
|
16989
|
+
color: var(--t-secondary);
|
|
16990
|
+
cursor: pointer;
|
|
16991
|
+
font-size: 13px;
|
|
16992
|
+
line-height: 1;
|
|
16993
|
+
padding: 1px 5px;
|
|
16994
|
+
border-radius: 3px;
|
|
16995
|
+
flex-shrink: 0;
|
|
16996
|
+
}
|
|
16997
|
+
.fe-notice-close:hover { color: var(--t-bright); background: var(--s-light); }
|
|
16656
16998
|
|
|
16657
16999
|
/* Footer */
|
|
16658
17000
|
.fe-footer {
|
|
16659
17001
|
display: flex;
|
|
16660
17002
|
align-items: center;
|
|
17003
|
+
justify-content: space-between;
|
|
17004
|
+
gap: 8px;
|
|
16661
17005
|
height: 28px;
|
|
16662
17006
|
padding: 0 12px;
|
|
16663
|
-
font-size:
|
|
16664
|
-
color: var(--t-
|
|
17007
|
+
font-size: 10.5px;
|
|
17008
|
+
color: var(--t-secondary);
|
|
16665
17009
|
border-top: 1px solid var(--b-subtle);
|
|
16666
17010
|
flex-shrink: 0;
|
|
16667
17011
|
font-family: var(--ff-mono);
|
|
16668
17012
|
}
|
|
17013
|
+
.fe-restart-hint {
|
|
17014
|
+
display: inline-flex;
|
|
17015
|
+
width: 14px;
|
|
17016
|
+
height: 14px;
|
|
17017
|
+
color: var(--accent-orange);
|
|
17018
|
+
border-radius: 50%;
|
|
17019
|
+
cursor: help;
|
|
17020
|
+
}
|
|
17021
|
+
.fe-restart-hint[hidden] { display: none; }
|
|
17022
|
+
.fe-restart-hint:focus-visible { outline: 2px solid var(--fe-focus); outline-offset: 1px; }
|
|
17023
|
+
.fe-restart-hint svg {
|
|
17024
|
+
width: 14px;
|
|
17025
|
+
height: 14px;
|
|
17026
|
+
fill: none;
|
|
17027
|
+
stroke: currentColor;
|
|
17028
|
+
stroke-width: 2;
|
|
17029
|
+
stroke-linecap: round;
|
|
17030
|
+
}
|
|
16669
17031
|
|
|
16670
17032
|
/* Right-edge resize handle */
|
|
16671
17033
|
.fe-resize-handle {
|
|
@@ -16677,13 +17039,14 @@
|
|
|
16677
17039
|
cursor: col-resize;
|
|
16678
17040
|
z-index: 10;
|
|
16679
17041
|
transition: background 0.15s;
|
|
17042
|
+
touch-action: none;
|
|
17043
|
+
outline: none;
|
|
16680
17044
|
}
|
|
16681
17045
|
.fe-resize-handle:hover,
|
|
16682
|
-
.fe-resize-handle.active {
|
|
16683
|
-
|
|
16684
|
-
}
|
|
17046
|
+
.fe-resize-handle.active { background: var(--b-visible); }
|
|
17047
|
+
.fe-resize-handle:focus-visible { background: var(--fe-focus); }
|
|
16685
17048
|
|
|
16686
|
-
/* ──
|
|
17049
|
+
/* ── Context menu and preview (flyouts docked to the right of the panel) ── */
|
|
16687
17050
|
.fe-ctx-flyout {
|
|
16688
17051
|
position: fixed;
|
|
16689
17052
|
z-index: 100010;
|
|
@@ -16710,70 +17073,179 @@
|
|
|
16710
17073
|
width: 0; height: 0;
|
|
16711
17074
|
border-top: 6px solid transparent;
|
|
16712
17075
|
border-bottom: 6px solid transparent;
|
|
16713
|
-
border-right: 6px solid
|
|
17076
|
+
border-right: 6px solid var(--fe-menu-border);
|
|
16714
17077
|
transform: translateY(-6px);
|
|
16715
|
-
filter: drop-shadow(-2px 0 2px rgba(0,0,0,0.25));
|
|
16716
17078
|
z-index: 1;
|
|
16717
17079
|
}
|
|
17080
|
+
/* No room beside the panel: the flyout lies over it, and points at nothing. */
|
|
17081
|
+
.fe-ctx-flyout--over .fe-ctx-arrow { display: none; }
|
|
16718
17082
|
.fe-ctx-menu {
|
|
16719
|
-
background:
|
|
16720
|
-
|
|
16721
|
-
-
|
|
16722
|
-
|
|
16723
|
-
|
|
16724
|
-
|
|
16725
|
-
|
|
16726
|
-
|
|
17083
|
+
background: var(--fe-menu-bg);
|
|
17084
|
+
border: 1px solid var(--fe-menu-border);
|
|
17085
|
+
border-radius: var(--r-card);
|
|
17086
|
+
padding: 6px;
|
|
17087
|
+
min-width: 196px;
|
|
17088
|
+
max-width: min(300px, calc(100vw - 16px));
|
|
17089
|
+
max-height: calc(100dvh - 16px);
|
|
17090
|
+
overflow-y: auto;
|
|
17091
|
+
box-sizing: border-box;
|
|
17092
|
+
box-shadow: var(--fe-menu-shadow);
|
|
17093
|
+
outline: none;
|
|
16727
17094
|
}
|
|
16728
17095
|
.fe-ctx-item {
|
|
16729
17096
|
display: flex;
|
|
16730
17097
|
align-items: center;
|
|
16731
17098
|
gap: 8px;
|
|
16732
17099
|
width: 100%;
|
|
16733
|
-
padding:
|
|
17100
|
+
padding: 5px 8px;
|
|
16734
17101
|
border: none;
|
|
16735
17102
|
background: none;
|
|
16736
|
-
color:
|
|
17103
|
+
color: var(--t-primary);
|
|
16737
17104
|
font-size: 11px;
|
|
16738
|
-
font-family:
|
|
17105
|
+
font-family: var(--ff-mono);
|
|
16739
17106
|
cursor: pointer;
|
|
16740
|
-
border-radius:
|
|
17107
|
+
border-radius: 4px;
|
|
16741
17108
|
text-align: left;
|
|
16742
|
-
transition: background 0.1s, color 0.1s;
|
|
16743
17109
|
}
|
|
16744
|
-
.fe-ctx-item:hover
|
|
16745
|
-
|
|
16746
|
-
|
|
17110
|
+
.fe-ctx-item:hover,
|
|
17111
|
+
.fe-ctx-item:focus { background: var(--s-hover); color: var(--t-bright); outline: none; }
|
|
17112
|
+
.fe-ctx-flyout .fe-ctx-item:focus-visible { outline: 2px solid var(--fe-focus); outline-offset: -2px; }
|
|
17113
|
+
.fe-ctx-item[aria-disabled="true"] {
|
|
17114
|
+
opacity: 0.45;
|
|
17115
|
+
cursor: default;
|
|
17116
|
+
background: none;
|
|
17117
|
+
color: var(--t-primary);
|
|
16747
17118
|
}
|
|
16748
|
-
.fe-ctx-
|
|
16749
|
-
width: 13px;
|
|
16750
|
-
|
|
16751
|
-
|
|
16752
|
-
|
|
17119
|
+
.fe-ctx-icon {
|
|
17120
|
+
width: 13px;
|
|
17121
|
+
height: 13px;
|
|
17122
|
+
flex-shrink: 0;
|
|
17123
|
+
display: inline-flex;
|
|
17124
|
+
}
|
|
17125
|
+
.fe-ctx-icon svg {
|
|
17126
|
+
width: 13px; height: 13px;
|
|
17127
|
+
fill: none; stroke: currentColor;
|
|
17128
|
+
stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
|
|
17129
|
+
}
|
|
17130
|
+
.fe-ctx-label {
|
|
17131
|
+
flex: 1;
|
|
17132
|
+
min-width: 0;
|
|
17133
|
+
overflow: hidden;
|
|
17134
|
+
text-overflow: ellipsis;
|
|
17135
|
+
white-space: nowrap;
|
|
16753
17136
|
}
|
|
16754
|
-
.fe-ctx-
|
|
16755
|
-
|
|
17137
|
+
.fe-ctx-key {
|
|
17138
|
+
flex-shrink: 0;
|
|
17139
|
+
padding-left: 12px;
|
|
17140
|
+
color: var(--t-secondary);
|
|
17141
|
+
font-size: 10.5px;
|
|
16756
17142
|
}
|
|
16757
17143
|
.fe-ctx-separator {
|
|
16758
17144
|
height: 1px;
|
|
16759
|
-
margin:
|
|
16760
|
-
background:
|
|
17145
|
+
margin: 4px 2px;
|
|
17146
|
+
background: var(--b-subtle);
|
|
17147
|
+
}
|
|
17148
|
+
.fe-ctx-item--danger { color: var(--fe-git-deleted); }
|
|
17149
|
+
.fe-ctx-item--danger:hover,
|
|
17150
|
+
.fe-ctx-item--danger:focus { background: var(--accent-red-bg); color: var(--fe-git-deleted); }
|
|
17151
|
+
|
|
17152
|
+
/* Folder colours: a row of swatches on a page of the menu */
|
|
17153
|
+
.fe-ctx-swatches {
|
|
17154
|
+
display: grid;
|
|
17155
|
+
grid-template-columns: repeat(5, 22px);
|
|
17156
|
+
gap: 7px;
|
|
17157
|
+
padding: 6px 8px 8px;
|
|
17158
|
+
}
|
|
17159
|
+
.fe-color-swatch {
|
|
17160
|
+
width: 22px;
|
|
17161
|
+
height: 22px;
|
|
17162
|
+
border-radius: 50%;
|
|
17163
|
+
border: 2px solid transparent;
|
|
17164
|
+
cursor: pointer;
|
|
17165
|
+
transition: transform 0.12s, border-color 0.12s;
|
|
17166
|
+
padding: 0;
|
|
17167
|
+
}
|
|
17168
|
+
.fe-color-swatch:hover { transform: scale(1.15); border-color: var(--b-visible); }
|
|
17169
|
+
.fe-color-swatch--active { border-color: var(--t-bright); }
|
|
17170
|
+
.fe-ctx-flyout .fe-color-swatch:focus-visible { outline: 2px solid var(--fe-focus); outline-offset: 2px; }
|
|
17171
|
+
|
|
17172
|
+
/* The card of a file that is not text. It lies over the editor: it slides in at full strength (a menu fades
|
|
17173
|
+
in), so nothing under it reads through while it arrives. */
|
|
17174
|
+
.fe-preview:not(.fe-ctx-flyout--out) { opacity: 1; }
|
|
17175
|
+
.fe-preview-card {
|
|
17176
|
+
width: 280px;
|
|
17177
|
+
padding: 10px;
|
|
17178
|
+
display: flex;
|
|
17179
|
+
flex-direction: column;
|
|
17180
|
+
gap: 8px;
|
|
17181
|
+
}
|
|
17182
|
+
.fe-preview-name {
|
|
17183
|
+
font-family: var(--ff-mono);
|
|
17184
|
+
font-size: 12px;
|
|
17185
|
+
color: var(--t-bright);
|
|
17186
|
+
overflow: hidden;
|
|
17187
|
+
text-overflow: ellipsis;
|
|
17188
|
+
white-space: nowrap;
|
|
17189
|
+
}
|
|
17190
|
+
.fe-preview-frame {
|
|
17191
|
+
display: flex;
|
|
17192
|
+
align-items: center;
|
|
17193
|
+
justify-content: center;
|
|
17194
|
+
min-height: 72px;
|
|
17195
|
+
background: var(--s-subtle);
|
|
17196
|
+
border: 1px solid var(--b-subtle);
|
|
17197
|
+
border-radius: var(--r-small);
|
|
17198
|
+
overflow: hidden;
|
|
17199
|
+
}
|
|
17200
|
+
.fe-preview-frame img {
|
|
17201
|
+
display: block;
|
|
17202
|
+
max-width: 100%;
|
|
17203
|
+
max-height: min(280px, 50vh);
|
|
17204
|
+
object-fit: contain;
|
|
17205
|
+
}
|
|
17206
|
+
.fe-preview-frame--failed {
|
|
17207
|
+
padding: 12px;
|
|
17208
|
+
font-size: 11px;
|
|
17209
|
+
color: var(--t-secondary);
|
|
17210
|
+
}
|
|
17211
|
+
.fe-preview-detail {
|
|
17212
|
+
font-size: 11px;
|
|
17213
|
+
line-height: 1.45;
|
|
17214
|
+
color: var(--t-secondary);
|
|
17215
|
+
white-space: pre-line;
|
|
16761
17216
|
}
|
|
16762
|
-
.fe-
|
|
16763
|
-
|
|
17217
|
+
.fe-preview-actions {
|
|
17218
|
+
display: flex;
|
|
17219
|
+
flex-wrap: wrap;
|
|
17220
|
+
gap: 6px;
|
|
16764
17221
|
}
|
|
16765
|
-
.fe-
|
|
16766
|
-
.fe-ctx-item--danger:hover { background: rgba(229,115,115,0.1); color: #ff8a80; }
|
|
16767
|
-
.fe-ctx-item--danger svg { stroke: #e57373; }
|
|
16768
|
-
.fe-ctx-item--danger:hover svg { stroke: #ff8a80; }
|
|
17222
|
+
.fe-preview-actions .fe-modal-btn { padding: 5px 10px; }
|
|
16769
17223
|
|
|
16770
|
-
/*
|
|
16771
|
-
.fe-
|
|
16772
|
-
|
|
17224
|
+
/* Where go-to-file opens: the editor's own list, beside the panel */
|
|
17225
|
+
.fe-jump-layer {
|
|
17226
|
+
position: fixed;
|
|
17227
|
+
inset: 0;
|
|
17228
|
+
z-index: 100020;
|
|
16773
17229
|
pointer-events: none;
|
|
17230
|
+
--ed-menu-bg: var(--fe-menu-bg);
|
|
17231
|
+
--ed-menu-fg: var(--t-primary);
|
|
17232
|
+
--ed-menu-fg-active: var(--t-bright);
|
|
17233
|
+
--ed-menu-border: var(--fe-menu-border);
|
|
17234
|
+
--ed-menu-hover: var(--s-hover);
|
|
17235
|
+
--ed-menu-radius: var(--r-card);
|
|
17236
|
+
--ed-menu-shadow: var(--fe-menu-shadow);
|
|
17237
|
+
--fw-focus: var(--fe-focus);
|
|
17238
|
+
}
|
|
17239
|
+
.fe-jump-layer > .fe-editor-menu { pointer-events: auto; }
|
|
17240
|
+
.fe-jump-layer .fe-editor-menu:focus-visible { outline: none; }
|
|
17241
|
+
|
|
17242
|
+
/* A side panel that rows are being dragged onto */
|
|
17243
|
+
.fe-drop-agent {
|
|
17244
|
+
outline: 2px dashed var(--accent-blue);
|
|
17245
|
+
outline-offset: -6px;
|
|
16774
17246
|
}
|
|
16775
17247
|
|
|
16776
|
-
/* ──
|
|
17248
|
+
/* ── Questions (delete, replace, save first) ── */
|
|
16777
17249
|
.fe-modal-overlay {
|
|
16778
17250
|
position: fixed;
|
|
16779
17251
|
inset: 0;
|
|
@@ -16782,17 +17254,20 @@
|
|
|
16782
17254
|
display: flex;
|
|
16783
17255
|
align-items: center;
|
|
16784
17256
|
justify-content: center;
|
|
17257
|
+
padding: 16px;
|
|
17258
|
+
box-sizing: border-box;
|
|
16785
17259
|
opacity: 0;
|
|
16786
17260
|
transition: opacity 0.15s ease;
|
|
16787
17261
|
}
|
|
16788
17262
|
.fe-modal-overlay--in { opacity: 1; }
|
|
16789
17263
|
.fe-modal {
|
|
16790
|
-
background:
|
|
16791
|
-
border: 1px solid
|
|
16792
|
-
border-radius:
|
|
17264
|
+
background: var(--fe-menu-bg);
|
|
17265
|
+
border: 1px solid var(--fe-menu-border);
|
|
17266
|
+
border-radius: var(--r-button);
|
|
16793
17267
|
padding: 20px 24px;
|
|
16794
|
-
min-width: 280px;
|
|
16795
|
-
max-width:
|
|
17268
|
+
min-width: min(280px, 100%);
|
|
17269
|
+
max-width: 380px;
|
|
17270
|
+
box-sizing: border-box;
|
|
16796
17271
|
box-shadow: var(--shadow-xl);
|
|
16797
17272
|
transform: scale(0.95);
|
|
16798
17273
|
transition: transform 0.15s cubic-bezier(0.22,1,0.36,1);
|
|
@@ -16801,100 +17276,139 @@
|
|
|
16801
17276
|
.fe-modal-title {
|
|
16802
17277
|
font-size: 13px;
|
|
16803
17278
|
font-weight: 600;
|
|
16804
|
-
color:
|
|
17279
|
+
color: var(--t-bright);
|
|
16805
17280
|
margin-bottom: 8px;
|
|
17281
|
+
overflow-wrap: anywhere;
|
|
16806
17282
|
}
|
|
16807
17283
|
.fe-modal-body {
|
|
16808
17284
|
font-size: 12px;
|
|
16809
|
-
color:
|
|
17285
|
+
color: var(--t-primary);
|
|
16810
17286
|
line-height: 1.5;
|
|
16811
17287
|
margin-bottom: 18px;
|
|
17288
|
+
overflow-wrap: anywhere;
|
|
16812
17289
|
}
|
|
16813
|
-
.fe-modal-body
|
|
17290
|
+
.fe-modal-body p { margin: 0 0 6px; }
|
|
17291
|
+
.fe-modal-body p:last-child { margin-bottom: 0; }
|
|
17292
|
+
.fe-modal-body code { font-family: var(--ff-mono); color: var(--t-bright); }
|
|
16814
17293
|
.fe-modal-actions {
|
|
16815
17294
|
display: flex;
|
|
16816
17295
|
justify-content: flex-end;
|
|
17296
|
+
flex-wrap: wrap;
|
|
16817
17297
|
gap: 8px;
|
|
16818
17298
|
}
|
|
16819
17299
|
.fe-modal-btn {
|
|
16820
17300
|
padding: 6px 14px;
|
|
16821
|
-
font-size:
|
|
17301
|
+
font-size: 12px;
|
|
16822
17302
|
font-family: inherit;
|
|
16823
17303
|
border: none;
|
|
16824
|
-
border-radius:
|
|
17304
|
+
border-radius: var(--r-small);
|
|
16825
17305
|
cursor: pointer;
|
|
16826
17306
|
transition: background 0.12s, color 0.12s;
|
|
16827
17307
|
}
|
|
16828
17308
|
.fe-modal-cancel {
|
|
16829
|
-
background:
|
|
16830
|
-
color:
|
|
17309
|
+
background: var(--s-light);
|
|
17310
|
+
color: var(--t-primary);
|
|
16831
17311
|
}
|
|
16832
|
-
.fe-modal-cancel:hover { background:
|
|
17312
|
+
.fe-modal-cancel:hover { background: var(--s-medium); color: var(--t-bright); }
|
|
16833
17313
|
.fe-modal-confirm {
|
|
16834
|
-
background:
|
|
16835
|
-
color:
|
|
17314
|
+
background: var(--accent-red-bg);
|
|
17315
|
+
color: var(--fe-git-deleted);
|
|
16836
17316
|
}
|
|
16837
|
-
.fe-modal-confirm:hover { background:
|
|
17317
|
+
.fe-modal-confirm:hover { background: var(--accent-red-hover); color: var(--t-bright); }
|
|
17318
|
+
/* A question that removes nothing: its answer is not a warning. */
|
|
17319
|
+
.fe-modal--plain .fe-modal-confirm { background: var(--s-medium); color: var(--t-bright); }
|
|
17320
|
+
.fe-modal--plain .fe-modal-confirm:hover { background: var(--s-active); }
|
|
16838
17321
|
|
|
16839
17322
|
/* ── Trust-workspace modal (amber accent, different from destructive red) ── */
|
|
16840
|
-
.fe-trust-modal .fe-modal-title { color:
|
|
16841
|
-
.fe-trust-modal .fe-modal-confirm { background:
|
|
16842
|
-
.fe-trust-modal .fe-modal-confirm:hover { background:
|
|
17323
|
+
.fe-trust-modal .fe-modal-title { color: var(--accent-orange); }
|
|
17324
|
+
.fe-trust-modal .fe-modal-confirm { background: var(--accent-orange-bg); color: var(--accent-orange); }
|
|
17325
|
+
.fe-trust-modal .fe-modal-confirm:hover { background: var(--s-medium); }
|
|
16843
17326
|
.fe-trust-modal .fe-modal-confirm:disabled { opacity: 0.5; cursor: default; }
|
|
16844
17327
|
.fe-trust-path {
|
|
16845
17328
|
margin-top: 10px;
|
|
16846
17329
|
padding: 8px 10px;
|
|
16847
|
-
background: rgba(0,0,0,0.
|
|
16848
|
-
border: 1px solid
|
|
16849
|
-
border-radius:
|
|
16850
|
-
font-family: var(--
|
|
17330
|
+
background: rgba(0,0,0,0.25);
|
|
17331
|
+
border: 1px solid var(--b-subtle);
|
|
17332
|
+
border-radius: var(--r-small);
|
|
17333
|
+
font-family: var(--ff-mono);
|
|
16851
17334
|
font-size: 11px;
|
|
16852
|
-
color:
|
|
17335
|
+
color: var(--t-primary);
|
|
16853
17336
|
word-break: break-all;
|
|
16854
17337
|
}
|
|
16855
17338
|
|
|
16856
|
-
/*
|
|
16857
|
-
|
|
16858
|
-
|
|
16859
|
-
|
|
16860
|
-
|
|
16861
|
-
|
|
16862
|
-
-
|
|
16863
|
-
|
|
16864
|
-
|
|
16865
|
-
|
|
16866
|
-
|
|
16867
|
-
|
|
16868
|
-
|
|
16869
|
-
|
|
16870
|
-
|
|
16871
|
-
|
|
16872
|
-
width: 22px;
|
|
16873
|
-
height: 22px;
|
|
16874
|
-
border-radius: 50%;
|
|
16875
|
-
border: 2px solid transparent;
|
|
16876
|
-
cursor: pointer;
|
|
16877
|
-
transition: transform 0.12s, border-color 0.12s;
|
|
16878
|
-
padding: 0;
|
|
16879
|
-
}
|
|
16880
|
-
.fe-color-swatch:hover {
|
|
16881
|
-
transform: scale(1.2);
|
|
16882
|
-
border-color: rgba(255,255,255,0.3);
|
|
16883
|
-
}
|
|
16884
|
-
.fe-color-swatch--active {
|
|
16885
|
-
border-color: rgba(255,255,255,0.7);
|
|
16886
|
-
box-shadow: 0 0 0 1px rgba(255,255,255,0.2);
|
|
17339
|
+
/* A finger needs more room than a pointer: rows, buttons and menu items grow. */
|
|
17340
|
+
@media (pointer: coarse) {
|
|
17341
|
+
.fe-row { height: 40px; }
|
|
17342
|
+
.fe-toolbar { gap: 0; justify-content: flex-start; overflow-x: auto; scrollbar-width: none; }
|
|
17343
|
+
.fe-toolbar .detail-action-btn { width: 44px; height: 44px; }
|
|
17344
|
+
.fe-toolbar .detail-action-btn svg { width: 16px; height: 16px; }
|
|
17345
|
+
.fe-filter input, .fe-project-btn { min-height: 44px; font-size: 13px; }
|
|
17346
|
+
#fe-filter-clear { padding: 12px; right: 8px; }
|
|
17347
|
+
.fe-ctx-item { padding: 13px 10px; font-size: 13px; }
|
|
17348
|
+
.fe-ctx-swatches { grid-template-columns: repeat(5, 36px); gap: 10px; }
|
|
17349
|
+
.fe-color-swatch { width: 36px; height: 36px; }
|
|
17350
|
+
.fe-modal-btn { min-height: 44px; padding: 10px 16px; }
|
|
17351
|
+
.fe-note-action, .fe-notice-action, .fe-notice-close { min-height: 44px; min-width: 44px; }
|
|
17352
|
+
.fe-project-option { min-height: 44px; }
|
|
17353
|
+
.fe-resize-handle { width: 16px; }
|
|
17354
|
+
.fe-rename-input { height: 32px; font-size: 14px; }
|
|
16887
17355
|
}
|
|
16888
|
-
|
|
16889
|
-
|
|
16890
|
-
|
|
16891
|
-
|
|
16892
|
-
justify-content: center;
|
|
16893
|
-
padding: 4px 0;
|
|
17356
|
+
@media (prefers-reduced-motion: reduce) {
|
|
17357
|
+
#file-explorer-panel, .fe-ctx-flyout, .fe-ctx-flyout--out, .fe-modal-overlay, .fe-modal, .fe-git-popover, .fe-git-popover.fe-git-output-mode,
|
|
17358
|
+
.fe-row, .fe-chevron svg, .fe-color-swatch, .fe-project-chevron { transition: none; }
|
|
17359
|
+
.fe-ctx-flyout, .fe-git-popover, .fe-modal, .fe-color-swatch:hover { transform: none; }
|
|
16894
17360
|
}
|
|
16895
17361
|
|
|
16896
|
-
/* ── File Editor (standalone panel, slides from file explorer's right edge) ──
|
|
17362
|
+
/* ── File Editor (standalone panel, slides from file explorer's right edge) ──
|
|
17363
|
+
The editor inside it is CodeMirror (shared/editor/). Its colours are the
|
|
17364
|
+
--ed-* variables below, read by shared/editor/editor-theme.js: a skin
|
|
17365
|
+
restyles the editor by overriding them. */
|
|
16897
17366
|
.fe-editor-panel {
|
|
17367
|
+
--ed-bg: rgb(16, 16, 18);
|
|
17368
|
+
--ed-fg: #8a8ea0;
|
|
17369
|
+
--ed-caret: var(--t-bright);
|
|
17370
|
+
--ed-selection: rgba(99,102,241,0.25);
|
|
17371
|
+
--ed-line-active: rgba(255,255,255,0.03);
|
|
17372
|
+
--ed-gutter-bg: rgba(0,0,0,0.1);
|
|
17373
|
+
--ed-gutter-fg: rgba(255,255,255,0.15);
|
|
17374
|
+
--ed-gutter-fg-active: rgba(255,255,255,0.5);
|
|
17375
|
+
--ed-gutter-border: rgba(255,255,255,0.04);
|
|
17376
|
+
/* Mono syntax tokens — cool gray palette */
|
|
17377
|
+
--ed-kw: #cccdd6;
|
|
17378
|
+
--ed-str: #6e7a86;
|
|
17379
|
+
--ed-cm: #5a6a5a;
|
|
17380
|
+
--ed-num: #8c94a8;
|
|
17381
|
+
--ed-fn: #b0b4c4;
|
|
17382
|
+
--ed-op: #585c6c;
|
|
17383
|
+
--ed-tag: #a0a4b4;
|
|
17384
|
+
--ed-attr: #787c8c;
|
|
17385
|
+
--ed-prop: #9498a8;
|
|
17386
|
+
--ed-br: #8a7a50;
|
|
17387
|
+
--ed-match: rgba(255,255,255,0.10);
|
|
17388
|
+
--ed-match-current: rgba(99,102,241,0.35);
|
|
17389
|
+
--ed-ghost: rgba(255,255,255,0.28);
|
|
17390
|
+
--ed-add: #9fe3b4;
|
|
17391
|
+
--ed-add-bg: rgba(95,207,131,0.10);
|
|
17392
|
+
--ed-del: #f0a3a3;
|
|
17393
|
+
--ed-del-bg: rgba(239,112,112,0.10);
|
|
17394
|
+
--ed-error: var(--stg-err, #fca5a5);
|
|
17395
|
+
--ed-warn: #fbbf24;
|
|
17396
|
+
/* Spaces and tabs made visible, and the minimap's box over the part in view */
|
|
17397
|
+
--ed-whitespace: rgba(255,255,255,0.2);
|
|
17398
|
+
--ed-minimap-box: rgba(255,255,255,0.06);
|
|
17399
|
+
--ed-minimap-box-active: rgba(255,255,255,0.1);
|
|
17400
|
+
--ed-minimap-edge: var(--b-hover);
|
|
17401
|
+
--ed-minimap-match: var(--fw-focus);
|
|
17402
|
+
/* Indent guides and the completion list take existing tokens. */
|
|
17403
|
+
--ed-guide: var(--b-light);
|
|
17404
|
+
--ed-guide-active: var(--b-visible);
|
|
17405
|
+
--ed-menu-bg: #16161a;
|
|
17406
|
+
--ed-menu-fg: var(--t-primary);
|
|
17407
|
+
--ed-menu-fg-active: var(--t-bright);
|
|
17408
|
+
--ed-menu-border: rgba(255,255,255,0.10);
|
|
17409
|
+
--ed-menu-hover: var(--s-hover);
|
|
17410
|
+
--ed-menu-radius: 8px;
|
|
17411
|
+
--ed-menu-shadow: 0 12px 32px rgba(0,0,0,0.4);
|
|
16898
17412
|
position: fixed;
|
|
16899
17413
|
top: var(--navbar-height, 48px);
|
|
16900
17414
|
left: calc(var(--sidebar-total-width, 0px));
|
|
@@ -16904,7 +17418,7 @@
|
|
|
16904
17418
|
z-index: 198;
|
|
16905
17419
|
display: flex;
|
|
16906
17420
|
flex-direction: column;
|
|
16907
|
-
background:
|
|
17421
|
+
background: var(--ed-bg);
|
|
16908
17422
|
border-left: 1px solid rgba(255,255,255,0.04);
|
|
16909
17423
|
box-shadow: var(--shadow-md);
|
|
16910
17424
|
transform: translateX(40px);
|
|
@@ -16934,6 +17448,110 @@
|
|
|
16934
17448
|
flex-shrink: 0;
|
|
16935
17449
|
}
|
|
16936
17450
|
|
|
17451
|
+
/* Bars under the header (the file changed on disk…): the banner's geometry, neutral */
|
|
17452
|
+
.fe-editor-bar {
|
|
17453
|
+
display: flex;
|
|
17454
|
+
align-items: center;
|
|
17455
|
+
justify-content: center;
|
|
17456
|
+
flex-wrap: wrap;
|
|
17457
|
+
gap: 4px 14px;
|
|
17458
|
+
padding: 6px 12px;
|
|
17459
|
+
font-size: 12px;
|
|
17460
|
+
color: var(--t-primary);
|
|
17461
|
+
background: rgba(255,255,255,0.04);
|
|
17462
|
+
border-bottom: 1px solid var(--b-subtle);
|
|
17463
|
+
flex-shrink: 0;
|
|
17464
|
+
}
|
|
17465
|
+
.fe-editor-bar-action {
|
|
17466
|
+
background: none; border: none; padding: 0; cursor: pointer;
|
|
17467
|
+
font: inherit; font-weight: 600; color: var(--t-bright);
|
|
17468
|
+
text-decoration: underline; text-underline-offset: 2px;
|
|
17469
|
+
transition: color 0.15s;
|
|
17470
|
+
}
|
|
17471
|
+
.fe-editor-bar-action:hover { color: #fff; }
|
|
17472
|
+
|
|
17473
|
+
/* Tab strip (shared/editor/editor-tabs.js): a 28px row under the header, there while two or more files are open */
|
|
17474
|
+
.fe-editor-tabs {
|
|
17475
|
+
display: flex;
|
|
17476
|
+
align-items: stretch;
|
|
17477
|
+
height: 28px;
|
|
17478
|
+
flex-shrink: 0;
|
|
17479
|
+
overflow-x: auto;
|
|
17480
|
+
overflow-y: hidden;
|
|
17481
|
+
scrollbar-width: none;
|
|
17482
|
+
border-bottom: 1px solid rgba(255,255,255,0.04);
|
|
17483
|
+
background: rgba(0,0,0,0.1);
|
|
17484
|
+
}
|
|
17485
|
+
.fe-editor-tabs[hidden] { display: none; }
|
|
17486
|
+
.fe-editor-tabs::-webkit-scrollbar { display: none; }
|
|
17487
|
+
.fe-editor-tab {
|
|
17488
|
+
position: relative;
|
|
17489
|
+
display: flex;
|
|
17490
|
+
align-items: center;
|
|
17491
|
+
gap: 6px;
|
|
17492
|
+
flex: 0 0 auto;
|
|
17493
|
+
max-width: 240px;
|
|
17494
|
+
padding: 0 6px 0 10px;
|
|
17495
|
+
font-size: 11px;
|
|
17496
|
+
font-family: var(--ff-mono);
|
|
17497
|
+
color: var(--t-secondary);
|
|
17498
|
+
border-right: 1px solid rgba(255,255,255,0.04);
|
|
17499
|
+
cursor: pointer;
|
|
17500
|
+
user-select: none;
|
|
17501
|
+
transition: color 0.15s, background-color 0.15s;
|
|
17502
|
+
}
|
|
17503
|
+
.fe-editor-tab:hover { color: var(--t-primary); background: rgba(255,255,255,0.03); }
|
|
17504
|
+
.fe-editor-tab.active { color: var(--t-bright); }
|
|
17505
|
+
.fe-editor-tab.active::after {
|
|
17506
|
+
content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
|
|
17507
|
+
background: var(--fw-focus);
|
|
17508
|
+
}
|
|
17509
|
+
.fe-editor-tab.dragging { opacity: 0.5; }
|
|
17510
|
+
/* A tab the next file may take says so in italics */
|
|
17511
|
+
.fe-editor-tab.preview .fe-editor-tab-name { font-style: italic; }
|
|
17512
|
+
.fe-editor-tab-icon { display: flex; flex-shrink: 0; }
|
|
17513
|
+
.fe-editor-tab-icon svg {
|
|
17514
|
+
width: 12px; height: 12px; fill: none;
|
|
17515
|
+
stroke: currentColor; stroke-width: 2;
|
|
17516
|
+
stroke-linecap: round; stroke-linejoin: round;
|
|
17517
|
+
}
|
|
17518
|
+
.fe-editor-tab-icon img { width: 12px; height: 12px; }
|
|
17519
|
+
.fe-editor-tab:not(.active) .fe-editor-tab-icon { opacity: 0.6; }
|
|
17520
|
+
/* A plan or a changelog: the banner's accent on its icon, and its kind after the name */
|
|
17521
|
+
.fe-editor-tab.marked .fe-editor-tab-icon { color: var(--accent, #06d6a0); }
|
|
17522
|
+
.fe-editor-tab-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
17523
|
+
.fe-editor-tab-hint,
|
|
17524
|
+
.fe-editor-tab-mark {
|
|
17525
|
+
flex-shrink: 2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
17526
|
+
font-size: 10px; color: var(--t-secondary);
|
|
17527
|
+
}
|
|
17528
|
+
.fe-editor-tab-close {
|
|
17529
|
+
position: relative; display: flex; align-items: center; justify-content: center;
|
|
17530
|
+
width: 16px; height: 16px; flex-shrink: 0; padding: 0;
|
|
17531
|
+
background: none; border: none; border-radius: 3px; cursor: pointer; color: inherit;
|
|
17532
|
+
}
|
|
17533
|
+
.fe-editor-tab-close svg {
|
|
17534
|
+
width: 10px; height: 10px; fill: none;
|
|
17535
|
+
stroke: currentColor; stroke-width: 2; stroke-linecap: round;
|
|
17536
|
+
opacity: 0; transition: opacity 0.12s;
|
|
17537
|
+
}
|
|
17538
|
+
.fe-editor-tab:hover .fe-editor-tab-close svg,
|
|
17539
|
+
.fe-editor-tab.active .fe-editor-tab-close svg,
|
|
17540
|
+
.fe-editor-tab-close:focus-visible svg { opacity: 0.7; }
|
|
17541
|
+
.fe-editor-tab-close:hover { background: rgba(255,255,255,0.08); }
|
|
17542
|
+
.fe-editor-tab .fe-editor-tab-close:hover svg { opacity: 1; }
|
|
17543
|
+
/* Unsaved: the header's dot in place of the close mark, which comes back under the pointer */
|
|
17544
|
+
.fe-editor-tab-dot {
|
|
17545
|
+
position: absolute; width: 7px; height: 7px; border-radius: 50%;
|
|
17546
|
+
background: #ffca28; opacity: 0; transition: opacity 0.12s;
|
|
17547
|
+
}
|
|
17548
|
+
.fe-editor-tab.dirty .fe-editor-tab-dot { opacity: 1; }
|
|
17549
|
+
.fe-editor-tab.dirty .fe-editor-tab-close svg { opacity: 0; }
|
|
17550
|
+
.fe-editor-tab.dirty .fe-editor-tab-close:hover .fe-editor-tab-dot { opacity: 0; }
|
|
17551
|
+
.fe-editor-tab.dirty .fe-editor-tab-close:hover svg { opacity: 1; }
|
|
17552
|
+
/* The strip clips: the focus ring is drawn inside the tab */
|
|
17553
|
+
body .fe-editor-panel .fe-editor-tabs .fe-editor-tab.fe-editor-tab:focus-visible { outline-offset: -2px; }
|
|
17554
|
+
|
|
16937
17555
|
/* Header */
|
|
16938
17556
|
.fe-editor-header {
|
|
16939
17557
|
display: flex;
|
|
@@ -16967,7 +17585,7 @@
|
|
|
16967
17585
|
.fe-editor-dot.dirty { background: #ffca28; }
|
|
16968
17586
|
.fe-editor-filepath {
|
|
16969
17587
|
font-size: 11px; font-family: var(--ff-mono);
|
|
16970
|
-
color: var(--t-
|
|
17588
|
+
color: var(--t-secondary); overflow: hidden;
|
|
16971
17589
|
text-overflow: ellipsis; white-space: nowrap;
|
|
16972
17590
|
direction: rtl; text-align: left;
|
|
16973
17591
|
}
|
|
@@ -16984,6 +17602,7 @@
|
|
|
16984
17602
|
.fe-editor-action:hover { background: rgba(255,255,255,0.05); }
|
|
16985
17603
|
.fe-editor-action:hover svg { stroke: var(--t-bright); }
|
|
16986
17604
|
.fe-editor-action.active svg { stroke: var(--accent-blue, #6366f1); }
|
|
17605
|
+
.fe-editor-action[hidden] { display: none; }
|
|
16987
17606
|
.fe-editor-help-wrap { position: relative; display: flex; }
|
|
16988
17607
|
.fe-editor-help-btn svg circle,
|
|
16989
17608
|
.fe-editor-help-btn svg path,
|
|
@@ -17005,6 +17624,8 @@
|
|
|
17005
17624
|
border-radius: 8px;
|
|
17006
17625
|
padding: 10px 14px;
|
|
17007
17626
|
min-width: 200px;
|
|
17627
|
+
max-height: min(60vh, 440px);
|
|
17628
|
+
overflow-y: auto;
|
|
17008
17629
|
z-index: 100;
|
|
17009
17630
|
backdrop-filter: blur(12px);
|
|
17010
17631
|
box-shadow: var(--shadow-md);
|
|
@@ -17042,6 +17663,7 @@
|
|
|
17042
17663
|
.fe-editor-kb span {
|
|
17043
17664
|
color: var(--t-muted);
|
|
17044
17665
|
margin-left: 12px;
|
|
17666
|
+
white-space: nowrap;
|
|
17045
17667
|
}
|
|
17046
17668
|
.fe-editor-sep {
|
|
17047
17669
|
width: 1px; height: 14px;
|
|
@@ -17062,7 +17684,7 @@
|
|
|
17062
17684
|
#fe-editor-close { border-color: rgba(255,82,82,0.35); color: var(--accent-red); }
|
|
17063
17685
|
#fe-editor-close:hover:not(:disabled) { border-color: rgba(255,82,82,0.55); color: var(--accent-red); background: var(--accent-red-bg); }
|
|
17064
17686
|
|
|
17065
|
-
/* Editor body —
|
|
17687
|
+
/* Editor body — CodeMirror, the Markdown preview, or a message in their place */
|
|
17066
17688
|
.fe-editor-body {
|
|
17067
17689
|
flex: 1;
|
|
17068
17690
|
display: flex;
|
|
@@ -17070,89 +17692,44 @@
|
|
|
17070
17692
|
position: relative;
|
|
17071
17693
|
overflow: hidden;
|
|
17072
17694
|
}
|
|
17073
|
-
.fe-editor-
|
|
17074
|
-
|
|
17075
|
-
|
|
17076
|
-
|
|
17077
|
-
text-align: right;
|
|
17078
|
-
font-family: 'JetBrains Mono', 'SF Mono', 'Consolas', monospace;
|
|
17079
|
-
font-size: 12px;
|
|
17080
|
-
line-height: 20px;
|
|
17081
|
-
color: rgba(255,255,255,0.15);
|
|
17082
|
-
background: rgba(0,0,0,0.1);
|
|
17083
|
-
border-right: 1px solid rgba(255,255,255,0.04);
|
|
17084
|
-
overflow: hidden;
|
|
17085
|
-
user-select: none;
|
|
17086
|
-
pointer-events: none;
|
|
17087
|
-
}
|
|
17088
|
-
.fe-editor-gutter div {
|
|
17089
|
-
padding-right: 10px;
|
|
17090
|
-
height: 20px;
|
|
17091
|
-
}
|
|
17092
|
-
.fe-editor-highlight {
|
|
17093
|
-
position: absolute;
|
|
17094
|
-
top: 0;
|
|
17095
|
-
left: 48px;
|
|
17096
|
-
right: 0;
|
|
17097
|
-
bottom: 0;
|
|
17098
|
-
margin: 0;
|
|
17099
|
-
padding: 10px 16px;
|
|
17100
|
-
font-family: 'JetBrains Mono', 'SF Mono', 'Consolas', monospace;
|
|
17101
|
-
font-size: 12px;
|
|
17102
|
-
line-height: 20px;
|
|
17103
|
-
white-space: pre-wrap;
|
|
17104
|
-
overflow-wrap: break-word;
|
|
17105
|
-
overflow: hidden;
|
|
17106
|
-
pointer-events: none;
|
|
17107
|
-
color: #8a8ea0;
|
|
17108
|
-
tab-size: 2;
|
|
17109
|
-
z-index: 1;
|
|
17110
|
-
border: none;
|
|
17111
|
-
background: transparent;
|
|
17695
|
+
.fe-editor-host {
|
|
17696
|
+
flex: 1;
|
|
17697
|
+
min-width: 0;
|
|
17698
|
+
min-height: 0;
|
|
17112
17699
|
}
|
|
17113
|
-
.fe-editor-
|
|
17114
|
-
|
|
17115
|
-
|
|
17116
|
-
|
|
17117
|
-
|
|
17700
|
+
.fe-editor-host[hidden],
|
|
17701
|
+
.fe-editor-message[hidden] { display: none; }
|
|
17702
|
+
/* The scroll bar the editor always had: 6px, a darker track */
|
|
17703
|
+
.fe-editor-host .cm-scroller::-webkit-scrollbar { width: 6px; height: 6px; }
|
|
17704
|
+
.fe-editor-host .cm-scroller::-webkit-scrollbar-track { background: rgba(0,0,0,0.15); }
|
|
17705
|
+
.fe-editor-host .cm-scroller::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.2); border-radius: 3px; }
|
|
17706
|
+
.fe-editor-host .cm-scroller::-webkit-scrollbar-corner { background: transparent; }
|
|
17707
|
+
/* Fold arrows: the folded ones always, the rest while the pointer is over the gutter */
|
|
17708
|
+
.fe-editor-fold { display: inline-flex; align-items: center; justify-content: center; height: 100%; }
|
|
17709
|
+
.fe-editor-fold svg {
|
|
17710
|
+
width: 9px; height: 9px; fill: none;
|
|
17711
|
+
stroke: currentColor; stroke-width: 2.5;
|
|
17712
|
+
stroke-linecap: round; stroke-linejoin: round;
|
|
17118
17713
|
}
|
|
17119
|
-
.fe-editor-
|
|
17120
|
-
|
|
17121
|
-
|
|
17122
|
-
.fe-editor-
|
|
17123
|
-
background: rgba(99,102,241,0.25);
|
|
17124
|
-
}
|
|
17125
|
-
/* Mono syntax tokens — cool gray palette */
|
|
17126
|
-
.sh-kw { color: #cccdd6; }
|
|
17127
|
-
.sh-str { color: #6e7a86; }
|
|
17128
|
-
.sh-cm { color: #5a6a5a; font-style: italic; }
|
|
17129
|
-
.sh-num { color: #8c94a8; }
|
|
17130
|
-
.sh-fn { color: #b0b4c4; }
|
|
17131
|
-
.sh-op { color: #585c6c; }
|
|
17132
|
-
.sh-tag { color: #a0a4b4; }
|
|
17133
|
-
.sh-attr { color: #787c8c; }
|
|
17134
|
-
.sh-prop { color: #9498a8; }
|
|
17135
|
-
.sh-br { color: #8a7a50; }
|
|
17136
|
-
.fe-editor-textarea {
|
|
17714
|
+
.fe-editor-fold--open { opacity: 0; transition: opacity 0.12s; }
|
|
17715
|
+
.fe-editor-host .cm-gutters:hover .fe-editor-fold--open { opacity: 1; }
|
|
17716
|
+
/* A file the editor does not open, or an editor that did not load */
|
|
17717
|
+
.fe-editor-message {
|
|
17137
17718
|
flex: 1;
|
|
17138
|
-
|
|
17139
|
-
|
|
17140
|
-
|
|
17141
|
-
|
|
17719
|
+
display: flex;
|
|
17720
|
+
flex-direction: column;
|
|
17721
|
+
align-items: center;
|
|
17722
|
+
justify-content: center;
|
|
17723
|
+
gap: 12px;
|
|
17724
|
+
padding: 24px;
|
|
17725
|
+
text-align: center;
|
|
17726
|
+
}
|
|
17727
|
+
.fe-editor-message-text {
|
|
17728
|
+
max-width: 68ch;
|
|
17142
17729
|
font-size: 12px;
|
|
17143
|
-
line-height:
|
|
17144
|
-
color:
|
|
17145
|
-
|
|
17146
|
-
resize: none;
|
|
17147
|
-
outline: none;
|
|
17148
|
-
tab-size: 2;
|
|
17149
|
-
white-space: pre-wrap;
|
|
17150
|
-
overflow-wrap: break-word;
|
|
17151
|
-
overflow-x: auto;
|
|
17152
|
-
overflow-y: auto;
|
|
17153
|
-
min-height: 0;
|
|
17154
|
-
position: relative;
|
|
17155
|
-
z-index: 2;
|
|
17730
|
+
line-height: 1.45;
|
|
17731
|
+
color: var(--t-muted);
|
|
17732
|
+
overflow-wrap: anywhere;
|
|
17156
17733
|
}
|
|
17157
17734
|
|
|
17158
17735
|
/* Status bar */
|
|
@@ -17171,6 +17748,183 @@
|
|
|
17171
17748
|
.fe-editor-statusbar .fe-editor-sep {
|
|
17172
17749
|
height: 10px;
|
|
17173
17750
|
}
|
|
17751
|
+
.fe-editor-statusbar.is-empty > * { visibility: hidden; }
|
|
17752
|
+
|
|
17753
|
+
/* Status items that open a list (shared/editor/editor-statusbar.js): the bar's own text,
|
|
17754
|
+
with the hover of the AI chip. The negative margin keeps the bar's geometry. */
|
|
17755
|
+
.fe-editor-status-btn {
|
|
17756
|
+
margin: -2px -5px; padding: 2px 5px;
|
|
17757
|
+
background: none; border: none; border-radius: 3px; cursor: pointer;
|
|
17758
|
+
font: inherit; color: var(--t-secondary); white-space: nowrap;
|
|
17759
|
+
transition: color 0.15s, background-color 0.15s;
|
|
17760
|
+
}
|
|
17761
|
+
.fe-editor-status-btn:hover,
|
|
17762
|
+
.fe-editor-status-btn[aria-expanded="true"] { background: rgba(255,255,255,0.05); color: var(--t-primary); }
|
|
17763
|
+
|
|
17764
|
+
/* Menus of the editor panel (shared/editor/editor-menu.js): a tab's menu and the status bar's
|
|
17765
|
+
lists, in the menu treatment of the completion list and the AI popover. */
|
|
17766
|
+
.fe-editor-menu {
|
|
17767
|
+
position: absolute; z-index: 120;
|
|
17768
|
+
min-width: 168px; max-width: min(320px, calc(100% - 16px));
|
|
17769
|
+
padding: 6px;
|
|
17770
|
+
background: var(--ed-menu-bg); color: var(--ed-menu-fg);
|
|
17771
|
+
border: 1px solid var(--ed-menu-border); border-radius: var(--ed-menu-radius);
|
|
17772
|
+
box-shadow: var(--ed-menu-shadow);
|
|
17773
|
+
font-family: var(--ff-mono); font-size: 11px; line-height: 1.45;
|
|
17774
|
+
text-align: left; cursor: default;
|
|
17775
|
+
}
|
|
17776
|
+
body .fe-editor-panel .fe-editor-menu.fe-editor-menu.fe-editor-menu:focus-visible { outline: none; }
|
|
17777
|
+
.fe-editor-menu-search {
|
|
17778
|
+
display: block; width: 100%; box-sizing: border-box; margin-bottom: 6px;
|
|
17779
|
+
background: rgba(0,0,0,0.2);
|
|
17780
|
+
border: 1px solid rgba(255,255,255,0.08);
|
|
17781
|
+
border-radius: 4px;
|
|
17782
|
+
padding: 4px 8px;
|
|
17783
|
+
font-family: var(--ff-mono);
|
|
17784
|
+
font-size: 11px;
|
|
17785
|
+
color: var(--t-bright);
|
|
17786
|
+
outline: none;
|
|
17787
|
+
}
|
|
17788
|
+
.fe-editor-menu-search:focus { border-color: rgba(99,102,241,0.4); }
|
|
17789
|
+
.fe-editor-menu-list { max-height: min(264px, 50vh); overflow-y: auto; }
|
|
17790
|
+
.fe-editor-menu-list::-webkit-scrollbar { width: 6px; }
|
|
17791
|
+
.fe-editor-menu-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.2); border-radius: 3px; }
|
|
17792
|
+
.fe-editor-menu-item {
|
|
17793
|
+
display: flex; align-items: center; gap: 6px;
|
|
17794
|
+
padding: 3px 8px; border-radius: 4px;
|
|
17795
|
+
white-space: nowrap; cursor: pointer;
|
|
17796
|
+
}
|
|
17797
|
+
.fe-editor-menu-item.active { background: var(--ed-menu-hover); color: var(--ed-menu-fg-active); }
|
|
17798
|
+
/* The menu itself shows no focus ring: the row the keyboard is on does, while the menu has the keyboard. */
|
|
17799
|
+
.fe-editor-menu:focus-within .fe-editor-menu-item.active { outline: 2px solid var(--fw-focus); outline-offset: -2px; }
|
|
17800
|
+
.fe-editor-menu-item[aria-disabled="true"] { opacity: 0.4; cursor: default; }
|
|
17801
|
+
.fe-editor-menu-check { width: 10px; flex-shrink: 0; color: var(--t-secondary); }
|
|
17802
|
+
.fe-editor-menu-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
|
|
17803
|
+
.fe-editor-menu-hint { flex-shrink: 0; color: var(--t-secondary); }
|
|
17804
|
+
.fe-editor-menu-sep { height: 1px; margin: 4px 2px; background: rgba(255,255,255,0.06); }
|
|
17805
|
+
.fe-editor-menu-empty { padding: 6px 8px; color: var(--t-secondary); }
|
|
17806
|
+
/* The command palette and go-to-file (shared/editor/editor-palette.js): the same menu, wider, at the top of the panel */
|
|
17807
|
+
.fe-editor-menu.fe-editor-palette { width: min(460px, calc(100% - 16px)); max-width: none; }
|
|
17808
|
+
.fe-editor-palette .fe-editor-menu-list { max-height: min(308px, 50vh); }
|
|
17809
|
+
.fe-editor-palette .fe-editor-menu-check { display: none; }
|
|
17810
|
+
.fe-editor-palette .fe-editor-menu-label { flex: 0 1 auto; }
|
|
17811
|
+
.fe-editor-palette .fe-editor-menu-hint { flex: 1 1 0; min-width: 0; overflow: hidden; text-overflow: ellipsis; text-align: right; }
|
|
17812
|
+
|
|
17813
|
+
/* A comparison's button that puts one difference back (shared/editor/editor-compare.js):
|
|
17814
|
+
the find bar's Replace button */
|
|
17815
|
+
.fe-editor-host .cm-deletedChunk .fe-editor-compare-revert {
|
|
17816
|
+
margin: 2px 0; padding: 0 8px;
|
|
17817
|
+
background: rgba(255,255,255,0.04);
|
|
17818
|
+
border: 1px solid rgba(255,255,255,0.08);
|
|
17819
|
+
border-radius: 4px;
|
|
17820
|
+
font-family: var(--ff-mono); font-size: 10px; line-height: 14px;
|
|
17821
|
+
color: var(--t-primary);
|
|
17822
|
+
cursor: pointer;
|
|
17823
|
+
transition: all 0.12s;
|
|
17824
|
+
}
|
|
17825
|
+
.fe-editor-host .cm-deletedChunk .fe-editor-compare-revert:hover {
|
|
17826
|
+
background: rgba(255,255,255,0.08);
|
|
17827
|
+
color: var(--t-primary);
|
|
17828
|
+
border-color: rgba(255,255,255,0.14);
|
|
17829
|
+
}
|
|
17830
|
+
|
|
17831
|
+
@media (prefers-reduced-motion: reduce) {
|
|
17832
|
+
.fe-editor-tab, .fe-editor-tab-close svg, .fe-editor-tab-dot, .fe-editor-status-btn,
|
|
17833
|
+
.fe-editor-host .cm-deletedChunk .fe-editor-compare-revert { transition: none; }
|
|
17834
|
+
}
|
|
17835
|
+
/* Touch: the strip and the status items keep the 44px target of the panel's header controls */
|
|
17836
|
+
@media (pointer: coarse) {
|
|
17837
|
+
.fe-editor-tabs { height: 44px; }
|
|
17838
|
+
.fe-editor-tab-close { width: 28px; height: 28px; }
|
|
17839
|
+
.fe-editor-status-btn { margin: -12px -5px; padding: 12px 5px; }
|
|
17840
|
+
}
|
|
17841
|
+
|
|
17842
|
+
/* AI autocomplete: the status-bar chip and its popover (shared/editor/editor-ai.js).
|
|
17843
|
+
Built only when the server has the feature. The dot says the state, the tooltip names it:
|
|
17844
|
+
hollow = off, filled = ready, pulsing = asking the model, amber = a problem. */
|
|
17845
|
+
.fe-editor-ai { position: relative; display: inline-flex; align-items: center; }
|
|
17846
|
+
.fe-editor-ai[hidden], .fe-editor-statusbar .fe-editor-sep[hidden], .fe-editor-ai-popover[hidden], .fe-editor-ai-popover [hidden] { display: none; }
|
|
17847
|
+
.fe-editor-ai-chip {
|
|
17848
|
+
display: inline-flex; align-items: center; gap: 5px;
|
|
17849
|
+
margin: -2px -5px; padding: 2px 5px;
|
|
17850
|
+
background: none; border: none; border-radius: 3px; cursor: pointer;
|
|
17851
|
+
font: inherit; color: var(--t-secondary);
|
|
17852
|
+
transition: color 0.15s, background-color 0.15s;
|
|
17853
|
+
}
|
|
17854
|
+
.fe-editor-ai-chip:hover, .fe-editor-ai-chip[aria-expanded="true"] { background: rgba(255,255,255,0.05); color: var(--t-primary); }
|
|
17855
|
+
.fe-editor-ai-dot {
|
|
17856
|
+
width: 5px; height: 5px; border-radius: 50%; flex-shrink: 0;
|
|
17857
|
+
background: transparent; box-shadow: inset 0 0 0 1px var(--t-secondary);
|
|
17858
|
+
transition: background-color 0.15s;
|
|
17859
|
+
}
|
|
17860
|
+
.fe-editor-ai-chip[data-state="ready"] .fe-editor-ai-dot,
|
|
17861
|
+
.fe-editor-ai-chip[data-state="thinking"] .fe-editor-ai-dot { background: var(--t-primary); box-shadow: none; }
|
|
17862
|
+
.fe-editor-ai-chip[data-state="thinking"] .fe-editor-ai-dot { animation: fe-editor-ai-pulse 1s ease-in-out infinite; }
|
|
17863
|
+
.fe-editor-ai-chip[data-state="problem"] .fe-editor-ai-dot { background: var(--ed-warn); box-shadow: none; }
|
|
17864
|
+
@keyframes fe-editor-ai-pulse {
|
|
17865
|
+
0%, 100% { opacity: 0.5; }
|
|
17866
|
+
50% { opacity: 1; }
|
|
17867
|
+
}
|
|
17868
|
+
body.ui-interacting .fe-editor-ai-dot { animation-play-state: paused; }
|
|
17869
|
+
.fe-editor-ai-popover {
|
|
17870
|
+
/* The accent as a fill white reads on (Settings' recipe for a checked control): the raw accent can be as light as the knob. */
|
|
17871
|
+
--stg-accent-fill: hsl(var(--accent-hue, 199), var(--accent-saturation, 92%), 36%);
|
|
17872
|
+
position: absolute; right: -6px; bottom: calc(100% + 8px);
|
|
17873
|
+
width: 292px; max-width: calc(100vw - 32px);
|
|
17874
|
+
padding: 10px 12px 8px;
|
|
17875
|
+
background: var(--ed-menu-bg); color: var(--ed-menu-fg);
|
|
17876
|
+
border: 1px solid var(--ed-menu-border); border-radius: var(--ed-menu-radius);
|
|
17877
|
+
box-shadow: var(--ed-menu-shadow);
|
|
17878
|
+
z-index: 100;
|
|
17879
|
+
font-family: inherit; font-size: 12px; line-height: 1.45; letter-spacing: 0;
|
|
17880
|
+
text-align: left; cursor: default;
|
|
17881
|
+
}
|
|
17882
|
+
.fe-editor-ai-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
|
|
17883
|
+
.fe-editor-ai-title { font-weight: 600; color: var(--ed-menu-fg-active); }
|
|
17884
|
+
.fe-editor-ai-switch {
|
|
17885
|
+
position: relative; width: 26px; height: 15px; min-width: 26px; padding: 0; flex-shrink: 0;
|
|
17886
|
+
border: 0; border-radius: 999px; cursor: pointer;
|
|
17887
|
+
background: rgba(255,255,255,0.16); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.22);
|
|
17888
|
+
transition: background-color 0.15s ease;
|
|
17889
|
+
}
|
|
17890
|
+
.fe-editor-ai-switch::after {
|
|
17891
|
+
content: ''; position: absolute; top: 1px; left: 1px; width: 13px; height: 13px; border-radius: 50%;
|
|
17892
|
+
background: #e8e8ea; box-shadow: 0 1px 2px rgba(0,0,0,0.35);
|
|
17893
|
+
transition: left 0.15s ease;
|
|
17894
|
+
}
|
|
17895
|
+
@supports (color: oklch(from red l c h)) {
|
|
17896
|
+
.fe-editor-ai-popover { --stg-accent-fill: oklch(from var(--accent-blue) 0.5 c h); }
|
|
17897
|
+
}
|
|
17898
|
+
.fe-editor-ai-switch[aria-checked="true"] { background: var(--stg-accent-fill); box-shadow: none; }
|
|
17899
|
+
.fe-editor-ai-switch[aria-checked="true"]::after { left: 12px; background: #fff; }
|
|
17900
|
+
.fe-editor-ai-note, .fe-editor-ai-status { margin: 6px 0 0; color: var(--t-secondary); overflow-wrap: anywhere; }
|
|
17901
|
+
.fe-editor-ai-status { color: var(--t-secondary); }
|
|
17902
|
+
.fe-editor-ai-status[data-state="problem"] { color: var(--ed-warn); }
|
|
17903
|
+
.fe-editor-ai-row { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
|
|
17904
|
+
.fe-editor-ai-row label { flex-shrink: 0; color: var(--t-secondary); }
|
|
17905
|
+
.fe-editor-ai-row .fe-editor-btn { flex-shrink: 0; white-space: nowrap; color: var(--t-secondary); }
|
|
17906
|
+
.fe-editor-ai-row .fe-editor-btn:hover:not(:disabled) { color: var(--t-primary); }
|
|
17907
|
+
.fe-editor-ai-select {
|
|
17908
|
+
flex: 1; min-width: 0; height: 22px; padding: 0 6px;
|
|
17909
|
+
background: rgba(0,0,0,0.2); color: var(--t-bright);
|
|
17910
|
+
border: 1px solid rgba(255,255,255,0.08); border-radius: 4px;
|
|
17911
|
+
font-family: var(--ff-mono); font-size: 11px;
|
|
17912
|
+
}
|
|
17913
|
+
.fe-editor-ai-result { min-width: 0; color: var(--t-secondary); overflow-wrap: anywhere; }
|
|
17914
|
+
.fe-editor-ai-keys { margin-top: 8px; padding-top: 6px; border-top: 1px solid rgba(255,255,255,0.06); }
|
|
17915
|
+
.fe-editor-ai-keys .fe-editor-kb span { color: var(--t-secondary); }
|
|
17916
|
+
.fe-editor-ai-link {
|
|
17917
|
+
display: inline-block; margin-top: 6px; padding: 2px 0;
|
|
17918
|
+
background: none; border: none; cursor: pointer;
|
|
17919
|
+
font: inherit; color: var(--t-secondary);
|
|
17920
|
+
text-decoration: underline; text-underline-offset: 2px;
|
|
17921
|
+
transition: color 0.15s;
|
|
17922
|
+
}
|
|
17923
|
+
.fe-editor-ai-link:hover { color: var(--t-bright); }
|
|
17924
|
+
@media (prefers-reduced-motion: reduce) {
|
|
17925
|
+
.fe-editor-ai-dot { animation: none !important; }
|
|
17926
|
+
.fe-editor-ai-chip, .fe-editor-ai-dot, .fe-editor-ai-switch, .fe-editor-ai-switch::after, .fe-editor-ai-link { transition: none; }
|
|
17927
|
+
}
|
|
17174
17928
|
|
|
17175
17929
|
/* View toggle (Raw/Preview) */
|
|
17176
17930
|
.fe-editor-view-toggle {
|
|
@@ -17271,10 +18025,23 @@
|
|
|
17271
18025
|
.fe-editor-find-input:focus {
|
|
17272
18026
|
border-color: rgba(99,102,241,0.4);
|
|
17273
18027
|
}
|
|
18028
|
+
.fe-editor-find-input.invalid,
|
|
18029
|
+
.fe-editor-goto-input.invalid { border-color: var(--ed-error); }
|
|
18030
|
+
.fe-editor-find-toggle {
|
|
18031
|
+
background: none; border: 1px solid transparent; cursor: pointer;
|
|
18032
|
+
min-width: 22px; padding: 2px 4px; border-radius: 3px;
|
|
18033
|
+
font-family: var(--ff-mono); font-size: 10px; line-height: 14px;
|
|
18034
|
+
color: var(--t-secondary);
|
|
18035
|
+
transition: color 0.12s, background-color 0.12s, border-color 0.12s;
|
|
18036
|
+
}
|
|
18037
|
+
.fe-editor-find-toggle:hover { background: rgba(255,255,255,0.05); color: var(--t-bright); }
|
|
18038
|
+
.fe-editor-find-toggle[aria-pressed="true"] {
|
|
18039
|
+
background: rgba(99,102,241,0.12); border-color: rgba(99,102,241,0.35); color: #a5b4fc;
|
|
18040
|
+
}
|
|
17274
18041
|
.fe-editor-find-count {
|
|
17275
18042
|
font-size: 10px;
|
|
17276
18043
|
font-family: var(--ff-mono);
|
|
17277
|
-
color: var(--t-
|
|
18044
|
+
color: var(--t-secondary);
|
|
17278
18045
|
min-width: 50px;
|
|
17279
18046
|
text-align: center;
|
|
17280
18047
|
}
|
|
@@ -17339,11 +18106,13 @@
|
|
|
17339
18106
|
.fe-editor-goto.open {
|
|
17340
18107
|
display: flex;
|
|
17341
18108
|
}
|
|
17342
|
-
.fe-editor-goto-label
|
|
18109
|
+
.fe-editor-goto-label,
|
|
18110
|
+
.fe-editor-goto-hint {
|
|
17343
18111
|
font-size: 11px;
|
|
17344
18112
|
font-family: var(--ff-mono);
|
|
17345
18113
|
color: var(--t-muted);
|
|
17346
18114
|
}
|
|
18115
|
+
.fe-editor-goto-hint { font-size: 10px; }
|
|
17347
18116
|
.fe-editor-goto-input {
|
|
17348
18117
|
width: 80px;
|
|
17349
18118
|
background: rgba(0,0,0,0.2);
|
|
@@ -17358,43 +18127,16 @@
|
|
|
17358
18127
|
}
|
|
17359
18128
|
.fe-editor-goto-input::-webkit-inner-spin-button,
|
|
17360
18129
|
.fe-editor-goto-input::-webkit-outer-spin-button {
|
|
17361
|
-
-webkit-appearance: none;
|
|
17362
|
-
margin: 0;
|
|
17363
|
-
}
|
|
17364
|
-
.fe-editor-goto-input:focus {
|
|
17365
|
-
border-color: rgba(99,102,241,0.4);
|
|
17366
|
-
}
|
|
17367
|
-
|
|
17368
|
-
/* Line highlight */
|
|
17369
|
-
.fe-editor-line-highlight {
|
|
17370
|
-
position: absolute;
|
|
17371
|
-
left: 48px;
|
|
17372
|
-
right: 0;
|
|
17373
|
-
height: 20px;
|
|
17374
|
-
background: rgba(255,255,255,0.03);
|
|
17375
|
-
pointer-events: none;
|
|
17376
|
-
z-index: 0;
|
|
17377
|
-
transition: top 0.05s;
|
|
18130
|
+
-webkit-appearance: none;
|
|
18131
|
+
margin: 0;
|
|
17378
18132
|
}
|
|
17379
|
-
|
|
17380
|
-
|
|
17381
|
-
.fe-editor-scrollmap {
|
|
17382
|
-
position: absolute;
|
|
17383
|
-
top: 0;
|
|
17384
|
-
right: 0;
|
|
17385
|
-
width: 6px;
|
|
17386
|
-
height: 100%;
|
|
17387
|
-
background: rgba(0,0,0,0.15);
|
|
17388
|
-
z-index: 2;
|
|
17389
|
-
pointer-events: none;
|
|
18133
|
+
.fe-editor-goto-input:focus {
|
|
18134
|
+
border-color: rgba(99,102,241,0.4);
|
|
17390
18135
|
}
|
|
17391
|
-
|
|
17392
|
-
|
|
17393
|
-
|
|
17394
|
-
|
|
17395
|
-
background: rgba(255,255,255,0.1);
|
|
17396
|
-
border-radius: 3px;
|
|
17397
|
-
transition: top 0.08s, height 0.08s;
|
|
18136
|
+
|
|
18137
|
+
@media (prefers-reduced-motion: reduce) {
|
|
18138
|
+
.fe-editor-panel,
|
|
18139
|
+
.fe-editor-fold--open { transition: none; }
|
|
17398
18140
|
}
|
|
17399
18141
|
|
|
17400
18142
|
/* ── Multi-select bar (shared) ── */
|
|
@@ -17471,6 +18213,8 @@
|
|
|
17471
18213
|
flex-direction: column;
|
|
17472
18214
|
align-items: center;
|
|
17473
18215
|
justify-content: center;
|
|
18216
|
+
padding: 0 16px;
|
|
18217
|
+
box-sizing: border-box;
|
|
17474
18218
|
background: #000000;
|
|
17475
18219
|
transition: opacity 0.8s;
|
|
17476
18220
|
}
|
|
@@ -17543,12 +18287,71 @@
|
|
|
17543
18287
|
cursor: wait;
|
|
17544
18288
|
}
|
|
17545
18289
|
#loading-action-btn svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; }
|
|
18290
|
+
/* A start under way: the sentence (what is known), the page's own clock, a
|
|
18291
|
+
quieter second sentence, then the steps the launcher reported with the
|
|
18292
|
+
time each one happened (ui-loading.js renderStart). */
|
|
17546
18293
|
#loading-action-status {
|
|
17547
|
-
margin-top:
|
|
18294
|
+
margin-top: 12px;
|
|
18295
|
+
max-width: 420px;
|
|
18296
|
+
margin-left: auto;
|
|
18297
|
+
margin-right: auto;
|
|
18298
|
+
font-size: 12px;
|
|
18299
|
+
line-height: 1.5;
|
|
18300
|
+
color: rgba(255,255,255,0.6);
|
|
18301
|
+
letter-spacing: 0.03em;
|
|
18302
|
+
}
|
|
18303
|
+
#loading-action-elapsed {
|
|
18304
|
+
margin-top: 4px;
|
|
18305
|
+
font-family: 'JetBrains Mono', monospace;
|
|
18306
|
+
font-size: 11px;
|
|
18307
|
+
font-variant-numeric: tabular-nums;
|
|
18308
|
+
color: rgba(255,255,255,0.45);
|
|
18309
|
+
}
|
|
18310
|
+
#loading-action-hint {
|
|
18311
|
+
margin-top: 4px;
|
|
18312
|
+
max-width: 420px;
|
|
18313
|
+
margin-left: auto;
|
|
18314
|
+
margin-right: auto;
|
|
17548
18315
|
font-size: 11px;
|
|
18316
|
+
line-height: 1.5;
|
|
17549
18317
|
color: rgba(255,255,255,0.25);
|
|
17550
18318
|
letter-spacing: 0.05em;
|
|
17551
18319
|
}
|
|
18320
|
+
#loading-action-trail {
|
|
18321
|
+
list-style: none;
|
|
18322
|
+
margin: 12px auto 0;
|
|
18323
|
+
padding: 0;
|
|
18324
|
+
max-width: 260px;
|
|
18325
|
+
font-size: 11px;
|
|
18326
|
+
line-height: 1.7;
|
|
18327
|
+
color: rgba(255,255,255,0.25);
|
|
18328
|
+
}
|
|
18329
|
+
#loading-action-trail li {
|
|
18330
|
+
display: flex;
|
|
18331
|
+
justify-content: space-between;
|
|
18332
|
+
gap: 12px;
|
|
18333
|
+
}
|
|
18334
|
+
#loading-action-trail .at {
|
|
18335
|
+
font-family: 'JetBrains Mono', monospace;
|
|
18336
|
+
font-variant-numeric: tabular-nums;
|
|
18337
|
+
color: rgba(255,255,255,0.45);
|
|
18338
|
+
}
|
|
18339
|
+
#loading-action-log {
|
|
18340
|
+
margin-top: 10px;
|
|
18341
|
+
max-width: 420px;
|
|
18342
|
+
margin-left: auto;
|
|
18343
|
+
margin-right: auto;
|
|
18344
|
+
font-family: 'JetBrains Mono', monospace;
|
|
18345
|
+
font-size: 10.5px;
|
|
18346
|
+
line-height: 1.5;
|
|
18347
|
+
color: rgba(255,255,255,0.25);
|
|
18348
|
+
overflow-wrap: anywhere;
|
|
18349
|
+
user-select: all;
|
|
18350
|
+
}
|
|
18351
|
+
#loading-action-elapsed:empty,
|
|
18352
|
+
#loading-action-hint:empty,
|
|
18353
|
+
#loading-action-trail:empty,
|
|
18354
|
+
#loading-action-log:empty { display: none; }
|
|
17552
18355
|
|
|
17553
18356
|
/* Server offline — mascot + start command */
|
|
17554
18357
|
#loading-mascot {
|
|
@@ -17558,6 +18361,15 @@
|
|
|
17558
18361
|
animation: mascot-sleep 4s ease-in-out infinite;
|
|
17559
18362
|
}
|
|
17560
18363
|
#loading-overlay.server-offline #loading-mascot { display: block; }
|
|
18364
|
+
/* The rig (shared/synabun-mascot.js) draws in currentColor. Asleep, the bob
|
|
18365
|
+
and the z below carry it; in every other state the rig plays its own pose. */
|
|
18366
|
+
#loading-mascot .synabun-mascot { color: #ffffff; }
|
|
18367
|
+
#loading-mascot:is([data-state="waking"], [data-state="working"], [data-state="ready"], [data-state="failed"], [data-state="stalled"]) { animation: none; }
|
|
18368
|
+
#loading-mascot:is([data-state="waking"], [data-state="working"], [data-state="ready"], [data-state="failed"], [data-state="stalled"]) #loading-zzz { display: none; }
|
|
18369
|
+
@media (prefers-reduced-motion: reduce) {
|
|
18370
|
+
#loading-mascot, #loading-zzz { animation: none; }
|
|
18371
|
+
#loading-zzz { opacity: 0.3; }
|
|
18372
|
+
}
|
|
17561
18373
|
@keyframes mascot-sleep {
|
|
17562
18374
|
0%, 100% { transform: translateY(0); }
|
|
17563
18375
|
50% { transform: translateY(-4px); }
|
|
@@ -17582,6 +18394,15 @@
|
|
|
17582
18394
|
text-align: center;
|
|
17583
18395
|
}
|
|
17584
18396
|
#loading-overlay.server-offline #loading-server-cmd { display: block; }
|
|
18397
|
+
/* A restart the user asked for (ui-loading.js beginRestart). The overlay goes
|
|
18398
|
+
over the running app: there in the frame of the click, so no fade-in, and
|
|
18399
|
+
above every panel and dialog that is open (at boot nothing else is). While
|
|
18400
|
+
the restart runs there is nothing to press and no command to type; refused,
|
|
18401
|
+
the server is still there. */
|
|
18402
|
+
#loading-overlay.over-app { transition: none; z-index: 2147483647; }
|
|
18403
|
+
#loading-overlay.restart-busy #loading-action-btn,
|
|
18404
|
+
#loading-overlay.restart-busy #loading-server-cmd,
|
|
18405
|
+
#loading-overlay.restart-refused #loading-server-cmd { display: none; }
|
|
17585
18406
|
#loading-server-cmd-hint {
|
|
17586
18407
|
font-size: 12px;
|
|
17587
18408
|
color: rgba(255,255,255,0.25);
|
|
@@ -23575,9 +24396,12 @@
|
|
|
23575
24396
|
gap: 4px;
|
|
23576
24397
|
}
|
|
23577
24398
|
#term-minimized-tray:empty { display: none; }
|
|
23578
|
-
/*
|
|
23579
|
-
|
|
23580
|
-
|
|
24399
|
+
/* In the top-right row it is a row under the bar: placed with the row ("Fit"). The menus of the dock (workspaces,
|
|
24400
|
+
bookmarks, invite) draw over it, opaque: their blur lives inside the dock's own backdrop root and cannot reach
|
|
24401
|
+
the pills, and through 95% glass their labels still read. */
|
|
24402
|
+
#term-minimized-tray > .term-minimized-pill {
|
|
24403
|
+
max-width: 100%;
|
|
24404
|
+
}
|
|
23581
24405
|
|
|
23582
24406
|
.term-minimized-pill {
|
|
23583
24407
|
display: flex;
|
|
@@ -25494,270 +26318,486 @@
|
|
|
25494
26318
|
|
|
25495
26319
|
|
|
25496
26320
|
/* ═══════════════════════════════════════════
|
|
25497
|
-
|
|
26321
|
+
FLOATING WINDOW CHROME
|
|
26322
|
+
Shared roles reuse the workspace palette and user appearance settings.
|
|
26323
|
+
Terminal output stays opaque; glass is confined to its title bar.
|
|
25498
26324
|
═══════════════════════════════════════════ */
|
|
25499
|
-
|
|
25500
|
-
|
|
25501
|
-
|
|
25502
|
-
|
|
25503
|
-
|
|
25504
|
-
|
|
25505
|
-
|
|
25506
|
-
|
|
25507
|
-
|
|
25508
|
-
|
|
25509
|
-
|
|
25510
|
-
|
|
25511
|
-
|
|
25512
|
-
|
|
25513
|
-
|
|
25514
|
-
|
|
25515
|
-
|
|
25516
|
-
|
|
25517
|
-
|
|
25518
|
-
}
|
|
25519
|
-
.
|
|
25520
|
-
|
|
25521
|
-
|
|
25522
|
-
|
|
25523
|
-
|
|
25524
|
-
|
|
25525
|
-
|
|
25526
|
-
|
|
25527
|
-
|
|
25528
|
-
|
|
25529
|
-
|
|
25530
|
-
|
|
25531
|
-
|
|
25532
|
-
.
|
|
25533
|
-
|
|
25534
|
-
|
|
25535
|
-
|
|
25536
|
-
color: var(--
|
|
25537
|
-
|
|
25538
|
-
|
|
25539
|
-
}
|
|
25540
|
-
.
|
|
25541
|
-
|
|
25542
|
-
|
|
25543
|
-
|
|
25544
|
-
}
|
|
25545
|
-
.
|
|
25546
|
-
|
|
25547
|
-
|
|
25548
|
-
|
|
25549
|
-
|
|
25550
|
-
|
|
25551
|
-
|
|
25552
|
-
|
|
25553
|
-
|
|
25554
|
-
|
|
25555
|
-
|
|
25556
|
-
|
|
25557
|
-
|
|
25558
|
-
|
|
25559
|
-
|
|
25560
|
-
|
|
25561
|
-
|
|
25562
|
-
|
|
25563
|
-
|
|
25564
|
-
|
|
25565
|
-
|
|
25566
|
-
|
|
25567
|
-
.
|
|
25568
|
-
|
|
25569
|
-
|
|
25570
|
-
|
|
25571
|
-
|
|
25572
|
-
.
|
|
25573
|
-
|
|
25574
|
-
.cr-empty-icon svg { width: 32px; height: 32px; }
|
|
25575
|
-
.cr-empty p { margin: 4px 0; font-size: var(--fs-sm); line-height: 1.5; }
|
|
25576
|
-
.cr-empty-hint { font-size: var(--fs-xs); color: var(--t-faint); }
|
|
25577
|
-
.cr-empty-hint strong { color: var(--t-muted); }
|
|
25578
|
-
|
|
25579
|
-
/* ── Category group ── */
|
|
25580
|
-
.cr-category { margin-bottom: 2px; }
|
|
25581
|
-
.cr-cat-header {
|
|
25582
|
-
display: flex; align-items: center; gap: 6px;
|
|
25583
|
-
padding: 8px 10px; border-radius: var(--r-small);
|
|
25584
|
-
cursor: pointer; user-select: none;
|
|
25585
|
-
transition: background 0.12s;
|
|
25586
|
-
}
|
|
25587
|
-
.cr-cat-header:hover { background: var(--s-hover); }
|
|
25588
|
-
.cr-cat-chevron {
|
|
25589
|
-
display: flex; align-items: center; justify-content: center;
|
|
25590
|
-
width: 16px; height: 16px; flex-shrink: 0;
|
|
25591
|
-
color: var(--t-muted);
|
|
25592
|
-
transition: transform 0.15s ease;
|
|
25593
|
-
}
|
|
25594
|
-
.cr-category.collapsed .cr-cat-chevron { transform: rotate(0deg); }
|
|
25595
|
-
.cr-category:not(.collapsed) .cr-cat-chevron { transform: rotate(90deg); }
|
|
25596
|
-
.cr-cat-dot {
|
|
25597
|
-
width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
|
|
25598
|
-
}
|
|
25599
|
-
.cr-cat-name {
|
|
25600
|
-
flex: 1; min-width: 0;
|
|
25601
|
-
font-size: var(--fs-sm); font-weight: 500; color: var(--t-bright);
|
|
25602
|
-
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
26325
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26326
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel, .styleguide-panel,
|
|
26327
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab,
|
|
26328
|
+
.sp-sidepanel.sp-floating, .fe-editor-panel, .sched-prompt-modal, .term-picker-modal) {
|
|
26329
|
+
--fw-surface: var(--s-panel);
|
|
26330
|
+
--fw-text: var(--t-bright);
|
|
26331
|
+
--fw-secondary: var(--t-primary);
|
|
26332
|
+
--fw-muted: var(--t-primary);
|
|
26333
|
+
--fw-border: var(--b-visible);
|
|
26334
|
+
--fw-separator: var(--b-light);
|
|
26335
|
+
--fw-focus: var(--accent-blue);
|
|
26336
|
+
--fw-radius: calc(var(--glass-radius) * 1px);
|
|
26337
|
+
--fw-control-radius: var(--r-card);
|
|
26338
|
+
--fw-header-control-size: max(24px, calc(28px * var(--font-scale, 1)));
|
|
26339
|
+
--fw-header-min-height: calc(var(--fw-header-control-size) + 8px);
|
|
26340
|
+
--fw-shadow: var(--shadow-xl);
|
|
26341
|
+
--fw-header: linear-gradient(180deg, var(--s-light), var(--s-subtle));
|
|
26342
|
+
/* Dark on-primary role from the project Style Guide. */
|
|
26343
|
+
--fw-on-accent: #0e141c;
|
|
26344
|
+
}
|
|
26345
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26346
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel, .styleguide-panel,
|
|
26347
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab,
|
|
26348
|
+
.sp-sidepanel.sp-floating, .sched-prompt-modal, .term-picker-modal):is(.glass, .term-float-tab, .sp-floating) {
|
|
26349
|
+
border: 1px solid var(--fw-border);
|
|
26350
|
+
border-radius: var(--fw-radius);
|
|
26351
|
+
box-shadow: var(--fw-shadow), var(--shadow-highlight);
|
|
26352
|
+
}
|
|
26353
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26354
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel, .styleguide-panel,
|
|
26355
|
+
.image-gallery-panel, .detail-card, .tw, .sched-prompt-modal, .term-picker-modal).glass {
|
|
26356
|
+
background: var(--fw-surface);
|
|
26357
|
+
}
|
|
26358
|
+
body .sp-sidepanel.sp-floating {
|
|
26359
|
+
background: var(--fw-surface);
|
|
26360
|
+
}
|
|
26361
|
+
body .fe-editor-panel {
|
|
26362
|
+
border-left-color: var(--fw-border);
|
|
26363
|
+
}
|
|
26364
|
+
/* Preserve the terminal's snap geometry and cheaper drag shadow. */
|
|
26365
|
+
body .term-float-tab.term-float-tab.float-dragging { box-shadow: 0 8px 24px rgba(0,0,0,0.45), 0 0 0 1px rgba(0,0,0,0.4); }
|
|
26366
|
+
body :is(.term-float-tab, .sp-sidepanel.sp-floating):is(:focus-within, .sp-window-focused) {
|
|
26367
|
+
border-color: var(--fw-focus);
|
|
26368
|
+
}
|
|
26369
|
+
body .term-float-tab.term-float-tab.snapped-r { border-top-right-radius: 0; border-bottom-right-radius: 0; border-right-color: transparent; }
|
|
26370
|
+
body .term-float-tab.term-float-tab.snapped-l { border-top-left-radius: 0; border-bottom-left-radius: 0; border-left-color: transparent; }
|
|
26371
|
+
body .term-float-tab.term-float-tab.snapped-t { border-top-left-radius: 0; border-top-right-radius: 0; border-top-color: transparent; }
|
|
26372
|
+
body .term-float-tab.term-float-tab.snapped-b { border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-color: transparent; }
|
|
26373
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26374
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel, .styleguide-panel,
|
|
26375
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab,
|
|
26376
|
+
.sp-sidepanel.sp-floating, .fe-editor-panel, .sched-prompt-modal, .term-picker-modal)
|
|
26377
|
+
> :is(.settings-panel-header, .ss-header, .as-header, .sched-header,
|
|
26378
|
+
.sm-header, .cr-header, .sg-header, .ig-header, .detail-header, .tw-header,
|
|
26379
|
+
.term-float-tab-header, .cp-header, .cxp-header, .ocpv2-header, .asp-header,
|
|
26380
|
+
.fe-editor-header, .sched-prompt-head, .term-picker-header) {
|
|
26381
|
+
min-height: var(--fw-header-min-height);
|
|
26382
|
+
height: auto;
|
|
26383
|
+
margin: 0;
|
|
26384
|
+
border-radius: 0;
|
|
26385
|
+
box-shadow: none;
|
|
26386
|
+
gap: 6px;
|
|
26387
|
+
padding: 4px 12px;
|
|
26388
|
+
flex-shrink: 0;
|
|
26389
|
+
border-bottom: 1px solid var(--fw-separator);
|
|
26390
|
+
background: var(--fw-header);
|
|
26391
|
+
color: var(--fw-text);
|
|
26392
|
+
}
|
|
26393
|
+
body .term-float-tab-header { flex-wrap: wrap; }
|
|
26394
|
+
/* The terminal title bar keeps its own palette tint: --fh / --fs are set per
|
|
26395
|
+
window by _applyFloatColor(), so a picked swatch recolors it at once. The
|
|
26396
|
+
doubled class outweighs the shared header rule above, whose :is() lists
|
|
26397
|
+
count as their heaviest entry (.sp-sidepanel.sp-floating). */
|
|
26398
|
+
body .term-float-tab.term-float-tab > .term-float-tab-header {
|
|
26399
|
+
background: linear-gradient(to bottom, hsla(var(--fh), calc(var(--fs) * 0.5), 16%, 0.60), hsla(var(--fh), calc(var(--fs) * 0.5), 13%, 0.65));
|
|
25603
26400
|
}
|
|
25604
|
-
.
|
|
25605
|
-
|
|
25606
|
-
|
|
26401
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26402
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel,
|
|
26403
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab,
|
|
26404
|
+
.sp-sidepanel.sp-floating, .fe-editor-panel)
|
|
26405
|
+
> :is(.settings-panel-header, .ss-header, .as-header, .sched-header,
|
|
26406
|
+
.sm-header, .cr-header, .ig-header, .detail-header, .tw-header,
|
|
26407
|
+
.term-float-tab-header, .cp-header, .cxp-header, .ocpv2-header, .asp-header, .fe-editor-header)
|
|
26408
|
+
:is(h3, .ig-title, .detail-header-name, .term-float-tab-title) {
|
|
26409
|
+
font-family: var(--ff-heading);
|
|
26410
|
+
font-size: var(--fs-sm);
|
|
25607
26411
|
font-weight: 500;
|
|
25608
|
-
|
|
25609
|
-
|
|
25610
|
-
|
|
25611
|
-
|
|
25612
|
-
|
|
25613
|
-
.cr-cat-header:hover .cr-cat-actions { opacity: 1; }
|
|
25614
|
-
.cr-cat-body { padding-left: 4px; }
|
|
25615
|
-
.cr-cat-empty {
|
|
25616
|
-
padding: 6px 8px 6px 34px;
|
|
25617
|
-
font-size: var(--fs-xs); color: var(--t-faint); font-style: italic;
|
|
25618
|
-
}
|
|
25619
|
-
.cr-category.collapsed .cr-cat-body { display: none; }
|
|
25620
|
-
|
|
25621
|
-
/* ── Command row ── */
|
|
25622
|
-
.cr-cmd {
|
|
25623
|
-
display: flex; align-items: center; gap: 8px;
|
|
25624
|
-
padding: 6px 8px 6px 22px;
|
|
25625
|
-
border-radius: var(--r-small);
|
|
25626
|
-
transition: background 0.12s;
|
|
25627
|
-
}
|
|
25628
|
-
.cr-cmd:hover { background: var(--s-hover); }
|
|
25629
|
-
.cr-run-btn {
|
|
25630
|
-
width: 28px; height: 28px; flex-shrink: 0;
|
|
25631
|
-
display: flex; align-items: center; justify-content: center;
|
|
25632
|
-
background: rgba(255,255,255,0.04); border: 1px solid var(--b-subtle);
|
|
25633
|
-
border-radius: var(--r-small); cursor: pointer;
|
|
25634
|
-
color: var(--t-muted); transition: all 0.15s;
|
|
25635
|
-
}
|
|
25636
|
-
.cr-run-btn:hover {
|
|
25637
|
-
color: #6dd58c; background: rgba(109,213,140,0.1);
|
|
25638
|
-
border-color: rgba(109,213,140,0.3);
|
|
25639
|
-
}
|
|
25640
|
-
.cr-run-btn:active {
|
|
25641
|
-
background: rgba(109,213,140,0.18);
|
|
25642
|
-
}
|
|
25643
|
-
.cr-cmd-info { flex: 1; min-width: 0; }
|
|
25644
|
-
.cr-cmd-name {
|
|
25645
|
-
font-size: var(--fs-sm); color: var(--t-bright); font-weight: 500;
|
|
25646
|
-
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
25647
|
-
}
|
|
25648
|
-
.cr-cmd-text {
|
|
25649
|
-
font-size: 11px; color: var(--t-muted);
|
|
25650
|
-
font-family: 'JetBrains Mono', monospace;
|
|
25651
|
-
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
25652
|
-
margin-top: 1px;
|
|
25653
|
-
}
|
|
25654
|
-
.cr-cmd-cwd {
|
|
25655
|
-
font-size: 10px; color: var(--t-faint);
|
|
25656
|
-
font-family: 'JetBrains Mono', monospace;
|
|
25657
|
-
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
25658
|
-
margin-top: 1px;
|
|
25659
|
-
}
|
|
25660
|
-
.cr-cmd-actions {
|
|
25661
|
-
display: flex; gap: 2px;
|
|
25662
|
-
opacity: 0; transition: opacity 0.12s;
|
|
25663
|
-
}
|
|
25664
|
-
.cr-cmd:hover .cr-cmd-actions { opacity: 1; }
|
|
25665
|
-
|
|
25666
|
-
/* ── Icon buttons (edit/delete) ── */
|
|
25667
|
-
.cr-icon-btn {
|
|
25668
|
-
width: 24px; height: 24px;
|
|
25669
|
-
display: flex; align-items: center; justify-content: center;
|
|
25670
|
-
background: none; border: none;
|
|
25671
|
-
color: var(--t-muted); cursor: pointer;
|
|
25672
|
-
border-radius: var(--r-small);
|
|
25673
|
-
transition: all 0.12s;
|
|
25674
|
-
}
|
|
25675
|
-
.cr-icon-btn:hover { background: var(--s-hover); color: var(--t-bright); }
|
|
25676
|
-
.cr-icon-btn--danger:hover { color: #f87171; background: rgba(248,113,113,0.1); }
|
|
25677
|
-
|
|
25678
|
-
/* ── Inline modal ── */
|
|
25679
|
-
.cr-modal-overlay {
|
|
25680
|
-
position: absolute; inset: 0; z-index: 10;
|
|
25681
|
-
background: rgba(0,0,0,0.45);
|
|
25682
|
-
display: flex; align-items: center; justify-content: center;
|
|
25683
|
-
backdrop-filter: blur(2px);
|
|
25684
|
-
}
|
|
25685
|
-
.cr-modal-overlay.hidden { display: none; }
|
|
25686
|
-
.cr-modal {
|
|
25687
|
-
width: 340px; max-width: 92%;
|
|
25688
|
-
border-radius: 12px;
|
|
26412
|
+
letter-spacing: 0;
|
|
26413
|
+
text-transform: none;
|
|
26414
|
+
line-height: 1.4;
|
|
26415
|
+
color: var(--fw-text);
|
|
26416
|
+
min-width: 0;
|
|
25689
26417
|
overflow: hidden;
|
|
26418
|
+
text-overflow: ellipsis;
|
|
25690
26419
|
}
|
|
25691
|
-
.
|
|
25692
|
-
|
|
25693
|
-
|
|
25694
|
-
|
|
25695
|
-
|
|
25696
|
-
|
|
25697
|
-
|
|
25698
|
-
|
|
25699
|
-
|
|
25700
|
-
|
|
25701
|
-
|
|
25702
|
-
|
|
25703
|
-
|
|
25704
|
-
|
|
25705
|
-
|
|
25706
|
-
|
|
25707
|
-
|
|
25708
|
-
|
|
25709
|
-
|
|
25710
|
-
|
|
25711
|
-
|
|
25712
|
-
|
|
25713
|
-
|
|
25714
|
-
|
|
25715
|
-
|
|
25716
|
-
|
|
25717
|
-
|
|
25718
|
-
|
|
25719
|
-
|
|
25720
|
-
|
|
25721
|
-
|
|
25722
|
-
|
|
25723
|
-
|
|
25724
|
-
|
|
25725
|
-
|
|
25726
|
-
|
|
25727
|
-
|
|
26420
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26421
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel,
|
|
26422
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab,
|
|
26423
|
+
.sp-sidepanel.sp-floating, .fe-editor-panel)
|
|
26424
|
+
> :is(.settings-panel-header, .ss-header, .as-header, .sched-header,
|
|
26425
|
+
.sm-header, .cr-header, .ig-header, .detail-header, .tw-header,
|
|
26426
|
+
.term-float-tab-header, .cp-header, .cxp-header, .ocpv2-header, .asp-header, .fe-editor-header)
|
|
26427
|
+
:is(.settings-panel-close, .backdrop-toggle-btn, .pin-btn, .ss-close,
|
|
26428
|
+
.ss-header-btn, .as-close, .as-header-btn, .sched-close, .sched-header-btn,
|
|
26429
|
+
.sm-close, .sm-header-btn, .cr-close, .ig-btn, .detail-action-btn, .tw-close,
|
|
26430
|
+
.tw-header-btn, .term-float-tab-btn, .cp-header-btn, .cxp-header-btn,
|
|
26431
|
+
.ocpv2-header-btn, .asp-header-btn, .cp-session-btn, .cp-header-rename-btn,
|
|
26432
|
+
.cxp-btn, .cxp-session-btn, .cxp-header-rename, .ocpv2-btn, .ocpv2-session-btn,
|
|
26433
|
+
.ocpv2-header-rename, .asp-btn, .asp-tabs-btn, .sp-window-toggle, .sp-window-move,
|
|
26434
|
+
.fe-editor-back, .fe-editor-action, .fe-editor-btn) {
|
|
26435
|
+
min-width: var(--fw-header-control-size);
|
|
26436
|
+
min-height: var(--fw-header-control-size);
|
|
26437
|
+
height: auto;
|
|
26438
|
+
padding: 4px 6px;
|
|
26439
|
+
flex-shrink: 0;
|
|
26440
|
+
border-radius: var(--fw-control-radius);
|
|
26441
|
+
color: var(--fw-secondary);
|
|
26442
|
+
transition: color 150ms ease, background-color 150ms ease, border-color 150ms ease;
|
|
26443
|
+
}
|
|
26444
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26445
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel,
|
|
26446
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab,
|
|
26447
|
+
.sp-sidepanel.sp-floating, .fe-editor-panel)
|
|
26448
|
+
> :is(.settings-panel-header, .ss-header, .as-header, .sched-header,
|
|
26449
|
+
.sm-header, .cr-header, .ig-header, .detail-header, .tw-header,
|
|
26450
|
+
.term-float-tab-header, .cp-header, .cxp-header, .ocpv2-header, .asp-header, .fe-editor-header)
|
|
26451
|
+
:is(.settings-panel-close, .backdrop-toggle-btn, .pin-btn, .ss-close,
|
|
26452
|
+
.ss-header-btn, .as-close, .as-header-btn, .sched-close, .sched-header-btn,
|
|
26453
|
+
.sm-close, .sm-header-btn, .cr-close, .ig-btn, .detail-action-btn, .tw-close,
|
|
26454
|
+
.tw-header-btn, .term-float-tab-btn, .cp-header-btn, .cxp-header-btn,
|
|
26455
|
+
.ocpv2-header-btn, .asp-header-btn, .cp-session-btn, .cp-header-rename-btn,
|
|
26456
|
+
.cxp-btn, .cxp-session-btn, .cxp-header-rename, .ocpv2-btn, .ocpv2-session-btn,
|
|
26457
|
+
.ocpv2-header-rename, .asp-btn, .asp-tabs-btn, .sp-window-toggle, .sp-window-move,
|
|
26458
|
+
.fe-editor-back, .fe-editor-action, .fe-editor-btn):hover:not(:disabled) {
|
|
26459
|
+
background-color: var(--s-hover);
|
|
26460
|
+
color: var(--fw-text);
|
|
26461
|
+
}
|
|
26462
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26463
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel,
|
|
26464
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab,
|
|
26465
|
+
.sp-sidepanel.sp-floating, .fe-editor-panel)
|
|
26466
|
+
:is(button, a, input, select, textarea, [tabindex]):focus-visible {
|
|
26467
|
+
outline: 2px solid var(--fw-focus);
|
|
26468
|
+
outline-offset: 2px;
|
|
25728
26469
|
}
|
|
25729
|
-
.
|
|
25730
|
-
|
|
25731
|
-
|
|
25732
|
-
|
|
25733
|
-
|
|
25734
|
-
|
|
25735
|
-
|
|
25736
|
-
|
|
26470
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26471
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel,
|
|
26472
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab, .sp-sidepanel.sp-floating)
|
|
26473
|
+
> :is(.settings-panel-header, .ss-header, .as-header, .sched-header,
|
|
26474
|
+
.sm-header, .cr-header, .ig-header, .detail-header, .tw-header,
|
|
26475
|
+
.term-float-tab-header, .cp-header, .cxp-header, .ocpv2-header, .asp-header)
|
|
26476
|
+
:is(.settings-panel-close, .ss-close, .as-close, .sched-close, .sm-close,
|
|
26477
|
+
.cr-close, .tw-close, .close-btn, .cp-close-btn, .cxp-btn-danger,
|
|
26478
|
+
.ocpv2-btn-danger, .asp-close, .detail-action-btn--danger):hover:not(:disabled) {
|
|
26479
|
+
color: var(--accent-red);
|
|
26480
|
+
background-color: var(--accent-red-bg);
|
|
26481
|
+
}
|
|
26482
|
+
body .fe-editor-header :is(.fe-editor-action, .fe-editor-back) svg { stroke: currentColor; }
|
|
26483
|
+
body .term-float-tab.pinned .term-float-tab-header .pin-btn,
|
|
26484
|
+
body .fe-editor-header .fe-editor-action.active,
|
|
26485
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26486
|
+
.schedules-studio-panel, .session-monitor-panel, .image-gallery-panel, .tw)
|
|
26487
|
+
> :is(.settings-panel-header, .ss-header, .as-header, .sched-header, .sm-header, .ig-header, .tw-header)
|
|
26488
|
+
:is(.backdrop-toggle-btn.active, .pin-btn.active) {
|
|
26489
|
+
color: var(--fw-focus);
|
|
26490
|
+
background-color: var(--accent-blue-bg);
|
|
26491
|
+
}
|
|
26492
|
+
body .fe-editor-header .fe-editor-action.active svg { stroke: var(--fw-focus); }
|
|
26493
|
+
body .term-float-tab-header .term-float-color-strip {
|
|
26494
|
+
width: var(--fw-header-control-size); height: var(--fw-header-control-size);
|
|
26495
|
+
min-width: var(--fw-header-control-size); min-height: var(--fw-header-control-size);
|
|
26496
|
+
border: 0; padding: calc((var(--fw-header-control-size) - 14px) / 2);
|
|
26497
|
+
background-clip: content-box;
|
|
26498
|
+
}
|
|
26499
|
+
/* Keep terminal and compact memory-card chrome smaller than full dialogs. */
|
|
26500
|
+
body .term-float-tab.term-float-tab,
|
|
26501
|
+
body .detail-card.compact { --fw-header-control-size: max(24px, calc(24px * var(--font-scale, 1))); }
|
|
26502
|
+
body .term-float-tab.term-float-tab > .term-float-tab-header { padding: 3px 8px; }
|
|
26503
|
+
body .detail-card.detail-card > .detail-header .detail-header-name,
|
|
26504
|
+
body .term-float-tab.term-float-tab > .term-float-tab-header .term-float-tab-title { font-size: var(--fs-xs); }
|
|
26505
|
+
body :is(.sched-header-icon, .sm-header-icon, .ig-icon),
|
|
26506
|
+
body :is(.sched-header-icon, .sm-header-icon, .ig-icon) svg { width: 16px; height: 16px; }
|
|
26507
|
+
body .sp-sidepanel.sp-floating > :is(.cp-header, .cxp-header, .ocpv2-header, .asp-header) { flex-wrap: wrap; }
|
|
26508
|
+
|
|
26509
|
+
body .term-float-tab-title { flex: 1 1 100px; }
|
|
26510
|
+
body .term-float-tab-actions { flex-wrap: wrap; max-width: 100%; }
|
|
26511
|
+
body .detail-header-actions { flex-wrap: wrap; }
|
|
26512
|
+
body .detail-card.compact > .detail-header { padding: 2px 8px; }
|
|
26513
|
+
body :is(.ss-header-actions, .as-header-actions, .sched-header-actions, .tw-header-actions,
|
|
26514
|
+
.sm-header-actions, .ig-header-right) { flex-wrap: wrap; max-width: 100%; gap: 4px; }
|
|
26515
|
+
body :is(.ss-header-left, .as-header-left, .sched-header-left, .tw-header-left,
|
|
26516
|
+
.sm-header-left, .ig-header-left, .cr-header-left) { flex-wrap: wrap; gap: 6px; }
|
|
26517
|
+
body :is(.ss-header, .as-header, .sched-header, .tw-header, .fe-editor-header,
|
|
26518
|
+
.sm-header, .ig-header, .cr-header) { flex-wrap: wrap; }
|
|
26519
|
+
body :is(.ss-header, .as-header, .sched-header, .tw-header, .fe-editor-header,
|
|
26520
|
+
.ss-editor-header, .as-detail-header, .as-picker-header, .as-wizard-header, .as-launch-inline-header)
|
|
26521
|
+
:is(.ss-header-btn, .as-header-btn, .sched-header-btn, .tw-header-btn, .fe-editor-btn) {
|
|
26522
|
+
max-width: 100%; white-space: normal; overflow-wrap: anywhere;
|
|
26523
|
+
}
|
|
26524
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26525
|
+
.schedules-studio-panel, .session-monitor-panel, .image-gallery-panel, .tw) {
|
|
26526
|
+
min-width: min(320px, calc(100vw - 16px));
|
|
26527
|
+
max-width: calc(100vw - 16px);
|
|
26528
|
+
}
|
|
26529
|
+
body :is(.settings-panel, .tw) > :is(.resize-handle-t, .resize-handle-tl, .resize-handle-tr) {
|
|
26530
|
+
top: calc(var(--fw-header-min-height) + 1px);
|
|
26531
|
+
}
|
|
26532
|
+
|
|
26533
|
+
/* Inner editor/dialog title rows, never ordinary section or content headings.
|
|
26534
|
+
Override the older narrow-container padding without fixing their height. */
|
|
26535
|
+
body :is(.ss-editor-header, .as-detail-header, .as-picker-header, .as-wizard-header,
|
|
26536
|
+
.as-launch-inline-header, .as-unsaved-dialog-header, .cat-change-modal-header, .ecm-header) {
|
|
26537
|
+
padding-block: 4px;
|
|
26538
|
+
}
|
|
26539
|
+
body :is(.ss-editor-header, .as-detail-header, .as-picker-header, .as-wizard-header,
|
|
26540
|
+
.as-launch-inline-header, .cat-change-modal-header) { flex-wrap: wrap; gap: 6px 8px; }
|
|
26541
|
+
body :is(.ss-editor-header, .as-detail-header, .as-picker-header, .as-wizard-header,
|
|
26542
|
+
.as-launch-inline-header, .as-unsaved-dialog-header) > button { min-height: 24px; flex-shrink: 0; }
|
|
26543
|
+
body :is(.ss-editor-name, .as-detail-name, .as-wizard-title, .awiz-preset-name, .cat-change-modal-title) {
|
|
26544
|
+
min-width: 0; max-width: 100%; font-weight: 500; white-space: normal; overflow-wrap: anywhere;
|
|
26545
|
+
}
|
|
26546
|
+
body :is(.ecm-title, .as-unsaved-dialog-title, .as-launch-inline-title) { min-width: 0; overflow-wrap: anywhere; }
|
|
26547
|
+
body :is(.ecm-close, .awiz-close, .as-launch-dialog-close) { flex-shrink: 0; }
|
|
26548
|
+
body .as-unsaved-dialog-header { gap: 8px; }
|
|
26549
|
+
body .cat-change-modal-from { min-width: 0; max-width: 100%; flex-wrap: wrap; }
|
|
26550
|
+
body .cat-change-from-badge { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
|
|
26551
|
+
body .awiz-header { padding: 4px 16px; }
|
|
26552
|
+
body .awiz-preset-name, body .cat-change-modal-title { font-size: var(--fs-sm); }
|
|
26553
|
+
body .awiz-preset-icon { font-size: var(--fs-lg); }
|
|
26554
|
+
body .awiz-dots { margin-top: 4px; }
|
|
26555
|
+
body .sched-prompt-head h3 { font-size: var(--fs-sm); font-weight: 500; line-height: 1.4; overflow-wrap: anywhere; }
|
|
26556
|
+
body .sched-prompt-head-text { gap: 8px; }
|
|
26557
|
+
body .sched-prompt-head-text > div { min-width: 0; overflow-wrap: anywhere; }
|
|
26558
|
+
body .sched-prompt-icon { width: 24px; height: 24px; }
|
|
26559
|
+
|
|
26560
|
+
/* Desktop density must not reduce the existing touch targets. */
|
|
26561
|
+
@media (pointer: coarse) {
|
|
26562
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26563
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel, .styleguide-panel,
|
|
26564
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab,
|
|
26565
|
+
.sp-sidepanel.sp-floating, .fe-editor-panel, .sched-prompt-modal, .term-picker-modal) {
|
|
26566
|
+
--fw-header-control-size: max(44px, calc(28px * var(--font-scale, 1)));
|
|
26567
|
+
}
|
|
26568
|
+
body :is(.ss-editor-header, .as-detail-header, .as-picker-header, .as-wizard-header,
|
|
26569
|
+
.as-launch-inline-header, .as-unsaved-dialog-header) > button,
|
|
26570
|
+
body :is(.ecm-close, .awiz-close, .sched-prompt-close),
|
|
26571
|
+
body .as-header .as-sidebar-toggle,
|
|
26572
|
+
body .term-float-tab-header :is(.term-float-profile-btn, .term-float-recall-btn) { min-width: 44px; min-height: 44px; }
|
|
25737
26573
|
}
|
|
25738
|
-
.cr-color-swatch:hover { transform: scale(1.15); }
|
|
25739
|
-
.cr-color-swatch.selected { border-color: var(--t-bright); }
|
|
25740
26574
|
|
|
25741
|
-
|
|
25742
|
-
|
|
25743
|
-
|
|
25744
|
-
|
|
25745
|
-
|
|
25746
|
-
|
|
25747
|
-
|
|
26575
|
+
/* ═══════════════════════════════════════════
|
|
26576
|
+
COMMAND RUNNER — Settings typography, grouped rows and compact controls
|
|
26577
|
+
Uses the shared Settings roles above; shell/glass preferences stay shared.
|
|
26578
|
+
═══════════════════════════════════════════ */
|
|
26579
|
+
.command-runner-panel {
|
|
26580
|
+
position: fixed; z-index: 50100;
|
|
26581
|
+
width: 720px; max-width: calc(100vw - 16px); min-width: min(320px, calc(100vw - 16px));
|
|
26582
|
+
height: 680px; max-height: calc(100dvh - var(--navbar-height, 48px) - 16px);
|
|
26583
|
+
min-height: min(360px, calc(100dvh - var(--navbar-height, 48px) - 16px));
|
|
26584
|
+
display: flex; flex-direction: column; overflow: hidden;
|
|
26585
|
+
container-type: inline-size; container-name: cr;
|
|
26586
|
+
opacity: 0; transform: scale(.97);
|
|
26587
|
+
transition: opacity 150ms ease, transform 150ms ease;
|
|
26588
|
+
color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-sm);
|
|
26589
|
+
--cr-control-radius: var(--radius-control, 5px);
|
|
26590
|
+
--cr-group-radius: var(--radius-group, 9px);
|
|
26591
|
+
--cr-control-height: calc(22px * var(--font-scale, 1));
|
|
26592
|
+
--cr-search-height: calc(34px * var(--font-scale, 1));
|
|
26593
|
+
}
|
|
26594
|
+
body .command-runner-panel {
|
|
26595
|
+
--fw-focus: var(--stg-focus);
|
|
26596
|
+
/* Preserve readable secondary content across user-selected glass backgrounds. */
|
|
26597
|
+
--stg-help: var(--t-primary);
|
|
25748
26598
|
}
|
|
25749
|
-
.
|
|
25750
|
-
.
|
|
25751
|
-
|
|
25752
|
-
|
|
25753
|
-
|
|
26599
|
+
.command-runner-panel.open { opacity: 1; transform: scale(1); }
|
|
26600
|
+
.command-runner-panel.dragging { transition: none; }
|
|
26601
|
+
.cr-header { display: flex; align-items: center; user-select: none; }
|
|
26602
|
+
.cr-header-left { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; }
|
|
26603
|
+
.cr-header h3 { margin: 0; white-space: nowrap; }
|
|
26604
|
+
.cr-count { font-size: var(--fs-xs); font-variant-numeric: tabular-nums; color: var(--stg-help); }
|
|
26605
|
+
.cr-close, .cr-icon-btn {
|
|
26606
|
+
display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
|
|
26607
|
+
width: var(--cr-control-height); height: var(--cr-control-height); padding: 0; border: 0; border-radius: var(--cr-control-radius);
|
|
26608
|
+
color: var(--stg-help); background: transparent; cursor: pointer;
|
|
26609
|
+
transition: color 150ms ease, background-color 150ms ease;
|
|
26610
|
+
}
|
|
26611
|
+
.cr-close { margin-inline-start: auto; }
|
|
26612
|
+
.cr-icon-btn svg { width: 12px; height: 12px; }
|
|
26613
|
+
.cr-icon-btn:hover:not(:disabled) { color: var(--stg-text); background: var(--stg-control-hover); }
|
|
26614
|
+
.cr-icon-btn--danger:hover:not(:disabled) { color: var(--stg-err); }
|
|
26615
|
+
.cr-main { flex: 1; min-height: 0; display: flex; flex-direction: column; }
|
|
26616
|
+
.cr-library-head {
|
|
26617
|
+
display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap;
|
|
26618
|
+
gap: 12px; padding: 20px 22px 16px; flex-shrink: 0;
|
|
26619
|
+
}
|
|
26620
|
+
.cr-library-head > div { flex: 1 1 180px; min-width: 0; }
|
|
26621
|
+
.cr-library-head h2 {
|
|
26622
|
+
margin: 0; font-family: var(--stg-font); font-size: calc(20px * var(--font-scale, 1));
|
|
26623
|
+
font-weight: 600; line-height: 1.25; letter-spacing: 0; color: var(--stg-text); overflow-wrap: anywhere;
|
|
26624
|
+
}
|
|
26625
|
+
.cr-library-head p { margin-top: 2px; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; max-width: 68ch; }
|
|
26626
|
+
.cr-button, .cr-run-btn {
|
|
26627
|
+
display: inline-flex; align-items: center; justify-content: center; gap: 4px; flex-shrink: 0;
|
|
26628
|
+
min-height: var(--cr-control-height); max-width: 100%; padding: 2px 10px;
|
|
26629
|
+
border: 1px solid var(--stg-field-line); border-radius: var(--cr-control-radius); box-shadow: none;
|
|
26630
|
+
color: var(--stg-text); background: var(--stg-control); cursor: pointer;
|
|
26631
|
+
font-family: var(--stg-font); font-size: var(--fs-xs); font-weight: 500; line-height: 1.2;
|
|
26632
|
+
transition: background-color 150ms ease, color 150ms ease;
|
|
26633
|
+
}
|
|
26634
|
+
.cr-button svg, .cr-run-btn svg { width: 12px; height: 12px; flex-shrink: 0; }
|
|
26635
|
+
.cr-button:hover:not(:disabled), .cr-run-btn:hover:not(:disabled) { background: var(--stg-control-hover); }
|
|
26636
|
+
.cr-primary { color: #fff; background: var(--stg-accent-fill); border-color: transparent; }
|
|
26637
|
+
.cr-primary:hover:not(:disabled) { background: var(--stg-accent-fill-hover); }
|
|
26638
|
+
.cr-toolbar { display: flex; align-items: center; gap: 8px; padding: 0 22px 8px; flex-shrink: 0; }
|
|
26639
|
+
.cr-search-wrap {
|
|
26640
|
+
display: flex; align-items: center; flex: 1; min-width: 0; gap: 8px;
|
|
26641
|
+
height: var(--cr-search-height); padding: 0 10px; border: 1px solid var(--stg-field-line);
|
|
26642
|
+
background: var(--stg-control); border-radius: var(--cr-group-radius); color: var(--stg-help);
|
|
26643
|
+
}
|
|
26644
|
+
.cr-search-wrap > svg { flex-shrink: 0; width: 15px; height: 15px; }
|
|
26645
|
+
.cr-search-wrap:has(input:focus-visible) { outline: 2px solid var(--stg-focus); outline-offset: 2px; }
|
|
26646
|
+
body .command-runner-panel #cr-search:focus-visible { outline: none; }
|
|
26647
|
+
.cr-search-wrap input {
|
|
26648
|
+
width: 100%; min-width: 0; height: 100%; padding: 0; border: 0; background: transparent;
|
|
26649
|
+
color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-sm); outline: 0;
|
|
26650
|
+
}
|
|
26651
|
+
.cr-search-wrap input::placeholder { color: var(--stg-help); opacity: 1; }
|
|
26652
|
+
.cr-search-wrap input::-webkit-search-cancel-button { display: none; }
|
|
26653
|
+
.cr-search-wrap .cr-icon-btn { margin-inline-end: -4px; }
|
|
26654
|
+
.cr-search-wrap kbd { flex-shrink: 0; font-family: var(--stg-mono); font-size: var(--fs-xs); color: var(--stg-help); }
|
|
26655
|
+
.cr-sort, select.cr-form-input {
|
|
26656
|
+
appearance: none; -webkit-appearance: none; color-scheme: dark; cursor: pointer;
|
|
26657
|
+
min-width: 110px; min-height: var(--cr-control-height); height: var(--cr-control-height); padding: 0 22px 0 8px;
|
|
26658
|
+
border: 1px solid var(--stg-field-line); border-radius: var(--cr-control-radius);
|
|
26659
|
+
color: var(--stg-text); background-color: var(--stg-control);
|
|
26660
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 12'%3E%3Cpath d='M1.2 4.4 4 1.6l2.8 2.8M1.2 7.6 4 10.4l2.8-2.8' fill='none' stroke='%23a1a1a6' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
26661
|
+
background-repeat: no-repeat; background-position: right 7px center; background-size: 7px 10px;
|
|
26662
|
+
font-family: var(--stg-font); font-size: var(--fs-xs); line-height: calc(20px * var(--font-scale, 1));
|
|
26663
|
+
}
|
|
26664
|
+
.cr-sort { max-width: 144px; }
|
|
26665
|
+
.cr-sort option, select.cr-form-input option { color: inherit; }
|
|
26666
|
+
.cr-filter-bar { display: flex; align-items: center; gap: 8px; padding: 0 22px 8px; flex-shrink: 0; }
|
|
26667
|
+
.cr-filters {
|
|
26668
|
+
display: flex; flex: 1; min-width: 0; gap: 2px; overflow-x: auto; padding: 4px;
|
|
26669
|
+
scrollbar-width: thin; scrollbar-color: var(--b-hover) transparent;
|
|
26670
|
+
}
|
|
26671
|
+
.cr-filter {
|
|
26672
|
+
display: inline-flex; align-items: center; gap: 6px; min-height: var(--cr-control-height); max-width: 240px;
|
|
26673
|
+
padding: 2px 8px; flex-shrink: 0; border: 0; border-radius: var(--cr-control-radius);
|
|
26674
|
+
font-family: var(--stg-font); font-size: var(--fs-xs); line-height: 1.35;
|
|
26675
|
+
color: var(--stg-help); background: transparent; cursor: pointer; white-space: nowrap;
|
|
26676
|
+
}
|
|
26677
|
+
.cr-filter > span:not(.cr-cat-dot, .cr-filter-count) { overflow: hidden; text-overflow: ellipsis; }
|
|
26678
|
+
.cr-filter:hover { color: var(--stg-text); background: var(--stg-control); }
|
|
26679
|
+
.cr-filter.active { color: var(--stg-text); background: var(--stg-control-hover); }
|
|
26680
|
+
.cr-filter-count { color: var(--stg-help); font-variant-numeric: tabular-nums; }
|
|
26681
|
+
.cr-new-group { color: var(--stg-link); background: transparent; border-color: transparent; padding-inline: 4px; font-weight: 400; }
|
|
26682
|
+
.cr-new-group:hover:not(:disabled) { color: var(--accent-blue); background: transparent; }
|
|
26683
|
+
.cr-body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 4px 22px 28px; scrollbar-gutter: stable; }
|
|
26684
|
+
.cr-category { min-width: 0; background: var(--stg-group); border: 1px solid var(--stg-line); border-radius: var(--cr-group-radius); }
|
|
26685
|
+
.cr-category + .cr-category { margin-top: 8px; }
|
|
26686
|
+
.cr-cat-header { display: flex; align-items: center; gap: 8px; padding: 7px 12px 7px var(--stg-row-x); }
|
|
26687
|
+
.cr-cat-toggle {
|
|
26688
|
+
display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; min-height: var(--cr-control-height);
|
|
26689
|
+
padding: 0; border: 0; border-radius: var(--cr-control-radius);
|
|
26690
|
+
background: transparent; color: var(--stg-text); text-align: start; font-family: var(--stg-font); cursor: pointer;
|
|
26691
|
+
}
|
|
26692
|
+
.cr-cat-toggle:hover { color: var(--stg-body); }
|
|
26693
|
+
.cr-cat-chevron { display: flex; color: var(--stg-help); transform: rotate(90deg); transition: transform 150ms ease; }
|
|
26694
|
+
.cr-cat-chevron svg { width: 10px; height: 10px; }
|
|
26695
|
+
.cr-category.collapsed .cr-cat-chevron { transform: rotate(0deg); }
|
|
26696
|
+
.cr-cat-dot { width: 6px; height: 6px; border-radius: var(--r-circle); flex-shrink: 0; }
|
|
26697
|
+
.cr-cat-name { min-width: 0; overflow-wrap: anywhere; font-size: var(--fs-sm); font-weight: 600; line-height: 1.35; }
|
|
26698
|
+
.cr-cat-count { color: var(--stg-help); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; }
|
|
26699
|
+
.cr-cat-actions, .cr-cmd-actions { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
|
|
26700
|
+
.cr-cat-body { padding: 0 var(--stg-row-x); border-top: 1px solid var(--stg-sep); }
|
|
26701
|
+
.cr-cat-empty { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 0; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
|
|
26702
|
+
.cr-cmd { display: flex; align-items: center; gap: 16px; min-width: 0; padding: 12px 0; }
|
|
26703
|
+
.cr-cmd + .cr-cmd { border-top: 1px solid var(--stg-sep); }
|
|
26704
|
+
.cr-cmd-content { flex: 1; min-width: 0; }
|
|
26705
|
+
.cr-cmd-name { margin: 0; overflow-wrap: anywhere; font-size: var(--fs-sm); font-weight: 400; line-height: 1.4; color: var(--stg-text); }
|
|
26706
|
+
.cr-code { display: flex; align-items: baseline; gap: 6px; margin: 4px 0; }
|
|
26707
|
+
.cr-prompt { color: var(--stg-help); font-family: var(--stg-mono); font-size: var(--fs-xs); user-select: none; }
|
|
26708
|
+
.cr-cmd-text { min-width: 0; font-family: var(--stg-mono); font-size: var(--fs-xs); line-height: 1.5; color: var(--stg-body); white-space: pre-wrap; overflow-wrap: anywhere; unicode-bidi: plaintext; }
|
|
26709
|
+
.cr-cmd-cwd { display: flex; align-items: flex-start; min-width: 0; gap: 6px; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
|
|
26710
|
+
.cr-cmd-cwd svg { flex-shrink: 0; margin-top: 2px; width: 12px; height: 12px; }
|
|
26711
|
+
.cr-cmd-cwd span { min-width: 0; overflow-wrap: anywhere; }
|
|
26712
|
+
.cr-run-btn { min-width: 58px; margin-inline-start: 4px; }
|
|
26713
|
+
.cr-run-btn.sent { color: var(--stg-ok); }
|
|
26714
|
+
.cr-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 8px 22px; border-top: 1px solid var(--stg-line); color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; flex-shrink: 0; }
|
|
26715
|
+
#cr-results { min-width: 0; overflow-wrap: anywhere; }
|
|
26716
|
+
.cr-footer-hint { display: inline-flex; align-items: center; gap: 6px; }
|
|
26717
|
+
.cr-footer-hint svg { width: 12px; height: 12px; }
|
|
26718
|
+
.cr-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100%; padding: 24px 8px; text-align: center; }
|
|
26719
|
+
.cr-empty-icon { display: grid; place-items: center; width: 32px; height: 32px; color: var(--stg-help); margin-bottom: 12px; }
|
|
26720
|
+
.cr-empty-icon svg { width: 24px; height: 24px; }
|
|
26721
|
+
.cr-empty h3 { color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-base); line-height: 1.3; font-weight: 600; }
|
|
26722
|
+
.cr-empty p { color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; max-width: 45ch; margin: 8px 0 16px; }
|
|
26723
|
+
.cr-notice { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 8px 22px; color: var(--stg-warn); border-bottom: 1px solid var(--stg-sep); font-size: var(--fs-xs); line-height: 1.45; }
|
|
26724
|
+
.cr-modal-overlay { position: absolute; inset: 0; z-index: 30; display: flex; align-items: center; justify-content: center; padding: 12px; background: var(--s-panel); backdrop-filter: blur(4px); }
|
|
26725
|
+
.cr-modal-overlay.hidden { display: none; }
|
|
26726
|
+
.cr-modal { width: 480px; max-width: 100%; max-height: 100%; overflow-y: auto; overscroll-behavior: contain; color: var(--stg-text); background: var(--s-panel); border: 1px solid var(--fw-border); border-radius: var(--fw-radius); box-shadow: var(--fw-shadow); }
|
|
26727
|
+
.cr-modal-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 8px 22px; border-bottom: 1px solid var(--stg-line); }
|
|
26728
|
+
.cr-modal-header > div { flex: 1; min-width: 0; overflow-wrap: anywhere; }
|
|
26729
|
+
.cr-modal-header h4 { margin: 0; font-family: var(--stg-font); font-size: var(--fs-sm); line-height: 1.4; font-weight: 500; }
|
|
26730
|
+
.cr-modal-header p { margin-top: 2px; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
|
|
26731
|
+
.cr-modal-body { padding: 16px 22px; }
|
|
26732
|
+
.cr-modal-footer { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 12px 22px; border-top: 1px solid var(--stg-line); }
|
|
26733
|
+
.cr-form-fields { padding: 0 var(--stg-row-x); border: 1px solid var(--stg-line); border-radius: var(--cr-group-radius); background: var(--stg-group); }
|
|
26734
|
+
.cr-form-row { display: grid; grid-template-columns: minmax(0, 120px) minmax(0, 1fr); align-items: center; gap: 8px 12px; padding: var(--stg-row-y) 0; min-width: 0; }
|
|
26735
|
+
.cr-form-row + .cr-form-row { border-top: 1px solid var(--stg-sep); }
|
|
26736
|
+
.cr-form-label { color: var(--stg-text); font-size: var(--fs-sm); font-weight: 400; line-height: 1.4; overflow-wrap: anywhere; }
|
|
26737
|
+
.cr-form-row--command { align-items: start; }
|
|
26738
|
+
.cr-form-hint { display: block; color: var(--stg-help); font-size: var(--fs-xs); font-weight: 400; }
|
|
26739
|
+
.cr-form-input { width: 100%; min-width: 0; min-height: var(--cr-control-height); height: var(--cr-control-height); padding: 0 8px; border: 1px solid var(--stg-field-line); border-radius: var(--cr-control-radius); background: var(--stg-field-bg); color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-xs); line-height: calc(20px * var(--font-scale, 1)); color-scheme: dark; }
|
|
26740
|
+
.cr-form-input::placeholder { color: var(--stg-help); }
|
|
26741
|
+
.cr-form-input[aria-invalid="true"] { border-color: var(--stg-err); }
|
|
26742
|
+
.cr-form-mono { font-family: var(--stg-mono); }
|
|
26743
|
+
textarea.cr-form-input { resize: vertical; min-height: 80px; height: auto; padding: 8px; line-height: 1.5; }
|
|
26744
|
+
.cr-form-help { margin-top: 4px; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
|
|
26745
|
+
.cr-form-error { margin: 0 22px 12px; color: var(--stg-err); font-size: var(--fs-xs); line-height: 1.45; }
|
|
26746
|
+
.cr-delete-name { font-size: var(--fs-sm); line-height: 1.4; overflow-wrap: anywhere; font-weight: 400; }
|
|
26747
|
+
.cr-danger:hover:not(:disabled) { color: var(--stg-err); }
|
|
26748
|
+
.cr-color-field { border: 0; padding: 0; margin-top: 16px; }
|
|
26749
|
+
.cr-color-picker { display: grid; grid-template-columns: repeat(auto-fit, minmax(44px, 1fr)); gap: 4px; margin-top: 8px; }
|
|
26750
|
+
.cr-color-swatch { display: grid; place-items: center; width: 44px; height: 44px; background: transparent; border: 2px solid transparent; border-radius: var(--cr-control-radius); cursor: pointer; position: relative; }
|
|
26751
|
+
.cr-color-swatch::before { content: ''; position: absolute; inset: 8px; background: var(--swatch); border-radius: var(--r-circle); }
|
|
26752
|
+
.cr-color-swatch svg { position: relative; visibility: hidden; color: var(--fw-on-accent); stroke-width: 3; }
|
|
26753
|
+
.cr-color-swatch.selected { border-color: var(--stg-text); }
|
|
26754
|
+
.cr-color-swatch.selected svg { visibility: visible; }
|
|
26755
|
+
.cr-color-swatch:hover { background: var(--stg-control-hover); }
|
|
26756
|
+
.cr-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
|
|
26757
|
+
.command-runner-panel [hidden] { display: none !important; }
|
|
26758
|
+
.command-runner-panel :is(button, select):disabled { opacity: .45; cursor: default; }
|
|
26759
|
+
@container cr (max-width: 480px) {
|
|
26760
|
+
.cr-library-head { padding: 16px 14px 12px; gap: 8px; }
|
|
26761
|
+
.cr-library-head > div { flex-basis: 150px; }
|
|
26762
|
+
.cr-toolbar, .cr-filter-bar { padding-inline: 14px; }
|
|
26763
|
+
.cr-toolbar { flex-wrap: wrap; }
|
|
26764
|
+
.cr-search-wrap { flex-basis: 100%; }
|
|
26765
|
+
.cr-sort { margin-inline-start: auto; }
|
|
26766
|
+
.cr-search-wrap kbd { display: none; }
|
|
26767
|
+
.cr-body { padding: 4px 14px 22px; }
|
|
26768
|
+
.cr-footer, .cr-notice { padding-inline: 14px; }
|
|
26769
|
+
.cr-footer-hint { display: none; }
|
|
26770
|
+
.cr-filter { max-width: 180px; }
|
|
26771
|
+
.cr-cmd { flex-direction: column; align-items: stretch; gap: 8px; }
|
|
26772
|
+
.cr-cmd-actions { justify-content: flex-end; }
|
|
26773
|
+
.cr-modal-header, .cr-modal-body, .cr-modal-footer { padding-inline: 14px; }
|
|
26774
|
+
.cr-form-error { margin-inline: 14px; }
|
|
26775
|
+
.cr-form-row { grid-template-columns: minmax(0, 1fr); gap: 4px; }
|
|
26776
|
+
}
|
|
26777
|
+
/* Keep the native desktop scale; touch controls need room for a fingertip. */
|
|
26778
|
+
@media (pointer: coarse) {
|
|
26779
|
+
.command-runner-panel :is(.cr-button, .cr-run-btn, .cr-icon-btn, .cr-filter, .cr-cat-toggle, .cr-sort, .cr-form-input) { min-height: 44px; }
|
|
26780
|
+
.command-runner-panel .cr-icon-btn { width: 44px; }
|
|
26781
|
+
.command-runner-panel .cr-search-wrap { height: 44px; }
|
|
26782
|
+
.command-runner-panel .cr-search-wrap > svg { display: none; }
|
|
26783
|
+
.command-runner-panel .cr-cat-header { flex-wrap: wrap; }
|
|
26784
|
+
.command-runner-panel .cr-cat-toggle { flex-basis: 100%; }
|
|
26785
|
+
.command-runner-panel .cr-cat-actions { margin-inline-start: auto; }
|
|
26786
|
+
}
|
|
26787
|
+
/* Short windows and zoomed layouts scroll the whole library rather than clip controls. */
|
|
26788
|
+
@media (max-height: 560px) {
|
|
26789
|
+
.command-runner-panel .cr-main { overflow-y: auto; overscroll-behavior: contain; }
|
|
26790
|
+
.command-runner-panel .cr-body { flex: 1 0 auto; overflow-y: visible; }
|
|
25754
26791
|
}
|
|
25755
|
-
|
|
25756
|
-
|
|
25757
|
-
|
|
26792
|
+
@media (prefers-reduced-motion: reduce) {
|
|
26793
|
+
body :is(.settings-panel, .skills-studio-panel, .automation-studio-panel,
|
|
26794
|
+
.schedules-studio-panel, .session-monitor-panel, .command-runner-panel,
|
|
26795
|
+
.image-gallery-panel, .detail-card, .tw, .term-float-tab, .sp-sidepanel.sp-floating) {
|
|
26796
|
+
transition: none !important;
|
|
26797
|
+
}
|
|
26798
|
+
.command-runner-panel *, .command-runner-panel *::before { transition: none !important; animation: none !important; }
|
|
25758
26799
|
}
|
|
25759
26800
|
|
|
25760
|
-
|
|
25761
26801
|
/* ═══════════════════════════════════════════
|
|
25762
26802
|
SKINS — Settings tab skin grid
|
|
25763
26803
|
═══════════════════════════════════════════ */
|
|
@@ -27618,154 +28658,216 @@
|
|
|
27618
28658
|
|
|
27619
28659
|
|
|
27620
28660
|
/* ═══════════════════════════════════════════
|
|
27621
|
-
STYLE GUIDE
|
|
28661
|
+
STYLE GUIDE — Settings editor shell and controls; project specimens stay independent
|
|
27622
28662
|
═══════════════════════════════════════════ */
|
|
27623
28663
|
.styleguide-panel {
|
|
27624
28664
|
position: fixed; z-index: 300000; width: 1180px; max-width: calc(100vw - 16px); min-width: min(480px, calc(100vw - 16px));
|
|
27625
|
-
height: 720px; max-height: calc(
|
|
27626
|
-
display: flex; flex-direction: column; overflow: hidden; container-type: inline-size;
|
|
27627
|
-
|
|
27628
|
-
|
|
27629
|
-
--sg-
|
|
27630
|
-
|
|
28665
|
+
height: 720px; max-height: calc(100dvh - 32px); min-height: min(380px, calc(100dvh - 32px));
|
|
28666
|
+
display: flex; flex-direction: column; overflow: hidden; container-type: inline-size; container-name: sg;
|
|
28667
|
+
color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-sm); line-height: 1.45; color-scheme: dark;
|
|
28668
|
+
--sg-control-radius: var(--radius-control, 5px);
|
|
28669
|
+
--sg-group-radius: var(--radius-group, 9px);
|
|
28670
|
+
--sg-control-height: calc(22px * var(--font-scale, 1));
|
|
28671
|
+
opacity: 0; transform: scale(.98); transition: opacity 150ms ease, transform 150ms ease;
|
|
28672
|
+
}
|
|
28673
|
+
body .styleguide-panel {
|
|
28674
|
+
--fw-focus: var(--stg-focus);
|
|
28675
|
+
/* Keep required secondary content readable over the configurable glass. */
|
|
28676
|
+
--stg-help: var(--t-primary);
|
|
28677
|
+
--sg-help: var(--stg-help);
|
|
27631
28678
|
}
|
|
27632
28679
|
.styleguide-panel.open { opacity: 1; transform: none; }
|
|
28680
|
+
.styleguide-panel.dragging { transition: none; }
|
|
27633
28681
|
.styleguide-panel [hidden] { display: none !important; }
|
|
27634
28682
|
.styleguide-panel * { box-sizing: border-box; }
|
|
27635
|
-
.styleguide-panel .sg-header {
|
|
27636
|
-
.styleguide-panel .sg-header
|
|
27637
|
-
.styleguide-panel .sg-
|
|
27638
|
-
.styleguide-panel
|
|
27639
|
-
.styleguide-panel .sg-status {
|
|
27640
|
-
.styleguide-panel .sg-status[data-state="
|
|
27641
|
-
.styleguide-panel .sg-status[data-state="error"], .styleguide-panel .sg-validation { color: var(--accent-orange); }
|
|
28683
|
+
.styleguide-panel .sg-header { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; user-select: none; }
|
|
28684
|
+
.styleguide-panel .sg-header-context { min-width: 0; gap: 6px 10px; }
|
|
28685
|
+
.styleguide-panel .sg-header-actions { gap: 6px; justify-content: flex-end; }
|
|
28686
|
+
.styleguide-panel .sg-header h2 { font-family: var(--stg-font); font-size: var(--fs-sm); font-weight: 500; line-height: 1.35; margin: 0; }
|
|
28687
|
+
.styleguide-panel .sg-status { padding: 0; border: 0; background: none; border-radius: 0; font-size: var(--fs-xs); color: var(--stg-help); overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
|
|
28688
|
+
.styleguide-panel .sg-status[data-state="error"], .styleguide-panel .sg-error, .styleguide-panel .sg-validation { color: var(--stg-err); }
|
|
27642
28689
|
.styleguide-panel .sg-shell { display: flex; flex: 1; min-height: 0; overflow: hidden; }
|
|
27643
|
-
.styleguide-panel .sg-rail { width: 208px; flex-shrink: 0; padding:
|
|
27644
|
-
.styleguide-panel .sg-btn {
|
|
27645
|
-
|
|
27646
|
-
|
|
27647
|
-
|
|
27648
|
-
|
|
27649
|
-
|
|
27650
|
-
.styleguide-panel .sg-
|
|
27651
|
-
.styleguide-panel
|
|
27652
|
-
.styleguide-panel
|
|
27653
|
-
.styleguide-panel .sg-
|
|
27654
|
-
.styleguide-panel .sg-
|
|
28690
|
+
.styleguide-panel .sg-rail { width: 208px; flex-shrink: 0; padding: 8px 10px 14px; border-inline-end: 1px solid var(--stg-line); overflow-y: auto; overscroll-behavior: contain; background: var(--stg-field-bg); }
|
|
28691
|
+
.styleguide-panel .sg-btn {
|
|
28692
|
+
display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-height: var(--sg-control-height); max-width: 100%; padding: 2px 10px;
|
|
28693
|
+
border: 1px solid var(--stg-field-line); border-radius: var(--sg-control-radius); box-shadow: none;
|
|
28694
|
+
background: var(--stg-control); color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-xs); font-weight: 500; line-height: 1.2;
|
|
28695
|
+
cursor: pointer; white-space: normal; overflow-wrap: anywhere; transition: background-color 150ms ease, color 150ms ease;
|
|
28696
|
+
}
|
|
28697
|
+
.styleguide-panel .sg-btn:hover:not(:disabled) { background: var(--stg-control-hover); }
|
|
28698
|
+
.styleguide-panel :is(button,input,select,textarea):disabled { opacity: .45; cursor: default; }
|
|
28699
|
+
.styleguide-panel :is(button,a,input,select,textarea,[tabindex]):focus-visible { outline: 2px solid var(--stg-focus); outline-offset: 2px; }
|
|
28700
|
+
.styleguide-panel .sg-close { min-width: var(--fw-header-control-size); min-height: var(--fw-header-control-size); padding: 0; border: 0; background: transparent; color: var(--stg-help); font-size: var(--fs-lg); }
|
|
28701
|
+
.styleguide-panel .sg-rail-button { width: 100%; min-height: 33px; padding: 3px 10px 3px 7px; gap: 10px; justify-content: flex-start; margin-bottom: 2px; border: 0; border-radius: var(--r-card); background: transparent; font-size: var(--fs-sm); font-weight: 400; text-align: start; }
|
|
28702
|
+
.styleguide-panel .sg-rail-button:hover:not(:disabled) { background: var(--s-light); }
|
|
28703
|
+
.styleguide-panel .sg-rail-button.active, .styleguide-panel .sg-rail-button.active:hover { background: color-mix(in srgb, var(--stg-accent-fill) 85%, transparent); color: var(--stg-text); }
|
|
28704
|
+
.styleguide-panel .sg-rail-icon { width: 26px; flex-shrink: 0; font-size: 16px; text-align: center; }
|
|
28705
|
+
.styleguide-panel .sg-rail-label { min-width: 0; line-height: 1.3; overflow-wrap: anywhere; }
|
|
28706
|
+
.styleguide-panel .sg-body { flex: 1; min-width: 0; overflow: auto; overscroll-behavior: contain; padding: 20px 22px 28px; scrollbar-gutter: stable; }
|
|
28707
|
+
.styleguide-panel .sg-page-title { font-family: var(--stg-font); font-size: calc(20px * var(--font-scale, 1)); line-height: 1.25; font-weight: 600; margin: 0 0 2px; overflow-wrap: anywhere; }
|
|
28708
|
+
.styleguide-panel .sg-purpose { color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; margin: 2px 0 6px; max-width: 72ch; overflow-wrap: anywhere; }
|
|
28709
|
+
.styleguide-panel .sg-page-purpose { font-size: calc(12.5px * var(--font-scale, 1)); margin-bottom: 20px; }
|
|
27655
28710
|
.styleguide-panel .sg-fields { padding: 0; margin: 0; border: 0; min-width: 0; }
|
|
27656
|
-
.styleguide-panel .sg-content { display: flex; flex-direction: column; gap:
|
|
27657
|
-
.styleguide-panel .sg-card { padding:
|
|
27658
|
-
.styleguide-panel .sg-card h3 { font-family: var(--
|
|
27659
|
-
.styleguide-panel h4 { font-size:
|
|
27660
|
-
.styleguide-panel .sg-
|
|
28711
|
+
.styleguide-panel .sg-content { display: flex; flex-direction: column; gap: 18px; }
|
|
28712
|
+
.styleguide-panel .sg-card { padding: 0; border: 0; border-radius: 0; background: none; min-width: 0; }
|
|
28713
|
+
.styleguide-panel .sg-card > h3 { font-family: var(--stg-font); font-size: var(--fs-sm); line-height: 1.35; margin: 0; font-weight: 600; overflow-wrap: anywhere; }
|
|
28714
|
+
.styleguide-panel h4 { font-family: var(--stg-font); font-size: var(--fs-sm); line-height: 1.35; color: var(--stg-text); margin: 0 0 6px; font-weight: 600; overflow-wrap: anywhere; }
|
|
28715
|
+
.styleguide-panel .sg-card-body { padding: 0 var(--stg-row-x); border: 1px solid var(--stg-line); border-radius: var(--sg-group-radius); background: var(--stg-group); min-width: 0; }
|
|
28716
|
+
.styleguide-panel .sg-card-body > :is(.sg-field,.sg-grid,.sg-row,.sg-stack,.sg-list,.sg-map,.sg-table-wrap,.sg-inline-set,.sg-written) { margin: 0; padding-block: var(--stg-row-y); }
|
|
28717
|
+
.styleguide-panel .sg-card-body > :is(.sg-field,.sg-grid,.sg-row,.sg-stack,.sg-list,.sg-map,.sg-table-wrap,.sg-inline-set,.sg-written)
|
|
28718
|
+
+ :is(.sg-field,.sg-grid,.sg-row,.sg-stack,.sg-list,.sg-map,.sg-table-wrap,.sg-inline-set,.sg-written) { border-top: 1px solid var(--stg-sep); }
|
|
28719
|
+
.styleguide-panel .sg-card-body > .sg-btn { margin-block: 8px; }
|
|
28720
|
+
.styleguide-panel .sg-card-body > .sg-hint { margin-block: 8px; }
|
|
28721
|
+
.styleguide-panel .sg-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(280px,100%),1fr)); gap: 8px 16px; align-items: start; min-width: 0; }
|
|
28722
|
+
.styleguide-panel .sg-card-body > .sg-grid { grid-template-columns: 1fr; }
|
|
28723
|
+
.styleguide-panel .sg-card-body > .sg-grid:has(> :is(.sg-font-card,.sg-logo-tile,.sg-preset)) { grid-template-columns: repeat(auto-fit,minmax(min(280px,100%),1fr)); }
|
|
27661
28724
|
.styleguide-panel .sg-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-width: 0; }
|
|
27662
|
-
.styleguide-panel .sg-row > .sg-field { flex: 1; min-width:
|
|
28725
|
+
.styleguide-panel .sg-row > .sg-field { flex: 1 1 160px; min-width: 0; }
|
|
27663
28726
|
.styleguide-panel .sg-row > .sg-grid { flex: 1; }
|
|
27664
|
-
.styleguide-panel .sg-stack { display: flex; flex-direction: column; gap:
|
|
27665
|
-
.styleguide-panel .sg-
|
|
27666
|
-
.styleguide-panel .sg-
|
|
27667
|
-
.styleguide-panel .sg-
|
|
27668
|
-
.styleguide-panel
|
|
27669
|
-
.styleguide-panel .sg-
|
|
27670
|
-
.styleguide-panel .sg-
|
|
27671
|
-
.styleguide-panel .sg-
|
|
27672
|
-
.styleguide-panel .sg-
|
|
27673
|
-
.styleguide-panel .sg-
|
|
27674
|
-
.styleguide-panel .sg-
|
|
27675
|
-
.styleguide-panel .sg-
|
|
28727
|
+
.styleguide-panel .sg-stack { display: flex; flex-direction: column; gap: 0; min-width: 0; }
|
|
28728
|
+
.styleguide-panel .sg-stack > .sg-row { padding-block: 8px; }
|
|
28729
|
+
.styleguide-panel .sg-stack > .sg-row + .sg-row { border-top: 1px solid var(--stg-sep); }
|
|
28730
|
+
.styleguide-panel .sg-field { display: grid; grid-template-columns: minmax(100px,30%) minmax(0,1fr); align-items: center; gap: 4px 12px; min-width: 0; font-size: var(--fs-sm); color: var(--stg-text); margin: 0; }
|
|
28731
|
+
.styleguide-panel .sg-field:has(textarea) { align-items: start; }
|
|
28732
|
+
.styleguide-panel .sg-label { font-size: var(--fs-sm); line-height: 1.4; font-weight: 400; color: var(--stg-text); overflow-wrap: anywhere; }
|
|
28733
|
+
.styleguide-panel .sg-field > :is(.sg-input,.sg-input-line,.sg-hint,.sg-validation) { grid-column: 2; }
|
|
28734
|
+
.styleguide-panel .sg-input { width: 100%; min-width: 0; min-height: var(--sg-control-height); height: var(--sg-control-height); padding: 0 8px; background: var(--stg-field-bg); border: 1px solid var(--stg-field-line); border-radius: var(--sg-control-radius); color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-xs); line-height: 1.35; }
|
|
28735
|
+
.styleguide-panel .sg-input::placeholder { color: var(--stg-help); }
|
|
28736
|
+
.styleguide-panel .sg-input[aria-invalid="true"] { border-color: var(--stg-err); }
|
|
28737
|
+
.styleguide-panel .sg-input[type="number"] { width: 72px; max-width: 100%; font-family: var(--stg-mono); }
|
|
28738
|
+
.styleguide-panel textarea.sg-input { min-height: 80px; height: auto; padding: 8px; resize: vertical; line-height: 1.5; }
|
|
28739
|
+
.styleguide-panel :is(select.sg-input,.sg-project-select) {
|
|
28740
|
+
appearance: none; -webkit-appearance: none; min-height: var(--sg-control-height); height: var(--sg-control-height); padding: 0 22px 0 8px;
|
|
28741
|
+
border: 1px solid var(--stg-field-line); border-radius: var(--sg-control-radius); background-color: var(--stg-control); color: var(--stg-text);
|
|
28742
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 12'%3E%3Cpath d='M1.2 4.4 4 1.6l2.8 2.8M1.2 7.6 4 10.4l2.8-2.8' fill='none' stroke='%23a1a1a6' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
28743
|
+
background-repeat: no-repeat; background-position: right 7px center; background-size: 7px 10px;
|
|
28744
|
+
font-family: var(--stg-font); font-size: var(--fs-xs); line-height: 1.35; cursor: pointer; color-scheme: dark;
|
|
28745
|
+
}
|
|
28746
|
+
.styleguide-panel .sg-project-select { min-width: 110px; max-width: 210px; flex: 0 1 180px; }
|
|
28747
|
+
.styleguide-panel select option { background: var(--s-panel); color: var(--stg-text); }
|
|
28748
|
+
.styleguide-panel :is(select.sg-input,.sg-project-select):dir(rtl) { padding: 0 8px 0 22px; background-position: left 7px center; }
|
|
28749
|
+
.styleguide-panel .sg-field > input[type="file"] { grid-column: 2; }
|
|
28750
|
+
.styleguide-panel input[type="file"] { width: 100%; min-width: 0; min-height: var(--sg-control-height); height: auto; padding: 0; border: 0; background: transparent; font-family: var(--stg-font); font-size: var(--fs-xs); color: var(--stg-help); }
|
|
28751
|
+
.styleguide-panel input[type="file"]::file-selector-button { min-height: var(--sg-control-height); margin-inline-end: 8px; padding: 2px 10px; border: 1px solid var(--stg-field-line); border-radius: var(--sg-control-radius); background: var(--stg-control); color: var(--stg-text); font: inherit; cursor: pointer; }
|
|
28752
|
+
.styleguide-panel input[type="file"]::file-selector-button:hover { background: var(--stg-control-hover); }
|
|
28753
|
+
.styleguide-panel .sg-toggle { display: flex; flex-direction: row; align-items: center; gap: 8px; min-height: var(--sg-control-height); cursor: pointer; }
|
|
28754
|
+
.styleguide-panel .sg-toggle input[type="checkbox"] { appearance: auto; width: 14px; min-width: 14px; min-height: 14px; height: 14px; padding: 0; margin: 0; flex-shrink: 0; accent-color: var(--stg-accent-fill); }
|
|
28755
|
+
.styleguide-panel .sg-hint, .styleguide-panel .sg-validation { font-size: var(--fs-xs); line-height: 1.45; overflow-wrap: anywhere; }
|
|
28756
|
+
.styleguide-panel .sg-hint { color: var(--stg-help); }
|
|
28757
|
+
.styleguide-panel .sg-list { display: flex; flex-direction: column; gap: 8px; margin-block: 8px; min-width: 0; }
|
|
28758
|
+
.styleguide-panel .sg-list-items { gap: 0; }
|
|
28759
|
+
.styleguide-panel .sg-list-item > .sg-field { flex: 1 1 260px; margin: 0; }
|
|
28760
|
+
.styleguide-panel .sg-hide-label > .sg-label, .styleguide-panel .sg-table .sg-field > .sg-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
28761
|
+
.styleguide-panel :is(.sg-hide-label,.sg-table .sg-field) { grid-template-columns: minmax(0,1fr); }
|
|
28762
|
+
.styleguide-panel :is(.sg-hide-label,.sg-table .sg-field) > :is(.sg-input,.sg-input-line,.sg-hint,.sg-validation) { grid-column: 1; }
|
|
28763
|
+
.styleguide-panel .sg-add-btn { align-self: flex-start; color: var(--stg-link); background: transparent; border-color: transparent; font-weight: 400; padding-inline: 4px; }
|
|
28764
|
+
.styleguide-panel .sg-add-btn:hover:not(:disabled) { color: var(--accent-blue); background: transparent; }
|
|
28765
|
+
.styleguide-panel .sg-chip-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
|
|
28766
|
+
.styleguide-panel .sg-chip-item { flex-wrap: nowrap; gap: 2px; padding: 2px; border: 1px solid var(--stg-line); border-radius: var(--sg-control-radius); background: var(--stg-control); max-width: 100%; }
|
|
28767
|
+
.styleguide-panel .sg-chip-item > .sg-field { flex: 1 1 auto; min-width: 0; margin: 0; }
|
|
28768
|
+
.styleguide-panel .sg-chip-item .sg-input { width: 12ch; max-width: 100%; padding: 0 6px; border-color: transparent; background: transparent; }
|
|
28769
|
+
.styleguide-panel .sg-icon-btn, .styleguide-panel .sg-eyedropper { min-width: var(--sg-control-height); padding: 0 4px; border-color: transparent; background: transparent; font-size: var(--fs-lg); line-height: 1; }
|
|
28770
|
+
.styleguide-panel .sg-map { display: grid; grid-template-columns: repeat(auto-fill,minmax(min(280px,100%),1fr)); gap: 8px 16px; align-items: end; min-width: 0; margin-block: 8px; }
|
|
28771
|
+
.styleguide-panel .sg-map > .sg-row { flex-wrap: nowrap; align-items: center; }
|
|
28772
|
+
.styleguide-panel .sg-map > .sg-row > .sg-field { flex: 1 1 0; min-width: 0; margin: 0; }
|
|
28773
|
+
.styleguide-panel .sg-map > .sg-row:last-child { grid-column: 1 / -1; max-width: 460px; }
|
|
28774
|
+
.styleguide-panel .sg-map-wide { grid-template-columns: repeat(auto-fill,minmax(min(560px,100%),1fr)); }
|
|
28775
|
+
.styleguide-panel .sg-map-wide > .sg-row { flex-wrap: wrap; }
|
|
28776
|
+
.styleguide-panel .sg-map-wide > .sg-row > .sg-field { flex: 1 1 180px; }
|
|
28777
|
+
.styleguide-panel .sg-map > .sg-row > .sg-row { flex: 1 1 200px; flex-wrap: nowrap; }
|
|
28778
|
+
.styleguide-panel .sg-map > .sg-row > .sg-row > .sg-field { flex: 1; min-width: 0; margin: 0; }
|
|
27676
28779
|
.styleguide-panel .sg-color-field { display: flex; gap: 8px; align-items: center; min-width: 0; }
|
|
27677
|
-
.styleguide-panel .sg-color-field .sg-field { flex: 1; min-width: 0; margin
|
|
28780
|
+
.styleguide-panel .sg-color-field .sg-field { display: flex; flex-direction: column; align-items: stretch; flex: 1; min-width: 0; margin: 0; }
|
|
27678
28781
|
.styleguide-panel .sg-swatch { width: 32px; height: 36px; padding: 0; border: 1px solid var(--b-light); border-radius: var(--r-small); background: transparent; cursor: pointer; flex-shrink: 0; }
|
|
27679
|
-
.styleguide-panel .sg-
|
|
27680
|
-
.styleguide-panel .sg-scale { display: grid; grid-template-columns: repeat(11,minmax(58px,1fr)); gap: 4px; overflow-x: auto; padding-bottom: 4px; }
|
|
28782
|
+
.styleguide-panel .sg-scale { display: grid; grid-template-columns: repeat(11,minmax(58px,1fr)); gap: 4px; overflow-x: auto; padding: 4px 2px; }
|
|
27681
28783
|
.styleguide-panel .sg-scale .sg-color-field { flex-direction: column; align-items: stretch; gap: 4px; }
|
|
27682
28784
|
.styleguide-panel .sg-scale .sg-swatch { width: 100%; height: 40px; }
|
|
27683
|
-
.styleguide-panel .sg-scale .sg-input { padding:
|
|
27684
|
-
.styleguide-panel .sg-scale .sg-label { text-align: center; font-size:
|
|
27685
|
-
.styleguide-panel .sg-
|
|
27686
|
-
.styleguide-panel .sg-
|
|
27687
|
-
.styleguide-panel .sg-
|
|
27688
|
-
.styleguide-panel .sg-
|
|
27689
|
-
.styleguide-panel .sg-
|
|
27690
|
-
.styleguide-panel .sg-
|
|
28785
|
+
.styleguide-panel .sg-scale .sg-input { padding: 0 2px; text-align: center; font-family: var(--stg-mono); }
|
|
28786
|
+
.styleguide-panel .sg-scale .sg-label { text-align: center; font-size: var(--fs-xs); }
|
|
28787
|
+
.styleguide-panel :is(.sg-palette,.sg-font-card,.sg-component-card,.sg-logo-tile,.sg-preset,.sg-proposal) { padding: 8px 0; border: 0; border-radius: 0; background: none; min-width: 0; }
|
|
28788
|
+
.styleguide-panel :is(.sg-palette,.sg-component-card,.sg-proposal) + :is(.sg-palette,.sg-component-card,.sg-proposal) { border-top: 1px solid var(--stg-sep); }
|
|
28789
|
+
.styleguide-panel .sg-palette { display: flex; flex-direction: column; gap: 8px; }
|
|
28790
|
+
.styleguide-panel :is(.sg-font-card,.sg-component-card,.sg-logo-tile) > :is(.sg-field,.sg-grid,.sg-list,.sg-row) { padding-block: 8px; }
|
|
28791
|
+
.styleguide-panel :is(.sg-font-card,.sg-component-card,.sg-logo-tile) > :is(.sg-field,.sg-grid,.sg-list,.sg-row) + :is(.sg-field,.sg-grid,.sg-list,.sg-row) { border-top: 1px solid var(--stg-sep); }
|
|
28792
|
+
.styleguide-panel .sg-component-card > .sg-grid { grid-template-columns: 1fr; }
|
|
28793
|
+
.styleguide-panel .sg-table-wrap { overflow: auto; max-width: 100%; margin-block: 8px; padding: 2px; }
|
|
28794
|
+
.styleguide-panel .sg-table { border-collapse: collapse; width: 100%; font-size: var(--fs-xs); text-align: start; }
|
|
28795
|
+
.styleguide-panel .sg-table :is(th,td) { padding: 8px; border-bottom: 1px solid var(--stg-sep); vertical-align: top; min-width: 100px; overflow-wrap: anywhere; }
|
|
28796
|
+
.styleguide-panel .sg-table th { font-weight: 500; color: var(--stg-help); text-align: start; }
|
|
27691
28797
|
.styleguide-panel .sg-table .sg-input { min-width: 100px; }
|
|
28798
|
+
.styleguide-panel .sg-table .sg-field { margin: 0; }
|
|
27692
28799
|
.styleguide-panel .sg-type-table .sg-input { min-width: 75px; }
|
|
28800
|
+
.styleguide-panel .sg-type-table td:last-child .sg-input { min-width: 160px; }
|
|
27693
28801
|
.styleguide-panel .sg-contrast-matrix td { min-width: 128px; }
|
|
27694
28802
|
.styleguide-panel [data-pass="true"] { background: var(--accent-blue-bg); }
|
|
27695
28803
|
.styleguide-panel [data-pass="false"] { border-bottom: 2px solid var(--accent-orange); }
|
|
27696
28804
|
.styleguide-panel .sg-ratio { white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
27697
|
-
.styleguide-panel .sg-chip { display: inline-block; padding:
|
|
28805
|
+
.styleguide-panel .sg-chip { display: inline-block; padding: 0; border: 0; border-radius: 0; background: none; font-size: var(--fs-xs); margin: 0; color: var(--stg-help); }
|
|
28806
|
+
.styleguide-panel .sg-header-actions .sg-chip { color: inherit; font-variant-numeric: tabular-nums; }
|
|
28807
|
+
.styleguide-panel .sg-proposal > .sg-row > strong, .styleguide-panel .sg-written code, .styleguide-panel [data-card="history"] .sg-stack > .sg-row > span { flex: 1 1 180px; min-width: 0; overflow-wrap: anywhere; }
|
|
28808
|
+
.styleguide-panel .sg-code { font-family: var(--stg-mono); font-size: var(--fs-xs); line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; padding: 8px; border: 1px solid var(--stg-field-line); border-radius: var(--sg-control-radius); background: var(--stg-field-bg); margin-block: 8px; max-height: 420px; overflow: auto; }
|
|
28809
|
+
.styleguide-panel .sg-written { margin-top: 8px; }
|
|
28810
|
+
.styleguide-panel .sg-written code { font-family: var(--stg-mono); font-size: var(--fs-xs); }
|
|
28811
|
+
.styleguide-panel .sg-error { padding: 8px 22px; font-size: var(--fs-xs); flex-shrink: 0; overflow-wrap: anywhere; }
|
|
28812
|
+
.styleguide-panel > .sg-btn { align-self: flex-start; margin: 0 22px 8px; }
|
|
28813
|
+
.styleguide-panel .sg-empty { padding: 32px 0; color: var(--stg-help); font-size: var(--fs-sm); }
|
|
28814
|
+
.styleguide-panel .sg-input-line { display: flex; align-items: center; gap: 6px; min-width: 0; }
|
|
28815
|
+
.styleguide-panel .sg-input-line > .sg-input { flex: 1; }
|
|
28816
|
+
.styleguide-panel .sg-alias-swatch { width: 22px; height: 22px; flex-shrink: 0; border-radius: var(--r-small); border: 1px solid var(--b-light); }
|
|
28817
|
+
.styleguide-panel .sg-alias-swatch.sg-unresolved { background: repeating-linear-gradient(45deg,transparent 0 4px,var(--b-light) 4px 6px) !important; }
|
|
28818
|
+
.styleguide-panel .sg-inline-set { display: flex; flex-wrap: wrap; gap: 4px 20px; border: 0; padding: 0; margin: 0 0 8px; }
|
|
28819
|
+
.styleguide-panel .sg-inline-set > legend { padding: 0; margin-bottom: 6px; }
|
|
28820
|
+
.styleguide-panel [data-card="proposals"] .sg-card-body > .sg-row > .sg-field { flex: 0 1 260px; }
|
|
28821
|
+
/* The selected guide owns sample colors, fonts, radii, shadows, logos and iframe output. */
|
|
27698
28822
|
.styleguide-panel .sg-radius-sample { width: 44px; height: 44px; flex-shrink: 0; background: var(--accent-blue-bg); border: 1px solid var(--accent-blue); }
|
|
27699
28823
|
.styleguide-panel .sg-shadow-sample { width: 90px; height: 60px; display: grid; place-items: center; border-radius: var(--r-card); background: var(--s-medium); font-size: 12px; }
|
|
27700
|
-
.styleguide-panel .sg-motion-track { width: 130px; height: 32px; border: 1px solid var(--b-light); border-radius: var(--r-small); padding: 4px; }
|
|
28824
|
+
.styleguide-panel .sg-motion-track { width: 130px; height: 32px; border: 1px solid var(--b-light); border-radius: var(--r-small); padding: 4px; flex-shrink: 0; }
|
|
27701
28825
|
.styleguide-panel .sg-motion-dot { display: block; width: 22px; height: 22px; border-radius: var(--r-circle); background: var(--accent-blue); }
|
|
27702
|
-
.styleguide-panel .sg-font-
|
|
27703
|
-
.styleguide-panel .sg-
|
|
27704
|
-
.styleguide-panel .sg-style-specimen { overflow-wrap: anywhere; padding: 12px 0; max-width: 760px; }
|
|
28826
|
+
.styleguide-panel .sg-font-specimen { font-size: 20px; font-weight: 400; line-height: 1.5; color: var(--t-bright); padding: 16px; background: var(--s-subtle); border-radius: var(--r-card); }
|
|
28827
|
+
.styleguide-panel .sg-style-specimen { color: var(--t-bright); overflow-wrap: anywhere; padding: 12px 0; max-width: 760px; }
|
|
27705
28828
|
.styleguide-panel .sg-logo-preview { height: 120px; display: flex; justify-content: center; align-items: center; border-radius: var(--r-card); margin-bottom: 12px; }
|
|
27706
28829
|
.styleguide-panel .sg-logo-preview img { max-width: 80%; max-height: 90px; }
|
|
27707
28830
|
.styleguide-panel .sg-preset-swatch { width: 32px; height: 28px; border-radius: var(--r-small); border: 1px solid var(--b-light); }
|
|
27708
|
-
.styleguide-panel .sg-
|
|
27709
|
-
.styleguide-panel .sg-written code { font-size: 12px; overflow-wrap: anywhere; }
|
|
27710
|
-
.styleguide-panel .sg-error { padding: 10px 16px; color: var(--accent-orange); font-size: 12px; flex-shrink: 0; overflow-wrap: anywhere; }
|
|
27711
|
-
.styleguide-panel .sg-empty { padding: 48px 16px; color: var(--sg-help); font-size: 14px; }
|
|
28831
|
+
.styleguide-panel .sg-gradient-sample { width: 96px; height: 36px; flex-shrink: 0; border-radius: var(--r-small); border: 1px solid var(--b-light); }
|
|
27712
28832
|
.styleguide-panel .sg-preview-stage { overflow-x: auto; max-width: 100%; padding: 16px; background: var(--s-subtle); border-radius: var(--r-card); }
|
|
27713
|
-
.styleguide-panel .sg-preview-frame { display: block; height: 470px; min-width: 375px; margin-inline: auto; border: 1px solid var(--b-light); border-radius: var(--r-card); background: var(--s-panel); }
|
|
28833
|
+
.styleguide-panel .sg-preview-frame { display: block; height: clamp(470px,62vh,900px); min-width: 375px; margin-inline: auto; border: 1px solid var(--b-light); border-radius: var(--r-card); background: var(--s-panel); }
|
|
27714
28834
|
.styleguide-panel .sg-markdown { margin-top: 12px; font-size: 14px; overflow-wrap: anywhere; }
|
|
27715
28835
|
.styleguide-panel .sg-markdown h1 { font-size: 24px; }
|
|
27716
28836
|
.styleguide-panel .sg-markdown h2 { font-size: 20px; }
|
|
27717
28837
|
.styleguide-panel .sg-markdown h3 { font-size: 18px; }
|
|
27718
28838
|
.styleguide-panel .sg-markdown :is(h4,h5,h6) { font-size: 14px; }
|
|
27719
|
-
|
|
27720
|
-
.styleguide-panel {
|
|
27721
|
-
.styleguide-panel .sg-
|
|
27722
|
-
.styleguide-panel .sg-add-btn { align-self: flex-start; }
|
|
27723
|
-
.styleguide-panel .sg-list-items { gap: 8px; }
|
|
27724
|
-
.styleguide-panel .sg-list-item > .sg-field { flex: 1 1 260px; margin-bottom: 0; }
|
|
27725
|
-
.styleguide-panel .sg-chips .sg-row { padding: 0; border: 0; }
|
|
27726
|
-
.styleguide-panel .sg-chip-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
|
|
27727
|
-
.styleguide-panel .sg-chip-item { flex-wrap: nowrap; gap: 2px; padding: 2px; border: 1px solid var(--b-light); border-radius: var(--r-button); background: var(--s-subtle); }
|
|
27728
|
-
.styleguide-panel .sg-chip-item > .sg-field { flex: 0 0 auto; margin: 0; }
|
|
27729
|
-
.styleguide-panel .sg-chip-item .sg-input { width: 12ch; min-height: 30px; padding: 4px 8px; border-color: transparent; background: transparent; }
|
|
27730
|
-
.styleguide-panel .sg-icon-btn { min-height: 30px; min-width: 30px; padding: 0 8px; font-size: 16px; line-height: 1; border-color: transparent; background: transparent; }
|
|
27731
|
-
.styleguide-panel .sg-map { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr)); gap: 8px 16px; align-items: end; }
|
|
27732
|
-
.styleguide-panel .sg-map > .sg-row { flex-wrap: nowrap; align-items: flex-end; }
|
|
27733
|
-
.styleguide-panel .sg-map > .sg-row > .sg-field { flex: 1 1 0; min-width: 0; margin-bottom: 0; }
|
|
27734
|
-
.styleguide-panel .sg-map > .sg-row:last-child { grid-column: 1 / -1; max-width: 460px; }
|
|
27735
|
-
.styleguide-panel .sg-map-wide { grid-template-columns: repeat(auto-fill, minmax(min(560px, 100%), 1fr)); }
|
|
27736
|
-
.styleguide-panel .sg-map-wide > .sg-row { flex-wrap: wrap; }
|
|
27737
|
-
.styleguide-panel .sg-map-wide > .sg-row > .sg-field { flex: 1 1 140px; }
|
|
27738
|
-
.styleguide-panel .sg-map > .sg-row > .sg-row { flex: 1 1 200px; flex-wrap: nowrap; }
|
|
27739
|
-
.styleguide-panel .sg-map > .sg-row > .sg-row > .sg-field { flex: 1; min-width: 0; margin: 0; }
|
|
27740
|
-
.styleguide-panel .sg-toggle { display: flex; }
|
|
27741
|
-
.styleguide-panel .sg-btn { white-space: nowrap; }
|
|
27742
|
-
.styleguide-panel .sg-motion-track { flex-shrink: 0; }
|
|
27743
|
-
.styleguide-panel .sg-input-line { display: flex; align-items: center; gap: 6px; min-width: 0; }
|
|
27744
|
-
.styleguide-panel .sg-input-line > .sg-input { flex: 1; }
|
|
27745
|
-
.styleguide-panel .sg-alias-swatch { width: 22px; height: 22px; flex-shrink: 0; border-radius: var(--r-small); border: 1px solid var(--b-light); }
|
|
27746
|
-
.styleguide-panel .sg-alias-swatch.sg-unresolved { background: repeating-linear-gradient(45deg, transparent 0 4px, var(--b-light) 4px 6px) !important; }
|
|
27747
|
-
.styleguide-panel .sg-gradient-sample { width: 96px; height: 36px; flex-shrink: 0; border-radius: var(--r-small); border: 1px solid var(--b-light); }
|
|
27748
|
-
.styleguide-panel .sg-inline-set { display: flex; flex-wrap: wrap; gap: 4px 20px; border: 0; padding: 0; margin: 0 0 12px; }
|
|
27749
|
-
.styleguide-panel .sg-inline-set > legend { padding: 0; margin-bottom: 6px; }
|
|
27750
|
-
.styleguide-panel .sg-table .sg-field { min-width: 0; }
|
|
27751
|
-
.styleguide-panel .sg-type-table td:last-child .sg-input { min-width: 160px; }
|
|
27752
|
-
.styleguide-panel .sg-written { margin-top: 12px; }
|
|
27753
|
-
.styleguide-panel [data-card="proposals"] > .sg-row > .sg-field { flex: 0 1 260px; }
|
|
27754
|
-
.styleguide-panel .sg-preview-frame { height: clamp(470px, 62vh, 900px); }
|
|
27755
|
-
@container (max-width: 899px) {
|
|
27756
|
-
.styleguide-panel .sg-rail { width: 58px; padding: 12px 4px; }
|
|
27757
|
-
.styleguide-panel .sg-rail-button { padding: 8px; justify-content: center; }
|
|
28839
|
+
@container sg (max-width: 899px) {
|
|
28840
|
+
.styleguide-panel .sg-rail { width: 58px; padding: 8px 4px; }
|
|
28841
|
+
.styleguide-panel .sg-rail-button { padding: 3px 4px; justify-content: center; }
|
|
27758
28842
|
.styleguide-panel .sg-rail-label { display: none; }
|
|
27759
|
-
.styleguide-panel .sg-header {
|
|
27760
|
-
.styleguide-panel .sg-
|
|
27761
|
-
}
|
|
27762
|
-
|
|
27763
|
-
|
|
27764
|
-
.styleguide-panel .sg-
|
|
27765
|
-
.styleguide-panel .sg-
|
|
27766
|
-
.styleguide-panel .sg-
|
|
27767
|
-
.styleguide-panel .sg-
|
|
27768
|
-
.styleguide-panel .sg-
|
|
28843
|
+
.styleguide-panel .sg-header { grid-template-columns: minmax(0,1fr) auto; }
|
|
28844
|
+
.styleguide-panel .sg-header-actions { grid-column: 1 / -1; grid-row: 2; justify-content: flex-start; }
|
|
28845
|
+
.styleguide-panel .sg-close { grid-column: 2; grid-row: 1; align-self: start; }
|
|
28846
|
+
}
|
|
28847
|
+
@container sg (max-width: 560px) {
|
|
28848
|
+
.styleguide-panel .sg-body { padding: 16px 14px 22px; }
|
|
28849
|
+
.styleguide-panel .sg-grid, .styleguide-panel .sg-card-body > .sg-grid:has(> :is(.sg-font-card,.sg-logo-tile,.sg-preset)) { grid-template-columns: 1fr; }
|
|
28850
|
+
.styleguide-panel .sg-field { grid-template-columns: minmax(0,1fr); }
|
|
28851
|
+
.styleguide-panel .sg-field > :is(.sg-input,.sg-input-line,.sg-hint,.sg-validation,input[type="file"]) { grid-column: 1; }
|
|
28852
|
+
.styleguide-panel .sg-color-field .sg-field { display: flex; }
|
|
28853
|
+
.styleguide-panel .sg-project-select { max-width: 160px; }
|
|
28854
|
+
.styleguide-panel .sg-header-context { gap: 6px; }
|
|
28855
|
+
.styleguide-panel .sg-status { flex-basis: 100%; }
|
|
28856
|
+
.styleguide-panel .sg-header-actions { gap: 6px; }
|
|
28857
|
+
.styleguide-panel .sg-error { padding-inline: 14px; }
|
|
28858
|
+
.styleguide-panel > .sg-btn { margin-inline: 14px; }
|
|
28859
|
+
}
|
|
28860
|
+
@media (pointer: coarse) {
|
|
28861
|
+
.styleguide-panel { --sg-control-height: max(44px,calc(22px * var(--font-scale,1))); }
|
|
28862
|
+
.styleguide-panel :is(.sg-btn,.sg-rail-button,.sg-toggle) { min-height: 44px; }
|
|
28863
|
+
.styleguide-panel :is(.sg-close,.sg-icon-btn,.sg-eyedropper) { min-width: 44px; }
|
|
28864
|
+
.styleguide-panel .sg-swatch { min-width: 44px; min-height: 44px; }
|
|
28865
|
+
}
|
|
28866
|
+
@media (max-height: 560px) {
|
|
28867
|
+
.styleguide-panel { overflow-y: auto; }
|
|
28868
|
+
.styleguide-panel .sg-shell { flex: none; min-height: 320px; overflow: visible; }
|
|
28869
|
+
.styleguide-panel .sg-body { overflow: visible; }
|
|
28870
|
+
.styleguide-panel .sg-rail { align-self: stretch; overflow: visible; }
|
|
27769
28871
|
}
|
|
27770
28872
|
|
|
27771
28873
|
/* ═══════════════════════════════════════════════════════════════════════════
|