PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.13
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.13
1.1.13 1.1.12 1.1.11 1.1.10 1.1.9 1.1.8 1.1.7 1.1.6 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 0.9.4 0.9.5 0.9.3 0.9.2 0.9.1 0.9.0 All 37 releases
desktop-mode / assets / css / deactivation-feedback.css

deactivation-feedback.css in OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin 1.1.13, at assets/css/deactivation-feedback.css

317 lines 7.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * Deactivation feedback dialog.
3 *
4 * One optional question asked when an admin deactivates OpenStation.
5 * Renders on the classic `plugins.php`, inside a chromeless window and
6 * over the native Plugins app, so it is plain classed DOM under the
7 * `.os-deactivation-feedback` namespace rather than `<os-*>` components:
8 * the kit is not loaded on the classic screen, and one renderer that
9 * works everywhere beats two.
10 *
11 * The scrim and card follow `assets/css/announce.css`, quieter: this is
12 * a form, not a poster. Colours are literals for the same reason that
13 * file gives — the sheet loads where `variables.css` does not.
14 */
15
16 .os-deactivation-feedback,
17 .os-deactivation-feedback * {
18 box-sizing: border-box;
19 }
20
21 .os-deactivation-feedback {
22 position: fixed;
23 inset: 0;
24 /* Above every window, the dock and the welcome dialog's own layer. */
25 z-index: 100001;
26 display: flex;
27 align-items: center;
28 justify-content: center;
29 padding: 24px;
30 background: rgba(12, 11, 15, 0.62);
31 backdrop-filter: blur(10px) saturate(130%);
32 -webkit-backdrop-filter: blur(10px) saturate(130%);
33 animation: os-deactivation-feedback-fade 240ms ease-out;
34 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
35 "Helvetica Neue", Arial, sans-serif;
36 -webkit-font-smoothing: antialiased;
37 -moz-osx-font-smoothing: grayscale;
38 }
39
40 @keyframes os-deactivation-feedback-fade {
41 from {
42 opacity: 0;
43 }
44 to {
45 opacity: 1;
46 }
47 }
48
49 @keyframes os-deactivation-feedback-pop {
50 0% {
51 opacity: 0;
52 transform: translateY(10px) scale(0.98);
53 }
54 100% {
55 opacity: 1;
56 transform: translateY(0) scale(1);
57 }
58 }
59
60 .os-deactivation-feedback__card {
61 position: relative;
62 width: 100%;
63 max-width: 520px;
64 max-height: calc(100vh - 48px);
65 overflow: auto;
66 padding: 28px 32px 24px;
67 border-radius: 18px;
68 background: #fffbff;
69 color: #1a1721;
70 box-shadow: 0 1px 0 rgba(255, 255, 255, 0.85) inset,
71 0 30px 60px -20px rgba(26, 23, 33, 0.55),
72 0 18px 36px -18px rgba(242, 82, 252, 0.35);
73 animation: os-deactivation-feedback-pop 320ms cubic-bezier(0.22, 1, 0.36, 1) both;
74 }
75
76 /* Holographic hairline, as on the announcement card. */
77 .os-deactivation-feedback__card::before {
78 content: "";
79 position: absolute;
80 inset: -1px;
81 border-radius: inherit;
82 padding: 1px;
83 background: linear-gradient(
84 135deg,
85 rgba(242, 82, 252, 0.65),
86 rgba(236, 155, 255, 0.55),
87 rgba(147, 240, 198, 0.55)
88 );
89 -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
90 mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
91 -webkit-mask-composite: xor;
92 mask-composite: exclude;
93 pointer-events: none;
94 }
95
96 .os-deactivation-feedback__title {
97 margin: 0 0 6px;
98 font-size: 20px;
99 line-height: 1.25;
100 font-weight: 700;
101 letter-spacing: -0.01em;
102 color: #0c0b0f;
103 }
104
105 .os-deactivation-feedback__subtitle {
106 margin: 0 0 18px;
107 font-size: 13.5px;
108 line-height: 1.5;
109 color: #6b6771;
110 }
111
112 .os-deactivation-feedback__reasons {
113 display: flex;
114 flex-direction: column;
115 gap: 6px;
116 margin: 0 0 14px;
117 }
118
119 .os-deactivation-feedback__reason {
120 display: flex;
121 align-items: center;
122 gap: 10px;
123 padding: 9px 12px;
124 border: 1px solid rgba(26, 23, 33, 0.12);
125 border-radius: 10px;
126 font-size: 14px;
127 line-height: 1.3;
128 color: #1a1721;
129 cursor: pointer;
130 transition: border-color 120ms ease, background 120ms ease;
131 }
132
133 .os-deactivation-feedback__reason:hover {
134 border-color: rgba(242, 82, 252, 0.45);
135 background: rgba(242, 82, 252, 0.04);
136 }
137
138 .os-deactivation-feedback__reason:has(input:checked) {
139 border-color: #f252fc;
140 background: rgba(242, 82, 252, 0.08);
141 }
142
143 .os-deactivation-feedback__reason:has(input:focus-visible) {
144 outline: 2px solid #f252fc;
145 outline-offset: 2px;
146 }
147
148 .os-deactivation-feedback__reason input {
149 margin: 0;
150 accent-color: #f252fc;
151 }
152
153 /*
154 * The field's label and the "too buggy" question share one grid cell,
155 * so the slot is always as tall as the taller of the two and swapping
156 * them never resizes the card. The card is centred: a height change
157 * would slide every checkbox under the pointer.
158 *
159 * The outgoing text hides its visibility only after its fade, and the
160 * incoming one shows at once, so assistive tech never meets both.
161 */
162 .os-deactivation-feedback__field-head {
163 display: grid;
164 margin: 0 0 8px;
165 }
166
167 .os-deactivation-feedback__label,
168 .os-deactivation-feedback__prompt {
169 grid-area: 1 / 1;
170 align-self: end;
171 margin: 0;
172 line-height: 1.45;
173 transition:
174 opacity 200ms ease,
175 transform 200ms ease,
176 visibility 0s linear 0s;
177 }
178
179 .os-deactivation-feedback__label {
180 font-size: 13px;
181 color: #6b6771;
182 }
183
184 .os-deactivation-feedback__prompt {
185 font-size: 13.5px;
186 font-weight: 600;
187 color: #1a1721;
188 opacity: 0;
189 transform: translateY(4px);
190 visibility: hidden;
191 transition-delay: 0s, 0s, 200ms;
192 }
193
194 .os-deactivation-feedback__field-head[data-asking] .os-deactivation-feedback__label {
195 opacity: 0;
196 transform: translateY(-4px);
197 visibility: hidden;
198 transition-delay: 0s, 0s, 200ms;
199 }
200
201 .os-deactivation-feedback__field-head[data-asking] .os-deactivation-feedback__prompt {
202 opacity: 1;
203 transform: none;
204 visibility: visible;
205 transition-delay: 0s;
206 }
207
208 .os-deactivation-feedback__details {
209 display: block;
210 width: 100%;
211 min-height: 72px;
212 margin: 0 0 14px;
213 padding: 10px 12px;
214 border: 1px solid rgba(26, 23, 33, 0.16);
215 border-radius: 10px;
216 background: #fff;
217 color: #1a1721;
218 font: inherit;
219 font-size: 14px;
220 line-height: 1.45;
221 resize: vertical;
222 }
223
224 .os-deactivation-feedback__details:focus-visible {
225 outline: 2px solid #f252fc;
226 outline-offset: 1px;
227 border-color: transparent;
228 }
229
230 .os-deactivation-feedback__disclosure {
231 margin: 0 0 18px;
232 font-size: 12px;
233 line-height: 1.5;
234 color: #6b6771;
235 }
236
237 .os-deactivation-feedback__actions {
238 display: flex;
239 align-items: center;
240 justify-content: flex-end;
241 gap: 10px;
242 }
243
244 .os-deactivation-feedback__btn {
245 display: inline-flex;
246 align-items: center;
247 justify-content: center;
248 min-height: 38px;
249 padding: 8px 18px;
250 font: inherit;
251 font-size: 14px;
252 font-weight: 600;
253 line-height: 1;
254 border-radius: 10px;
255 border: 1px solid transparent;
256 cursor: pointer;
257 transition: transform 120ms ease, box-shadow 120ms ease,
258 background 120ms ease, color 120ms ease;
259 }
260
261 .os-deactivation-feedback__btn:focus-visible {
262 outline: 2px solid #f252fc;
263 outline-offset: 2px;
264 }
265
266 .os-deactivation-feedback__btn[disabled] {
267 opacity: 0.6;
268 cursor: default;
269 }
270
271 .os-deactivation-feedback__btn--ghost {
272 background: transparent;
273 color: #6b6771;
274 }
275
276 .os-deactivation-feedback__btn--ghost:hover {
277 color: #1a1721;
278 background: rgba(26, 23, 33, 0.06);
279 }
280
281 .os-deactivation-feedback__btn--primary,
282 .os-deactivation-feedback__btn--primary:hover,
283 .os-deactivation-feedback__btn--primary:focus {
284 color: #fffbff;
285 }
286
287 .os-deactivation-feedback__btn--primary {
288 background: linear-gradient(135deg, #2a2533, #a12bb0 45%, #f252fc);
289 background-size: 180% 180%;
290 box-shadow: 0 10px 24px -10px rgba(242, 82, 252, 0.75);
291 }
292
293 .os-deactivation-feedback__btn--primary:hover:not([disabled]) {
294 background-position: 100% 50%;
295 transform: translateY(-1px);
296 }
297
298 /* Reduced motion stops the movement, never the paint. */
299 @media (prefers-reduced-motion: reduce) {
300 .os-deactivation-feedback,
301 .os-deactivation-feedback__card {
302 animation: none;
303 }
304
305 .os-deactivation-feedback__btn,
306 .os-deactivation-feedback__reason {
307 transition: none;
308 }
309
310 /* The label and the question still cross-fade; they just don't slide. */
311 .os-deactivation-feedback__label,
312 .os-deactivation-feedback__prompt,
313 .os-deactivation-feedback__field-head[data-asking] .os-deactivation-feedback__label {
314 transform: none;
315 }
316 }
317