dsh-arknights-theme 1.0.4 → 1.1.0
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/README.md +31 -3
- package/assets/skin.css +277 -2
- package/lib/client.js +1050 -9
- package/lib/index.js +264 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ a coat of theme paint.
|
|
|
16
16
|
**预构建包(推荐) / Prebuilt tarball (recommended)**
|
|
17
17
|
|
|
18
18
|
```sh
|
|
19
|
-
dsh plugin add https://github.com/Theflowyears/dsh-arknights-theme/releases/download/v1.0
|
|
19
|
+
dsh plugin add https://github.com/Theflowyears/dsh-arknights-theme/releases/download/v1.1.0/dsh-arknights-theme-1.1.0.tgz
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
**从仓库安装 / From the repository**
|
|
@@ -95,7 +95,7 @@ This is the manual: what the package is made of, what is measured per wallpaper,
|
|
|
95
95
|
glyph is used, how to rebuild it, and where its limits are. Installation and the highlight reel
|
|
96
96
|
live on the repository front page.
|
|
97
97
|
|
|
98
|
-
- 版本 / Version: **1.0
|
|
98
|
+
- 版本 / Version: **1.1.0**
|
|
99
99
|
- 适用 / Requires: DSH Web,`@deepseek-ai/cordis` 4.x
|
|
100
100
|
- 许可 / Licence: 代码 MIT,美术素材不在 MIT 范围内(见 [版权与署名](#版权与署名--rights-and-credit))
|
|
101
101
|
|
|
@@ -152,6 +152,28 @@ Twelve, each measured once at import time, with the result recorded in `assets/w
|
|
|
152
152
|
实测范围 / Measured ranges: `blurSigma` 16.7–33.3 · `featherRatio` 0.110–0.147 ·
|
|
153
153
|
`saturation` 0.07–0.42 · 12 张 / 12 images, 7.9 MiB 包内 / inside the package.
|
|
154
154
|
|
|
155
|
+
### 导入自己的图 / Import your own
|
|
156
|
+
|
|
157
|
+
选择器底部有一行「+ 导入本地图片」:PNG / JPEG / WebP / GIF / AVIF,单张 ≤ 24 MB,最多 24 张。
|
|
158
|
+
There is a "+ 导入本地图片" row under the picker's grid: PNG / JPEG / WebP / GIF / AVIF, up to
|
|
159
|
+
24 MB per file, 24 pictures kept.
|
|
160
|
+
|
|
161
|
+
**导入即解算,用的就是上面那套数字。** 解算器的常量由构建注入(`SOLVER`),页面里的算术是逐行移植,
|
|
162
|
+
所以一张你自己的图会和内置十二张走完全相同的路径——同样的玻璃区间、同样的 OKLCH 墨色求解、同样的
|
|
163
|
+
分析标签(`横屏 · 中间调 · 中饱和 · 暖红`)——而不是"先放着,以后再算"。
|
|
164
|
+
**Solved on import, with the same numbers.** The solver's constants are injected by the build and the
|
|
165
|
+
arithmetic is ported line for line, so your picture goes through exactly the path the shipped twelve
|
|
166
|
+
did: same glass band, same OKLCH ink solve, same analysis label. `check-solver-parity.mjs` compares
|
|
167
|
+
the two implementations number for number on every build.
|
|
168
|
+
|
|
169
|
+
图片存在 `%TEMP%/dsh-amiya-wallpaper-user`(按内容哈希命名),**不在包目录里**,所以升级或重装不会
|
|
170
|
+
丢,也不会把用户自己的图打进发布的 tarball。文件名不落盘:只有你自己输入的标题会被保存,否则
|
|
171
|
+
显示「导入 01」——相册里的文件名不该出现在别人能读的地方。
|
|
172
|
+
Pictures live in `%TEMP%/dsh-amiya-wallpaper-user`, named by content hash, **outside the package**, so
|
|
173
|
+
they survive an upgrade and can never be swept into a published tarball. File names are not stored:
|
|
174
|
+
only a caption you type is kept, otherwise the row is numbered — a camera roll's names have no
|
|
175
|
+
business being readable by anything else.
|
|
176
|
+
|
|
155
177
|
---
|
|
156
178
|
|
|
157
179
|
## 可读性是算出来的 / Readability is solved, not guessed
|
|
@@ -309,8 +331,14 @@ rather than spread across the twelve files as a guess.
|
|
|
309
331
|
The picker chrome, settings screen and dialogs are only re-coloured — their layout is the
|
|
310
332
|
host's own, and stays that way.
|
|
311
333
|
- 壁纸按宽屏与窄屏两种裁切生成;极端超宽比例下会以 `cover` 填充并依赖边缘虚化遮住裁切。
|
|
334
|
+
导入的图片**不做两种裁切**:它们是原图,两种比例都指向同一个文件,靠 `cover` 填充。
|
|
312
335
|
Two cuts are generated; at extreme aspect ratios the picture is `cover`-fitted and the edge
|
|
313
|
-
blur hides the crop.
|
|
336
|
+
blur hides the crop. An imported picture has no second cut — both aspect cases point at the same
|
|
337
|
+
file and `cover` does the fitting.
|
|
338
|
+
- 导入的图存在临时目录里。系统清理 `%TEMP%` 会把它们一并清掉——这是有意的取舍:它们不该住在
|
|
339
|
+
包目录或 profile 状态里。
|
|
340
|
+
Imported pictures live in the temp directory, so a system cleanup of `%TEMP%` takes them too.
|
|
341
|
+
That is the intended trade: they belong neither in the package directory nor in profile state.
|
|
314
342
|
- 本仓库的构建产物经过量化验收(对比度矩阵、资源完整性、结构检查),但**没有任何自动化测试
|
|
315
343
|
能代替肉眼**:配色是否好看,最终以你眼睛为准。
|
|
316
344
|
The build is verified quantitatively (contrast matrix, asset integrity, structural checks),
|
package/assets/skin.css
CHANGED
|
@@ -62,7 +62,11 @@ html[data-amiya-skin='1'] body::before {
|
|
|
62
62
|
background-size: cover, cover, cover;
|
|
63
63
|
background-position: center center, center center, center center;
|
|
64
64
|
background-repeat: no-repeat, no-repeat, no-repeat;
|
|
65
|
-
background-attachment: fixed
|
|
65
|
+
/* No `background-attachment: fixed` here. It used to be declared, and it was pure cost: this layer
|
|
66
|
+
is already `position: fixed` and viewport-sized, so its padding box never scrolls — the attachment
|
|
67
|
+
only made the compositor re-resolve the background against the scroll offset on every frame. On a
|
|
68
|
+
desktop-sized (or 5K) window over a 2560px picture that is the most expensive thing on the page,
|
|
69
|
+
and it bought nothing. */
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
/* The generated assets come in a 16:9 and a 3:4 cut. Below 3:2 the wide cut would
|
|
@@ -1039,6 +1043,110 @@ html[data-amiya-skin='1'] body:not([data-ds-dark-theme]) .amiya-dock {
|
|
|
1039
1043
|
color: rgb(198 206 216 / 74%);
|
|
1040
1044
|
}
|
|
1041
1045
|
|
|
1046
|
+
/* --- 20b. Importing a local picture ----------------------------------------------- */
|
|
1047
|
+
/* The picker's own row, between the grid and the immersion dial: one button, one hidden file input,
|
|
1048
|
+
and a line of status. It sits inside the picker rather than in the host's chrome because the picker
|
|
1049
|
+
is already the "which picture" surface — a second entry point for the same question would be the
|
|
1050
|
+
confusing shape, not the convenient one. */
|
|
1051
|
+
.amiya-picker__import {
|
|
1052
|
+
display: flex;
|
|
1053
|
+
align-items: center;
|
|
1054
|
+
gap: 12px;
|
|
1055
|
+
padding: 0 16px 12px;
|
|
1056
|
+
border-bottom: 1px solid rgb(242 181 68 / 12%);
|
|
1057
|
+
}
|
|
1058
|
+
/* The native control is the only thing on the page that can open a file dialog, so it stays in the
|
|
1059
|
+
DOM — just not in the layout, and out of the tab order (the button beside it takes the focus). */
|
|
1060
|
+
.amiya-picker__file {
|
|
1061
|
+
position: absolute;
|
|
1062
|
+
width: 1px;
|
|
1063
|
+
height: 1px;
|
|
1064
|
+
margin: -1px;
|
|
1065
|
+
padding: 0;
|
|
1066
|
+
overflow: hidden;
|
|
1067
|
+
clip-path: inset(50%);
|
|
1068
|
+
white-space: nowrap;
|
|
1069
|
+
border: 0;
|
|
1070
|
+
}
|
|
1071
|
+
.amiya-picker__import-btn {
|
|
1072
|
+
flex: none;
|
|
1073
|
+
padding: 7px 14px;
|
|
1074
|
+
font-size: 11px;
|
|
1075
|
+
font-weight: 600;
|
|
1076
|
+
letter-spacing: 0.1em;
|
|
1077
|
+
color: rgb(255 214 140 / 96%);
|
|
1078
|
+
background: rgb(242 181 68 / 12%);
|
|
1079
|
+
border: 1px solid rgb(242 181 68 / 40%);
|
|
1080
|
+
border-radius: 10px;
|
|
1081
|
+
cursor: pointer;
|
|
1082
|
+
transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
|
|
1083
|
+
}
|
|
1084
|
+
.amiya-picker__import-btn:hover:not(:disabled) {
|
|
1085
|
+
color: rgb(255 226 168);
|
|
1086
|
+
background: rgb(242 181 68 / 22%);
|
|
1087
|
+
border-color: rgb(242 181 68 / 70%);
|
|
1088
|
+
}
|
|
1089
|
+
.amiya-picker__import-btn:disabled {
|
|
1090
|
+
cursor: progress;
|
|
1091
|
+
color: rgb(242 181 68 / 60%);
|
|
1092
|
+
border-color: rgb(242 181 68 / 26%);
|
|
1093
|
+
}
|
|
1094
|
+
.amiya-picker__import-hint {
|
|
1095
|
+
min-width: 0;
|
|
1096
|
+
overflow: hidden;
|
|
1097
|
+
font-size: 10px;
|
|
1098
|
+
letter-spacing: 0.06em;
|
|
1099
|
+
line-height: 1.6;
|
|
1100
|
+
color: rgb(198 206 216 / 76%);
|
|
1101
|
+
text-overflow: ellipsis;
|
|
1102
|
+
}
|
|
1103
|
+
.amiya-picker__import-hint.is-error {
|
|
1104
|
+
color: rgb(242 140 128 / 92%);
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
/* An imported cell is marked, and carries its own remove control: the shipped twelve can be chosen
|
|
1108
|
+
but not deleted, and the two must not look alike. */
|
|
1109
|
+
.amiya-picker__cell.is-imported {
|
|
1110
|
+
border-color: rgb(143 208 255 / 40%);
|
|
1111
|
+
}
|
|
1112
|
+
.amiya-picker__cell.is-imported:hover {
|
|
1113
|
+
border-color: rgb(143 208 255 / 72%);
|
|
1114
|
+
}
|
|
1115
|
+
.amiya-picker__cell.is-imported.is-active {
|
|
1116
|
+
border-color: rgb(143 208 255 / 86%);
|
|
1117
|
+
box-shadow:
|
|
1118
|
+
0 0 0 1px rgb(143 208 255 / 34%),
|
|
1119
|
+
0 10px 26px -14px rgb(143 208 255 / 50%);
|
|
1120
|
+
}
|
|
1121
|
+
.amiya-picker__remove {
|
|
1122
|
+
position: absolute;
|
|
1123
|
+
top: 6px;
|
|
1124
|
+
left: 6px;
|
|
1125
|
+
display: grid;
|
|
1126
|
+
place-items: center;
|
|
1127
|
+
width: 20px;
|
|
1128
|
+
height: 20px;
|
|
1129
|
+
font-size: 11px;
|
|
1130
|
+
line-height: 1;
|
|
1131
|
+
color: rgb(255 255 255 / 92%);
|
|
1132
|
+
background: rgb(4 6 9 / 78%);
|
|
1133
|
+
border: 1px solid rgb(242 140 128 / 52%);
|
|
1134
|
+
border-radius: 7px;
|
|
1135
|
+
cursor: pointer;
|
|
1136
|
+
opacity: 0;
|
|
1137
|
+
transition: opacity 140ms ease, background 140ms ease, border-color 140ms ease;
|
|
1138
|
+
}
|
|
1139
|
+
/* Revealed on hover *and* on keyboard focus, so it is not a mouse-only affordance. */
|
|
1140
|
+
.amiya-picker__cell:hover .amiya-picker__remove,
|
|
1141
|
+
.amiya-picker__cell:focus-within .amiya-picker__remove,
|
|
1142
|
+
.amiya-picker__remove:focus-visible {
|
|
1143
|
+
opacity: 1;
|
|
1144
|
+
}
|
|
1145
|
+
.amiya-picker__remove:hover {
|
|
1146
|
+
background: rgb(122 32 24 / 92%);
|
|
1147
|
+
border-color: rgb(242 140 128 / 88%);
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1042
1150
|
/* --- 21. The illustrator credit, collapsed ---------------------------------------- */
|
|
1043
1151
|
/* A native <details>, so "折叠" costs no state and no keyboard handling of its own: the
|
|
1044
1152
|
summary is the disclosure, the list is its content, and the whole thing stays out of
|
|
@@ -1748,7 +1856,7 @@ html[data-amiya-skin='1'] body:not([data-ds-dark-theme]) [data-approval-key] [cl
|
|
|
1748
1856
|
filter: drop-shadow(0 0 0.5px rgb(74 44 0)) drop-shadow(0 0 0.5px rgb(74 44 0));
|
|
1749
1857
|
}
|
|
1750
1858
|
|
|
1751
|
-
/* ---
|
|
1859
|
+
/* --- 22b. The question card is signed too ------------------------------------------ */
|
|
1752
1860
|
/* The card that offers the user a choice ends in two buttons — 跳过本题 and 提交 — inside
|
|
1753
1861
|
`footerActions`, and it is anchored by its own `data-question-key` (the question flow's
|
|
1754
1862
|
root). Same treatment as the approval panel: each signature rides *inside* its button
|
|
@@ -1796,3 +1904,170 @@ html[data-amiya-skin='1'] [data-question-key] [class$='_footerActions'] > button
|
|
|
1796
1904
|
filter: drop-shadow(0 0 0.5px currentColor) drop-shadow(0 0 4px rgb(242 181 68 / 30%));
|
|
1797
1905
|
}
|
|
1798
1906
|
|
|
1907
|
+
/* --- 23. The task ledger is legible --------------------------------------- */
|
|
1908
|
+
/* The host's todo panel — the row that reads "任务 · 3 已完成,1 进行中,2 待处理" and expands into the
|
|
1909
|
+
list below the composer — was the one surface the skin left alone, and on a wallpaper it became
|
|
1910
|
+
unreadable. Its own stylesheet declares `background: var(--dsw-specific-menu)` with no fallback,
|
|
1911
|
+
and `--dsw-specific-menu` is the strong glass: solved to sit between 0.58 and 0.84 opacity at the
|
|
1912
|
+
immersive end of the dial (the user's default is 20, which lands near the thin end). So over the
|
|
1913
|
+
picture the panel was roughly 60% translucent while its three text tokens were all the *tertiary*
|
|
1914
|
+
label colour — and the complaint is exactly what those two facts produce: it melts into the
|
|
1915
|
+
background, and the collapse affordance is a bare chevron in tertiary grey at the far edge.
|
|
1916
|
+
|
|
1917
|
+
It is not a dialog (`section[data-testid='todo-panel']`, mounted in `conversation.input.dock`),
|
|
1918
|
+
so the near-opaque pinning section 14 does for `[role='dialog']` never applied to it. Fixing it by
|
|
1919
|
+
raising the global menu glass would have made every menu and selector heavy at full immersion,
|
|
1920
|
+
where the point of the dial is to show the picture — so this pins the panel itself instead.
|
|
1921
|
+
|
|
1922
|
+
Anchored on `data-testid`, not on the module hash: the class prefix (`DXuOLW_`) is regenerated per
|
|
1923
|
+
host build, while the test id is part of what the host ships and names. */
|
|
1924
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] {
|
|
1925
|
+
/* Solid enough that nothing behind it competes with the text, still the skin's own veil colour so
|
|
1926
|
+
it reads as one material with the composer card above it. */
|
|
1927
|
+
--dsh-amiya-ledger-alpha: 96%;
|
|
1928
|
+
background: rgb(9 12 17 / var(--dsh-amiya-ledger-alpha));
|
|
1929
|
+
border: 1px solid rgb(242 181 68 / 22%);
|
|
1930
|
+
box-shadow: var(--dsh-elevation-panel), inset 0 1px 0 rgb(255 255 255 / 5%);
|
|
1931
|
+
backdrop-filter: none;
|
|
1932
|
+
-webkit-backdrop-filter: none;
|
|
1933
|
+
}
|
|
1934
|
+
html[data-amiya-skin='1'] body:not([data-ds-dark-theme]) [data-testid='todo-panel'] {
|
|
1935
|
+
background: rgb(252 253 254 / var(--dsh-amiya-ledger-alpha));
|
|
1936
|
+
border-color: rgb(146 100 12 / 30%);
|
|
1937
|
+
box-shadow: var(--dsh-elevation-panel), inset 0 1px 0 rgb(255 255 255 / 60%);
|
|
1938
|
+
}
|
|
1939
|
+
/* The header is the only control on the panel — clicking it collapses the list — and it was drawn
|
|
1940
|
+
in tertiary grey like a caption. Give it the primary label, and let the hover read as a target. */
|
|
1941
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_header'] {
|
|
1942
|
+
color: var(--dsh-amiya-ink, rgb(249 250 251));
|
|
1943
|
+
}
|
|
1944
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_title'] {
|
|
1945
|
+
letter-spacing: 0.06em;
|
|
1946
|
+
color: var(--dsh-amiya-ink, rgb(249 250 251));
|
|
1947
|
+
}
|
|
1948
|
+
/* The count line carries the actual state ("… 2 待处理"), so it gets the amber accent rather than the
|
|
1949
|
+
host's tertiary grey. */
|
|
1950
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_progress'] {
|
|
1951
|
+
color: rgb(242 181 68 / 92%);
|
|
1952
|
+
font-variant-numeric: tabular-nums;
|
|
1953
|
+
}
|
|
1954
|
+
html[data-amiya-skin='1'] body:not([data-ds-dark-theme]) [data-testid='todo-panel'] [class$='_progress'] {
|
|
1955
|
+
color: rgb(122 82 8 / 92%);
|
|
1956
|
+
}
|
|
1957
|
+
/* The collapse affordance: the host's chevron is 14px tertiary grey at the panel's far edge, which
|
|
1958
|
+
is why "where do I close this" was not obvious. Same glyph, but it now reads as a button — a
|
|
1959
|
+
bordered hit area, brighter ink, and a visible rotation when open. */
|
|
1960
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_chevron'] {
|
|
1961
|
+
place-items: center;
|
|
1962
|
+
width: 22px;
|
|
1963
|
+
height: 22px;
|
|
1964
|
+
margin-left: auto;
|
|
1965
|
+
color: rgb(242 181 68 / 88%);
|
|
1966
|
+
border: 1px solid rgb(242 181 68 / 34%);
|
|
1967
|
+
border-radius: 7px;
|
|
1968
|
+
background: rgb(242 181 68 / 8%);
|
|
1969
|
+
transition: background 120ms ease, color 120ms ease, transform 160ms ease;
|
|
1970
|
+
}
|
|
1971
|
+
html[data-amiya-skin='1'] body:not([data-ds-dark-theme]) [data-testid='todo-panel'] [class$='_chevron'] {
|
|
1972
|
+
color: rgb(122 82 8 / 90%);
|
|
1973
|
+
border-color: rgb(146 100 12 / 36%);
|
|
1974
|
+
background: rgb(146 100 12 / 10%);
|
|
1975
|
+
}
|
|
1976
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_header']:hover [class$='_chevron'] {
|
|
1977
|
+
color: rgb(255 206 98);
|
|
1978
|
+
background: rgb(242 181 68 / 18%);
|
|
1979
|
+
}
|
|
1980
|
+
/* Expanded, the chevron points down; collapsed, up. The host swaps the icon rather than rotating
|
|
1981
|
+
it, so this only states the direction the glyph already has. */
|
|
1982
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_header'][aria-expanded='true'] [class$='_chevron'] {
|
|
1983
|
+
transform: rotate(180deg);
|
|
1984
|
+
}
|
|
1985
|
+
/* The rows themselves: the host paints every one in secondary/tertiary grey. Status is the thing a
|
|
1986
|
+
reader scans for here, so each row's dot keeps the host's state colour while the text rises to the
|
|
1987
|
+
skin's own ink, and a finished item dims rather than being struck through invisibly. */
|
|
1988
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_item'] {
|
|
1989
|
+
color: var(--dsh-amiya-ink-2, rgb(195 201 210));
|
|
1990
|
+
}
|
|
1991
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_item'][data-status='completed'] {
|
|
1992
|
+
color: var(--dsh-amiya-ink-4, rgb(148 156 166));
|
|
1993
|
+
}
|
|
1994
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_item'][data-status='in_progress'] {
|
|
1995
|
+
color: var(--dsh-amiya-ink, rgb(249 250 251));
|
|
1996
|
+
}
|
|
1997
|
+
/* The lead checklist glyph sat in the same tertiary grey as the counts; make it the panel's mark. */
|
|
1998
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_lead'] {
|
|
1999
|
+
color: rgb(242 181 68 / 86%);
|
|
2000
|
+
}
|
|
2001
|
+
html[data-amiya-skin='1'] body:not([data-ds-dark-theme]) [data-testid='todo-panel'] [class$='_lead'] {
|
|
2002
|
+
color: rgb(122 82 8 / 86%);
|
|
2003
|
+
}
|
|
2004
|
+
|
|
2005
|
+
/* --- 24. The desktop window ------------------------------------------------ */
|
|
2006
|
+
/* DSH Desktop marks its own shell on <html> — `data-windows-titlebar` on Windows, `data-platform`
|
|
2007
|
+
everywhere — and the layout package reacts to both. Three of its reactions collide with a skin that
|
|
2008
|
+
paints a picture behind the interface, and none of them can be fixed from the web profile side:
|
|
2009
|
+
|
|
2010
|
+
1. On Windows the frame itself is given `background: var(--dsw-specific-sidebar-fill)`. That token
|
|
2011
|
+
is the *strong glass* this skin solves per wallpaper (0.52–0.92 alpha), so the desktop build
|
|
2012
|
+
paints a full-window glass plate over the picture: the wallpaper reads washed out on Windows
|
|
2013
|
+
while the same build on macOS (`.frame { background: 0 0 }`) and the browser do not. The strip
|
|
2014
|
+
at the top gets that fill from its own pseudo-element anyway, so the plate is pure duplication.
|
|
2015
|
+
2. The top `--dsh-windows-titlebar-height` band is a drag region, and anything fixed covers it.
|
|
2016
|
+
The picker is a full-window overlay, which made the window impossible to move while it was open
|
|
2017
|
+
and dimmed the window controls with the same backdrop the panel uses.
|
|
2018
|
+
3. `.centerCol` is given a 16px rounded top-left corner on Windows; the skin's own corners are
|
|
2019
|
+
solved per surface, so nothing needs doing there — noted so the next reader does not "fix" it.
|
|
2020
|
+
|
|
2021
|
+
Nothing below changes layout: the frame keeps its padding, the columns keep their geometry, and on
|
|
2022
|
+
a host without these attributes every rule here is inert. */
|
|
2023
|
+
html[data-amiya-skin='1'][data-windows-titlebar] [class*='_frame'] {
|
|
2024
|
+
/* Transparent rather than the glass plate: the wallpaper layer (body::before) is the picture, and
|
|
2025
|
+
the titlebar strip repaints itself from its own pseudo-element. */
|
|
2026
|
+
background: transparent !important;
|
|
2027
|
+
}
|
|
2028
|
+
/* The strip keeps the same material as the sidebar, and takes the hairline the rest of the chrome
|
|
2029
|
+
uses so it reads as this skin's titlebar rather than as a foreign band above it. */
|
|
2030
|
+
html[data-amiya-skin='1'][data-windows-titlebar] [class*='_frame']::before {
|
|
2031
|
+
border-bottom: 1px solid rgb(242 181 68 / 22%);
|
|
2032
|
+
box-shadow: 0 1px 0 rgb(0 0 0 / 30%);
|
|
2033
|
+
}
|
|
2034
|
+
html[data-amiya-skin='1'][data-windows-titlebar] body:not([data-ds-dark-theme]) [class*='_frame']::before {
|
|
2035
|
+
border-bottom-color: rgb(146 100 12 / 26%);
|
|
2036
|
+
box-shadow: 0 1px 0 rgb(255 255 255 / 40%);
|
|
2037
|
+
}
|
|
2038
|
+
/* The picker stands down from the titlebar band, using the host's own clearance variable — declared
|
|
2039
|
+
only under `data-windows-titlebar`, so the fallback is what runs everywhere else. The panel's height
|
|
2040
|
+
budget shrinks by the same amount, or the bottom row would be clipped on short windows. */
|
|
2041
|
+
html[data-amiya-skin='1'] .amiya-picker {
|
|
2042
|
+
top: var(--dsh-frame-top-clearance, 0px);
|
|
2043
|
+
}
|
|
2044
|
+
html[data-amiya-skin='1'] .amiya-picker__panel {
|
|
2045
|
+
max-height: calc(100vh - 96px - var(--dsh-frame-top-clearance, 0px));
|
|
2046
|
+
}
|
|
2047
|
+
/* A window drag region only ever belongs to the titlebar. If a future host wraps one of these
|
|
2048
|
+
surfaces in a drag strip, the control inside it must still take the click. */
|
|
2049
|
+
html[data-amiya-skin='1'] .amiya-picker,
|
|
2050
|
+
html[data-amiya-skin='1'] .amiya-picker *,
|
|
2051
|
+
html[data-amiya-skin='1'] [data-slot='conversation.composer.dock'] * {
|
|
2052
|
+
-webkit-app-region: no-drag;
|
|
2053
|
+
}
|
|
2054
|
+
/* The sidebar's own controls, written with the dialog stand-down every other sidebar-scoped rule here
|
|
2055
|
+
uses: a dialog that renders inside the column must not inherit this either. */
|
|
2056
|
+
html[data-amiya-skin='1'] [class*='_sidebarCol']:not(:has([role='dialog'], [role='alertdialog'])) button,
|
|
2057
|
+
html[data-amiya-skin='1'] [class*='_sidebarCol']:not(:has([role='dialog'], [role='alertdialog'])) input,
|
|
2058
|
+
html[data-amiya-skin='1'] [class*='_sidebarCol']:not(:has([role='dialog'], [role='alertdialog'])) a {
|
|
2059
|
+
-webkit-app-region: no-drag;
|
|
2060
|
+
}
|
|
2061
|
+
/* The skin's own transitions, stood down for readers who ask the system for less motion. Scoped to
|
|
2062
|
+
the elements that declare them rather than to `*`: a universal rule here would also flatten the
|
|
2063
|
+
host's transitions, which is not this skin's business. */
|
|
2064
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2065
|
+
html[data-amiya-skin='1'] .amiya-picker__cell,
|
|
2066
|
+
html[data-amiya-skin='1'] .amiya-picker__import-btn,
|
|
2067
|
+
html[data-amiya-skin='1'] .amiya-picker__remove,
|
|
2068
|
+
html[data-amiya-skin='1'] [data-testid='todo-panel'] [class$='_chevron'],
|
|
2069
|
+
html[data-amiya-skin='1'] .amiya-step {
|
|
2070
|
+
transition-duration: 0.01ms;
|
|
2071
|
+
}
|
|
2072
|
+
}
|
|
2073
|
+
|