@michelj/context-guard 0.4.3 → 0.6.1
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/Coordinator.md +88 -0
- package/Executor.md +53 -0
- package/README.md +89 -224
- package/README.zh-CN.md +89 -224
- package/SKILL.md +26 -684
- package/THIRD_PARTY_NOTICES.md +47 -0
- package/Tester.md +53 -0
- package/agents/openai.yaml +2 -2
- package/bin/build-runtime.mjs +96 -0
- package/bin/context-guard-skill.js +399 -78
- package/bin/postinstall.js +2 -2
- package/hooks.json +89 -13
- package/licenses/JSONParse-MIT.txt +24 -0
- package/licenses/Marked-MIT.txt +44 -0
- package/licenses/Portless-Apache-2.0.txt +201 -0
- package/package.json +35 -6
- package/prototype/LICENSES/Marked-MIT.txt +44 -0
- package/prototype/LICENSES/Ready-redistribution.txt +14 -0
- package/prototype/attachments.mjs +75 -0
- package/prototype/coordinator-markdown.mjs +283 -0
- package/prototype/coordinator-working-blot.mjs +124 -0
- package/prototype/vendor/marked.mjs +2189 -0
- package/prototype/workbench-app.js +5197 -0
- package/prototype/workbench-data.js +33 -0
- package/prototype/workbench-sync.mjs +898 -0
- package/prototype/workbench.css +1050 -0
- package/prototype/workbench.html +211 -0
- package/prototype/working-blot-atlas.png +0 -0
- package/references/agent-handoff.md +40 -0
- package/references/claude-runtime.md +120 -0
- package/references/cloud-sync-interface.md +66 -0
- package/references/design-current.md +14 -0
- package/references/map-mount.md +41 -0
- package/references/map-read.md +50 -0
- package/references/memory-definition.md +120 -0
- package/references/memory-filesystem-v2/Bug.en.md +162 -0
- package/references/memory-filesystem-v2/Bug.md +162 -0
- package/references/memory-filesystem-v2/Bug_Coordinater.md +8 -0
- package/references/memory-filesystem-v2/Bug_Executor.md +8 -0
- package/references/memory-filesystem-v2/Bug_Tester.md +7 -0
- package/references/memory-filesystem-v2/Idea.en.md +36 -0
- package/references/memory-filesystem-v2/Idea.md +36 -0
- package/references/memory-filesystem-v2/Node_Module_Index.en.md +88 -0
- package/references/memory-filesystem-v2/Node_Module_Index.md +88 -0
- package/references/memory-filesystem-v2/README.md +60 -0
- package/references/memory-filesystem-v2/Todo.en.md +137 -0
- package/references/memory-filesystem-v2/Todo.md +137 -0
- package/references/memory-filesystem-v2/Todo_Coordinater.md +7 -0
- package/references/memory-filesystem-v2/Todo_Executor.md +7 -0
- package/references/memory-filesystem-v2/Todo_Tester.md +7 -0
- package/references/named-workbench.md +124 -0
- package/references/plan-review.md +12 -0
- package/references/server-memory.md +276 -0
- package/references/test-check.md +7 -0
- package/references/user-reply.md +38 -0
- package/references/workbench-interface.md +531 -0
- package/roles.md +13 -0
- package/scripts/context_guard.py +1366 -7602
- package/scripts/context_guard_hook.py +1960 -711
- package/scripts/map_owns.py +699 -0
- package/scripts/shared/LICENSES/JSONParse-MIT.txt +24 -0
- package/scripts/shared/filesystem-v2.mjs +430 -0
- package/scripts/shared/io.mjs +117 -0
- package/scripts/shared/map-model.mjs +506 -0
- package/scripts/shared/memory-schema.mjs +13 -0
- package/scripts/shared/protocol-blobs.mjs +112 -0
- package/scripts/shared/protocol-map.mjs +146 -0
- package/scripts/shared/protocol-snapshots.mjs +84 -0
- package/scripts/shared/protocol-store.mjs +624 -0
- package/scripts/shared/protocol-workflow.mjs +226 -0
- package/scripts/shared/protocol.mjs +125 -0
- package/scripts/shared/vendor/jsonparse.cjs +413 -0
- package/scripts/workbench/access.mjs +496 -0
- package/scripts/workbench/attachments.mjs +92 -0
- package/scripts/workbench/browser-login.mjs +78 -0
- package/scripts/workbench/claude-runtime.mjs +372 -0
- package/scripts/workbench/cli.mjs +980 -0
- package/scripts/workbench/device-heartbeat.mjs +72 -0
- package/scripts/workbench/hook-status.mjs +38 -0
- package/scripts/workbench/inbox.mjs +155 -0
- package/scripts/workbench/journal.mjs +56 -0
- package/scripts/workbench/memory-merge.mjs +65 -0
- package/scripts/workbench/memory.mjs +252 -0
- package/scripts/workbench/named-proxy.mjs +108 -0
- package/scripts/workbench/named.mjs +152 -0
- package/scripts/workbench/portless-routes.mjs +51 -0
- package/scripts/workbench/project.mjs +327 -0
- package/scripts/workbench/projections.mjs +68 -0
- package/scripts/workbench/protocol-client.mjs +165 -0
- package/scripts/workbench/protocol-delivery.mjs +133 -0
- package/scripts/workbench/protocol-device.mjs +316 -0
- package/scripts/workbench/protocol-events.mjs +53 -0
- package/scripts/workbench/protocol-repository.mjs +58 -0
- package/scripts/workbench/reconcile.mjs +244 -0
- package/scripts/workbench/registry.mjs +111 -0
- package/scripts/workbench/runtime.mjs +54 -0
- package/scripts/workbench/server.mjs +1171 -0
- package/scripts/workbench/store.mjs +243 -0
- package/scripts/workbench/sync-coordinator.mjs +518 -0
- package/scripts/workbench/sync.mjs +86 -0
- package/references/context-template.md +0 -341
- package/references/feature-chain-methodology.md +0 -228
- package/references/register-template.md +0 -85
- package/references/task-case-template.md +0 -63
- package/tests/BC-20260618-063.sh +0 -116
- package/tests/BC-20260618-065.sh +0 -66
- package/tests/BC-20260626-080.sh +0 -48
- package/tests/BC-20260626-081.sh +0 -40
- package/tests/BC-20260626-082.sh +0 -32
- package/tests/BC-20260626-083.sh +0 -66
- package/tests/BC-20260627-084.sh +0 -74
- package/tests/BC-20260630-086.sh +0 -50
- package/tests/BC-20260630-087.sh +0 -103
- package/tests/BC-20260630-088.sh +0 -32
- package/tests/BC-20260630-089.sh +0 -63
- package/tests/BC-20260701-090.sh +0 -84
- package/tests/BC-20260702-096.sh +0 -48
- package/tests/BC-20260706-098.sh +0 -66
- package/tests/BC-20260707-099.sh +0 -47
- package/tests/BC-20260707-100.sh +0 -46
- package/tests/BC-20260707-101.sh +0 -47
- package/tests/BC-20260707-102.sh +0 -68
- package/tests/BC-20260707-103.sh +0 -59
- package/tests/BC-20260707-104.sh +0 -103
- package/tests/BC-20260707-105.sh +0 -109
- package/tests/BC-20260707-106.sh +0 -80
- package/tests/BC-20260707-107.sh +0 -74
- package/tests/BC-20260707-108.sh +0 -48
- package/tests/BC-20260707-109.sh +0 -56
- package/tests/BC-20260707-110.sh +0 -71
- package/tests/BC-20260707-111.sh +0 -70
- package/tests/BC-20260707-112.sh +0 -45
- package/tests/BC-20260707-113.sh +0 -73
- package/tests/BC-20260707-115.sh +0 -77
- package/tests/BC-20260707-116.sh +0 -77
- package/tests/BC-20260707-118.sh +0 -115
- package/tests/BC-20260707-119.sh +0 -47
- package/tests/BC-20260707-120.sh +0 -60
- package/tests/BC-20260707-121.sh +0 -66
- package/tests/BC-20260707-122.sh +0 -48
- package/tests/BC-20260707-123.sh +0 -43
- package/tests/BC-20260707-124.sh +0 -56
- package/tests/BC-20260707-125.sh +0 -64
- package/tests/BC-20260707-126.sh +0 -80
- package/tests/BC-20260707-127.sh +0 -88
- package/tests/BC-20260707-129.sh +0 -59
- package/tests/BC-20260707-130.sh +0 -69
- package/tests/BC-20260707-131.sh +0 -140
- package/tests/BC-20260707-132.sh +0 -150
- package/tests/BC-20260707-133.sh +0 -70
- package/tests/BC-20260708-136.sh +0 -210
- package/tests/BC-20260708-137.sh +0 -106
- package/tests/BC-20260708-138.sh +0 -168
- package/tests/BC-20260708-139.sh +0 -79
- package/tests/BC-20260709-002.sh +0 -63
- package/tests/BC-20260709-003.sh +0 -239
- package/tests/BC-20260709-006.sh +0 -76
- package/tests/BC-20260709-008.sh +0 -168
- package/tests/BC-20260710-001.sh +0 -61
- package/tests/BC-20260710-002.sh +0 -111
- package/tests/npm-install-smoke.sh +0 -53
|
@@ -0,0 +1,1050 @@
|
|
|
1
|
+
:root{
|
|
2
|
+
--chrome-top:58px;
|
|
3
|
+
--chrome-btn-h:36px;
|
|
4
|
+
--ink:#2d2d2d; --muted:#746c60; --paper:#fffdf8; --bg:#fefaf2; --line:#d7ccb8; --line-ink:#2d2d2d;
|
|
5
|
+
--green:#3a6e55; --green-soft:#efe6d2; --red:#e24b4b; --red-soft:#f8e4dc;
|
|
6
|
+
--blue:#2d5da1; --blue-soft:#e4ebf4; --gray:#9a9084;
|
|
7
|
+
--focus:#8a6d1f; --focus-soft:#f5eeda; --module:#2d5da1; --module-soft:#f3ead6;
|
|
8
|
+
--auth:#7a5ca8; --auth-soft:#f0eaf8;
|
|
9
|
+
--yellow:#ffe66d; --gold:#d4a017;
|
|
10
|
+
--dot-success:#6ed08a; --dot-dirty:#3d7ee8;
|
|
11
|
+
--shadow:3px 3px 0 #2d2d2d; --shadow-sm:2px 2px 0 #2d2d2d;
|
|
12
|
+
--font-ui:"Comic Neue","Trebuchet MS","PingFang SC","Microsoft YaHei",sans-serif;
|
|
13
|
+
--font-note:Georgia,"Libre Baskerville","Songti SC",serif;
|
|
14
|
+
--drawer-width:340px;
|
|
15
|
+
--drawer-height:42vh;
|
|
16
|
+
--bug-panel-width:240px;
|
|
17
|
+
--safe-top:env(safe-area-inset-top, 0px);
|
|
18
|
+
--safe-bottom:env(safe-area-inset-bottom, 0px);
|
|
19
|
+
}
|
|
20
|
+
*{box-sizing:border-box}
|
|
21
|
+
html,body{height:100%;height:100dvh}
|
|
22
|
+
html{overflow:hidden}
|
|
23
|
+
body{margin:0;background:var(--bg);color:var(--ink);overflow:hidden;
|
|
24
|
+
font-family:var(--font-ui);font-size:14px;overscroll-behavior:none;
|
|
25
|
+
-webkit-tap-highlight-color:transparent}
|
|
26
|
+
body.auth-mode{background:#f6f3fa}
|
|
27
|
+
body::before{
|
|
28
|
+
content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.42;
|
|
29
|
+
background-image:
|
|
30
|
+
linear-gradient(rgba(45,45,45,.05) 1px, transparent 1px),
|
|
31
|
+
radial-gradient(rgba(45,45,45,.1) .7px, transparent 1px);
|
|
32
|
+
background-size:100% 34px, 18px 18px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
header.top{position:fixed;inset:0 0 auto 0;z-index:30;display:flex;align-items:center;gap:10px 13px;
|
|
36
|
+
padding:10px 18px;background:var(--paper);border-bottom:2px solid var(--line-ink);flex-wrap:nowrap;cursor:default}
|
|
37
|
+
header.top .brand{position:relative;flex:1 1 auto;min-width:0;display:flex;align-items:center}
|
|
38
|
+
header.top h1{margin:0;font-size:16px}
|
|
39
|
+
.repo-menu{display:none;position:absolute;left:0;top:100%;margin-top:8px;z-index:40;min-width:280px;
|
|
40
|
+
background:var(--paper);border:2px solid var(--line-ink);border-radius:10px;box-shadow:var(--shadow);padding:6px}
|
|
41
|
+
.repo-menu.open{display:block}
|
|
42
|
+
.repo-menu button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;
|
|
43
|
+
text-align:left;border:0;background:transparent;padding:8px 10px;border-radius:8px;cursor:pointer}
|
|
44
|
+
.repo-menu button:hover,.repo-menu button.on{background:var(--module-soft)}
|
|
45
|
+
.repo-menu .src{font-size:11px;color:var(--muted)}
|
|
46
|
+
.repo-menu .tag{font-size:10.5px;color:var(--green)}
|
|
47
|
+
.repo-menu .tag.wait{color:var(--red)}
|
|
48
|
+
.repo-menu .reanalyze{margin-top:4px;font-size:11px;color:var(--red);text-decoration:underline;cursor:pointer}
|
|
49
|
+
.nav-crumbs{display:flex;align-items:center;gap:7px;font-size:13px;flex-wrap:nowrap;flex:1 1 auto;min-width:0;
|
|
50
|
+
overflow-x:auto;white-space:nowrap;scrollbar-width:thin;height:var(--chrome-btn-h)}
|
|
51
|
+
.top-tools{display:flex;align-items:center;gap:10px 13px;flex:0 0 auto;margin-left:auto;flex-wrap:nowrap;height:var(--chrome-btn-h)}
|
|
52
|
+
.workbench-tools{position:relative;flex:0 0 auto}
|
|
53
|
+
.workbench-tools>summary{display:flex;align-items:center;gap:8px;height:var(--chrome-btn-h);box-sizing:border-box;padding:0 12px;cursor:pointer;list-style:none;border:2px solid var(--line-ink);border-radius:10px;background:var(--paper);box-shadow:var(--shadow-sm);font-weight:700;white-space:nowrap}
|
|
54
|
+
.workbench-tools>summary::-webkit-details-marker{display:none}
|
|
55
|
+
.workbench-tools>summary::after{content:"▾"}
|
|
56
|
+
.workbench-tools[open]>summary::after{content:"▴"}
|
|
57
|
+
.workbench-tools>summary:focus-visible{outline:2px solid var(--module);outline-offset:3px}
|
|
58
|
+
.workbench-tools-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:70;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:12px;max-width:calc(100vw - 32px);width:max-content;box-sizing:border-box;flex-wrap:wrap;background:var(--paper);border:2px solid var(--line-ink);border-radius:12px;box-shadow:var(--shadow)}
|
|
59
|
+
.workbench-tools:not([open])>.workbench-tools-menu{display:none}
|
|
60
|
+
.nav-crumbs a,.nav-crumbs .here,.nav-crumbs .sep,.nav-crumbs .bug-exit,.nav-crumbs .bug-tag{flex:0 0 auto;white-space:nowrap}
|
|
61
|
+
.nav-crumbs a,.nav-crumbs .here,.nav-crumbs .bug-exit,.nav-crumbs .bug-tag{
|
|
62
|
+
display:inline-flex;align-items:center;height:var(--chrome-btn-h);padding:0 12px;box-sizing:border-box;line-height:1}
|
|
63
|
+
.nav-crumbs a{color:var(--module);cursor:pointer;text-decoration:none;
|
|
64
|
+
border:2px solid transparent;border-radius:8px}
|
|
65
|
+
.nav-crumbs a:hover{border-color:var(--line);background:#fff}
|
|
66
|
+
.nav-crumbs .here{font-weight:700;background:var(--module-soft);border-radius:8px;color:var(--module);
|
|
67
|
+
border:2px solid transparent}
|
|
68
|
+
.nav-crumbs .here.switch{cursor:pointer;gap:6px}
|
|
69
|
+
.nav-crumbs .here .caret{font-size:11px;color:var(--muted)}
|
|
70
|
+
.nav-crumbs .sep{color:var(--line)}
|
|
71
|
+
.session-switch{position:relative;flex:0 0 auto}
|
|
72
|
+
.session-chip{display:flex;align-items:center;gap:7px;max-width:260px;height:var(--chrome-btn-h);padding:0 9px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer;box-shadow:none;box-sizing:border-box}
|
|
73
|
+
.session-chip:hover,.session-chip[aria-expanded="true"]{background:var(--module-soft);transform:none;box-shadow:none}
|
|
74
|
+
.session-chip #session-name{overflow:hidden;text-overflow:ellipsis}
|
|
75
|
+
.session-status{width:15px;height:15px;display:inline-grid;place-items:center;flex:0 0 auto}
|
|
76
|
+
.session-status.active{border:2px solid var(--module-soft);border-top-color:var(--module);border-radius:50%;animation:session-spin .8s linear infinite}
|
|
77
|
+
.session-status.online::before{content:"•";color:var(--green);font-size:24px;font-weight:900;line-height:12px}
|
|
78
|
+
.session-status.offline::before{content:"•";color:var(--red);font-size:24px;font-weight:900;line-height:12px}
|
|
79
|
+
.session-status.interrupted::before,.session-status.failed::before{content:"×";color:var(--red);font-size:20px;font-weight:900;line-height:12px}
|
|
80
|
+
.session-status.stopped::before{content:"✓";color:var(--green);font-size:15px;font-weight:900;line-height:1}
|
|
81
|
+
.session-status.unknown::before{content:"•";color:var(--muted);font-size:20px;font-weight:900;line-height:12px}
|
|
82
|
+
.session-status.empty{display:none}
|
|
83
|
+
.cloud-sync-status{width:28px;height:28px;display:inline-grid;place-items:center;flex:0 0 auto;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
|
|
84
|
+
.cloud-sync-status[hidden]{display:none}
|
|
85
|
+
.cloud-sync-status::before{font-size:16px;font-weight:900;line-height:1}
|
|
86
|
+
.cloud-sync-status.syncing::before{content:"";width:13px;height:13px;border:2px solid var(--module-soft);border-top-color:var(--module);border-radius:50%;animation:session-spin .8s linear infinite}
|
|
87
|
+
.cloud-sync-status.synced{display:none}
|
|
88
|
+
.cloud-sync-status.conflict::before,.cloud-sync-status.error::before{content:"!";color:var(--red)}
|
|
89
|
+
@media(max-width:900px){
|
|
90
|
+
header.top{flex-wrap:wrap}
|
|
91
|
+
header.top .brand{flex:1 1 100%}
|
|
92
|
+
.top-tools{margin-left:0}
|
|
93
|
+
.workbench-tools-menu{left:0;right:auto}
|
|
94
|
+
}
|
|
95
|
+
.session-menu{position:fixed;z-index:70;width:max-content;min-width:210px;max-width:min(360px,calc(100vw - 16px));padding:5px;background:var(--paper);border:2px solid var(--line-ink);border-radius:10px;box-shadow:var(--shadow)}
|
|
96
|
+
.session-menu[hidden]{display:none}
|
|
97
|
+
.session-menu button{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;max-width:340px;padding:8px 10px;border:0;border-radius:7px;background:transparent;box-shadow:none;color:var(--ink);text-align:left;white-space:nowrap}
|
|
98
|
+
.session-menu button:hover{background:var(--module-soft);transform:none;box-shadow:none}
|
|
99
|
+
.session-menu button[aria-selected="true"]{background:var(--module-soft)}
|
|
100
|
+
.session-menu button:disabled{opacity:.55;cursor:not-allowed}
|
|
101
|
+
.session-menu button:disabled:hover{background:transparent}
|
|
102
|
+
.session-menu .session-option-copy{display:grid;min-width:0;gap:1px}
|
|
103
|
+
.session-menu .session-option-name{overflow:hidden;text-overflow:ellipsis}
|
|
104
|
+
.session-menu .session-option-context{overflow:hidden;color:var(--muted);font-size:9px;font-weight:600;text-overflow:ellipsis}
|
|
105
|
+
.session-menu .session-option-state{margin-left:auto;color:var(--muted);font-size:9px;font-weight:700}
|
|
106
|
+
.session-menu .session-option-state.online{color:var(--green)}
|
|
107
|
+
.session-menu .session-option-state.offline,.session-menu .session-option-state.interrupted,.session-menu .session-option-state.failed{color:var(--red)}
|
|
108
|
+
.session-menu .session-option-state.unknown{color:var(--gold)}
|
|
109
|
+
.bug-assign-dialog{width:min(520px,calc(100vw - 28px));padding:0;border:2px solid var(--line-ink);border-radius:12px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow)}
|
|
110
|
+
.bug-assign-dialog::backdrop{background:rgba(35,31,25,.28)}
|
|
111
|
+
.bug-assign-dialog form{display:grid;gap:14px;padding:20px}
|
|
112
|
+
.bug-assign-dialog h3{margin:0;font-size:18px}
|
|
113
|
+
.bug-assign-dialog label{display:grid;gap:6px;font-size:12px;font-weight:800;color:var(--muted)}
|
|
114
|
+
.bug-assign-dialog input,.bug-assign-dialog textarea,.bug-assign-dialog select{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:9px 10px;font:inherit}
|
|
115
|
+
.bug-assign-dialog textarea{min-height:84px;resize:vertical}
|
|
116
|
+
.bug-assign-dialog .scope-warning{padding:10px 12px;border:1px solid #e0b84f;border-radius:8px;background:var(--yellow);font-size:12px;font-weight:700;line-height:1.45}
|
|
117
|
+
.bug-assign-dialog .scope-warning[hidden]{display:none}
|
|
118
|
+
.bug-assign-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:8px}
|
|
119
|
+
@keyframes session-spin{to{transform:rotate(360deg)}}
|
|
120
|
+
.tray-btn,.auth-btn{
|
|
121
|
+
height:var(--chrome-btn-h);min-height:var(--chrome-btn-h);padding:0 12px;font-size:12.5px;line-height:1;
|
|
122
|
+
display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;flex:0 0 auto}
|
|
123
|
+
#btn-auth{width:var(--chrome-btn-h);padding:0;font-size:16px}
|
|
124
|
+
.repo-status{font-size:12px;color:var(--muted);max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
125
|
+
.repo-status.ok{color:var(--green)}
|
|
126
|
+
.repo-status.err{color:var(--red)}
|
|
127
|
+
.lang-toggle,.rel-toggle{
|
|
128
|
+
display:flex;align-items:stretch;height:var(--chrome-btn-h);border:2px solid var(--line-ink);border-radius:8px;
|
|
129
|
+
overflow:hidden;flex:0 0 auto;box-sizing:border-box;box-shadow:var(--shadow-sm)}
|
|
130
|
+
.lang-toggle button,.rel-toggle button{
|
|
131
|
+
border:0;border-radius:0;height:auto;min-height:0;padding:0 12px;font-size:12.5px;line-height:1;
|
|
132
|
+
display:inline-flex;align-items:center;justify-content:center;background:var(--paper);color:var(--muted);cursor:pointer;font-weight:700}
|
|
133
|
+
.lang-toggle button{padding:0 10px;min-width:36px}
|
|
134
|
+
.lang-toggle button + button{border-left:2px solid var(--line-ink)}
|
|
135
|
+
.lang-toggle button:hover,.rel-toggle button:hover{color:var(--ink)}
|
|
136
|
+
.lang-toggle button.on,.rel-toggle button.on{background:var(--yellow);color:var(--ink);font-weight:800}
|
|
137
|
+
button.dir-toggle{
|
|
138
|
+
position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:stretch;
|
|
139
|
+
width:60px;height:var(--chrome-btn-h);min-height:var(--chrome-btn-h);min-width:0;padding:3px;gap:0;
|
|
140
|
+
border:2px solid var(--line-ink);border-radius:8px;overflow:hidden;flex:0 0 auto;
|
|
141
|
+
box-sizing:border-box;box-shadow:var(--shadow-sm);background:var(--paper);color:var(--ink);
|
|
142
|
+
cursor:pointer;user-select:none;-webkit-user-select:none}
|
|
143
|
+
button.dir-toggle:hover,button.dir-toggle:focus,button.dir-toggle:active{
|
|
144
|
+
background:var(--paper);color:var(--ink);transform:none;box-shadow:var(--shadow-sm)}
|
|
145
|
+
.dir-toggle .dir-thumb{
|
|
146
|
+
position:absolute;top:3px;bottom:3px;left:3px;width:calc((100% - 6px)/2);z-index:2;
|
|
147
|
+
background:var(--yellow);border:2px solid var(--line-ink);border-radius:5px;pointer-events:none;
|
|
148
|
+
box-sizing:border-box;transform:translateX(100%);transition:transform .18s ease}
|
|
149
|
+
.dir-toggle.is-tb .dir-thumb{transform:translateX(0)}
|
|
150
|
+
.dir-toggle .dir-opt{
|
|
151
|
+
position:relative;z-index:1;display:flex;align-items:center;justify-content:center;
|
|
152
|
+
padding:0;font-size:10px;font-weight:800;line-height:1;color:var(--ink);white-space:nowrap;
|
|
153
|
+
pointer-events:none}
|
|
154
|
+
.dir-toggle .dir-opt.on{color:var(--ink)}
|
|
155
|
+
#rel-hint{display:none;font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
|
|
156
|
+
body.rel-mode #rel-hint{display:inline}
|
|
157
|
+
body.rel-mode{background:#f3eee4}
|
|
158
|
+
body.rel-mode header.top{background:#f3eee4}
|
|
159
|
+
body.layout-tb .node .add-child{right:auto;left:50%;top:auto;bottom:-11px;transform:translateX(-50%)}
|
|
160
|
+
.first-use{display:none;position:fixed;inset:var(--chrome-top) 0 0 0;z-index:26;
|
|
161
|
+
align-items:center;justify-content:center;background:rgba(254,250,242,.82);cursor:default}
|
|
162
|
+
.first-use.open{display:flex}
|
|
163
|
+
.first-use .card{width:min(720px,94%);background:var(--paper);border:2px solid var(--line-ink);
|
|
164
|
+
border-radius:14px;padding:26px 26px 20px;box-shadow:var(--shadow)}
|
|
165
|
+
.first-use .card.wide{width:min(920px,96%);max-height:min(86vh,760px);overflow:auto}
|
|
166
|
+
.cut-list{display:flex;flex-direction:column;gap:10px;margin:14px 0 0}
|
|
167
|
+
/* 候选搁板:候选卡散落在画布四周,与主节点无连线 */
|
|
168
|
+
.lens-shelf{position:absolute;left:0;top:0;width:0;height:0;overflow:visible;z-index:5;pointer-events:none}
|
|
169
|
+
.lens-shelf .shelf-label,.lens-shelf .shelf-card{pointer-events:auto;position:absolute}
|
|
170
|
+
.lens-shelf .shelf-label{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.06em;white-space:nowrap}
|
|
171
|
+
.shelf-card{display:flex;flex-direction:column;gap:3px;width:168px;padding:9px 11px;border:1.5px dashed var(--line-ink);
|
|
172
|
+
border-radius:11px;background:rgba(255,255,255,.86);cursor:pointer;font:inherit;color:inherit;text-align:left;
|
|
173
|
+
box-shadow:var(--shadow-sm)}
|
|
174
|
+
.shelf-card b{font-size:13px}
|
|
175
|
+
.shelf-card .p{color:var(--muted);font-size:11.5px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
|
|
176
|
+
.shelf-card:hover{background:var(--yellow)}
|
|
177
|
+
.shelf-card.taken{display:none}
|
|
178
|
+
.lens-bar{position:absolute;left:14px;bottom:14px;z-index:6;display:flex;align-items:center;gap:10px;
|
|
179
|
+
padding:9px 14px;border:2px solid var(--line-ink);border-radius:12px;background:var(--paper);box-shadow:var(--shadow)}
|
|
180
|
+
.lens-bar .cnt{font-weight:800}
|
|
181
|
+
.lens-bar .warn{color:var(--red);font-size:12px}
|
|
182
|
+
.lens-bar button{font:inherit;border:1.5px solid var(--line-ink);border-radius:9px;padding:5px 12px;cursor:pointer;background:#fff}
|
|
183
|
+
.lens-bar button.primary{background:var(--ink);color:var(--paper)}
|
|
184
|
+
.lens-bar button:disabled{opacity:.45;cursor:not-allowed}
|
|
185
|
+
.lens-pool{display:flex;flex-direction:column;gap:14px;margin:14px 0 0}
|
|
186
|
+
.lens-group{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
|
|
187
|
+
.lens-group>button.lens-head{display:flex;align-items:center;gap:8px;width:100%;text-align:left;
|
|
188
|
+
padding:10px 14px;border:0;background:var(--module-soft);cursor:pointer;font:inherit;color:inherit}
|
|
189
|
+
.lens-group>button.lens-head b{font-size:14px}
|
|
190
|
+
.lens-group>button.lens-head .why{color:var(--muted);font-size:12px;flex:1}
|
|
191
|
+
.lens-group>button.lens-head .cnt{font-size:12px;color:var(--muted)}
|
|
192
|
+
.lens-group .lens-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;padding:12px}
|
|
193
|
+
.lens-group.collapsed .lens-items{display:none}
|
|
194
|
+
.lens-opt{display:flex;gap:9px;align-items:flex-start;text-align:left;border:1.5px solid var(--line);
|
|
195
|
+
background:#fff;border-radius:10px;padding:10px 11px;cursor:pointer;font:inherit;color:inherit;min-height:64px}
|
|
196
|
+
.lens-opt:hover{background:var(--yellow)}
|
|
197
|
+
.lens-opt.on{border-color:var(--ink);background:var(--yellow);box-shadow:var(--shadow-sm)}
|
|
198
|
+
.lens-opt .box{margin-top:2px;flex:none}
|
|
199
|
+
.lens-opt b{display:block;font-size:13.5px;margin:0 0 3px}
|
|
200
|
+
.lens-opt .p{color:var(--muted);font-size:12px;line-height:1.45}
|
|
201
|
+
.lens-tray{margin:14px 0 0;border:2px dashed var(--line-ink);border-radius:12px;padding:12px 14px;background:#fffdf3}
|
|
202
|
+
.lens-tray h4{margin:0 0 8px;font-size:13px;color:var(--ink)}
|
|
203
|
+
.lens-tray h4 .n{color:var(--red);font-weight:800}
|
|
204
|
+
.lens-tray ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
|
|
205
|
+
.lens-tray li{display:flex;align-items:center;gap:8px;font-size:13px}
|
|
206
|
+
.lens-tray li input[type=text]{flex:1;border:1px solid var(--line);border-radius:7px;padding:5px 8px;font:inherit}
|
|
207
|
+
.lens-tray li .src{color:var(--muted);font-size:11px;white-space:nowrap}
|
|
208
|
+
.lens-tray li .dup{color:var(--red);font-size:11px}
|
|
209
|
+
.lens-tray li button{border:0;background:none;color:var(--red);cursor:pointer;font-size:12px}
|
|
210
|
+
.lens-tray .empty{color:var(--muted);font-size:12.5px;margin:0}
|
|
211
|
+
.lens-tray .warn{color:var(--red);font-size:12px;margin:8px 0 0}
|
|
212
|
+
.cut-opt{display:block;width:100%;text-align:left;border:2px solid var(--line-ink);background:#fff;
|
|
213
|
+
border-radius:12px;padding:12px 14px;cursor:pointer;box-shadow:var(--shadow-sm);font:inherit;color:inherit}
|
|
214
|
+
.cut-opt:hover{background:var(--yellow)}
|
|
215
|
+
.cut-opt b{display:block;font-size:15px;margin:0 0 4px}
|
|
216
|
+
.cut-opt .why{color:var(--muted);font-size:12.5px;line-height:1.45;margin:0 0 8px}
|
|
217
|
+
.cut-opt .chips{display:flex;flex-wrap:wrap;gap:6px}
|
|
218
|
+
.cut-opt .chips span{font-size:11.5px;padding:3px 8px;background:var(--module-soft);border-radius:999px;color:var(--ink)}
|
|
219
|
+
.arch-md{margin:12px 0 0;max-height:280px;overflow:auto;padding:10px 12px;border:1px solid var(--line);
|
|
220
|
+
border-radius:8px;background:#fff;font-size:11.5px;line-height:1.45;white-space:pre-wrap;
|
|
221
|
+
font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink)}
|
|
222
|
+
.arch-md[hidden]{display:none}
|
|
223
|
+
.first-use .kicker{color:var(--red);font-weight:800;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
|
|
224
|
+
.first-use h2{margin:8px 0 8px;font-size:18px}
|
|
225
|
+
.first-use p{margin:0 0 10px;color:var(--muted);font-size:13.5px;line-height:1.6}
|
|
226
|
+
.first-use .actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
|
|
227
|
+
.analyze-log{list-style:none;margin:14px 0 0;padding:0}
|
|
228
|
+
.analyze-log li{padding:8px 0;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
|
|
229
|
+
.analyze-log li:first-child{border-top:0}
|
|
230
|
+
.analyze-log li.wait{opacity:.4}
|
|
231
|
+
.analyze-log li.on{color:var(--ink);font-weight:800}
|
|
232
|
+
.analyze-log li.done{color:var(--green)}
|
|
233
|
+
.analyze-log li.done:before{content:"✓ ";font-weight:800}
|
|
234
|
+
.analyze-log .find{display:block;margin-top:4px;font-size:12px;font-weight:400;color:var(--muted)}
|
|
235
|
+
.analyze-log li.on .find{color:var(--ink)}
|
|
236
|
+
.analyze-log li.done .find{color:var(--green)}
|
|
237
|
+
.auth-btn.on{background:var(--auth);border-color:var(--auth);color:#fff}
|
|
238
|
+
.dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
|
|
239
|
+
.node .dot[data-hint]{position:relative;cursor:help;z-index:1}
|
|
240
|
+
.node .dot[data-hint]:before{content:"";position:absolute;inset:-7px}
|
|
241
|
+
.dot.dirty{background:var(--dot-dirty)} .dot.success{background:var(--dot-success)}
|
|
242
|
+
.dot.failed{background:var(--red)} .dot.untested{background:var(--gold)}
|
|
243
|
+
.dot.module{background:var(--module);border-radius:2px}
|
|
244
|
+
.dot.module.dirty{background:var(--dot-dirty)}
|
|
245
|
+
.dot.module.untested{background:var(--gold)}
|
|
246
|
+
.dot.module.success{background:var(--dot-success)}
|
|
247
|
+
.dot.module.failed{background:var(--red)}
|
|
248
|
+
.dot.proposed{background:#c7ccc6} .dot.noauth{background:#cfcfcf}
|
|
249
|
+
.dot-picks{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0 0}
|
|
250
|
+
.dot-pick{display:flex;align-items:center;gap:7px;width:100%;text-align:left;
|
|
251
|
+
padding:7px 9px;font-size:12px;font-weight:700;line-height:1.25;
|
|
252
|
+
border:2px solid transparent;background:transparent;box-shadow:none}
|
|
253
|
+
.dot-pick:hover{background:var(--module-soft);transform:none;box-shadow:none;border-color:transparent}
|
|
254
|
+
.dot-pick.on{border-color:var(--line-ink);background:#fff;box-shadow:none}
|
|
255
|
+
.dot-pick .dot{width:10px;height:10px}
|
|
256
|
+
|
|
257
|
+
/* ---------- 画布 ---------- */
|
|
258
|
+
#viewport{position:absolute;inset:var(--chrome-top) var(--drawer-width) 0 0;cursor:default;z-index:1;touch-action:none;overflow:hidden;overflow:clip;contain:paint;isolation:isolate}
|
|
259
|
+
.node.edge-sliver{visibility:hidden;pointer-events:none}
|
|
260
|
+
#viewport.grabbing{cursor:move}
|
|
261
|
+
#world{position:absolute;left:0;top:0;transform-origin:0 0}
|
|
262
|
+
#world.map-transition-zoom{will-change:transform}
|
|
263
|
+
.map-transition-snapshot{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:1;will-change:opacity}
|
|
264
|
+
.map-transition-snapshot-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
|
|
265
|
+
.map-transition-snapshot .node{pointer-events:none}
|
|
266
|
+
.map-transition-snapshot .map-transition-snapshot-anchor{visibility:hidden}
|
|
267
|
+
body.map-transition-revealing #world .node:not(.map-transition-anchor){
|
|
268
|
+
opacity:var(--map-node-opacity,0);transform:none;transition:none}
|
|
269
|
+
body.map-transition-revealing #world #links path{
|
|
270
|
+
opacity:var(--map-link-opacity,0);transition:none}
|
|
271
|
+
body.map-transitioning #viewport{cursor:wait}
|
|
272
|
+
#links{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
|
|
273
|
+
#links path.link{fill:none;stroke:#5c564c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:opacity .2s}
|
|
274
|
+
#links path.link.dimmed{opacity:.18}
|
|
275
|
+
#links path.link.focus-link{stroke:var(--green);stroke-width:2.4}
|
|
276
|
+
#links path.link.proposed-link{stroke:#c4c4be;stroke-dasharray:4 7;opacity:.28}
|
|
277
|
+
#links path.link.noauth-link{stroke:#9a9a94}
|
|
278
|
+
#links path.link.stem{stroke:#5c564c;stroke-width:2}
|
|
279
|
+
#links path.link.rel-dim{opacity:.12}
|
|
280
|
+
#links path.flow{fill:none;stroke:#5a7a62;stroke-width:1.7;stroke-dasharray:6 5;stroke-linecap:round;stroke-linejoin:round;opacity:.82}
|
|
281
|
+
#links path.flow.dim{opacity:.1}
|
|
282
|
+
#links path.flow.hot{stroke:#2f6f4e;stroke-width:2.15;opacity:1;stroke-dasharray:7 5}
|
|
283
|
+
#flow-labs{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:4;overflow:visible}
|
|
284
|
+
.flow-lab{
|
|
285
|
+
position:absolute;transform:translate(-50%,-50%);
|
|
286
|
+
font-size:11px;font-weight:700;line-height:1.25;color:#2f6f4e;
|
|
287
|
+
font-family:var(--font-ui, inherit);background:var(--bg);padding:1px 6px;
|
|
288
|
+
border-radius:4px;white-space:nowrap;pointer-events:none;box-sizing:border-box}
|
|
289
|
+
.node.ghost{opacity:.8;border-style:dashed;box-shadow:none}
|
|
290
|
+
.node.ghost.module{background:#f4f1ea}
|
|
291
|
+
.node.ghost .add-child,.node.ghost .add-pick{display:none}
|
|
292
|
+
.node.rel-dim{opacity:.16;filter:grayscale(.55) brightness(.82)}
|
|
293
|
+
.node.rel-dim.selected,.node.rel-hot.selected{opacity:1;filter:none}
|
|
294
|
+
.node.rel-hot{opacity:1;filter:none}
|
|
295
|
+
#dot-hint{position:fixed;z-index:28;max-width:220px;padding:6px 9px;
|
|
296
|
+
background:var(--paper);color:var(--ink);border:2px solid var(--line-ink);border-radius:8px;
|
|
297
|
+
box-shadow:none;font-size:12px;font-weight:700;line-height:1.35;pointer-events:none}
|
|
298
|
+
#dot-hint[hidden]{display:none}
|
|
299
|
+
body.rel-mode .node.rel-dim:hover{opacity:.4;filter:grayscale(.2) brightness(.96)}
|
|
300
|
+
body.rel-mode .node .add-child,body.rel-mode .node .add-pick{display:none}
|
|
301
|
+
/* ===== 节点:小圆角胶囊 ===== */
|
|
302
|
+
.node{position:absolute;display:flex;align-items:center;gap:6px;white-space:nowrap;
|
|
303
|
+
width:max-content;max-width:280px;word-break:keep-all;overflow:visible;
|
|
304
|
+
background:var(--paper);border:2px solid var(--line-ink);border-radius:16px;
|
|
305
|
+
padding:5px 13px 5px 11px;font-size:12.5px;line-height:1.45;cursor:pointer;user-select:none;
|
|
306
|
+
box-shadow:var(--shadow-sm);transition:opacity .2s, transform .12s}
|
|
307
|
+
.node:hover{transform:none;box-shadow:1px 1px 0 var(--line-ink)}
|
|
308
|
+
.node.selected{background:var(--yellow)}
|
|
309
|
+
.node.dimmed{opacity:.18}
|
|
310
|
+
|
|
311
|
+
/* 项目根:大号圆角 */
|
|
312
|
+
.node.root:not(.module){font-size:18px;font-weight:800;padding:16px 24px;border-width:2px;
|
|
313
|
+
border-radius:14px;max-width:none}
|
|
314
|
+
|
|
315
|
+
/* ===== 模块:便签卡片 ===== */
|
|
316
|
+
.node.module{display:flex;flex-direction:column;align-items:stretch;white-space:normal;
|
|
317
|
+
width:252px;max-width:252px;
|
|
318
|
+
border:2px solid var(--line-ink);background:var(--module-soft);border-radius:8px;
|
|
319
|
+
padding:14px 16px 13px;box-shadow:var(--shadow);word-break:keep-all}
|
|
320
|
+
.node.module:hover{transform:none;box-shadow:2px 2px 0 var(--line-ink)}
|
|
321
|
+
.node.module .m-head{display:flex;align-items:flex-start;gap:8px;font-weight:800;font-size:18px;line-height:1.3;color:var(--ink)}
|
|
322
|
+
.node.module .m-head .dot,.node.module .m-head .lock,.node.module .m-head .part-tag,.node.module .m-head .auth-mark,.node.module .m-head .focus-mark{flex:0 0 auto;margin-top:4px}
|
|
323
|
+
.node.module .m-head span{flex:1;min-width:0;white-space:normal;overflow:visible;word-break:keep-all;overflow-wrap:break-word}
|
|
324
|
+
.node.module .m-blurb{margin-top:6px;color:#8a8278;font-family:var(--font-note);font-size:11px;font-weight:400;line-height:1.4;
|
|
325
|
+
display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
|
|
326
|
+
.node.module .m-blurb:empty{display:none;margin:0}
|
|
327
|
+
.node.module.selected{background:#fff3bf}
|
|
328
|
+
.node.root.module{font-size:18px;font-weight:800}
|
|
329
|
+
|
|
330
|
+
/* Agent 提议节点(圆角虚线胶囊) */
|
|
331
|
+
.node.work{display:flex;align-items:flex-start;white-space:normal;width:max-content;max-width:280px;
|
|
332
|
+
font-size:12.5px;line-height:1.35;padding:6px 12px 6px 10px;border-radius:14px;word-break:keep-all}
|
|
333
|
+
.node.work > span{white-space:normal;overflow:visible;word-break:keep-all;overflow-wrap:break-word}
|
|
334
|
+
/* Agent 提议:灰虚线草稿;绿点单独画,不要整卡降透明度把点洗灰 */
|
|
335
|
+
.node.proposed{border:1.5px dashed rgba(110,110,106,.55);background:rgba(130,130,126,.1);
|
|
336
|
+
color:#8a8a86;box-shadow:none}
|
|
337
|
+
.node.proposed.module{border-radius:8px;background:rgba(130,130,126,.08);color:#7a7a76}
|
|
338
|
+
.node.proposed.module .m-head,
|
|
339
|
+
.node.proposed.module .m-head span{color:#7a7a76}
|
|
340
|
+
.node.proposed.module .m-blurb{color:#949490}
|
|
341
|
+
.node.proposed .dot{background:#c4c4be !important}
|
|
342
|
+
.node.proposed:hover,.node.proposed.module:hover{background:rgba(255,230,109,.22);
|
|
343
|
+
color:#6a6a66;transform:none;box-shadow:none}
|
|
344
|
+
.node.proposed.selected,.node.proposed.module.selected{background:rgba(255,230,109,.32);
|
|
345
|
+
color:#5a5a56;border-color:rgba(110,110,106,.7);box-shadow:none}
|
|
346
|
+
.node.proposed.module.selected .m-head,
|
|
347
|
+
.node.proposed.module.selected .m-head span{color:#5a5a56}
|
|
348
|
+
.node .new-dot{position:absolute;top:-5px;right:-5px;width:12px;height:12px;border-radius:50%;
|
|
349
|
+
background:#2f9e44;border:2px solid #fff;box-shadow:0 0 0 1px rgba(47,158,68,.4);
|
|
350
|
+
animation:pulse 1.6s ease-in-out infinite;z-index:2}
|
|
351
|
+
@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.7}}
|
|
352
|
+
.node .join-spin{position:absolute;top:-6px;right:-6px;width:14px;height:14px;border-radius:50%;
|
|
353
|
+
border:2px solid rgba(47,158,68,.22);border-top-color:#2f9e44;background:#fff;
|
|
354
|
+
animation:spin .7s linear infinite;z-index:2;box-shadow:0 0 0 1px #fff}
|
|
355
|
+
@keyframes spin{to{transform:rotate(360deg)}}
|
|
356
|
+
|
|
357
|
+
/* 无权限:整卡灰色,和已授权的米色模块卡分开。选中仍用黄底,方便点进检查器。 */
|
|
358
|
+
.node.noauth{background:#d4d4d0;border-color:#a3a39c;color:#5c5c58;
|
|
359
|
+
box-shadow:2px 2px 0 #a3a39c}
|
|
360
|
+
.node.noauth .dot{background:#9a9a94 !important}
|
|
361
|
+
.node.noauth.module{background:#d4d4d0;border-color:#a3a39c;color:#5c5c58}
|
|
362
|
+
.node.noauth.module .m-head,
|
|
363
|
+
.node.noauth.module .m-head span{color:#5a5a56}
|
|
364
|
+
.node.noauth .m-blurb,
|
|
365
|
+
.node.noauth.module .m-blurb{color:#8a8a84}
|
|
366
|
+
.node.noauth.selected{background:var(--yellow);color:var(--ink);
|
|
367
|
+
border-color:var(--line-ink);box-shadow:var(--shadow)}
|
|
368
|
+
.node.module.noauth.selected{background:#fff3bf;color:var(--ink);
|
|
369
|
+
border-color:var(--line-ink);box-shadow:var(--shadow)}
|
|
370
|
+
.node.module.noauth.selected .m-head,
|
|
371
|
+
.node.module.noauth.selected .m-head span{color:var(--ink)}
|
|
372
|
+
.node.module.noauth.selected .m-blurb{color:#8a8278}
|
|
373
|
+
.node .lock{font-size:11px;margin-left:1px}
|
|
374
|
+
.node .part-tag{font-size:10.5px;color:var(--auth);font-weight:600}
|
|
375
|
+
|
|
376
|
+
/* 对照页预览:?theme=44|48|1|4 只换模块卡,不改顶栏结构 */
|
|
377
|
+
html[data-node-theme="44"]{ --bg:#fffaf3; }
|
|
378
|
+
html[data-node-theme="44"] .node{
|
|
379
|
+
border-color:#e6d3a8; border-radius:20px; color:#4a3f32;
|
|
380
|
+
box-shadow:0 6px 16px rgba(180,140,60,.1);
|
|
381
|
+
font-family:"IBM Plex Sans","PingFang SC",sans-serif;
|
|
382
|
+
}
|
|
383
|
+
html[data-node-theme="44"] .node:hover{
|
|
384
|
+
transform:none; box-shadow:0 10px 28px rgba(180,140,60,.18);
|
|
385
|
+
}
|
|
386
|
+
html[data-node-theme="44"] .node.module{
|
|
387
|
+
background:#fff; border-width:2px; border-color:#e6d3a8; border-radius:20px;
|
|
388
|
+
box-shadow:0 10px 28px rgba(180,140,60,.12);
|
|
389
|
+
}
|
|
390
|
+
html[data-node-theme="44"] .node.module:hover{
|
|
391
|
+
transform:none; box-shadow:0 12px 32px rgba(180,140,60,.18);
|
|
392
|
+
}
|
|
393
|
+
html[data-node-theme="44"] .node.root:not(.module),
|
|
394
|
+
html[data-node-theme="44"] .node.root.module{background:#fff6e5}
|
|
395
|
+
html[data-node-theme="44"] .node.selected,
|
|
396
|
+
html[data-node-theme="44"] .node.module.selected,
|
|
397
|
+
html[data-node-theme="44"] .node.noauth.selected,
|
|
398
|
+
html[data-node-theme="44"] .node.module.noauth.selected{background:#ffe9b8; color:#4a3f32; border-color:#e6d3a8; box-shadow:0 10px 28px rgba(180,140,60,.12)}
|
|
399
|
+
html[data-node-theme="44"] .node.module .m-blurb,
|
|
400
|
+
html[data-node-theme="44"] .node.module.noauth.selected .m-blurb{color:#9a8b78}
|
|
401
|
+
html[data-node-theme="44"] .node.noauth,
|
|
402
|
+
html[data-node-theme="44"] .node.noauth.module{
|
|
403
|
+
background:#eee9e0; border-color:#d9ccb4; color:#5c5c58;
|
|
404
|
+
box-shadow:0 6px 16px rgba(160,140,100,.08);
|
|
405
|
+
}
|
|
406
|
+
html[data-node-theme="44"] .dot.module:not(.untested):not(.success):not(.failed){background:#d4a017}
|
|
407
|
+
html[data-node-theme="44"] #links path.link,
|
|
408
|
+
html[data-node-theme="44"] #links path.link.stem{stroke:#e6d3a8}
|
|
409
|
+
|
|
410
|
+
html[data-node-theme="48"]{ --bg:#f8f4ea; }
|
|
411
|
+
html[data-node-theme="48"] .node{
|
|
412
|
+
border-color:#cfc6b4; border-radius:10px; box-shadow:2px 2px 0 #cfc6b4;
|
|
413
|
+
}
|
|
414
|
+
html[data-node-theme="48"] .node:hover{box-shadow:1px 1px 0 #cfc6b4}
|
|
415
|
+
html[data-node-theme="48"] .node.module{
|
|
416
|
+
background:#e7eef8; border-width:1.5px; border-color:#cfc6b4; border-radius:10px;
|
|
417
|
+
box-shadow:3px 3px 0 #cfc6b4;
|
|
418
|
+
}
|
|
419
|
+
html[data-node-theme="48"] .node.module:hover{box-shadow:2px 2px 0 #cfc6b4}
|
|
420
|
+
html[data-node-theme="48"] .node.root:not(.module),
|
|
421
|
+
html[data-node-theme="48"] .node.root.module{background:#ffe08a}
|
|
422
|
+
html[data-node-theme="48"] .node.selected,
|
|
423
|
+
html[data-node-theme="48"] .node.module.selected,
|
|
424
|
+
html[data-node-theme="48"] .node.noauth.selected,
|
|
425
|
+
html[data-node-theme="48"] .node.module.noauth.selected{background:#fde2c8; border-color:#cfc6b4; box-shadow:3px 3px 0 #cfc6b4}
|
|
426
|
+
html[data-node-theme="48"] .node.noauth,
|
|
427
|
+
html[data-node-theme="48"] .node.noauth.module{
|
|
428
|
+
background:#e4e0d6; border-color:#cfc6b4; box-shadow:2px 2px 0 #cfc6b4;
|
|
429
|
+
}
|
|
430
|
+
html[data-node-theme="48"] #links path.link,
|
|
431
|
+
html[data-node-theme="48"] #links path.link.stem{stroke:#cfc6b4}
|
|
432
|
+
|
|
433
|
+
html[data-node-theme="4"]{ --bg:#f5f5f2; }
|
|
434
|
+
html[data-node-theme="4"] .node{
|
|
435
|
+
border:1px solid #bbb; border-radius:10px; box-shadow:none; color:#222;
|
|
436
|
+
font-family:"IBM Plex Sans","PingFang SC",sans-serif;
|
|
437
|
+
}
|
|
438
|
+
html[data-node-theme="4"] .node:hover,
|
|
439
|
+
html[data-node-theme="4"] .node.module:hover{transform:none; box-shadow:none; border-color:#999}
|
|
440
|
+
html[data-node-theme="4"] .node.module{
|
|
441
|
+
background:#eeeae2; border:1px solid #bbb; border-radius:10px; box-shadow:none;
|
|
442
|
+
}
|
|
443
|
+
html[data-node-theme="4"] .node.root:not(.module),
|
|
444
|
+
html[data-node-theme="4"] .node.root.module{background:#fff4c2}
|
|
445
|
+
html[data-node-theme="4"] .node.selected,
|
|
446
|
+
html[data-node-theme="4"] .node.module.selected,
|
|
447
|
+
html[data-node-theme="4"] .node.noauth.selected,
|
|
448
|
+
html[data-node-theme="4"] .node.module.noauth.selected{background:#ffe9a8; border-color:#bbb; box-shadow:none}
|
|
449
|
+
html[data-node-theme="4"] .node.module .m-blurb,
|
|
450
|
+
html[data-node-theme="4"] .node.module.noauth.selected .m-blurb{color:#777; font-family:var(--font-note)}
|
|
451
|
+
html[data-node-theme="4"] .node.noauth,
|
|
452
|
+
html[data-node-theme="4"] .node.noauth.module{
|
|
453
|
+
background:#ddd; border-color:#ccc; box-shadow:none;
|
|
454
|
+
}
|
|
455
|
+
html[data-node-theme="44"] .node.root.module.drilled-root:not(.noauth){background:#fff}
|
|
456
|
+
html[data-node-theme="48"] .node.root.module.drilled-root:not(.noauth){background:#e7eef8}
|
|
457
|
+
html[data-node-theme="4"] .node.root.module.drilled-root:not(.noauth){background:#eeeae2}
|
|
458
|
+
html[data-node-theme="4"] .dot.module:not(.untested):not(.success):not(.failed){background:#4a7ab5}
|
|
459
|
+
html[data-node-theme="4"] #links path.link,
|
|
460
|
+
html[data-node-theme="4"] #links path.link.stem{stroke:#bbb}
|
|
461
|
+
|
|
462
|
+
.theme-preview-banner{display:none;position:fixed;left:12px;bottom:12px;z-index:35;
|
|
463
|
+
padding:6px 10px;background:#fff;border:2px solid var(--line-ink);border-radius:8px;
|
|
464
|
+
font-size:12px;font-weight:700;box-shadow:var(--shadow-sm)}
|
|
465
|
+
html.theme-preview .theme-preview-banner{display:none}
|
|
466
|
+
.phone-preview-banner{display:none;position:fixed;left:12px;bottom:12px;z-index:35;
|
|
467
|
+
padding:6px 10px;background:#fff;border:2px solid var(--line-ink);border-radius:8px;
|
|
468
|
+
font-size:12px;font-weight:700;box-shadow:var(--shadow-sm)}
|
|
469
|
+
html.phone-preview .phone-preview-banner{display:block}
|
|
470
|
+
html.theme-preview.phone-preview .phone-preview-banner{bottom:52px}
|
|
471
|
+
|
|
472
|
+
.settings-wrap{position:relative;flex:0 0 auto}
|
|
473
|
+
#btn-settings{width:var(--chrome-btn-h);height:var(--chrome-btn-h);padding:0;display:inline-grid;place-items:center;flex:0 0 auto}
|
|
474
|
+
#btn-settings .gear-icon{width:18px;height:18px;display:block}
|
|
475
|
+
.settings-menu{display:none;position:absolute;right:0;top:100%;margin-top:8px;z-index:40;width:248px;
|
|
476
|
+
background:var(--paper);border:2px solid var(--line-ink);border-radius:10px;box-shadow:var(--shadow);padding:10px}
|
|
477
|
+
.settings-menu.open{display:block}
|
|
478
|
+
.settings-menu{max-height:calc(100dvh - 90px);overflow-y:auto}
|
|
479
|
+
.settings-menu .set-label{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.06em;margin:0 0 6px}
|
|
480
|
+
.settings-menu .set-block + .set-block{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
|
|
481
|
+
.settings-menu .set-tools{display:flex;flex-direction:column;gap:6px}
|
|
482
|
+
.settings-menu .set-tools .rel-toggle,
|
|
483
|
+
.settings-menu .set-tools .tray-btn{width:100%;box-sizing:border-box}
|
|
484
|
+
.settings-menu .set-tools .rel-toggle button{width:100%}
|
|
485
|
+
#btn-tray.on{background:var(--yellow);font-weight:800}
|
|
486
|
+
#btn-beta-motion{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;box-sizing:border-box}
|
|
487
|
+
#btn-beta-motion.on{background:var(--yellow);font-weight:800}
|
|
488
|
+
.beta-badge{display:inline-flex;align-items:center;min-height:18px;padding:0 6px;border:1.5px solid var(--line-ink);border-radius:999px;background:var(--module-soft);font-size:9px;font-weight:900;letter-spacing:.08em;line-height:1}
|
|
489
|
+
#btn-beta-motion.on .beta-badge{background:var(--paper)}
|
|
490
|
+
.theme-picks{display:flex;flex-direction:column;gap:4px}
|
|
491
|
+
.theme-pick{display:flex;align-items:center;gap:8px;width:100%;text-align:left;
|
|
492
|
+
border:2px solid transparent;background:transparent;box-shadow:none;border-radius:8px;
|
|
493
|
+
padding:6px 8px;font-size:13px;font-weight:700}
|
|
494
|
+
.theme-pick:hover{background:var(--module-soft);transform:none;box-shadow:none;border-color:transparent}
|
|
495
|
+
.theme-pick.on{border-color:var(--line-ink);background:var(--yellow);box-shadow:var(--shadow-sm)}
|
|
496
|
+
.theme-pick .swatch{width:22px;height:14px;border-radius:4px;flex:0 0 auto;border:1.5px solid #2d2d2d}
|
|
497
|
+
.settings-menu .lang-toggle{width:100%}
|
|
498
|
+
.settings-menu .lang-toggle button{flex:1}
|
|
499
|
+
.sync-settings{font-size:12px}
|
|
500
|
+
.sync-settings summary{cursor:pointer;font-weight:700;color:var(--muted)}
|
|
501
|
+
.sync-settings p{line-height:1.5;overflow-wrap:anywhere}
|
|
502
|
+
.sync-actions{display:grid;gap:6px}
|
|
503
|
+
.sync-actions button{font-size:12px;padding:6px 8px;text-align:left}
|
|
504
|
+
.sync-settings label{display:block;margin-top:12px;color:var(--muted)}
|
|
505
|
+
.sync-settings select{display:block;width:100%;min-width:0;margin-top:5px;font:inherit}
|
|
506
|
+
.sync-notice{margin-left:8px;color:var(--red);font-size:12px;white-space:nowrap}
|
|
507
|
+
.publish-main{min-width:86px;white-space:nowrap}
|
|
508
|
+
.publish-main[data-status="ready"]{background:var(--yellow)}
|
|
509
|
+
.publish-main[data-status="published"]{color:var(--green);border-color:var(--green);background:var(--green-soft)}
|
|
510
|
+
.publish-main[data-status="waiting"],.publish-main[data-status="conflict"],.publish-main[data-status="error"]{color:var(--focus);background:#fff3bf}
|
|
511
|
+
.publish-main:disabled{cursor:default;opacity:.78;transform:none;box-shadow:var(--shadow-sm)}
|
|
512
|
+
|
|
513
|
+
/* 授权模式 */
|
|
514
|
+
body.auth-mode .node{cursor:cell}
|
|
515
|
+
.node .auth-mark{display:none;width:15px;height:15px;border-radius:50%;border:2px solid #c9bfdd;
|
|
516
|
+
align-items:center;justify-content:center;font-size:10px;color:#fff;flex:0 0 auto}
|
|
517
|
+
body.auth-mode .node .auth-mark{display:flex}
|
|
518
|
+
body.auth-mode .node .auth-mark.on{background:var(--auth);border-color:var(--auth)}
|
|
519
|
+
body.auth-mode .node:hover{border-color:var(--auth);box-shadow:0 2px 8px rgba(122,92,168,.25)}
|
|
520
|
+
|
|
521
|
+
.node .bug-badge{background:var(--red);color:#fff;border-radius:9px;min-width:17px;height:17px;
|
|
522
|
+
line-height:17px;text-align:center;font-size:11px;padding:0 5px}
|
|
523
|
+
.node .focus-mark{color:var(--focus);font-weight:700;font-size:11px}
|
|
524
|
+
.node .add-child{position:absolute;right:-10px;top:50%;transform:translateY(-50%);width:18px;height:18px;
|
|
525
|
+
border-radius:50%;border:2px solid;border-color:inherit;background:inherit;color:inherit;
|
|
526
|
+
font-size:12px;font-weight:600;line-height:14px;text-align:center;opacity:1;box-shadow:none;
|
|
527
|
+
cursor:pointer;transition:opacity .15s}
|
|
528
|
+
.node .add-pick{
|
|
529
|
+
display:none;position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);
|
|
530
|
+
z-index:6;flex-direction:column;align-items:stretch;gap:2px;min-width:92px;padding:4px;
|
|
531
|
+
background:var(--paper);border:2px solid var(--line-ink);border-radius:10px;box-shadow:none;color:var(--ink)}
|
|
532
|
+
.node .add-pick button{
|
|
533
|
+
display:flex;align-items:center;justify-content:center;margin:0;height:auto;min-height:0;
|
|
534
|
+
padding:7px 10px;border:2px solid transparent;border-radius:8px;background:transparent;
|
|
535
|
+
box-shadow:none;font-size:12.5px;font-weight:700;line-height:1.2;color:var(--ink);cursor:pointer}
|
|
536
|
+
.node .add-pick button:hover,.node .add-pick button:focus{
|
|
537
|
+
background:var(--module-soft);transform:none;box-shadow:none;border-color:transparent}
|
|
538
|
+
.node.picking{z-index:5}
|
|
539
|
+
.node.picking .add-child{opacity:1}
|
|
540
|
+
.node.picking .add-pick{display:flex}
|
|
541
|
+
body.layout-tb .node .add-pick{
|
|
542
|
+
left:50%;top:auto;right:auto;bottom:-12px;transform:translate(-50%,100%)}
|
|
543
|
+
@media (hover:hover) and (pointer:fine){
|
|
544
|
+
.node .add-child{opacity:0}
|
|
545
|
+
.node:hover .add-child,.node.picking .add-child{opacity:.9}
|
|
546
|
+
}
|
|
547
|
+
.node .add-child:hover,.node.picking .add-child{opacity:1}
|
|
548
|
+
body.auth-mode .node .add-child,body.auth-mode .node .add-pick{display:none}
|
|
549
|
+
|
|
550
|
+
/* ---------- 已取消托盘 ---------- */
|
|
551
|
+
.tray{position:fixed;left:16px;top:calc(var(--chrome-top) + 8px);z-index:29;width:330px;background:var(--paper);
|
|
552
|
+
border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 24px rgba(42,47,43,.14);
|
|
553
|
+
padding:14px 16px;display:none}
|
|
554
|
+
.tray.open{display:block}
|
|
555
|
+
.tray h3{margin:0 0 3px;font-size:14px}
|
|
556
|
+
.tray p.hint{margin:0 0 10px;font-size:12px;color:var(--muted)}
|
|
557
|
+
.tray ul{list-style:none;margin:0;padding:0}
|
|
558
|
+
.tray li{padding:9px 0;border-top:1px solid var(--line)}
|
|
559
|
+
.tray li:first-child{border-top:0}
|
|
560
|
+
.tray .t-title{font-size:13px;color:var(--muted);text-decoration:line-through}
|
|
561
|
+
.tray .t-actions{display:flex;gap:6px;margin-top:6px}
|
|
562
|
+
.tray .t-actions button{font-size:12px;padding:3px 9px}
|
|
563
|
+
.tray .t-actions .danger:hover{border-color:var(--red);color:var(--red)}
|
|
564
|
+
.tray .confirm-row{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:12.5px;color:var(--red)}
|
|
565
|
+
.tray .empty{color:var(--muted);font-size:12.5px;padding:6px 0}
|
|
566
|
+
|
|
567
|
+
/* ---------- 未修 Bug 面板 ---------- */
|
|
568
|
+
#btn-bugs.on,#btn-todos.on,#btn-coordinator[aria-expanded="true"]{background:var(--yellow);font-weight:800}
|
|
569
|
+
#btn-coordinator[hidden]{display:none}
|
|
570
|
+
.bug-panel{position:fixed;right:0;top:var(--chrome-top);bottom:0;z-index:22;width:var(--bug-panel-width);
|
|
571
|
+
background:var(--paper);border-left:2px solid var(--line-ink);overflow:auto;
|
|
572
|
+
padding:10px 0 20px;display:none;cursor:default}
|
|
573
|
+
.bug-panel.open{display:block}
|
|
574
|
+
body.bugs-open #viewport{right:var(--bug-panel-width)}
|
|
575
|
+
body.bugs-open .drawer{display:none}
|
|
576
|
+
body.bugs-open .drawer-split{right:calc(var(--bug-panel-width) - 12px)}
|
|
577
|
+
.bug-panel h3{margin:0 12px 6px;font-size:13px;font-weight:800}
|
|
578
|
+
.bug-panel ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
|
|
579
|
+
.bug-panel li{display:flex;align-items:center;gap:8px;
|
|
580
|
+
padding:8px 12px;border:0;border-bottom:1px solid var(--line);border-radius:0;cursor:pointer;margin:0}
|
|
581
|
+
.bug-panel li:hover{background:#fff}
|
|
582
|
+
.bug-panel li.on{background:#fff3bf;box-shadow:inset 3px 0 0 var(--line-ink)}
|
|
583
|
+
.bug-panel .bug-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
|
|
584
|
+
.bug-panel .bug-title{min-width:0;font-size:12.5px;font-weight:800;line-height:1.3;
|
|
585
|
+
display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
|
|
586
|
+
.bug-panel .bug-row{display:flex;align-items:center;flex:0 1 auto;max-width:52%;min-width:0;margin:0}
|
|
587
|
+
.bug-panel .bug-row .bug-status{max-width:100%}
|
|
588
|
+
.bug-panel .sess-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
|
|
589
|
+
.bug-panel .claim{font-size:11.5px;padding:0;border:0;box-shadow:none;background:transparent;color:var(--module);font-weight:800;white-space:nowrap}
|
|
590
|
+
.bug-panel .claim:hover{background:transparent;transform:none;box-shadow:none;text-decoration:underline}
|
|
591
|
+
.bug-panel li:not(.on) .claim{pointer-events:none;text-decoration:none}
|
|
592
|
+
.bug-panel .empty{color:var(--muted);font-size:12.5px;padding:8px 12px;border-bottom:0}
|
|
593
|
+
.bug-status{display:inline-flex;align-items:center;align-self:flex-start;max-width:100%;padding:2px 7px;border-radius:999px;
|
|
594
|
+
font-size:10.5px;font-weight:700;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
595
|
+
.bug-status.waiting{background:#fff3bf;color:var(--focus)}
|
|
596
|
+
.bug-status.processing{background:var(--blue-soft);color:var(--module)}
|
|
597
|
+
.bug-status.handoff{background:var(--red-soft);color:var(--red)}
|
|
598
|
+
.bug-status.settling,.bug-status.fixed,.bug-status.resolved{background:var(--green-soft);color:var(--green)}
|
|
599
|
+
.bug-status.unfixable{background:#eeeeec;color:var(--muted)}
|
|
600
|
+
.bug-main>.bug-status{margin:3px 0 0 8px}
|
|
601
|
+
body.bug-path-mode{background:#f7f1e6}
|
|
602
|
+
body.bug-path-mode header.top{background:#f7f1e6}
|
|
603
|
+
body.bug-path-mode .node .add-child,body.bug-path-mode .node .add-pick{display:none}
|
|
604
|
+
body.bug-path-mode .node.bug-target{border-color:var(--red);box-shadow:3px 3px 0 #c45c4a}
|
|
605
|
+
body.bug-path-mode .dir-toggle,
|
|
606
|
+
body.bug-path-mode .rel-toggle,
|
|
607
|
+
body.bug-path-mode #rel-hint{display:none}
|
|
608
|
+
body.bug-path-mode .drawer .lead{min-height:0;-webkit-line-clamp:2}
|
|
609
|
+
body.bug-path-mode .drawer .actions{margin-top:8px}
|
|
610
|
+
body.bug-path-mode .drawer h2{font-size:18px}
|
|
611
|
+
body.bug-path-mode .drawer .sess-dot{width:8px;height:8px;border-radius:50%;display:inline-block;align-self:center}
|
|
612
|
+
.nav-crumbs .bug-exit{font-size:12px;padding:3px 9px;margin-right:4px}
|
|
613
|
+
.nav-crumbs .bug-tag{background:var(--red-soft);color:var(--red);font-weight:800;padding:3px 9px;border-radius:6px}
|
|
614
|
+
#links path.link.bug-path{stroke:#8a5348;stroke-width:2.4}
|
|
615
|
+
#links path.current-flow{fill:none;stroke-width:4.6;stroke-dasharray:7 16;stroke-linecap:round;
|
|
616
|
+
opacity:1;filter:drop-shadow(0 0 5px #fff8) drop-shadow(0 0 7px);animation:current-run .65s linear infinite}
|
|
617
|
+
@keyframes current-run{to{stroke-dashoffset:-23}}
|
|
618
|
+
@media (prefers-reduced-motion:reduce){#links path.current-flow{animation:none}}
|
|
619
|
+
#currents{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:3;overflow:visible}
|
|
620
|
+
.current-bead{position:absolute;left:0;top:0;width:13px;height:13px;margin:-7px 0 0 -7px;
|
|
621
|
+
border-radius:50%;border:2px solid #fff;box-shadow:0 0 10px 3px rgba(255,255,255,.8);pointer-events:none;
|
|
622
|
+
offset-rotate:0deg;animation:bead-run .85s linear infinite}
|
|
623
|
+
.current-bead:after{content:"";position:absolute;inset:3px;border-radius:50%;background:#fff;opacity:.9}
|
|
624
|
+
@keyframes bead-run{from{offset-distance:0%}to{offset-distance:100%}}
|
|
625
|
+
|
|
626
|
+
/* ---------- 右侧抽屉 ---------- */
|
|
627
|
+
.drawer{position:fixed;top:var(--chrome-top);right:0;bottom:0;width:var(--drawer-width);z-index:20;background:var(--paper);
|
|
628
|
+
border-left:2px solid var(--line-ink);overflow:auto;padding:16px 16px 28px;cursor:default;
|
|
629
|
+
font-family:"IBM Plex Sans","Noto Sans SC","PingFang SC",sans-serif}
|
|
630
|
+
.drawer-split{position:fixed;top:var(--chrome-top);right:calc(var(--drawer-width) - 12px);width:24px;bottom:0;
|
|
631
|
+
z-index:25;cursor:col-resize;touch-action:none;background:rgba(45,45,45,.001)}
|
|
632
|
+
.drawer-split:before{content:"";position:absolute;top:0;bottom:0;left:11px;width:2px;background:transparent}
|
|
633
|
+
.drawer-split:hover:before,.drawer-split:focus-visible:before,body.drawer-resizing .drawer-split:before{
|
|
634
|
+
background:var(--line-ink)}
|
|
635
|
+
.drawer-split:hover,.drawer-split:focus-visible,body.drawer-resizing .drawer-split{
|
|
636
|
+
background:rgba(45,45,45,.08)}
|
|
637
|
+
body.drawer-resizing{cursor:col-resize;user-select:none}
|
|
638
|
+
body.drawer-resizing #viewport,
|
|
639
|
+
body.drawer-resizing .drawer,
|
|
640
|
+
body.drawer-resizing .bug-panel{pointer-events:none}
|
|
641
|
+
.crumbs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;color:var(--muted);font-size:12px;margin-bottom:2px}
|
|
642
|
+
.crumbs a{color:var(--green);text-decoration:none;cursor:pointer}
|
|
643
|
+
.crumbs .sep{color:var(--line)}
|
|
644
|
+
.drawer h2{margin:4px 0 0;font-size:18px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:700}
|
|
645
|
+
.drawer h2.detail-head{flex-wrap:nowrap;justify-content:space-between;width:100%}
|
|
646
|
+
.drawer h2 .head-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;flex:1}
|
|
647
|
+
.add-hint{margin:10px 0 0;font-size:12px;font-weight:700;color:var(--muted);line-height:1.4}
|
|
648
|
+
.delete-ask{margin:10px 0 0;padding:10px 12px;border:2px solid var(--line-ink);border-radius:10px;background:#fff;box-shadow:none}
|
|
649
|
+
.delete-ask p{margin:0 0 8px;font-size:12.5px;font-weight:700;line-height:1.4;color:var(--ink)}
|
|
650
|
+
.delete-ask .row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
|
|
651
|
+
button.trash{
|
|
652
|
+
width:var(--chrome-btn-h);height:var(--chrome-btn-h);min-height:var(--chrome-btn-h);padding:0;
|
|
653
|
+
border:0;border-radius:8px;background:transparent;box-shadow:none;color:var(--red);
|
|
654
|
+
display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;overflow:visible}
|
|
655
|
+
button.trash:hover,button.trash:focus{
|
|
656
|
+
background:var(--red-soft);color:var(--red);transform:none;box-shadow:none;border-color:transparent}
|
|
657
|
+
button.trash svg{width:18px;height:18px;display:block;overflow:visible}
|
|
658
|
+
button.trash .lid{
|
|
659
|
+
transform-box:fill-box;transform-origin:center bottom;
|
|
660
|
+
transition:transform .22s cubic-bezier(.2,.8,.2,1)}
|
|
661
|
+
button.trash:hover .lid,button.trash:focus .lid{transform:rotate(-28deg) translate(-1px,-3px)}
|
|
662
|
+
@media (prefers-reduced-motion: reduce){
|
|
663
|
+
button.trash .lid{transition:none}
|
|
664
|
+
button.trash:hover .lid,button.trash:focus .lid{transform:none}
|
|
665
|
+
#world.map-transition-zoom,
|
|
666
|
+
body.map-transitioning #world .node,body.map-transitioning #world #links path{transition:none!important}
|
|
667
|
+
}
|
|
668
|
+
/* 荧光笔划在字上。线上是画廊 11 圆头笔。 */
|
|
669
|
+
.state-chip,
|
|
670
|
+
.g-chrome .st,
|
|
671
|
+
.g-add-mock .st,
|
|
672
|
+
.g-tr-mock .st{
|
|
673
|
+
--mark:#ffe66d;
|
|
674
|
+
position:relative;isolation:isolate;z-index:0;overflow:visible;
|
|
675
|
+
font-size:14px;font-weight:700;font-style:normal;flex:0 0 auto;
|
|
676
|
+
padding:0 5px;border-radius:0;background:transparent;color:var(--ink);
|
|
677
|
+
line-height:1.35}
|
|
678
|
+
.state-chip:before,
|
|
679
|
+
.g-chrome .st:before,
|
|
680
|
+
.g-add-mock .st:before,
|
|
681
|
+
.g-tr-mock .st:before{
|
|
682
|
+
content:"";position:absolute;z-index:-1;pointer-events:none;
|
|
683
|
+
left:-3px;right:-3px;top:.28em;bottom:.06em;
|
|
684
|
+
background:var(--mark);border-radius:10px;transform:skewX(-4deg);opacity:.92}
|
|
685
|
+
.state-chip.success{--mark:#c6ed6e}
|
|
686
|
+
.state-chip.untested{--mark:#ffe66d}
|
|
687
|
+
.state-chip.failed{--mark:#ffb3a6}
|
|
688
|
+
.state-chip.dirty{--mark:#a8cfff}
|
|
689
|
+
.state-chip.module{--mark:#f0e0b0}
|
|
690
|
+
.state-chip.proposed-chip{--mark:#e4e2dc;color:var(--muted)}
|
|
691
|
+
.state-chip.noauth-chip{--mark:#ecece8;color:#9a9d98}
|
|
692
|
+
.g-chrome .st,.g-add-mock .st,.g-tr-mock .st{--mark:#ffe66d}
|
|
693
|
+
.lead{margin:6px 0 0;color:var(--muted);font-size:12px;line-height:1.45;font-family:var(--font-note);
|
|
694
|
+
display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
|
|
695
|
+
min-height:2.9em}
|
|
696
|
+
.lead.ed{display:block;padding:6px 8px;min-height:1.5em;box-sizing:border-box}
|
|
697
|
+
.lead.ed:empty,
|
|
698
|
+
.lead.ed:focus{min-height:5.5em;padding:8px 10px;border:2px solid var(--line-ink);
|
|
699
|
+
border-radius:8px;background:#fff;overflow:auto;-webkit-line-clamp:unset}
|
|
700
|
+
.lead.ed:focus{background:var(--green-soft);border-color:var(--green);box-shadow:none}
|
|
701
|
+
.lead.ed:empty:before{content:"一句用途";color:var(--muted)}
|
|
702
|
+
html[lang="en"] .lead.ed:empty:before{content:"One-line purpose"}
|
|
703
|
+
.drawer .work-list{margin:8px 0 0;padding:0 0 0 18px;color:var(--muted);font-size:12px;line-height:1.45}
|
|
704
|
+
.drawer .work-list li{margin:0 0 2px}
|
|
705
|
+
.note{margin:8px 0 0;font-size:12.5px;color:var(--muted)}
|
|
706
|
+
.note.alert{color:var(--red)}
|
|
707
|
+
.proposal-evidence{margin:10px 0 0;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.48);font-size:12px;line-height:1.5;color:var(--muted)}
|
|
708
|
+
.proposal-evidence p{margin:0 0 4px}.proposal-evidence p:last-child{margin-bottom:0}.proposal-evidence b{color:var(--ink)}
|
|
709
|
+
.proposal-evidence code{font-family:var(--font-ui);font-size:11px;overflow-wrap:anywhere}
|
|
710
|
+
.actions{display:flex;gap:6px;margin:10px 0 0;flex-wrap:wrap;align-items:center}
|
|
711
|
+
.actions > button,.compose > button,.delete-ask .row button{
|
|
712
|
+
height:var(--chrome-btn-h);min-height:var(--chrome-btn-h);padding:0 12px;line-height:1;
|
|
713
|
+
display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}
|
|
714
|
+
.files-row{margin-top:10px}
|
|
715
|
+
.compose{display:flex;gap:6px;margin-top:10px;align-items:stretch}
|
|
716
|
+
.compose .ed{flex:1;min-width:0;min-height:40px;padding:8px 12px;line-height:1.45;
|
|
717
|
+
display:block;box-sizing:border-box;border:2px solid var(--line-ink);border-radius:8px;background:#fff}
|
|
718
|
+
.compose .ed:focus{background:var(--green-soft);border-color:var(--green);box-shadow:none}
|
|
719
|
+
.confirm-row{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:12.5px;color:var(--red)}
|
|
720
|
+
button{font:inherit;font-size:13px;font-weight:700;padding:6px 12px;border:2px solid var(--line-ink);background:var(--paper);
|
|
721
|
+
border-radius:8px;cursor:pointer;color:var(--ink);box-shadow:var(--shadow-sm)}
|
|
722
|
+
button:hover{background:var(--yellow);color:var(--ink);transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line-ink)}
|
|
723
|
+
button.primary{background:var(--red);border-color:var(--line-ink);color:#fffef9}
|
|
724
|
+
button.primary:hover{opacity:1;background:#c93d3d;color:#fffef9}
|
|
725
|
+
button.auth-primary{background:var(--auth);border-color:var(--line-ink);color:#fff}
|
|
726
|
+
button.auth-primary:hover{opacity:1;color:#fff}
|
|
727
|
+
button.warn:hover{border-color:var(--line-ink);background:var(--red-soft);color:var(--red)}
|
|
728
|
+
button.quiet{border-color:transparent;color:var(--muted);padding:6px 8px;box-shadow:none}
|
|
729
|
+
button.quiet:hover{border-color:var(--line-ink);color:var(--ink);box-shadow:var(--shadow-sm);background:var(--paper)}
|
|
730
|
+
.plus-btn{width:28px;height:28px;padding:0;display:inline-grid;place-items:center;
|
|
731
|
+
font-size:18px;line-height:1;font-weight:700;border-radius:8px;border:0;background:transparent;
|
|
732
|
+
color:var(--muted);box-shadow:none}
|
|
733
|
+
.plus-btn:hover{transform:none;box-shadow:none;background:transparent;color:var(--ink)}
|
|
734
|
+
section.block{margin-top:14px}
|
|
735
|
+
section.block .block-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 4px}
|
|
736
|
+
section.block>h3,section.block .block-head h3{margin:0;font-size:13px;color:var(--ink);letter-spacing:0;font-weight:800}
|
|
737
|
+
.mem-list{list-style:none;margin:0;padding:0}
|
|
738
|
+
.mem-list li{display:flex;gap:9px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line);font-size:12.5px;font-family:var(--font-note)}
|
|
739
|
+
.mem-list li:first-child{border-top:0}
|
|
740
|
+
.mem-list .dot{margin-top:5px}
|
|
741
|
+
.mem-list .src{color:var(--muted);font-size:11px;margin-left:6px;white-space:nowrap}
|
|
742
|
+
.mem-list li.dirty-item{color:var(--muted)}
|
|
743
|
+
.mem-body,.bug-main{flex:1;min-width:0}
|
|
744
|
+
.mem-body .txt{display:block;width:100%;box-sizing:border-box;line-height:1.5;
|
|
745
|
+
min-height:1.5em;padding:2px 4px;overflow:hidden}
|
|
746
|
+
.mem-body .txt:not(:focus):not(:empty){display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
|
|
747
|
+
.mem-body .txt:empty,
|
|
748
|
+
.mem-body .txt:focus{min-height:6em;padding:8px 10px;border:2px solid var(--line-ink);
|
|
749
|
+
border-radius:8px;background:#fff;overflow:auto;-webkit-line-clamp:unset}
|
|
750
|
+
.mem-body .txt:focus{background:var(--green-soft);border-color:var(--green);box-shadow:none}
|
|
751
|
+
.mem-body .txt:empty:before{content:"写一条记忆";color:var(--muted)}
|
|
752
|
+
.mem-body .txt[data-ed="idea"]:empty:before{content:"写一条 Idea"}
|
|
753
|
+
html[lang="en"] .mem-body .txt:empty:before{content:"Write a memory"}
|
|
754
|
+
html[lang="en"] .mem-body .txt[data-ed="idea"]:empty:before{content:"Write an idea"}
|
|
755
|
+
.empty{color:var(--muted);font-size:13px;padding:4px 0}
|
|
756
|
+
.ed{cursor:text;border-radius:6px;outline:none;-webkit-user-modify:read-write-plaintext-only;
|
|
757
|
+
min-height:1.6em;line-height:1.5;padding:4px 6px;box-sizing:border-box}
|
|
758
|
+
.ed:hover{background:rgba(47,125,99,.07)}
|
|
759
|
+
.ed:focus{background:var(--green-soft);box-shadow:inset 0 -2px 0 var(--green)}
|
|
760
|
+
.ed.ghost{color:var(--muted)}
|
|
761
|
+
.ed.ghost:focus{color:var(--ink)}
|
|
762
|
+
.text-link{color:#2467a6;text-decoration:underline;text-decoration-thickness:1px;
|
|
763
|
+
text-underline-offset:2px;overflow-wrap:anywhere;cursor:pointer}
|
|
764
|
+
.text-link:hover{color:#174a7a}
|
|
765
|
+
h2 .ed{flex:1 1 auto;min-width:4em;min-height:1.2em;padding:2px 4px}
|
|
766
|
+
.sec-block{margin-top:0;padding:16px 0 12px;border-top:1px solid var(--line)}
|
|
767
|
+
.sec-add{display:inline-flex;align-items:center;gap:6px}
|
|
768
|
+
.sec-block .mem-list,.sec-block .bug-list{margin-top:8px}
|
|
769
|
+
details.fold{margin-top:0;border-top:1px solid var(--line);padding:16px 0 12px}
|
|
770
|
+
details.fold>summary{cursor:pointer;color:var(--muted);font-size:13px;list-style:none;
|
|
771
|
+
display:flex;align-items:center;gap:8px;min-height:28px;line-height:1.4;padding:4px 0}
|
|
772
|
+
details.fold>summary .plus-btn{margin-left:auto}
|
|
773
|
+
details.fold>summary::-webkit-details-marker{display:none}
|
|
774
|
+
details.fold>summary:hover{color:var(--ink)}
|
|
775
|
+
details.fold .mem-list,details.fold .bug-list,details.fold .dormant-list{margin-top:2px}
|
|
776
|
+
details.fold .mem-list li,details.fold .bug-list li,details.fold .dormant-list li{padding:10px 0 8px}
|
|
777
|
+
.memory-document-editor{display:block;width:100%;min-height:160px;box-sizing:border-box;margin:10px 0;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}
|
|
778
|
+
.memory-document-editor:focus{outline:2px solid var(--green);outline-offset:1px}
|
|
779
|
+
|
|
780
|
+
.bug-list{list-style:none;margin:0;padding:0}
|
|
781
|
+
.bug-list li{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line)}
|
|
782
|
+
.bug-list li:first-child{border-top:0}
|
|
783
|
+
.bug-check{width:18px;height:18px;border:2px solid var(--red);border-radius:5px;cursor:pointer;
|
|
784
|
+
flex:0 0 auto;margin-top:1px;display:flex;align-items:center;justify-content:center;
|
|
785
|
+
font-size:12px;color:#fff;background:#fff}
|
|
786
|
+
.bug-check:hover{background:var(--red-soft)}
|
|
787
|
+
.bug-check.done{background:var(--green);border-color:var(--green)}
|
|
788
|
+
.bug-title{font-weight:700;font-size:13px;display:block;min-height:2.2em;padding:8px 10px;line-height:1.4;box-sizing:border-box}
|
|
789
|
+
.bug-title.ed:empty:before{content:"Bug 标题";color:var(--muted);font-weight:600}
|
|
790
|
+
html[lang="en"] .bug-title.ed:empty:before{content:"Bug title"}
|
|
791
|
+
.bug-title.ed:empty,
|
|
792
|
+
.bug-title.ed:focus{min-height:2.6em;border:2px solid var(--line-ink);border-radius:8px;background:#fff}
|
|
793
|
+
.bug-title.ed:focus{background:var(--green-soft);border-color:var(--green);box-shadow:none}
|
|
794
|
+
.bug-sub{color:var(--muted);font-size:11px;margin-top:2px;min-height:1.2em;font-family:var(--font-note)}
|
|
795
|
+
.bug-sub.ed:empty:before{content:"补充说明(可选)";color:#b5bab6}
|
|
796
|
+
html[lang="en"] .bug-sub.ed:empty:before{content:"Notes (optional)"}
|
|
797
|
+
.bug-pending .bug-title{text-decoration:line-through;color:var(--muted)}
|
|
798
|
+
.summarizing{color:var(--green);font-size:12px;margin-top:3px}
|
|
799
|
+
.todo-list{list-style:none;margin:8px 0 0;padding:0}
|
|
800
|
+
.todo-list li{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line)}
|
|
801
|
+
.todo-list li:first-child{border-top:0}
|
|
802
|
+
.todo-check{width:18px;height:18px;padding:0;border:2px solid var(--module);border-radius:5px;box-shadow:none;
|
|
803
|
+
flex:0 0 auto;margin-top:5px;display:grid;place-items:center;background:#fff;color:#fff;font-size:12px}
|
|
804
|
+
.todo-check:hover{transform:none;box-shadow:none;background:var(--blue-soft)}
|
|
805
|
+
.todo-check.done{background:var(--green);border-color:var(--green)}
|
|
806
|
+
.todo-main{flex:1;min-width:0}
|
|
807
|
+
.todo-text{display:block;min-height:1.6em;padding:4px 6px;font-weight:700;font-size:13px;line-height:1.45}
|
|
808
|
+
.todo-text.ed:empty,.todo-text.ed:focus{min-height:5em;padding:8px 10px;border:2px solid var(--line-ink);border-radius:8px;background:#fff}
|
|
809
|
+
.todo-text.ed:focus{background:var(--green-soft);border-color:var(--green);box-shadow:none}
|
|
810
|
+
.todo-text.ed:empty:before{content:"写一条 TODO";color:var(--muted);font-weight:600}
|
|
811
|
+
html[lang="en"] .todo-text.ed:empty:before{content:"Write a TODO"}
|
|
812
|
+
.todo-done .todo-text{text-decoration:line-through;color:var(--muted)}
|
|
813
|
+
.todo-main>.bug-status{margin:3px 0 0 6px}
|
|
814
|
+
.todo-inline-action{margin:5px 0 0 6px;padding:2px 7px;border-width:1px;box-shadow:none;font-size:11.5px}
|
|
815
|
+
|
|
816
|
+
.dormant-box input{width:100%;font:inherit;font-size:12.5px;padding:6px 10px;border:1px solid var(--line);
|
|
817
|
+
border-radius:6px;background:#fff;margin:8px 0}
|
|
818
|
+
.dormant-list{list-style:none;margin:0;padding:0}
|
|
819
|
+
.dormant-list li{padding:10px 0;border-top:1px solid var(--line);color:var(--muted);font-size:12.5px}
|
|
820
|
+
.dormant-list li:first-child{border-top:0}
|
|
821
|
+
.dormant-list b{color:var(--ink)}
|
|
822
|
+
.dormant-list .exp{display:block;margin-top:3px}
|
|
823
|
+
|
|
824
|
+
.files{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
|
|
825
|
+
[data-drop-files].is-drop{outline:2px dashed var(--module);outline-offset:3px;background:var(--module-soft);border-radius:8px}
|
|
826
|
+
.file-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;
|
|
827
|
+
border:1px solid var(--line);border-radius:8px;background:#fff;padding:3px 8px 3px 4px;font-size:11.5px}
|
|
828
|
+
.file-thumb{width:36px;height:36px;object-fit:cover;border-radius:4px;background:#f4f1ea}
|
|
829
|
+
.file-name{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-family:var(--font-note)}
|
|
830
|
+
.file-chip .file-name{min-width:0}
|
|
831
|
+
.file-status{min-width:0;overflow-wrap:anywhere}
|
|
832
|
+
.file-retry{flex:0 0 auto;white-space:nowrap;min-width:52px;padding:6px 10px;font-size:12px}
|
|
833
|
+
.file-chip .file-x{flex:0 0 auto}
|
|
834
|
+
.file-x{border:0;background:transparent;box-shadow:none;padding:0 2px;color:var(--muted);font-size:14px;line-height:1}
|
|
835
|
+
.file-x:hover{color:var(--red);background:transparent;transform:none;box-shadow:none}
|
|
836
|
+
.clip-btn{width:24px;height:24px;padding:0;font-size:11px;font-weight:800;border-radius:6px;box-shadow:none;flex:0 0 auto}
|
|
837
|
+
.file-add{display:flex;flex-wrap:wrap;gap:4px;align-items:center;width:100%}
|
|
838
|
+
.file-path{flex:1;min-width:140px;font:inherit;font-size:13px;padding:8px 10px;min-height:36px;
|
|
839
|
+
border:2px solid var(--line-ink);border-radius:8px;background:#fff;box-sizing:border-box}
|
|
840
|
+
.file-path:focus{border-color:var(--green);background:var(--green-soft);outline:none}
|
|
841
|
+
|
|
842
|
+
/* ---------- 手机竖屏:顶栏换行、检查器改底栏 ---------- */
|
|
843
|
+
/* 用 html.cg-phone,不靠 max-width。Safari「桌面网站」会把宽度报成 ~980,媒体查询不会中。 */
|
|
844
|
+
html.cg-phone header.top{
|
|
845
|
+
flex-wrap:wrap;align-items:center;gap:6px 8px;
|
|
846
|
+
padding:calc(6px + var(--safe-top)) 10px 6px;
|
|
847
|
+
}
|
|
848
|
+
html.cg-phone{--chrome-top:96px}
|
|
849
|
+
html.cg-phone header.top .brand{order:1;flex:1 1 0;min-width:0}
|
|
850
|
+
html.cg-phone .settings-wrap{order:2;flex:0 0 auto;margin-left:0}
|
|
851
|
+
html.cg-phone .top-tools{
|
|
852
|
+
order:4;flex:1 1 100%;margin-left:0;min-width:0;
|
|
853
|
+
overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;
|
|
854
|
+
scrollbar-width:thin;padding:2px 0 4px;gap:6px 8px;
|
|
855
|
+
}
|
|
856
|
+
html.cg-phone .top-tools > *{flex:0 0 auto}
|
|
857
|
+
html.cg-phone .workbench-tools-menu{
|
|
858
|
+
position:fixed;top:calc(var(--chrome-top) + 4px);left:10px;right:auto;
|
|
859
|
+
max-height:calc(100dvh - var(--chrome-top) - var(--safe-bottom) - 12px);overflow-y:auto;
|
|
860
|
+
}
|
|
861
|
+
html.cg-phone .repo-status{max-width:42vw}
|
|
862
|
+
html.cg-phone .repo-menu{min-width:0;width:min(280px,calc(100vw - 20px));max-height:min(70vh,480px);overflow:auto}
|
|
863
|
+
html.cg-phone .settings-menu{width:min(260px,calc(100vw - 16px));max-height:min(70vh,520px);overflow:auto}
|
|
864
|
+
html.cg-phone #rel-hint{white-space:nowrap}
|
|
865
|
+
html.cg-phone .tray-btn,html.cg-phone .auth-btn,
|
|
866
|
+
html.cg-phone .dir-toggle,html.cg-phone .rel-toggle,html.cg-phone .lang-toggle,
|
|
867
|
+
html.cg-phone .rel-toggle button,html.cg-phone .lang-toggle button{
|
|
868
|
+
height:var(--chrome-btn-h);min-height:var(--chrome-btn-h)
|
|
869
|
+
}
|
|
870
|
+
html.cg-phone .rel-toggle button,html.cg-phone .lang-toggle button{
|
|
871
|
+
padding-top:0;padding-bottom:0
|
|
872
|
+
}
|
|
873
|
+
html.cg-phone #btn-settings,html.cg-phone #btn-auth{width:var(--chrome-btn-h);height:var(--chrome-btn-h);min-height:var(--chrome-btn-h);padding:0}
|
|
874
|
+
html.cg-phone #viewport{inset:var(--chrome-top) 0 var(--drawer-height) 0}
|
|
875
|
+
html.cg-phone body.bugs-open #viewport{right:0;bottom:var(--drawer-height)}
|
|
876
|
+
html.cg-phone .drawer{
|
|
877
|
+
top:auto;left:0;right:0;bottom:0;width:100%;height:var(--drawer-height);
|
|
878
|
+
border-left:none;border-top:2px solid var(--line-ink);
|
|
879
|
+
padding:18px 14px calc(20px + var(--safe-bottom));
|
|
880
|
+
}
|
|
881
|
+
html.cg-phone .drawer-split{
|
|
882
|
+
top:auto;left:0;right:0;bottom:var(--drawer-height);width:100%;height:24px;
|
|
883
|
+
cursor:row-resize;transform:translateY(12px);
|
|
884
|
+
}
|
|
885
|
+
html.cg-phone .drawer-split:before{
|
|
886
|
+
top:7px;bottom:auto;left:50%;width:42px;height:4px;margin-left:-21px;
|
|
887
|
+
border-radius:2px;background:var(--line-ink);opacity:.35
|
|
888
|
+
}
|
|
889
|
+
html.cg-phone .drawer-split:hover:before,html.cg-phone .drawer-split:focus-visible:before,
|
|
890
|
+
html.cg-phone body.drawer-resizing .drawer-split:before{opacity:.7}
|
|
891
|
+
html.cg-phone body.drawer-resizing{cursor:row-resize}
|
|
892
|
+
html.cg-phone body.bugs-open .drawer-split{display:block;right:0;width:100%}
|
|
893
|
+
html.cg-phone .bug-panel{
|
|
894
|
+
top:auto;left:0;right:0;width:100%;height:var(--drawer-height);
|
|
895
|
+
border-left:none;border-top:2px solid var(--line-ink);
|
|
896
|
+
padding-bottom:calc(16px + var(--safe-bottom));
|
|
897
|
+
}
|
|
898
|
+
html.cg-phone .tray{
|
|
899
|
+
left:8px;right:8px;width:auto;max-height:min(52vh,420px);overflow:auto;
|
|
900
|
+
z-index:32
|
|
901
|
+
}
|
|
902
|
+
html.cg-phone .node.module{width:min(252px,86vw);max-width:min(252px,86vw)}
|
|
903
|
+
html.cg-phone .node .add-child{width:22px;height:22px;line-height:18px;font-size:13px;right:-11px;opacity:0;pointer-events:none}
|
|
904
|
+
html.cg-phone .node.selected .add-child,html.cg-phone .node.drilled-root .add-child,html.cg-phone .node.picking .add-child{opacity:1;pointer-events:auto}
|
|
905
|
+
html.cg-phone .node .add-child:after{content:"";position:absolute;inset:-12px}
|
|
906
|
+
html.cg-phone .node .add-pick button{min-height:var(--chrome-btn-h)}
|
|
907
|
+
html.cg-phone body.layout-tb .node .add-child{bottom:-11px}
|
|
908
|
+
html.cg-phone .node:hover,html.cg-phone .node.module:hover{transform:none}
|
|
909
|
+
html.cg-phone .first-use.open{align-items:flex-start;overflow:auto;padding:12px 0 calc(16px + var(--safe-bottom))}
|
|
910
|
+
html.cg-phone .first-use .card{width:min(720px,calc(100% - 20px));padding:18px 16px 16px;margin:0 auto}
|
|
911
|
+
html.cg-phone .first-use .card.wide{width:min(920px,calc(100% - 16px));max-height:none}
|
|
912
|
+
html.cg-phone .first-use h2{font-size:17px}
|
|
913
|
+
html.cg-phone .first-use .actions{flex-direction:column}
|
|
914
|
+
html.cg-phone .first-use .actions button{width:100%;min-height:44px}
|
|
915
|
+
html.cg-phone .lens-bar{left:8px;right:8px;bottom:8px;flex-wrap:wrap;gap:8px}
|
|
916
|
+
html.cg-phone .lens-group .lens-items{grid-template-columns:1fr}
|
|
917
|
+
html.cg-phone .ed,html.cg-phone .file-path,html.cg-phone .dormant-box input,html.cg-phone .lens-tray li input[type=text]{font-size:16px}
|
|
918
|
+
html.cg-phone .file-path{min-width:0}
|
|
919
|
+
html.cg-phone .file-name{max-width:min(160px,46vw)}
|
|
920
|
+
html.cg-phone .plus-btn{width:36px;height:36px}
|
|
921
|
+
html.cg-phone .sec-add{min-height:36px}
|
|
922
|
+
html.cg-phone .dot-pick{min-height:40px}
|
|
923
|
+
html.cg-phone .theme-preview-banner,html.cg-phone .phone-preview-banner{display:none !important}
|
|
924
|
+
html.cg-phone .drawer h2{font-size:18px}
|
|
925
|
+
|
|
926
|
+
#detail.coordinator-open{overflow:hidden;display:flex;flex-direction:column}
|
|
927
|
+
#detail.coordinator-open > :not(#coordinator-panel){display:none!important}
|
|
928
|
+
#coordinator-panel {
|
|
929
|
+
position: static; width: 100%; height: 100%; min-width: 0; min-height: 0; padding: 0;
|
|
930
|
+
background: transparent; border: 0; border-radius: 0;
|
|
931
|
+
box-sizing: border-box; box-shadow: none;
|
|
932
|
+
color: #302d26; font: 15px/1.58 system-ui, -apple-system, "PingFang SC", sans-serif;
|
|
933
|
+
}
|
|
934
|
+
#coordinator-panel[open]{display:flex;flex:1;flex-direction:column}
|
|
935
|
+
#coordinator-panel:not([open]) { display: none; }
|
|
936
|
+
#coordinator-panel > .coordinator-toolbar{display:flex;align-items:center;column-gap:12px;row-gap:0;margin:0 0 12px}
|
|
937
|
+
#coordinator-panel .coordinator-heading{margin:0 auto 0 0;padding:0;border:0;background:transparent;box-shadow:none;font-size:18px;font-weight:700;cursor:pointer}
|
|
938
|
+
#coordinator-panel .coordinator-heading:hover,#coordinator-panel .coordinator-heading:focus{background:transparent;box-shadow:none;transform:none;text-decoration:underline}
|
|
939
|
+
#coordinator-panel .coordinator-toolbar-action{display:grid;place-items:center;width:28px;height:28px;margin:0;padding:0;border:1px solid var(--line);border-radius:8px;background:transparent;box-shadow:none;color:var(--muted);font-size:16px;font-weight:700;line-height:1}
|
|
940
|
+
#coordinator-panel .coordinator-toolbar-action:hover{background:var(--module-soft);color:var(--ink);transform:none}
|
|
941
|
+
#coordinator-panel .coordinator-toolbar-action:focus-visible{outline:2px solid var(--module);outline-offset:2px;background:var(--paper);color:var(--ink);transform:none}
|
|
942
|
+
#coordinator-panel .coordinator-toolbar-action:active{background:var(--focus-soft);transform:scale(.96)}
|
|
943
|
+
#coordinator-panel .coordinator-history{margin:-4px 0 12px;padding:10px;border:1px solid #dccfaa;border-radius:12px;background:#faf3dc}
|
|
944
|
+
#coordinator-panel .coordinator-history h3{margin:0 0 8px;font-size:13px;color:#746e5e}
|
|
945
|
+
#coordinator-panel .coordinator-history-list{display:grid;gap:6px}
|
|
946
|
+
#coordinator-panel .coordinator-history-list button{width:100%;margin:0;padding:8px 10px;text-align:left;background:#fffdf8;box-shadow:none}
|
|
947
|
+
#coordinator-panel .coordinator-history-list button[aria-current=true]{background:#fff2ad;font-weight:650}
|
|
948
|
+
#coordinator-panel .coordinator-history-list p{margin:2px 4px;color:#817660;font-size:12px}
|
|
949
|
+
#coordinator-panel > [role=status] { color: #746e5e; font-size: 12px; margin: 8px 0 12px; }
|
|
950
|
+
#coordinator-panel > [role=status]:empty { display: none; }
|
|
951
|
+
#coordinator-panel .coordinator-messages { flex:1;min-height:0;max-height:none;overflow:auto;overflow-anchor:none;overflow-wrap:anywhere;overscroll-behavior:contain;padding:0 16px 36px 6px;scroll-padding-bottom:36px;scrollbar-gutter:stable; }
|
|
952
|
+
#coordinator-panel .coordinator-messages-tail{pointer-events:none}
|
|
953
|
+
#coordinator-panel .coordinator-message { width:min(100%,880px);margin:0 0 16px; }
|
|
954
|
+
#coordinator-panel .coordinator-message.user { width:fit-content;max-width:min(82%,760px);margin-left:auto; }
|
|
955
|
+
#coordinator-panel .coordinator-question { margin: 12px 0; padding: 14px; background: #faf3dc; border-radius: 12px; border: 1px solid #dccfaa; }
|
|
956
|
+
#coordinator-panel .coordinator-answer-compose { position: relative; margin-top: 12px; }
|
|
957
|
+
#coordinator-panel .coordinator-answer-compose textarea { min-height: 64px; padding: 10px 74px 44px 12px; }
|
|
958
|
+
#coordinator-panel .coordinator-answer-compose button,#coordinator-panel .coordinator-input-shell > button { position: absolute; right: 10px; bottom: 10px; margin: 0; background: #ffe87e; font-weight: 600; }
|
|
959
|
+
#coordinator-panel .coordinator-choices button[aria-pressed=true] { background: #ffe87e; border-color: #766126; }
|
|
960
|
+
#coordinator-panel .coordinator-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
|
|
961
|
+
#coordinator-panel .coordinator-actions p { flex-basis: 100%; margin: 0; color: #746e5e; font-size: 13px; }
|
|
962
|
+
#coordinator-panel .coordinator-answer { white-space: pre-wrap; background: #fff0a9; padding: 10px; border-radius: 8px; }
|
|
963
|
+
#coordinator-panel .coordinator-question-status { color: #817660; font-size: 13px; }
|
|
964
|
+
#coordinator-panel .coordinator-typing{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
|
|
965
|
+
#coordinator-panel .coordinator-planning{margin:0 0 18px;padding:0 2px;color:#817660;font-size:13px}
|
|
966
|
+
#coordinator-panel .coordinator-typing-phase{display:inline-block;color:#9a9287;background-image:linear-gradient(90deg,var(--coordinator-shimmer-base) 0%,var(--coordinator-shimmer-base) 25%,var(--coordinator-shimmer-highlight) 60%,var(--coordinator-shimmer-base) 75%,var(--coordinator-shimmer-base) 100%);background-size:200% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;--coordinator-shimmer-base:color-mix(in srgb,#817660 60%,transparent);--coordinator-shimmer-highlight:#302d26;animation:coordinator-text-shimmer 1s linear infinite}
|
|
967
|
+
@keyframes coordinator-text-shimmer{from{background-position:100% 0}to{background-position:-100% 0}}
|
|
968
|
+
#coordinator-panel .coordinator-working-blot{width:36px;height:36px;pointer-events:none;opacity:0;clip-path:circle(0% at 50% 50%);transition:opacity 1s cubic-bezier(.42,0,.2,1),clip-path 1s cubic-bezier(.42,0,.2,1)}
|
|
969
|
+
#coordinator-panel .coordinator-streaming-text{display:block}
|
|
970
|
+
#coordinator-panel .coordinator-rise+.coordinator-rise{margin-top:.55em}
|
|
971
|
+
#coordinator-panel .coordinator-rise-body{opacity:1;transform:translate3d(0,0,0);-webkit-font-smoothing:antialiased;transition:opacity 1.05s cubic-bezier(.22,.7,.2,1),transform 1.05s cubic-bezier(.22,.7,.2,1)}
|
|
972
|
+
#coordinator-panel .coordinator-rise-body>:first-child{margin-top:0}
|
|
973
|
+
#coordinator-panel .coordinator-rise-body>:last-child{margin-bottom:0}
|
|
974
|
+
@starting-style{#coordinator-panel .coordinator-rise.is-entering .coordinator-rise-body{opacity:0;transform:translate3d(0,12px,0)}}
|
|
975
|
+
@media (prefers-reduced-motion:reduce){
|
|
976
|
+
#coordinator-panel .coordinator-rise-body{transition:none}
|
|
977
|
+
}
|
|
978
|
+
#coordinator-panel .user .coordinator-markdown { background: #fff0a9; border-radius: 14px 14px 4px 14px; padding: 9px 13px; }
|
|
979
|
+
#coordinator-panel .coordinator-markdown p { margin: 0 0 8px; }
|
|
980
|
+
#coordinator-panel .coordinator-markdown > :last-child { margin-bottom: 0; }
|
|
981
|
+
#coordinator-panel .coordinator-markdown h2,#coordinator-panel .coordinator-markdown h3,#coordinator-panel .coordinator-markdown h4 { font-size: 1.08em; line-height: 1.5; margin: 18px 0 8px; }
|
|
982
|
+
#coordinator-panel .coordinator-markdown ul,#coordinator-panel .coordinator-markdown ol { margin: 10px 0; padding-left: 24px; }
|
|
983
|
+
#coordinator-panel .coordinator-markdown li { margin: 5px 0; }
|
|
984
|
+
#coordinator-panel .coordinator-markdown li p { margin: 4px 0; }
|
|
985
|
+
#coordinator-panel .coordinator-markdown strong { font-weight: 650; }
|
|
986
|
+
#coordinator-panel .coordinator-markdown code { font: .86em/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; background: #eee9db; border-radius: 4px; padding: 2px 4px; }
|
|
987
|
+
#coordinator-panel .coordinator-markdown pre { padding: 12px; border-radius: 10px; background: #f0ebdf; overflow: auto; white-space: pre; }
|
|
988
|
+
#coordinator-panel .coordinator-markdown pre code { background: none; padding: 0; }
|
|
989
|
+
#coordinator-panel .coordinator-markdown blockquote { border-left: 3px solid #c8b978; padding-left: 12px; margin: 12px 0; color: #675f51; }
|
|
990
|
+
#coordinator-panel .coordinator-markdown a { color: #27624b; text-decoration: underline; text-underline-offset: 3px; }
|
|
991
|
+
#coordinator-panel .coordinator-markdown hr { display: none; }
|
|
992
|
+
#coordinator-panel .coordinator-table { overflow-x: auto; }
|
|
993
|
+
#coordinator-panel .coordinator-markdown table { border-collapse: collapse; margin: 10px 0; width: 100%; }
|
|
994
|
+
#coordinator-panel .coordinator-markdown th,#coordinator-panel .coordinator-markdown td { border: 1px solid #ddd4bf; padding: 7px 10px; text-align: left; }
|
|
995
|
+
#coordinator-panel .coordinator-markdown th { background: #f3eddb; }
|
|
996
|
+
#coordinator-panel .coordinator-markdown input[type=checkbox] { margin-right: 6px; }
|
|
997
|
+
#coordinator-panel .coordinator-meta { padding-top: 10px; color: #817660; font-size: 12px; }
|
|
998
|
+
#coordinator-panel .coordinator-meta summary { cursor: pointer; }
|
|
999
|
+
#coordinator-panel .coordinator-meta .coordinator-markdown { padding: 8px 10px; margin-top: 8px; background: #f5efdf; border-radius: 8px; overflow-wrap: anywhere; }
|
|
1000
|
+
#coordinator-panel .coordinator-meta .coordinator-markdown p { margin: 0 0 6px; }
|
|
1001
|
+
#coordinator-panel .coordinator-meta .coordinator-message { margin: 0; }
|
|
1002
|
+
#coordinator-panel .coordinator-meta .coordinator-markdown code { font-size: .9em; }
|
|
1003
|
+
#coordinator-panel .coordinator-extras > section { border: 1px solid #dccfaa; background: #faf3dc; border-radius: 12px; padding: 12px; margin: 14px 0; }
|
|
1004
|
+
#coordinator-panel .coordinator-extras > section p { white-space: pre-wrap; margin: 0 0 8px; }
|
|
1005
|
+
#coordinator-panel .coordinator-extras > section > .coordinator-markdown { margin-bottom: 10px; }
|
|
1006
|
+
.coordinator-review-inline { margin-top: 12px; padding: 12px; border: 1px solid #c8b978; border-radius: 10px; background: #fff8d8; }
|
|
1007
|
+
.coordinator-review-inline h3 { margin: 0 0 8px; font-size: 1em; }
|
|
1008
|
+
.coordinator-review-inline label { display: block; font-size: 13px; font-weight: 600; }
|
|
1009
|
+
.coordinator-review-inline textarea { display: block; margin-top: 6px; min-height: 82px; }
|
|
1010
|
+
.coordinator-review-inline p { margin: 8px 0 0; color: #746e5e; font-size: 12px; }
|
|
1011
|
+
.coordinator-review-inline form > div { margin-top: 4px; }
|
|
1012
|
+
.coordinator-review-dialog { width: min(460px, calc(100vw - 32px)); border: 2px solid #333; border-radius: 16px; padding: 20px; background: #fffcf4; color: #302d26; box-shadow: 5px 6px 0 #333; }
|
|
1013
|
+
.coordinator-review-dialog::backdrop { background: rgb(48 45 38 / 28%); }
|
|
1014
|
+
.coordinator-review-dialog textarea { margin-top: 8px; min-height: 100px; }
|
|
1015
|
+
#coordinator-panel form { padding-top: 8px; margin-top: 2px; }
|
|
1016
|
+
#coordinator-panel textarea { width: 100%; box-sizing: border-box; border: 1px solid #cfc4aa; background: #fffdf8; border-radius: 12px; min-height: 48px; max-height: 140px; height: 48px; padding: 10px 12px; resize: none; overflow-y: auto; font: inherit; transition:border-color .18s ease,box-shadow .18s ease; }
|
|
1017
|
+
#coordinator-panel textarea:focus { outline: 2px solid #bba759; outline-offset: 1px; }
|
|
1018
|
+
#coordinator-panel .coordinator-input-shell { position:relative; }
|
|
1019
|
+
#coordinator-panel .coordinator-input-shell textarea { display:block; padding:10px 48px 10px 12px; }
|
|
1020
|
+
#coordinator-panel .coordinator-session-create { margin-top: 12px; padding: 12px; border: 1px solid #dccfaa; border-radius: 12px; background: #faf3dc; }
|
|
1021
|
+
#coordinator-panel .coordinator-session-create form { padding: 0; margin: 0; display: grid; grid-template-columns: minmax(0,1fr) minmax(130px,.8fr); gap: 8px; }
|
|
1022
|
+
#coordinator-panel .coordinator-session-create input,#coordinator-panel .coordinator-session-create select { min-width: 0; box-sizing: border-box; border: 1px solid #cfc4aa; background: #fffdf8; border-radius: 9px; padding: 8px 10px; font: inherit; }
|
|
1023
|
+
#coordinator-panel .coordinator-session-create button { margin: 0; }
|
|
1024
|
+
#coordinator-panel .coordinator-session-create p { margin: 9px 0 0; color: #746e5e; font-size: 12px; }
|
|
1025
|
+
#coordinator-panel .coordinator-session-create ul { margin: 9px 0 0; padding-left: 20px; color: #746e5e; font-size: 12px; }
|
|
1026
|
+
#coordinator-panel button { margin: 8px 8px 0 0; padding: 7px 16px; border: 1px solid #bdae89; border-radius: 9px; font: inherit; cursor: pointer; }
|
|
1027
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send{position:absolute;right:8px;top:50%;display:grid;place-items:center;width:32px;height:32px;min-height:32px;margin:0;padding:0;border:0;border-radius:50%;background:#2f6fd6;color:#fff;box-shadow:none;transform:translateY(-50%);transition:background 1s cubic-bezier(.42,0,.2,1),color 1s cubic-bezier(.42,0,.2,1),transform .16s ease}
|
|
1028
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send svg{width:19px;height:19px;opacity:1;transition:opacity 1s cubic-bezier(.42,0,.2,1)}
|
|
1029
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send svg{grid-area:1/1}
|
|
1030
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send canvas{position:absolute;left:50%;top:50%;margin:-18px 0 0 -18px}
|
|
1031
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send:not(:disabled):hover{background:#285fb8;transform:translateY(-50%);box-shadow:none}
|
|
1032
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send:not(:disabled):active{transform:translateY(-50%) scale(.94)}
|
|
1033
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send:focus-visible{outline:2px solid #2f6fd6;outline-offset:2px}
|
|
1034
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send:disabled{background:#deddd9;color:#8e8d89;opacity:1}
|
|
1035
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send.is-working:disabled{background:transparent;color:#b8891b;overflow:visible}
|
|
1036
|
+
#coordinator-panel .coordinator-input-shell > .coordinator-send .coordinator-ink-fallback{position:absolute;left:50%;top:50%;width:36px;height:36px;margin:-18px 0 0 -18px;opacity:0;fill:#bd391e;pointer-events:none;animation:coordinator-ink-hue 16s linear infinite paused}
|
|
1037
|
+
#coordinator-panel .coordinator-send.is-working svg:not(.coordinator-ink-fallback){opacity:0}
|
|
1038
|
+
#coordinator-panel .coordinator-send.is-working .coordinator-ink-fallback{opacity:1;animation-play-state:running}
|
|
1039
|
+
#coordinator-panel .coordinator-send.is-working-ready svg{opacity:0}
|
|
1040
|
+
#coordinator-panel .coordinator-send.is-working-ready .coordinator-ink-fallback{opacity:0}
|
|
1041
|
+
#coordinator-panel .coordinator-send.is-working-ready .coordinator-working-blot{opacity:1;clip-path:circle(75% at 50% 50%)}
|
|
1042
|
+
@keyframes coordinator-ink-hue{to{filter:hue-rotate(360deg)}}
|
|
1043
|
+
@media(prefers-reduced-motion:reduce){#coordinator-panel .coordinator-input-shell > .coordinator-send .coordinator-ink-fallback{animation:none}}
|
|
1044
|
+
@media (prefers-reduced-motion:reduce){#coordinator-panel .coordinator-input-shell > .coordinator-send,#coordinator-panel .coordinator-input-shell > .coordinator-send svg,#coordinator-panel .coordinator-working-blot{transition:none}#coordinator-panel .coordinator-typing-phase{animation:none;background-image:none;-webkit-text-fill-color:currentColor}}
|
|
1045
|
+
#coordinator-panel button[type=submit] { background: #ffe87e; font-weight: 600; }
|
|
1046
|
+
#coordinator-panel button:disabled { opacity: .5; cursor: default; }
|
|
1047
|
+
#coordinator-panel .coordinator-node-link { display: inline; margin: 0; padding: 2px 7px; color: #27624b; background: #fff2ad; font-weight: 650; vertical-align: baseline; }
|
|
1048
|
+
#coordinator-panel .coordinator-node-link:hover { background: #ffe87e; }
|
|
1049
|
+
#coordinator-panel .coordinator-node-link:focus-visible { outline: 2px solid #27624b; outline-offset: 2px; }
|
|
1050
|
+
@media(max-width: 520px){#coordinator-panel .coordinator-session-create form{grid-template-columns:1fr;}}
|