@lemoncat7/dsh-knowledge 2.3.2 → 2.3.4

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.
Files changed (86) hide show
  1. package/README.md +1 -1
  2. package/docs/ui-maintenance.md +97 -0
  3. package/lib/activity-control.d.ts +6 -0
  4. package/lib/activity-control.d.ts.map +1 -0
  5. package/lib/activity-control.js +118 -0
  6. package/lib/activity-control.js.map +1 -0
  7. package/lib/client.d.ts +17 -0
  8. package/lib/client.d.ts.map +1 -1
  9. package/lib/client.js +4030 -196
  10. package/lib/client.js.map +4 -4
  11. package/lib/design-tokens.d.ts +12 -0
  12. package/lib/design-tokens.d.ts.map +1 -0
  13. package/lib/design-tokens.js +58 -0
  14. package/lib/design-tokens.js.map +1 -0
  15. package/lib/index.d.ts.map +1 -1
  16. package/lib/index.js +3 -0
  17. package/lib/index.js.map +1 -1
  18. package/lib/knowledge-activity-api.d.ts +35 -0
  19. package/lib/knowledge-activity-api.d.ts.map +1 -0
  20. package/lib/knowledge-activity-api.js +115 -0
  21. package/lib/knowledge-activity-api.js.map +1 -0
  22. package/lib/knowledge-activity-controller.d.ts +20 -0
  23. package/lib/knowledge-activity-controller.d.ts.map +1 -0
  24. package/lib/knowledge-activity-controller.js +138 -0
  25. package/lib/knowledge-activity-controller.js.map +1 -0
  26. package/lib/knowledge-activity-notes.d.ts +9 -0
  27. package/lib/knowledge-activity-notes.d.ts.map +1 -0
  28. package/lib/knowledge-activity-notes.js +150 -0
  29. package/lib/knowledge-activity-notes.js.map +1 -0
  30. package/lib/knowledge-activity-panel.d.ts +8 -0
  31. package/lib/knowledge-activity-panel.d.ts.map +1 -0
  32. package/lib/knowledge-activity-panel.js +245 -0
  33. package/lib/knowledge-activity-panel.js.map +1 -0
  34. package/lib/knowledge-activity-presentation.d.ts +14 -0
  35. package/lib/knowledge-activity-presentation.d.ts.map +1 -0
  36. package/lib/knowledge-activity-presentation.js +77 -0
  37. package/lib/knowledge-activity-presentation.js.map +1 -0
  38. package/lib/knowledge-activity-state.d.ts +17 -0
  39. package/lib/knowledge-activity-state.d.ts.map +1 -0
  40. package/lib/knowledge-activity-state.js +14 -0
  41. package/lib/knowledge-activity-state.js.map +1 -0
  42. package/lib/latest-request.d.ts +7 -0
  43. package/lib/latest-request.d.ts.map +1 -0
  44. package/lib/latest-request.js +14 -0
  45. package/lib/latest-request.js.map +1 -0
  46. package/lib/local-provider.d.ts +0 -2
  47. package/lib/local-provider.d.ts.map +1 -1
  48. package/lib/local-provider.js +2 -323
  49. package/lib/local-provider.js.map +1 -1
  50. package/lib/notes/share-page-styles.d.ts +2 -0
  51. package/lib/notes/share-page-styles.d.ts.map +1 -0
  52. package/lib/notes/share-page-styles.js +11 -0
  53. package/lib/notes/share-page-styles.js.map +1 -0
  54. package/lib/notes/share-page.d.ts.map +1 -1
  55. package/lib/notes/share-page.js +1 -8
  56. package/lib/notes/share-page.js.map +1 -1
  57. package/lib/storage/migrations.d.ts +5 -0
  58. package/lib/storage/migrations.d.ts.map +1 -0
  59. package/lib/storage/migrations.js +325 -0
  60. package/lib/storage/migrations.js.map +1 -0
  61. package/lib/theme-bridge.d.ts +9 -7
  62. package/lib/theme-bridge.d.ts.map +1 -1
  63. package/lib/theme-bridge.js +3 -23
  64. package/lib/theme-bridge.js.map +1 -1
  65. package/lib/web-note-editor-outline.js +2 -2
  66. package/lib/web-note-editor-outline.js.map +1 -1
  67. package/lib/web-note-editor-selection.d.ts.map +1 -1
  68. package/lib/web-note-editor-selection.js +51 -16
  69. package/lib/web-note-editor-selection.js.map +1 -1
  70. package/lib/web-note-editor.d.ts.map +1 -1
  71. package/lib/web-note-editor.js +15 -1
  72. package/lib/web-note-editor.js.map +1 -1
  73. package/lib/web.d.ts.map +1 -1
  74. package/lib/web.js +4 -0
  75. package/lib/web.js.map +1 -1
  76. package/package.json +4 -1
  77. package/web/app.js +111 -191
  78. package/web/design-tokens.css +1 -0
  79. package/web/dialogs.js +94 -0
  80. package/web/document-actions.js +68 -0
  81. package/web/index.html +1 -0
  82. package/web/model-catalog.js +22 -0
  83. package/web/note-editor.js +57 -57
  84. package/web/select-control.js +193 -0
  85. package/web/styles.css +162 -203
  86. package/web/ui-primitives.js +5 -0
package/web/styles.css CHANGED
@@ -2,31 +2,6 @@
2
2
  color-scheme: light dark;
3
3
  font-family: var(--font-ui);
4
4
  font-size: 16px;
5
- --font-ui: ui-sans-serif, -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Inter, "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei UI", Arial, sans-serif;
6
- --font-reading: ui-sans-serif, -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei UI", Arial, sans-serif;
7
- --font-mono: "SFMono-Regular", "Cascadia Code", "Cascadia Mono", Menlo, Consolas, monospace;
8
- --bg: #ebebeb;
9
- --surface: #f4f4f4;
10
- --surface-raised: #fafafa;
11
- --surface-soft: #eeeeef;
12
- --surface-hover: rgb(118 118 128 / 9%);
13
- --dialog-surface: #f4f4f4;
14
- --text: #1d1d1f;
15
- --text-secondary: #515154;
16
- --text-tertiary: #6e6e73;
17
- --border: rgb(60 60 67 / 14%);
18
- --border-strong: rgb(60 60 67 / 24%);
19
- --accent: #3a3a3c;
20
- --accent-hover: #1d1d1f;
21
- --accent-soft: #e2e2e5;
22
- --on-accent: #ffffff;
23
- --success: #248a3d;
24
- --success-soft: #e8f5eb;
25
- --warning: #c93400;
26
- --warning-soft: #fff1e8;
27
- --danger: #d70015;
28
- --danger-soft: #ffebed;
29
- --shadow: 0 24px 64px rgb(0 0 0 / 20%);
30
5
  --radius: 14px;
31
6
  --radius-control: 9px;
32
7
  --radius-small: 7px;
@@ -43,87 +18,40 @@
43
18
  --surface-canvas: var(--bg);
44
19
  --surface-pane: transparent;
45
20
  --surface-editor: transparent;
46
- --surface-overlay: rgba(246, 247, 250, 0.88);
47
21
  --shadow-control: 0 1px 2px rgb(0 0 0 / 5.5%), inset 0 1px 0 rgb(255 255 255 / 58%);
48
22
  --shadow-floating: 0 22px 70px color-mix(in srgb, var(--text) 18%, transparent), 0 2px 8px color-mix(in srgb, var(--text) 8%, transparent);
49
- --glass-clear: color-mix(in srgb, var(--surface-raised) 20%, transparent);
50
23
  --glass-regular: color-mix(in srgb, var(--surface-raised) 36%, transparent);
51
- --glass-thick: color-mix(in srgb, var(--surface-raised) 62%, transparent);
52
24
  --glass-border: color-mix(in srgb, var(--border) 58%, transparent);
53
25
  --glass-separator: var(--border);
54
26
  --glass-rim-light: color-mix(in srgb, var(--surface-raised) 58%, transparent);
55
27
  --glass-rim-shadow: color-mix(in srgb, var(--text) 12%, transparent);
56
28
  --glass-filter: saturate(1.22) contrast(1.03) blur(32px);
57
29
  --glass-shadow: inset 0 1px 0 var(--glass-rim-light), inset 0 -1px 0 var(--glass-rim-shadow), 0 10px 28px rgb(0 0 0 / 8.5%);
58
- --liquid-glass-large: color-mix(in srgb, var(--surface) 68%, transparent);
59
- --liquid-glass-regular: color-mix(in srgb, var(--surface-raised) 52%, transparent);
60
- --liquid-glass-clear: color-mix(in srgb, var(--surface-raised) 36%, transparent);
61
- --liquid-glass-dialog: color-mix(in srgb, var(--surface-raised) 76%, transparent);
62
- --interaction-glow-core: rgb(67 70 77 / 78%);
63
- --interaction-glow-soft: rgb(111 115 124 / 36%);
64
- --interaction-glow-haze: rgb(255 255 255 / 72%);
65
- --interaction-glare-light: rgb(255 255 255 / 72%);
66
- --interaction-glare-rim: rgb(45 48 54 / 12%);
67
- --card-highlight: rgb(255 255 255 / 58%);
68
- --card-fill: color-mix(in srgb, var(--surface-raised) 48%, transparent);
69
30
  --radius-shell: 18px;
70
31
  --radius-panel: 12px;
71
32
  --motion-fast: 120ms;
72
33
  --motion-base: 190ms;
73
34
  --motion-slow: 280ms;
74
35
  --ease-out: cubic-bezier(.22, 1, .36, 1);
75
- --ease-spring: cubic-bezier(.2, .9, .25, 1.04);
76
36
  --font-caption: 12px;
77
37
  --font-body: 13px;
78
- --font-label: 14px;
79
38
  --font-title: 18px;
80
- --font-heading: 22px;
81
39
  --sidebar-width: 214px;
82
40
  --chrome-inset: 8px;
83
- --topbar-inline-inset: 0px;
84
41
  --scrollbar-thumb: color-mix(in srgb, var(--text-tertiary) 42%, transparent);
85
42
  --scrollbar-thumb-hover: color-mix(in srgb, var(--text-secondary) 58%, transparent);
86
43
  }
87
44
 
88
45
  @media (prefers-color-scheme: dark) {
89
46
  :root:not([data-color-scheme]) {
90
- --bg: #101719;
91
- --surface: #182022;
92
- --surface-raised: #20292b;
93
- --surface-soft: rgb(255 255 255 / 6%);
94
- --surface-hover: rgb(255 255 255 / 7.5%);
95
- --dialog-surface: #20292b;
96
- --text: #e3eaeb;
97
- --text-secondary: #bbc9cc;
98
- --text-tertiary: #95a7ab;
99
- --border: rgb(184 204 205 / 10%);
100
- --border-strong: rgb(184 204 205 / 18%);
101
- --accent: #69b6ba;
102
- --accent-hover: #8aced0;
103
- --accent-soft: rgb(105 182 186 / 13%);
104
- --on-accent: #101819;
105
- --success: #30d158;
106
- --success-soft: rgb(48 209 88 / 13%);
107
- --warning: #ff9f0a;
108
- --warning-soft: rgb(255 159 10 / 13%);
109
- --danger: #ff453a;
110
- --danger-soft: rgb(255 69 58 / 14%);
111
- --shadow: 0 28px 72px rgb(0 0 0 / 48%);
112
47
  --surface-highlight: rgb(255 255 255 / 11%);
113
48
  --shadow-soft: 0 1px 2px rgb(0 0 0 / 28%);
114
49
  --shadow-panel: 0 2px 7px rgb(0 0 0 / 20%), 0 14px 36px rgb(0 0 0 / 28%);
115
50
  --shadow-control: 0 1px 2px rgb(0 0 0 / 28%), 0 5px 16px rgb(0 0 0 / 18%), inset 0 1px 0 rgb(255 255 255 / 11%);
116
51
  --shadow-floating: 0 24px 72px rgb(0 0 0 / 52%), 0 2px 8px rgb(0 0 0 / 28%);
117
52
  --glass-shadow: inset 0 1px 0 var(--glass-rim-light), inset 0 -1px 0 var(--glass-rim-shadow), 0 12px 32px rgb(0 0 0 / 30%);
118
- --interaction-glow-core: rgb(244 244 247 / 78%);
119
- --interaction-glow-soft: rgb(197 199 205 / 34%);
120
- --interaction-glow-haze: rgb(255 255 255 / 42%);
121
- --interaction-glare-light: rgb(255 255 255 / 34%);
122
- --interaction-glare-rim: rgb(255 255 255 / 10%);
123
53
  --glass-rim-light: rgb(255 255 255 / 18%);
124
54
  --glass-rim-shadow: rgb(0 0 0 / 30%);
125
- --card-highlight: rgb(255 255 255 / 11%);
126
- --card-fill: rgb(7 9 11 / 22%);
127
55
  --workspace-glass-surface: rgb(25 33 35 / 90%);
128
56
  --material-toolbar: transparent;
129
57
  --material-panel: rgb(32 41 43 / 58%);
@@ -131,7 +59,6 @@
131
59
  --material-control-hover: rgb(39 50 53 / 84%);
132
60
  --surface-pane: transparent;
133
61
  --surface-editor: transparent;
134
- --surface-overlay: rgb(25 33 35 / 94%);
135
62
  }
136
63
  }
137
64
 
@@ -144,13 +71,6 @@
144
71
  --shadow-control: 0 1px 2px rgb(0 0 0 / 28%), 0 5px 16px rgb(0 0 0 / 18%), inset 0 1px 0 rgb(255 255 255 / 11%);
145
72
  --shadow-floating: 0 24px 72px rgb(0 0 0 / 52%), 0 2px 8px rgb(0 0 0 / 28%);
146
73
  --glass-shadow: inset 0 1px 0 var(--glass-rim-light), inset 0 -1px 0 var(--glass-rim-shadow), 0 12px 32px rgb(0 0 0 / 30%);
147
- --interaction-glow-core: rgb(244 244 247 / 78%);
148
- --interaction-glow-soft: rgb(197 199 205 / 34%);
149
- --interaction-glow-haze: rgb(255 255 255 / 42%);
150
- --interaction-glare-light: rgb(255 255 255 / 34%);
151
- --interaction-glare-rim: rgb(255 255 255 / 10%);
152
- --card-highlight: rgb(255 255 255 / 11%);
153
- --card-fill: rgb(7 9 11 / 22%);
154
74
  --workspace-glass-surface: rgb(25 33 35 / 90%);
155
75
  --material-toolbar: transparent;
156
76
  --material-panel: rgb(32 41 43 / 58%);
@@ -158,7 +78,6 @@
158
78
  --material-control-hover: rgb(39 50 53 / 84%);
159
79
  --surface-pane: transparent;
160
80
  --surface-editor: transparent;
161
- --surface-overlay: rgb(25 33 35 / 94%);
162
81
  }
163
82
 
164
83
  * { box-sizing: border-box; }
@@ -183,13 +102,9 @@ body {
183
102
  /* The workspace and iframe remain transparent. Only the visible sidebar and
184
103
  main pane own material, preventing a full-page glass sheet. */
185
104
  :root[data-dsh-embed-mode="embedded"] {
186
- --workspace-glass-surface: rgba(255, 255, 255, 0.08);
187
- --glass-filter: saturate(.65) contrast(1.015) blur(24px);
188
- }
189
-
190
- :root[data-dsh-embed-mode="embedded"][data-color-scheme="dark"] {
191
- --workspace-glass-surface: rgb(16 23 25 / 18%);
192
- --glass-filter: saturate(.55) contrast(1.02) blur(24px);
105
+ --workspace-glass-surface: var(--knowledge-embedded-surface);
106
+ --glass-filter: var(--knowledge-embedded-filter);
107
+ --material-control: var(--knowledge-embedded-control);
193
108
  }
194
109
 
195
110
  :root[data-dsh-embed-mode="embedded"],
@@ -282,7 +197,7 @@ button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-
282
197
 
283
198
  button:disabled { cursor: not-allowed; opacity: .56; }
284
199
 
285
- ::selection { background: var(--accent-soft); color: var(--text); }
200
+ ::selection { background: var(--selection-background); color: var(--selection-text); }
286
201
 
287
202
  input:-webkit-autofill,
288
203
  input:-webkit-autofill:hover,
@@ -393,7 +308,7 @@ html,
393
308
  background-color: var(--material-control);
394
309
  color: var(--text);
395
310
  box-shadow: var(--shadow-control);
396
- transition: background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, box-shadow var(--motion-base) ease, transform var(--motion-fast) var(--ease-out);
311
+ transition: background-color var(--motion-fast) ease, border-color var(--motion-fast) ease;
397
312
  }
398
313
 
399
314
  .input, .select { height: 38px; min-height: 38px; font: inherit; line-height: 20px; }
@@ -411,6 +326,18 @@ html,
411
326
  background-repeat: no-repeat;
412
327
  }
413
328
  .select option { background: var(--dialog-surface); color: var(--text); }
329
+ .knowledge-select { display: inline-flex; min-width: 0; width: 100%; vertical-align: middle; }
330
+ .knowledge-select-source { display: none !important; }
331
+ .knowledge-select-trigger { display: block; min-width: 0; width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; }
332
+ .knowledge-select-trigger[aria-invalid="true"] { border-color: var(--danger); outline: 2px solid var(--danger); outline-offset: 2px; }
333
+ .knowledge-select-menu { position: fixed; z-index: 1200; overflow: auto; overscroll-behavior: contain; border: 1px solid var(--border-strong); border-radius: var(--radius-control); padding: 4px; background: var(--dialog-surface); color: var(--text); box-shadow: var(--shadow-floating); scrollbar-width: thin; }
334
+ .knowledge-select-option { display: block; width: 100%; min-height: 36px; border: 0; border-radius: var(--radius-small); padding: 8px 10px; background: transparent; color: var(--text); font: inherit; text-align: left; overflow-wrap: anywhere; cursor: pointer; }
335
+ .knowledge-select-option:hover, .knowledge-select-option:focus-visible { background: var(--surface-hover); outline-offset: -2px; }
336
+ .knowledge-select-option[aria-selected="true"] { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
337
+ .knowledge-select-empty { margin: 0; padding: 10px; color: var(--text-secondary); }
338
+ .toolbar > .knowledge-select, .mount-manager-toolbar > .knowledge-select { width: auto; min-width: 132px; }
339
+ .app-sidebar-scrim[hidden] { display: none; }
340
+ @media (pointer: coarse) { .knowledge-select-option { min-height: 44px; } }
414
341
  .textarea { min-height: 132px; resize: vertical; }
415
342
  .input::placeholder, .textarea::placeholder { color: var(--text-tertiary); }
416
343
  .input:hover, .select:hover, .textarea:hover { border-color: color-mix(in srgb, var(--border-strong) 72%, var(--border)); background-color: var(--material-control-hover); }
@@ -428,11 +355,11 @@ html,
428
355
  font-weight: 590;
429
356
  white-space: nowrap;
430
357
  box-shadow: var(--shadow-control);
431
- transition: background var(--motion-fast) ease, border-color var(--motion-fast) ease, box-shadow var(--motion-base) ease, color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out);
358
+ transition: background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, color var(--motion-fast) ease;
432
359
  }
433
360
 
434
- .button:hover:not(:disabled) { background: var(--material-control-hover); border-color: var(--border-strong); box-shadow: 0 6px 16px rgb(31 31 35 / 8%); transform: translateY(-1px); }
435
- .button:active:not(:disabled) { box-shadow: var(--shadow-control); transform: translateY(0) scale(.98); }
361
+ .button:hover:not(:disabled) { background: var(--material-control-hover); border-color: var(--border-strong); }
362
+ .button:active:not(:disabled) { border-color: var(--text-secondary); }
436
363
  .button.primary { border-color: color-mix(in srgb, var(--accent) 82%, var(--border)); background: var(--accent); color: var(--on-accent); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--on-accent) 24%, transparent), 0 1px 3px color-mix(in srgb, var(--text) 16%, transparent); }
437
364
  .button.primary:hover:not(:disabled) { border-color: var(--accent-hover); background: var(--accent-hover); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--on-accent) 26%, transparent), 0 2px 6px color-mix(in srgb, var(--text) 14%, transparent); }
438
365
  .button.danger { border-color: color-mix(in srgb, var(--danger) 40%, var(--border)); color: var(--danger); }
@@ -452,7 +379,6 @@ html,
452
379
  align-items: start;
453
380
  overflow: hidden;
454
381
  background: transparent;
455
- transition: grid-template-columns 230ms var(--ease-out);
456
382
  }
457
383
 
458
384
  .sidebar {
@@ -474,10 +400,6 @@ html,
474
400
  box-shadow: inset 0 1px 0 var(--surface-highlight), var(--shadow-soft);
475
401
  -webkit-backdrop-filter: var(--glass-filter);
476
402
  backdrop-filter: var(--glass-filter);
477
- transform-origin: left center;
478
- transition:
479
- opacity 150ms ease-out,
480
- transform 230ms var(--ease-out);
481
403
  }
482
404
 
483
405
  .brand { display: flex; align-items: center; gap: 11px; min-height: 56px; margin-bottom: 8px; padding: 3px 8px 12px; border-bottom: 1px solid var(--separator); }
@@ -519,10 +441,10 @@ html,
519
441
  text-align: left;
520
442
  font-size: 13px;
521
443
  font-weight: 520;
522
- transition: background var(--motion-base) ease, color var(--motion-fast) ease, box-shadow var(--motion-base) ease, transform var(--motion-base) var(--ease-out);
444
+ transition: background-color var(--motion-fast) ease, color var(--motion-fast) ease;
523
445
  }
524
446
  .nav-button:hover { background: var(--surface-hover); color: var(--text); }
525
- .nav-button:active { transform: scale(.97); }
447
+ .nav-button:active { background: var(--material-control); }
526
448
  .nav-button[aria-current="page"] { background: var(--material-control); color: var(--text); font-weight: 640; box-shadow: var(--shadow-control); }
527
449
  .nav-button[aria-current="page"]::before { content: ""; position: absolute; top: 9px; bottom: 9px; left: -1px; width: 2px; border-radius: 2px; background: var(--text-secondary); opacity: .72; }
528
450
  .nav-index { width: 18px; flex: none; color: color-mix(in srgb, var(--text-tertiary) 70%, transparent); font: 8px/1.2 ui-monospace, "SFMono-Regular", Consolas, monospace; letter-spacing: .04em; transition: color var(--motion-fast) ease; }
@@ -549,10 +471,7 @@ html,
549
471
  touch-action: none;
550
472
  background: transparent;
551
473
  outline-offset: -2px;
552
- transition:
553
- opacity 130ms ease-out,
554
- transform 210ms var(--ease-out),
555
- background-color var(--motion-fast) ease;
474
+ transition: background-color var(--motion-fast) ease;
556
475
  }
557
476
  .app-sidebar-resizer::before {
558
477
  content: "";
@@ -627,7 +546,7 @@ html,
627
546
  .topbar-heading { min-width: 0; }
628
547
  .topbar-kicker { display: block; margin-bottom: 2px; color: var(--text-tertiary); font: 8px/1.2 ui-monospace, "SFMono-Regular", Consolas, monospace; font-weight: 700; letter-spacing: .12em; }
629
548
  .route-progress { position: absolute; right: 0; bottom: -1px; left: 0; height: 2px; overflow: hidden; background: color-mix(in srgb, var(--accent) 7%, transparent); }
630
- .route-progress span { display: block; width: calc(var(--route-progress) * 100%); height: 100%; border-radius: 0 99px 99px 0; background: linear-gradient(90deg, color-mix(in srgb, var(--accent) 58%, transparent), var(--accent)); transition: width var(--motion-slow) var(--ease-out); }
549
+ .route-progress span { display: block; width: 100%; height: 100%; border-radius: 0 99px 99px 0; background: linear-gradient(90deg, color-mix(in srgb, var(--accent) 58%, transparent), var(--accent)); transform: scaleX(var(--route-progress)); transform-origin: left center; transition: transform var(--motion-fast) ease-out; }
631
550
  .mobile-menu, .app-sidebar-scrim { display: none; }
632
551
  .topbar-actions { display: flex; align-items: center; gap: 8px; }
633
552
  .pane-toggle-group {
@@ -732,10 +651,7 @@ html,
732
651
  .candidate-heading-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
733
652
 
734
653
  .metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 30px; }
735
- .metric { position: relative; min-width: 0; overflow: hidden; border: 1px solid var(--glass-border); border-radius: var(--radius-panel); padding: 18px; background: var(--material-panel); box-shadow: var(--shadow-control); transition: border-color var(--motion-base) ease, box-shadow var(--motion-base) ease, transform var(--motion-base) var(--ease-out); }
736
- .metric::after { content: ""; position: absolute; inset: auto 18px 0; height: 1px; background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent) 32%, transparent), transparent); opacity: 0; transition: opacity var(--motion-base) ease; }
737
- .metric:hover { border-color: var(--border-strong); box-shadow: var(--shadow-panel); transform: translateY(-2px); }
738
- .metric:hover::after { opacity: 1; }
654
+ .metric { position: relative; min-width: 0; overflow: hidden; border: 1px solid var(--glass-border); border-radius: var(--radius-panel); padding: 18px; background: var(--material-panel); box-shadow: var(--shadow-control); }
739
655
  .metric-label { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--text-secondary); font-size: 12px; font-weight: 600; }
740
656
  .metric-value { display: block; margin-top: 8px; font-size: 27px; line-height: 1.15; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.03em; }
741
657
  .metric-detail { margin-top: 7px; color: var(--text-tertiary); font-size: 11px; }
@@ -811,12 +727,12 @@ html,
811
727
  padding: 16px;
812
728
  background: var(--material-panel);
813
729
  box-shadow: inset 0 1px 0 var(--surface-highlight), var(--shadow-soft);
814
- transition: background .16s ease, border-color .16s ease, box-shadow .2s var(--ease-out), transform .2s var(--ease-out);
730
+ transition: background-color var(--motion-fast) ease, border-color var(--motion-fast) ease;
815
731
  content-visibility: auto;
816
732
  contain-intrinsic-size: auto 218px;
817
733
  }
818
734
  .base-card::after { position: absolute; top: 0; right: 18px; left: 18px; height: 1px; background: linear-gradient(90deg, transparent, var(--surface-highlight), transparent); pointer-events: none; content: ''; }
819
- .base-card:hover { border-color: var(--border-strong); background: color-mix(in srgb, var(--surface-raised) 92%, var(--surface-hover)); box-shadow: inset 0 1px 0 var(--surface-highlight), var(--shadow-panel); transform: translateY(-1px); }
735
+ .base-card:hover { border-color: var(--border-strong); background: color-mix(in srgb, var(--surface-raised) 92%, var(--surface-hover)); }
820
736
  .base-card.is-archived { opacity: .78; }
821
737
  .base-card-header { min-width: 0; grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
822
738
  .base-card-identity { min-width: 0; display: flex; align-items: center; gap: 11px; }
@@ -918,11 +834,9 @@ html,
918
834
  }
919
835
  .note-tree-group + .note-tree-group { margin-top: 3px; }
920
836
  .note-tree-base, .note-tree-document, .note-tree-new { width: 100%; display: flex; align-items: center; border: 0; background: transparent; color: var(--text-secondary); text-align: left; }
921
- .note-tree-base { position: relative; min-height: 36px; gap: 7px; border-radius: 9px; padding: 5px 7px; font-weight: 620; transition: background var(--motion-fast) ease, color var(--motion-fast) ease, transform var(--motion-base) var(--ease-out), box-shadow var(--motion-fast) ease; }
922
- .note-tree-base:hover, .note-tree-document:hover, .note-tree-new:hover { background: var(--surface-hover); color: var(--text); transform: translateX(2px); }
923
- .note-tree-group[data-drop-target="true"] > .note-tree-base { background: color-mix(in srgb, var(--accent) 13%, var(--surface)); color: var(--text); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 44%, transparent), var(--shadow-control); transform: translateX(2px); }
837
+ .note-tree-base { position: relative; min-height: 36px; gap: 7px; border-radius: 9px; padding: 5px 7px; font-weight: 620; transition: background var(--motion-fast) ease, color var(--motion-fast) ease; }
838
+ .note-tree-base:hover, .note-tree-document:hover, .note-tree-new:hover { background: var(--surface-hover); color: var(--text); }
924
839
  .note-tree-group[data-drop-target="true"] > .note-tree-base .tree-count { visibility: hidden; }
925
- .note-tree-group[data-drop-target="true"] > .note-tree-base::after { content: "移动到这里"; position: absolute; right: 7px; border-radius: 5px; padding: 2px 6px; background: var(--surface-raised); color: var(--accent); font-size: 9px; font-weight: 650; pointer-events: none; }
926
840
  .tree-disclosure { width: 7px; height: 7px; flex: none; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); transition: transform .16s ease; }
927
841
  .note-tree-group[data-expanded="true"] .tree-disclosure { transform: rotate(45deg) translate(-1px, -1px); }
928
842
  .tree-folder-icon {
@@ -940,12 +854,9 @@ html,
940
854
  .tree-base-name { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
941
855
  .tree-count { min-width: 20px; color: var(--text-tertiary); font-size: 10px; font-variant-numeric: tabular-nums; text-align: right; }
942
856
  .note-tree-documents { display: grid; gap: 1px; margin: 1px 0 5px 18px; padding-left: 10px; border-left: 1px solid color-mix(in srgb, var(--border-strong) 55%, transparent); }
943
- .note-tree-document { position: relative; min-height: 40px; gap: 8px; border-radius: 9px; padding: 5px 8px; transition: background var(--motion-fast) ease, color var(--motion-fast) ease, transform var(--motion-base) var(--ease-out), box-shadow var(--motion-base) ease; }
944
- .note-tree-document[draggable="true"] { cursor: grab; }
945
- .note-tree-document[draggable="true"]:active { cursor: grabbing; }
946
- .note-tree-document[data-dragging="true"] { opacity: .42; transform: translateX(5px) scale(.985); }
857
+ .note-tree-document { position: relative; min-height: 40px; gap: 8px; border-radius: 9px; padding: 5px 8px; transition: background var(--motion-fast) ease, color var(--motion-fast) ease; }
947
858
  .note-tree-document[aria-busy="true"] { opacity: .58; pointer-events: none; }
948
- .note-tree-document[aria-current="page"] { background: var(--material-control); color: var(--text); box-shadow: inset 2px 0 0 color-mix(in srgb, var(--text-secondary) 74%, transparent), var(--shadow-control); transform: translateX(2px); }
859
+ .note-tree-document[aria-current="page"] { background: var(--material-control); color: var(--text); box-shadow: inset 2px 0 0 color-mix(in srgb, var(--text-secondary) 74%, transparent), var(--shadow-control); }
949
860
  .tree-document-icon {
950
861
  width: 14px;
951
862
  height: 17px;
@@ -983,6 +894,7 @@ html,
983
894
  overflow: hidden;
984
895
  background: transparent;
985
896
  }
897
+ .notes-browser-scrim { display: none; }
986
898
  .notes-browser { min-width: 0; min-height: 0; display: grid; grid-template-rows: auto auto minmax(0, 1fr); overflow: hidden; border-right: 1px solid var(--glass-separator); background: transparent; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
987
899
  .notes-browser-header { min-height: 68px; display: grid; gap: 8px; padding: 10px 10px 7px; }
988
900
  .notes-browser-header > div:first-child { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
@@ -1011,14 +923,17 @@ html,
1011
923
  .notes-tree-branch[role="group"] { position: relative; margin-left: 17px; padding-left: 5px; }
1012
924
  .notes-tree-branch[role="group"]::before { content: ""; position: absolute; top: 0; bottom: 5px; left: 0; width: 1px; background: color-mix(in srgb, var(--border-strong) 48%, transparent); }
1013
925
  .notes-tree-node { min-width: 0; max-width: 100%; }
1014
- .notes-tree-item { --notes-row-actions-width: 118px; position: relative; width: 100%; max-width: 100%; min-width: 0; display: flex; align-items: center; border-radius: 8px; transition: background var(--motion-fast) ease, box-shadow var(--motion-base) ease, transform var(--motion-base) var(--ease-out); }
926
+ .notes-tree-item { --notes-row-actions-width: 118px; position: relative; width: 100%; max-width: 100%; min-width: 0; display: flex; align-items: center; border-radius: 8px; transition: background var(--motion-fast) ease; }
1015
927
  .notes-tree-item:hover { background: var(--surface-hover); }
1016
- .notes-tree-item[data-selected="true"] { background: var(--material-control); box-shadow: inset 2px 0 0 color-mix(in srgb, var(--text-secondary) 70%, transparent), var(--shadow-control); transform: translateX(2px); }
1017
- .notes-tree-item[data-drop-target="true"] { background: color-mix(in srgb, var(--accent) 13%, var(--surface)); outline: 1px solid color-mix(in srgb, var(--accent) 38%, transparent); outline-offset: -1px; }
1018
- .notes-tree-item[data-drop-target="true"]::after { content: "放入此目录"; position: absolute; right: 6px; z-index: 2; border-radius: 4px; padding: 2px 5px; background: color-mix(in srgb, var(--surface-raised) 92%, transparent); color: var(--accent); font-size: 8px; font-weight: 620; pointer-events: none; }
928
+ .notes-tree-item[data-selected="true"] { background: var(--material-control); box-shadow: inset 2px 0 0 color-mix(in srgb, var(--text-secondary) 70%, transparent), var(--shadow-control); }
929
+ .notes-tree-item[data-drop-target="true"],
930
+ .note-tree-group[data-drop-target="true"] > .note-tree-base { background: color-mix(in srgb, var(--accent) 13%, var(--surface)); outline: 1px solid color-mix(in srgb, var(--accent) 38%, transparent); outline-offset: -1px; }
931
+ .notes-tree-item[data-drop-target="true"]::after,
932
+ .note-tree-group[data-drop-target="true"] > .note-tree-base::after { content: "放入此目录"; position: absolute; right: 6px; z-index: 2; border-radius: 4px; padding: 2px 5px; background: color-mix(in srgb, var(--surface-raised) 92%, transparent); color: var(--accent); font-size: 8px; font-weight: 620; pointer-events: none; }
933
+ .note-tree-group[data-drop-target="true"] > .note-tree-base::after { content: "移入此知识库"; }
1019
934
  .notes-tree-item[data-drop-target="true"] .notes-row-actions { opacity: 0; pointer-events: none; }
1020
- .notes-tree-item[data-dragging="true"] { opacity: .45; }
1021
- .notes-tree-row { width: 100%; min-width: 0; min-height: 34px; display: flex; align-items: center; flex: 1 1 0; gap: 7px; overflow: hidden; border: 0; padding: 3px 4px; background: transparent; color: var(--text-secondary); font: inherit; text-align: left; transition: padding-right .12s ease; }
935
+ .notes-tree-item[data-dragging="true"], .note-tree-document[data-dragging="true"] { opacity: .45; }
936
+ .notes-tree-row { width: 100%; min-width: 0; min-height: 34px; display: flex; align-items: center; flex: 1 1 0; gap: 7px; overflow: hidden; border: 0; padding: 3px 4px; background: transparent; color: var(--text-secondary); font: inherit; text-align: left; }
1022
937
  .notes-tree-row:hover, .notes-tree-row[aria-selected="true"] { color: var(--text); }
1023
938
  .notes-tree-chevron, .notes-tree-spacer { position: relative; width: 14px; height: 20px; flex: none; color: var(--text-tertiary); }
1024
939
  .notes-tree-chevron::before { content: ""; position: absolute; top: 50%; left: 3px; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-50%) rotate(-45deg); transform-origin: center; transition: transform .16s cubic-bezier(.2, .8, .2, 1), color .14s ease; }
@@ -1120,9 +1035,9 @@ html,
1120
1035
  .notes-content.is-document, .notes-content.is-file { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; overflow: hidden; }
1121
1036
  .notes-content.is-document { --notes-document-inline: clamp(24px, 4.5vw, 76px); background: transparent; }
1122
1037
  .notes-content.is-document.has-line-numbers { --notes-document-inline: clamp(34px, 3.2vw, 48px); }
1123
- .notes-editor-frame { position: relative; min-width: 0; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 0; overflow: hidden; }
1038
+ .notes-editor-frame { position: relative; isolation: isolate; min-width: 0; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 0; overflow: hidden; }
1124
1039
  .notes-editor-frame[data-outline-open="true"] { grid-template-columns: minmax(0, 1fr) minmax(190px, 236px); }
1125
- .notes-document-toolbar { position: relative; z-index: 2; min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border-bottom: 1px solid var(--separator); padding: 5px 14px 5px 20px; background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
1040
+ .notes-document-toolbar { position: relative; z-index: 2; min-width: 0; min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border-bottom: 1px solid var(--separator); padding: 5px 14px 5px 20px; background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
1126
1041
  .notes-toolbar-leading { min-width: 0; display: flex; flex: 1 1 auto; align-items: center; overflow: hidden; }
1127
1042
  .notes-file-info { width: 100%; min-width: 0; display: grid; grid-template-columns: minmax(150px, 1.1fr) minmax(130px, 1fr) minmax(90px, .7fr) minmax(180px, 1.2fr); align-items: center; gap: 8px 18px; color: var(--text-tertiary); font-size: 10px; font-variant-numeric: tabular-nums; }
1128
1043
  .notes-file-info-item { min-width: 0; display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: baseline; gap: 6px; }
@@ -1134,7 +1049,7 @@ html,
1134
1049
  .notes-save-state[data-dirty="true"] { color: var(--warning); }
1135
1050
  .notes-outline-action { display: inline-flex; align-items: center; gap: 6px; }
1136
1051
  .notes-toolbar-action-icon { width: 16px; height: 16px; display: block; flex: none; color: currentColor; stroke-width: 2; }
1137
- .notes-document-more { position: relative; display: none; flex: none; }
1052
+ .notes-document-more { position: relative; display: block; flex: none; }
1138
1053
  .notes-document-more > summary { width: 44px; min-width: 44px; display: inline-grid; place-items: center; list-style: none; padding: 0; color: var(--text); user-select: none; }
1139
1054
  .notes-document-more > summary::-webkit-details-marker { display: none; }
1140
1055
  .notes-document-more > summary:hover, .notes-document-more[open] > summary { background: var(--surface-hover); color: var(--text); }
@@ -1145,35 +1060,45 @@ html,
1145
1060
  right: 0;
1146
1061
  z-index: 24;
1147
1062
  width: min(230px, calc(100vw - 16px));
1063
+ overflow-y: auto;
1064
+ overscroll-behavior: contain;
1065
+ scrollbar-width: thin;
1148
1066
  display: grid;
1149
1067
  grid-template-columns: minmax(0, 1fr);
1150
1068
  gap: 2px;
1151
1069
  border: 1px solid var(--panel-border);
1152
1070
  border-radius: 12px;
1153
1071
  padding: 6px;
1154
- background: var(--dialog-surface);
1155
- box-shadow: var(--shadow-floating);
1072
+ background: var(--menu-surface-solid);
1073
+ box-shadow: 0 8px 24px rgb(0 0 0 / 14%), 0 1px 4px rgb(0 0 0 / 8%);
1074
+ }
1075
+ @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
1076
+ .notes-document-more-menu {
1077
+ background: var(--menu-surface);
1078
+ -webkit-backdrop-filter: var(--knowledge-embedded-filter);
1079
+ backdrop-filter: var(--knowledge-embedded-filter);
1080
+ }
1156
1081
  }
1157
- .notes-document-more-menu::before {
1158
- position: absolute;
1159
- top: -5px;
1160
- right: 17px;
1161
- width: 8px;
1162
- height: 8px;
1163
- border-top: 1px solid var(--panel-border);
1164
- border-left: 1px solid var(--panel-border);
1165
- background: var(--dialog-surface);
1166
- content: "";
1167
- transform: rotate(45deg);
1082
+ @media (prefers-reduced-transparency: reduce), (pointer: coarse), (max-width: 760px) {
1083
+ .notes-document-more-menu {
1084
+ background: var(--menu-surface-solid);
1085
+ -webkit-backdrop-filter: none;
1086
+ backdrop-filter: none;
1087
+ }
1168
1088
  }
1169
1089
  .notes-document-more:not([open]) > .notes-document-more-menu { display: none; }
1170
1090
  .notes-document-more-menu .button { min-width: 0; width: 100%; display: grid; grid-template-columns: 20px minmax(0, 1fr); align-items: center; justify-content: stretch; gap: 10px; border-color: transparent; padding: 8px 10px; box-shadow: none; text-align: left; }
1171
- .notes-document-more-menu .button:hover:not(:disabled) { border-color: transparent; background: var(--surface-hover); box-shadow: none; transform: none; }
1091
+ .notes-document-more-menu .button:hover:not(:disabled) { border-color: transparent; background: var(--surface-hover); box-shadow: none; }
1092
+ .notes-document-more-menu .button:focus-visible { outline-offset: -2px; background: var(--surface-hover); }
1093
+ .notes-document-more-menu .is-danger :is(.notes-document-menu-icon, .notes-document-menu-label) { color: var(--danger); }
1094
+ .notes-document-more-menu .is-danger:hover { background: var(--danger-soft); }
1172
1095
  .notes-document-menu-icon { width: 18px; height: 18px; display: block; color: var(--text); stroke-width: 2; }
1173
1096
  .notes-document-menu-label { min-width: 0; overflow: hidden; color: var(--text); text-overflow: ellipsis; white-space: nowrap; }
1174
1097
  .notes-document-menu-divider { height: 1px; margin: 4px 7px; background: var(--separator); }
1175
1098
  .notes-document-scroll { min-width: 0; min-height: 0; overflow: auto; overscroll-behavior: contain; }
1176
1099
  .notes-document-scroll { scroll-padding-block: 72px 48px; }
1100
+ /* Tint only the reading area; retain the surrounding pane's existing frost. */
1101
+ .notes-document-scroll, .note-editor-scroll { background: var(--document-surface); }
1177
1102
  .notes-document-title { min-width: 0; margin: 0; padding: clamp(26px, 4vw, 48px) var(--notes-document-inline) 0; outline: 0; color: var(--text); font-family: var(--font-reading); font-size: clamp(25px, 2.5vw, 32px); font-weight: 700; line-height: 1.22; letter-spacing: -.025em; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; caret-color: var(--accent); }
1178
1103
  .notes-document-title:focus, .notes-document-title:focus-visible { outline: 0; box-shadow: none; }
1179
1104
  .notes-document-scroll > .notes-live-editor, .notes-document-scroll > .notes-plain-editor { width: 100%; min-width: 0; min-height: max(520px, calc(100% - 74px)); margin-top: 0; padding: 16px var(--notes-document-inline) 72px; }
@@ -1184,7 +1109,6 @@ html,
1184
1109
  .notes-plain-editor-surface:focus, .notes-plain-editor-surface:focus-visible { border: 0; outline: 0; box-shadow: none; }
1185
1110
  .notes-plain-editor-surface > p { position: relative; min-height: 1.78em; margin: 0; counter-increment: note-line; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; }
1186
1111
  .notes-plain-editor-surface > p::before { content: counter(note-line); position: absolute; right: calc(100% + 8px); top: 0; width: 22px; color: color-mix(in srgb, var(--text-tertiary) 54%, transparent); font: 11px/2.25 var(--font-mono); font-variant-numeric: tabular-nums; text-align: right; pointer-events: none; user-select: none; }
1187
- .notes-plain-editor-surface ::selection { background: color-mix(in srgb, var(--accent) 22%, transparent); }
1188
1112
  .notes-live-editor-surface { width: 100%; min-width: 0; max-width: 100%; min-height: 520px; border: 0; outline: 0; background: transparent; color: color-mix(in srgb, var(--text) 82%, var(--text-secondary)); font: 16px/1.55 var(--font-reading); letter-spacing: normal; overflow-wrap: anywhere; word-break: break-word; caret-color: var(--accent); }
1189
1113
  .notes-live-editor-surface p.is-editor-empty:first-child::before { height: 0; float: left; color: var(--text-tertiary); content: attr(data-placeholder); pointer-events: none; }
1190
1114
  .notes-live-editor-surface:focus, .notes-live-editor-surface:focus-visible { border: 0; outline: 0; box-shadow: none; }
@@ -1230,7 +1154,7 @@ html,
1230
1154
  .notes-find-input, .notes-selection-link-input { box-sizing: border-box; min-width: 0; height: 34px; border: 1px solid var(--panel-border); border-radius: 7px; padding: 6px 9px; background: var(--material-control); color: var(--text); font: inherit; font-size: 12px; box-shadow: var(--shadow-control); }
1231
1155
  .notes-find-input:focus, .notes-selection-link-input:focus { border-color: var(--border-strong); outline: 3px solid color-mix(in srgb, var(--accent) 20%, transparent); outline-offset: 1px; }
1232
1156
  .notes-find-status { min-width: 48px; color: var(--text-tertiary); font-size: 10px; font-variant-numeric: tabular-nums; text-align: center; }
1233
- .notes-find-button, .notes-selection-control { min-height: 34px; border: 0; border-radius: 7px; padding: 5px 8px; background: transparent; color: var(--text-secondary); font: inherit; font-size: 11px; font-weight: 590; white-space: nowrap; transition: background var(--motion-fast) ease, color var(--motion-fast) ease, box-shadow var(--motion-fast) ease; }
1157
+ .notes-find-button, .notes-selection-control { min-height: 34px; border: 0; border-radius: 7px; padding: 5px 8px; background: transparent; color: var(--text-secondary); font: inherit; font-size: 11px; font-weight: 590; white-space: nowrap; transition: background var(--motion-fast) ease, color var(--motion-fast) ease; }
1234
1158
  .notes-find-button:hover:not(:disabled), .notes-selection-control:hover { background: var(--surface-hover); color: var(--text); }
1235
1159
  .notes-find-button[aria-pressed="true"], .notes-selection-control[aria-pressed="true"], .notes-selection-control[aria-checked="true"] { background: var(--material-control); color: var(--accent); box-shadow: var(--shadow-control); }
1236
1160
  .notes-find-button:disabled { opacity: .42; }
@@ -1271,7 +1195,7 @@ html,
1271
1195
  .note-history-timeline-heading strong { font-size: 12px; font-weight: 650; }
1272
1196
  .note-history-timeline-heading span { color: var(--text-tertiary); font-size: 10px; }
1273
1197
  .note-history-version-list { min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 6px; }
1274
- .note-history-version { width: 100%; min-height: 58px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-content: center; gap: 2px 7px; border: 0; border-radius: 8px; padding: 8px 9px; background: transparent; color: var(--text); text-align: left; transition: background var(--motion-fast) ease, box-shadow var(--motion-fast) ease; }
1198
+ .note-history-version { width: 100%; min-height: 58px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-content: center; gap: 2px 7px; border: 0; border-radius: 8px; padding: 8px 9px; background: transparent; color: var(--text); text-align: left; transition: background var(--motion-fast) ease; }
1275
1199
  .note-history-version:hover { background: var(--surface-hover); }
1276
1200
  .note-history-version[aria-current="true"] { background: var(--material-control); box-shadow: inset 2px 0 0 var(--accent), var(--shadow-control); }
1277
1201
  .note-history-version strong { min-width: 0; overflow: hidden; font-size: 11px; font-weight: 630; text-overflow: ellipsis; white-space: nowrap; }
@@ -1345,7 +1269,7 @@ html,
1345
1269
  .notes-transfer[data-state="complete"] .notes-transfer-mark { background: var(--success); box-shadow: 0 0 0 3px color-mix(in srgb, var(--success) 12%, transparent); }
1346
1270
  .notes-transfer[data-state="error"] .notes-transfer-mark { background: var(--danger); box-shadow: 0 0 0 3px color-mix(in srgb, var(--danger) 12%, transparent); }
1347
1271
  .notes-transfer[data-state="error"] .notes-transfer-detail { color: var(--danger); white-space: normal; }
1348
- @keyframes notes-transfer-enter { from { opacity: 0; transform: translateY(7px) scale(.985); } to { opacity: 1; transform: translateY(0) scale(1); } }
1272
+ @keyframes notes-transfer-enter { from { opacity: 0; } to { opacity: 1; } }
1349
1273
  @keyframes notes-transfer-scan { from { transform: translateX(-115%); } to { transform: translateX(295%); } }
1350
1274
  .note-picker { display: grid; gap: 12px; }
1351
1275
  .note-picker-results { max-height: min(58vh, 540px); overflow: auto; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
@@ -1398,7 +1322,7 @@ html,
1398
1322
  .note-toolbar-meta { display: inline-flex; gap: 10px; margin-left: 8px; color: var(--text-tertiary); font-size: 10px; }
1399
1323
  .note-toolbar-meta > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
1400
1324
  .note-toolbar-meta > span + span::before { content: "·"; margin-right: 10px; color: var(--border-strong); }
1401
- .note-editor-actions { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 6px; }
1325
+ .note-editor-actions { min-width: 0; display: flex; flex: none; align-items: center; justify-content: flex-end; gap: 6px; }
1402
1326
  .editor-save-status { margin-right: 4px; color: var(--text-tertiary); font-size: 10px; white-space: nowrap; }
1403
1327
  .note-editor-scroll {
1404
1328
  min-height: 0;
@@ -1494,6 +1418,8 @@ html,
1494
1418
  .document-reference-empty { color: var(--text-tertiary); font-size: 12px; }
1495
1419
  .document-reference-add { min-height: 27px; white-space: nowrap; }
1496
1420
  .note-inspector label { display: flex; align-items: center; gap: 7px; color: var(--text-tertiary); font-size: 10px; }
1421
+ .note-inspector label > span:not(.knowledge-select) { flex: none; white-space: nowrap; }
1422
+ .note-inspector .knowledge-select { width: auto; flex: none; }
1497
1423
  .note-inspector input, .note-meta-select { height: 30px; border: 1px solid transparent; border-radius: 6px; padding: 4px 7px; background-color: transparent; color: var(--text-secondary); outline: none; }
1498
1424
  .note-meta-select {
1499
1425
  -webkit-appearance: none;
@@ -1510,30 +1436,19 @@ html,
1510
1436
  }
1511
1437
  .note-inspector input:focus, .note-meta-select:focus { border-color: var(--border-strong); background-color: var(--surface); }
1512
1438
  .note-tags-field { min-width: 0; flex: 1; }
1513
- .note-tags-field input { width: min(100%, 360px); }
1439
+ .note-tags-field input { width: min(100%, 360px); min-width: 0; }
1514
1440
  .note-format-hint { margin-left: auto; color: var(--text-tertiary); font-size: 10px; white-space: nowrap; }
1515
1441
 
1516
- @container note-editor (max-width: 700px) {
1517
- .note-editor-toolbar {
1518
- min-height: 0;
1519
- display: grid;
1520
- grid-template-columns: minmax(0, 1fr);
1521
- align-items: stretch;
1522
- gap: 7px;
1523
- padding: 9px 12px;
1524
- }
1525
-
1526
- .note-editor-actions {
1527
- width: 100%;
1528
- justify-content: flex-start;
1529
- }
1530
-
1531
- .editor-save-status { margin-left: auto; }
1442
+ @container note-editor (max-width: 920px) {
1443
+ .note-toolbar-meta { display: none; }
1444
+ .note-editor-toolbar { gap: 8px; padding-inline: 10px; }
1532
1445
  }
1533
1446
 
1534
1447
  @container note-editor (max-width: 480px) {
1535
- .note-breadcrumb { display: none; }
1536
- .note-editor-actions > .button { flex: 1 1 auto; }
1448
+ .note-breadcrumb { flex: 1; }
1449
+ .note-breadcrumb > span { display: none; }
1450
+ .note-editor-actions { gap: 4px; }
1451
+ .note-editor-actions > .badge { display: none; }
1537
1452
  }
1538
1453
 
1539
1454
  .list { display: grid; gap: 8px; }
@@ -1562,7 +1477,7 @@ html,
1562
1477
 
1563
1478
  .card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
1564
1479
  .knowledge-card { min-width: 0; display: flex; flex-direction: column; border: 1px solid var(--panel-border); border-radius: var(--radius); padding: 17px; background: var(--material-panel); box-shadow: var(--shadow-soft); }
1565
- .knowledge-card:hover { border-color: var(--border-strong); box-shadow: var(--shadow-panel); }
1480
+ .knowledge-card:hover { border-color: var(--border-strong); }
1566
1481
  .knowledge-card h3 { margin: 11px 0 7px; font-size: 15px; line-height: 1.4; }
1567
1482
  .knowledge-card p { display: -webkit-box; overflow: hidden; margin: 0; color: var(--text-secondary); line-height: 1.65; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
1568
1483
  .card-top, .card-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
@@ -1573,8 +1488,8 @@ html,
1573
1488
  .tag.is-empty { color: var(--text-tertiary); font-style: italic; }
1574
1489
 
1575
1490
  .tabs { display: inline-flex; gap: 3px; border: 1px solid var(--separator); border-radius: 10px; padding: 3px; background: var(--material-control); box-shadow: inset 0 1px 0 var(--surface-highlight); }
1576
- .tab { min-height: 31px; border: 0; border-radius: var(--radius-small); padding: 5px 12px; background: transparent; color: var(--text-secondary); font-size: 12px; font-weight: 600; transition: color var(--motion-fast) ease, background var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out); }
1577
- .tab:hover { color: var(--text); transform: translateY(-1px); }
1491
+ .tab { min-height: 31px; border: 0; border-radius: var(--radius-small); padding: 5px 12px; background: transparent; color: var(--text-secondary); font-size: 12px; font-weight: 600; transition: color var(--motion-fast) ease, background-color var(--motion-fast) ease; }
1492
+ .tab:hover { color: var(--text); background: var(--surface-hover); }
1578
1493
  .tab[aria-selected="true"] { background: var(--surface-raised); color: var(--text); box-shadow: var(--shadow-soft); }
1579
1494
 
1580
1495
  .candidate-list { display: grid; gap: 13px; }
@@ -1651,7 +1566,6 @@ html,
1651
1566
  .skeleton-phase { position: relative; display: inline-flex; align-items: center; gap: 8px; padding-top: 3px; color: var(--text-tertiary); font-size: 11px; white-space: nowrap; }
1652
1567
  .skeleton-phase::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 10%, transparent); animation: loading-pulse 1.4s ease-in-out infinite; }
1653
1568
  .skeleton-line, .skeleton-block { position: relative; overflow: hidden; background: var(--surface-soft); }
1654
- .skeleton-line::after, .skeleton-block::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--surface-raised) 72%, transparent), transparent); transform: translateX(-100%); animation: skeleton-shimmer 1.4s ease-in-out infinite; }
1655
1569
  .skeleton-title { width: min(280px, 48%); height: 22px; border-radius: 7px; }
1656
1570
  .skeleton-copy { width: min(460px, 72%); height: 12px; margin-top: 10px; border-radius: 5px; }
1657
1571
  .skeleton-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 28px; }
@@ -1674,8 +1588,7 @@ html,
1674
1588
  .skeleton-list-row .skeleton-line { width: 66%; height: 12px; border-radius: 5px; }
1675
1589
  .notes-selection-loading { overflow: hidden; }
1676
1590
  .notes-selection-skeleton { display: grid; align-content: start; gap: 15px; padding: clamp(34px, 5vw, 72px); }
1677
- @keyframes skeleton-shimmer { to { transform: translateX(100%); } }
1678
- @keyframes loading-pulse { 0%, 100% { opacity: .5; transform: scale(.82); } 50% { opacity: 1; transform: scale(1); } }
1591
+ @keyframes loading-pulse { 0%, 100% { opacity: .5; } 50% { opacity: 1; } }
1679
1592
 
1680
1593
  .error-state { border: 1px solid color-mix(in srgb, var(--danger) 30%, var(--border)); border-radius: var(--radius); padding: 18px; background: var(--danger-soft); color: var(--danger); }
1681
1594
  .error-state p { margin: 0 0 12px; }
@@ -1696,7 +1609,7 @@ html,
1696
1609
  .api-access-actions { align-items: center; border-top: 1px solid var(--border); padding-top: 13px; }
1697
1610
  .api-access-actions small { color: var(--text-tertiary); }
1698
1611
 
1699
- .dialog-backdrop { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 20px; background: transparent; animation: dialog-backdrop-enter var(--motion-base) ease both; }
1612
+ .dialog-backdrop { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 20px; background: transparent; }
1700
1613
  .dialog {
1701
1614
  width: min(560px, 100%);
1702
1615
  max-height: min(680px, calc(100dvh - 64px));
@@ -1707,10 +1620,9 @@ html,
1707
1620
  border-radius: 16px;
1708
1621
  background: var(--dialog-surface);
1709
1622
  box-shadow: 0 22px 58px color-mix(in srgb, #000 18%, transparent), 0 4px 14px color-mix(in srgb, #000 8%, transparent), inset 0 1px 0 var(--surface-highlight);
1710
- animation: dialog-enter 200ms var(--ease-out) both;
1623
+ animation: dialog-enter var(--motion-fast) ease-out both;
1711
1624
  }
1712
- @keyframes dialog-backdrop-enter { from { opacity: 0; } }
1713
- @keyframes dialog-enter { from { opacity: 0; transform: translateY(8px) scale(.985); } }
1625
+ @keyframes dialog-enter { from { opacity: 0; } }
1714
1626
  .dialog.narrow { width: min(100%, 460px); }
1715
1627
  .dialog-backdrop.sheet-backdrop {
1716
1628
  place-items: stretch end;
@@ -1724,9 +1636,8 @@ html,
1724
1636
  border-width: 0 0 0 1px;
1725
1637
  border-radius: 0;
1726
1638
  box-shadow: -22px 0 64px rgb(0 0 0 / 18%);
1727
- animation: sheet-enter .2s cubic-bezier(.2, .8, .2, 1);
1639
+ animation: dialog-enter var(--motion-fast) ease-out both;
1728
1640
  }
1729
- @keyframes sheet-enter { from { opacity: .75; transform: translateX(18px); } }
1730
1641
  .dialog-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--separator); padding: 22px 22px 18px; background: var(--surface-raised); }
1731
1642
  .dialog-header h2 { margin: 0; font-size: var(--font-title); font-weight: 650; letter-spacing: -.02em; }
1732
1643
  .dialog-header p { margin: 4px 0 0; color: var(--text-tertiary); font-size: var(--font-caption); }
@@ -1774,7 +1685,7 @@ html,
1774
1685
  .toast > span { min-width: 0; flex: 1; overflow-wrap: anywhere; }
1775
1686
  .toast-close { flex: none; min-height: 28px; }
1776
1687
  .toast.error { border-color: color-mix(in srgb, var(--danger) 45%, var(--border)); color: var(--danger); }
1777
- @keyframes toast-in { from { opacity: 0; transform: translateY(7px); } }
1688
+ @keyframes toast-in { from { opacity: 0; } }
1778
1689
 
1779
1690
  @media (prefers-reduced-transparency: reduce) {
1780
1691
  .sidebar, .main, .topbar, .note-tree-panel, .notes-browser, .notes-content-header, .notes-document-toolbar, .notes-document-statusbar, .note-editor-toolbar, .dialog-backdrop {
@@ -1796,11 +1707,11 @@ html,
1796
1707
  .notes-workspace { grid-template-columns: minmax(240px, 290px) minmax(0, 1fr); }
1797
1708
  }
1798
1709
 
1799
- @media (min-width: 761px) {
1710
+ @media (min-width: 1121px) and (hover: hover), (min-width: 1401px) {
1800
1711
  .app-shell[data-sidebar-hidden="true"] { grid-template-columns: 0 0 minmax(0, 1fr); }
1801
1712
  .app-shell[data-sidebar-hidden="true"] > .sidebar {
1802
1713
  opacity: 0;
1803
- transform: translateX(calc(-100% - var(--chrome-inset))) scale(.985);
1714
+ transform: translateX(calc(-100% - var(--chrome-inset)));
1804
1715
  pointer-events: none;
1805
1716
  }
1806
1717
  .app-shell[data-sidebar-hidden="true"] > .app-sidebar-resizer {
@@ -1810,29 +1721,51 @@ html,
1810
1721
  }
1811
1722
  }
1812
1723
 
1813
- @media (max-width: 760px) {
1724
+ @media (max-width: 1120px), (hover: none) and (pointer: coarse) and (max-width: 1400px) {
1814
1725
  :root { --sidebar-width: 0px; --chrome-inset: 8px; --topbar-inline-inset: 8px; }
1815
1726
  html { min-width: 0; overflow-x: hidden; }
1816
1727
  body { min-width: 0; overflow-x: hidden; font-size: 14px; }
1817
- .app-shell { height: auto; min-height: 100dvh; display: block; overflow: visible; }
1818
- .main { width: 100%; height: auto; min-height: 100dvh; margin: 0; overflow: visible; border: 0; border-radius: 0; }
1728
+ .app-shell { height: auto; min-height: 100svh; min-height: 100dvh; display: block; overflow: visible; }
1729
+ .main { width: 100%; height: auto; min-height: 100svh; min-height: 100dvh; margin: 0; overflow: visible; border: 0; border-radius: 0; }
1819
1730
  .app-sidebar-resizer { display: none; }
1820
1731
  .pane-toggle-button[data-pane="main"] { display: none; }
1821
1732
  .pane-toggle-button[data-pane="library"] { display: inline-grid; }
1822
- .sidebar { position: fixed; top: max(8px, env(safe-area-inset-top)); bottom: max(8px, env(safe-area-inset-bottom)); z-index: 40; width: min(82vw, 270px); height: auto; margin-left: max(8px, env(safe-area-inset-left)); border-radius: 18px; transform: translateX(-110%); box-shadow: var(--shadow); transition: transform .2s ease; }
1733
+ .sidebar {
1734
+ position: fixed;
1735
+ top: max(8px, env(safe-area-inset-top));
1736
+ bottom: max(8px, env(safe-area-inset-bottom));
1737
+ z-index: 40;
1738
+ width: min(82vw, 270px);
1739
+ height: auto;
1740
+ margin-left: max(8px, env(safe-area-inset-left));
1741
+ border-radius: 18px;
1742
+ background: var(--surface);
1743
+ box-shadow: var(--shadow);
1744
+ -webkit-backdrop-filter: none;
1745
+ backdrop-filter: none;
1746
+ transform: translateX(-110%);
1747
+ transition: transform .2s ease;
1748
+ }
1823
1749
  .app-shell[data-menu-open="true"] .sidebar { transform: translateX(0); }
1824
1750
  .app-sidebar-scrim { position: fixed; inset: 0; z-index: 30; display: block; border: 0; padding: 0; background: rgb(0 0 0 / 35%); touch-action: manipulation; }
1825
1751
  .mobile-menu { display: inline-grid; place-items: center; }
1826
- .topbar { min-height: 64px; padding: max(10px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 10px max(16px, env(safe-area-inset-left)); }
1827
- .topbar-title { gap: 10px; }
1752
+ .topbar { min-height: 64px; padding: max(10px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) 10px max(12px, env(safe-area-inset-left)); }
1753
+ .topbar-title { width: 100%; min-width: 0; gap: 8px; }
1754
+ .topbar-heading { min-width: 0; flex: 1 1 auto; }
1828
1755
  .topbar h1 { font-size: 17px; }
1829
1756
  .topbar p { display: none; }
1830
1757
  .page { padding: 22px max(16px, env(safe-area-inset-right)) max(42px, calc(24px + env(safe-area-inset-bottom))) max(16px, env(safe-area-inset-left)); }
1831
- .app-shell[data-view="notes"] .main { height: 100dvh; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; }
1758
+ .app-shell[data-view="notes"] .main,
1759
+ .app-shell[data-view="entries"] .main { height: 100svh; height: 100dvh; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; }
1832
1760
  .app-shell[data-view="notes"] .topbar { position: relative; }
1833
- .app-shell[data-view="notes"] .page { height: auto; min-height: 0; overflow: hidden; padding: 0; }
1761
+ .app-shell[data-view="notes"] .page,
1762
+ .app-shell[data-view="entries"] .page { height: auto; min-height: 0; overflow: hidden; }
1763
+ .app-shell[data-view="notes"] .page { padding: 0; }
1764
+ .app-shell[data-view="entries"] .page { padding: 10px max(8px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); }
1834
1765
  .app-shell[data-view="notes"] .view-stage,
1835
- .app-shell[data-view="notes"] .notes-page { height: 100%; min-height: 0; overflow: hidden; }
1766
+ .app-shell[data-view="notes"] .notes-page,
1767
+ .app-shell[data-view="entries"] .view-stage { height: 100%; min-height: 0; overflow: hidden; }
1768
+ .app-shell[data-view="entries"] .note-workspace { height: 100%; min-height: 0; }
1836
1769
  .workspace-switcher { align-items: stretch; flex-direction: column; gap: 10px; }
1837
1770
  .workspace-switcher-leading { align-items: flex-start; }
1838
1771
  .workspace-switcher p { text-align: left; }
@@ -1853,7 +1786,10 @@ html,
1853
1786
  z-index: 4;
1854
1787
  width: min(82%, 300px);
1855
1788
  border-right-color: var(--border-strong);
1789
+ background: var(--surface);
1856
1790
  box-shadow: 16px 0 36px color-mix(in srgb, var(--text) 14%, transparent);
1791
+ -webkit-backdrop-filter: none;
1792
+ backdrop-filter: none;
1857
1793
  transform: translateX(-104%);
1858
1794
  transition: transform .18s cubic-bezier(.2, .8, .2, 1);
1859
1795
  }
@@ -1894,11 +1830,30 @@ html,
1894
1830
  .candidate-heading-actions > .button { width: 100%; }
1895
1831
  .candidate-footer { gap: 9px; }
1896
1832
  .candidate-actions { width: 100%; justify-content: flex-start; }
1897
- .notes-workspace { height: 100%; min-height: 0; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); }
1898
- .notes-browser { display: none; }
1899
- .notes-content { min-height: 0; }
1833
+ .notes-workspace { height: 100%; min-height: 0; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); isolation: isolate; }
1834
+ .notes-browser {
1835
+ position: absolute;
1836
+ inset: 0 auto 0 0;
1837
+ z-index: 16;
1838
+ width: min(88vw, 320px);
1839
+ display: grid;
1840
+ border-right-color: var(--glass-border);
1841
+ background: var(--surface);
1842
+ box-shadow: 16px 0 36px color-mix(in srgb, var(--text) 14%, transparent), inset 0 1px 0 var(--surface-highlight);
1843
+ -webkit-backdrop-filter: none;
1844
+ backdrop-filter: none;
1845
+ transform: translateX(-104%);
1846
+ visibility: hidden;
1847
+ transition: transform var(--motion-base) var(--ease-out), visibility 0s linear var(--motion-base);
1848
+ }
1849
+ .notes-workspace[data-browser-open="true"] .notes-browser { transform: translateX(0); visibility: visible; transition-delay: 0s; }
1850
+ .notes-browser-scrim { position: absolute; inset: 0; z-index: 15; display: block; border: 0; padding: 0; background: color-mix(in srgb, var(--text) 18%, transparent); touch-action: manipulation; }
1851
+ .notes-browser-header { padding-top: max(12px, env(safe-area-inset-top)); }
1852
+ .notes-tree { padding-bottom: max(20px, env(safe-area-inset-bottom)); }
1853
+ .notes-content { height: 100%; min-height: 0; }
1854
+ .notes-content.is-folder { overflow-y: auto; overscroll-behavior: contain; }
1900
1855
  .notes-editor-frame, .notes-editor-frame[data-outline-open="true"] { grid-template-columns: minmax(0, 1fr); }
1901
- .notes-editor-outline { position: absolute; inset: 0 0 0 auto; z-index: 12; width: min(86vw, 300px); border-left-color: var(--border-strong); box-shadow: -16px 0 34px color-mix(in srgb, var(--text) 13%, transparent); transform: translateX(103%); transition: opacity var(--motion-base) ease, transform var(--motion-base) var(--ease-out); }
1856
+ .notes-editor-outline { position: absolute; inset: 0 0 0 auto; z-index: 12; width: min(86vw, 300px); border-left-color: var(--border-strong); background: var(--dialog-surface); backdrop-filter: none; -webkit-backdrop-filter: none; box-shadow: -16px 0 34px color-mix(in srgb, var(--text) 13%, transparent); transform: translateX(103%); transition: opacity var(--motion-base) ease; }
1902
1857
  .notes-editor-frame[data-outline-open="true"] .notes-editor-outline { transform: translateX(0); }
1903
1858
  .notes-editor-outline-header { padding-right: max(9px, env(safe-area-inset-right)); }
1904
1859
  .notes-editor-outline-close, .notes-editor-outline-link { min-height: 44px; touch-action: manipulation; }
@@ -1906,12 +1861,10 @@ html,
1906
1861
  .notes-document-toolbar { align-items: center; flex-direction: row; gap: 6px; overflow: visible; padding: 4px max(8px, env(safe-area-inset-right)) 4px max(8px, env(safe-area-inset-left)); }
1907
1862
  .notes-toolbar-leading { width: auto; min-height: 44px; flex: 1 1 auto; }
1908
1863
  .notes-document-actions { width: auto; display: flex; gap: 4px; }
1909
- .notes-document-actions > [data-note-mobile-overflow] { display: none; }
1910
1864
  .notes-save-state { display: inline-flex; min-height: 44px; align-items: center; padding-inline: 4px; color: var(--text-secondary); font-size: 11px; }
1911
1865
  .notes-save-state[data-dirty="true"] { color: var(--warning); }
1912
1866
  .notes-outline-action { min-width: 44px; padding-inline: 10px; }
1913
- .notes-document-actions > .button, .notes-document-more > summary { min-height: 44px; justify-content: center; touch-action: manipulation; }
1914
- .notes-document-more { display: block; }
1867
+ .notes-document-actions > .button, .notes-document-more > summary.button { min-height: 44px; justify-content: center; touch-action: manipulation; }
1915
1868
  .notes-document-more-menu .button { min-height: 44px; touch-action: manipulation; }
1916
1869
  .notes-content.is-document { --notes-document-inline: 16px; }
1917
1870
  .notes-content.is-document.has-line-numbers { --notes-document-inline: 30px; }
@@ -1942,7 +1895,7 @@ html,
1942
1895
  .note-history-detail-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
1943
1896
  .note-history-mode, .note-history-detail-actions .button { min-width: 0; min-height: 44px; padding-inline: 5px; }
1944
1897
  .note-history-content { padding: 18px max(14px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left)); }
1945
- .dialog.note-history-dialog { width: 100%; height: 100dvh; max-height: none; }
1898
+ .dialog.note-history-dialog { width: 100%; height: 100svh; height: 100dvh; max-height: none; }
1946
1899
  .notes-file-table { overflow: visible; }
1947
1900
  .notes-file-columns { display: none; }
1948
1901
  .notes-file-list { min-width: 0; display: grid; gap: 8px; padding: 10px 12px max(28px, calc(16px + env(safe-area-inset-bottom))); }
@@ -1983,7 +1936,7 @@ html,
1983
1936
  .input, .select { height: 44px; min-height: 44px; }
1984
1937
  :where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), select, textarea) { font-size: 16px; }
1985
1938
  .dialog-backdrop { place-items: stretch; padding: 0; }
1986
- .dialog, .dialog.narrow, .dialog.sheet { width: 100%; height: 100dvh; max-height: none; border-width: 0; border-radius: 0; }
1939
+ .dialog, .dialog.narrow, .dialog.sheet { width: 100%; height: 100svh; height: 100dvh; max-height: none; border-width: 0; border-radius: 0; }
1987
1940
  .dialog-header { padding: max(15px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 14px max(16px, env(safe-area-inset-left)); }
1988
1941
  .dialog-header .button { width: 44px; min-width: 44px; min-height: 44px; }
1989
1942
  .dialog-body { padding: 18px max(16px, env(safe-area-inset-right)) max(24px, calc(16px + env(safe-area-inset-bottom))) max(16px, env(safe-area-inset-left)); }
@@ -1994,7 +1947,7 @@ html,
1994
1947
  .toast { max-width: none; }
1995
1948
  }
1996
1949
 
1997
- @media (min-width: 761px) and (max-width: 1120px) {
1950
+ @media (min-width: 1121px) and (max-width: 1280px) {
1998
1951
  .notes-file-info { grid-template-columns: repeat(2, minmax(150px, 1fr)); }
1999
1952
  }
2000
1953
 
@@ -2052,7 +2005,13 @@ html,
2052
2005
  @media (max-width: 390px) {
2053
2006
  .topbar { gap: 8px; padding-inline: 10px; }
2054
2007
  .topbar-title { gap: 6px; }
2055
- .topbar-heading { max-width: 118px; }
2008
+ .topbar-kicker { display: none; }
2009
+ .topbar-heading { max-width: none; }
2010
+ .topbar h1 { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2011
+ .notes-document-toolbar { padding-inline: 6px; }
2012
+ .notes-toolbar-leading { min-width: 44px; }
2013
+ .notes-breadcrumb { mask-image: linear-gradient(90deg, #000 calc(100% - 22px), transparent); }
2014
+ .notes-save-state { max-width: 44px; overflow: hidden; white-space: nowrap; }
2056
2015
  .notes-file-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
2057
2016
  .candidate-actions { display: grid; grid-template-columns: 1fr; }
2058
2017
  .candidate-actions .button { width: 100%; }
@@ -2067,7 +2026,7 @@ html,
2067
2026
  }
2068
2027
 
2069
2028
  @media (prefers-reduced-motion: reduce) {
2070
- *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; }
2029
+ *, *::before, *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
2071
2030
  }
2072
2031
 
2073
2032
  @media (forced-colors: active) {