PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.9
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.9
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 0.8.9 0.8.8 0.8.7 0.8.6 All 33 releases
desktop-mode / assets / css / games.css

games.css in OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin 1.1.9, at assets/css/games.css

313 lines 6.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * OpenStation — Games hub window styles (Steam-library layout).
3 *
4 * Scoped to `.desktop-mode-games` so the rules can't leak into
5 * other windows. Layout: a compact game grid across the top; the
6 * selected game's detail panel (hero + scoreboard + challenges)
7 * fills the rest and scrolls.
8 */
9
10 .desktop-mode-games {
11 display: flex;
12 flex-direction: column;
13 height: 100%;
14 width: 100%;
15 background: var( --os-ui-surface, #fff );
16 color: var( --os-ui-fg, #1d2327 );
17 }
18
19 .os-games__library {
20 display: flex;
21 flex-direction: column;
22 flex: 1;
23 min-height: 0;
24 overflow: auto;
25 padding: 14px;
26 gap: 14px;
27 }
28
29 /* ------------------------------------------------------------------
30 * Game grid (compact tiles, selection = which detail shows below)
31 * ---------------------------------------------------------------- */
32
33 .os-games__grid {
34 display: flex;
35 flex-wrap: wrap;
36 gap: 10px;
37 align-content: start;
38 flex-shrink: 0;
39 }
40
41 /* Empty state (no games registered): centered in the window body
42 instead of hugging the grid's top-left corner. */
43 .os-games__grid:has( os-empty-state ) {
44 flex: 1;
45 align-content: center;
46 justify-content: center;
47 }
48
49 .os-games__tile {
50 display: flex;
51 align-items: center;
52 gap: 10px;
53 padding: 8px 14px 8px 10px;
54 border: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
55 border-radius: 10px;
56 background: var( --os-ui-surface, #fff );
57 color: inherit;
58 cursor: pointer;
59 text-align: start;
60 transition: box-shadow 0.12s ease, border-color 0.12s ease;
61 }
62
63 .os-games__tile:hover,
64 .os-games__tile:focus-visible {
65 box-shadow: 0 4px 14px rgba( 0, 0, 0, 0.12 );
66 }
67
68 .os-games__tile--selected {
69 border-color: var( --os-ui-accent, #2271b1 );
70 box-shadow: inset 0 0 0 1px var( --os-ui-accent, #2271b1 );
71 }
72
73 .os-games__tile-visual {
74 display: grid;
75 place-items: center;
76 width: 36px;
77 height: 36px;
78 flex-shrink: 0;
79 }
80
81 .os-games__tile-visual .os-games__icon-img {
82 max-width: 36px;
83 max-height: 36px;
84 }
85
86 .os-games__tile-visual .os-games__icon-dashicon {
87 font-size: 28px;
88 width: 28px;
89 height: 28px;
90 }
91
92 .os-games__tile-title {
93 font-weight: 600;
94 font-size: 13px;
95 }
96
97 /* ------------------------------------------------------------------
98 * Detail panel — hero row + sections
99 * ---------------------------------------------------------------- */
100
101 .os-games__detail {
102 display: flex;
103 flex-direction: column;
104 gap: 18px;
105 border-top: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
106 padding-block-start: 14px;
107 }
108
109 .os-games__detail[hidden] {
110 display: none;
111 }
112
113 .os-games__hero {
114 display: flex;
115 align-items: center;
116 gap: 16px;
117 padding: 16px;
118 border: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
119 border-radius: 12px;
120 background: var( --os-ui-surface-elevated, #f6f7f7 );
121 }
122
123 .os-games__hero-visual {
124 display: grid;
125 place-items: center;
126 width: 72px;
127 height: 72px;
128 flex-shrink: 0;
129 }
130
131 .os-games__hero-visual .os-games__icon-img {
132 max-width: 72px;
133 max-height: 72px;
134 }
135
136 .os-games__hero-visual .os-games__icon-dashicon {
137 font-size: 56px;
138 width: 56px;
139 height: 56px;
140 }
141
142 .os-games__hero-info {
143 flex: 1;
144 min-width: 0;
145 }
146
147 .os-games__hero-title {
148 margin: 0 0 4px;
149 font-size: 20px;
150 line-height: 1.2;
151 }
152
153 .os-games__hero-desc {
154 margin: 0;
155 color: var( --os-ui-fg-muted, #646970 );
156 font-size: 13px;
157 max-width: 60ch;
158 }
159
160 .os-games__hero-playtime {
161 display: flex;
162 flex-wrap: wrap;
163 gap: 4px 24px;
164 margin-block-start: 10px;
165 }
166
167 .os-games__playtime-stat {
168 display: flex;
169 flex-direction: column;
170 gap: 1px;
171 }
172
173 .os-games__playtime-label {
174 color: var( --os-ui-fg-muted, #646970 );
175 font-size: 11px;
176 text-transform: uppercase;
177 letter-spacing: 0.04em;
178 }
179
180 .os-games__playtime-value {
181 font-size: 14px;
182 font-weight: 600;
183 font-variant-numeric: tabular-nums;
184 }
185
186 .os-games__hero-actions {
187 display: flex;
188 align-items: center;
189 gap: 10px;
190 flex-shrink: 0;
191 }
192
193 .os-games__section {
194 display: flex;
195 flex-direction: column;
196 gap: 8px;
197 }
198
199 .os-games__section-heading {
200 margin: 0;
201 font-size: 13px;
202 font-weight: 600;
203 text-transform: uppercase;
204 letter-spacing: 0.04em;
205 color: var( --os-ui-fg-muted, #646970 );
206 }
207
208 /* ------------------------------------------------------------------
209 * Scoreboard
210 * ---------------------------------------------------------------- */
211
212 .os-games__scoreboard-table {
213 max-height: 340px;
214 overflow: auto;
215 border: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
216 border-radius: 10px;
217 }
218
219 .os-games__scoreboard-empty {
220 padding: 24px;
221 text-align: center;
222 color: var( --os-ui-fg-muted, #646970 );
223 }
224
225 .os-games__pager {
226 display: flex;
227 align-items: center;
228 justify-content: center;
229 gap: 10px;
230 }
231
232 .os-games__pager-label {
233 font-variant-numeric: tabular-nums;
234 color: var( --os-ui-fg-muted, #646970 );
235 }
236
237 /* ------------------------------------------------------------------
238 * Challenges
239 * ---------------------------------------------------------------- */
240
241 .os-games__challenge-list {
242 list-style: none;
243 margin: 0;
244 padding: 0;
245 display: flex;
246 flex-direction: column;
247 gap: 10px;
248 }
249
250 .os-games__challenge {
251 display: flex;
252 align-items: center;
253 gap: 12px;
254 padding: 12px 14px;
255 border: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
256 border-radius: 10px;
257 }
258
259 .os-games__challenge--pending {
260 border-inline-start: 3px solid var( --os-ui-accent, #2271b1 );
261 }
262
263 .os-games__challenge-main {
264 flex: 1;
265 min-width: 0;
266 }
267
268 .os-games__challenge-main p {
269 margin: 0 0 2px;
270 }
271
272 .os-games__challenge-main os-relative-time {
273 font-size: 12px;
274 color: var( --os-ui-fg-muted, #646970 );
275 }
276
277 .os-games__challenge-actions {
278 display: flex;
279 align-items: center;
280 gap: 8px;
281 }
282
283 /* ------------------------------------------------------------------
284 * Send-challenge dialog
285 * ---------------------------------------------------------------- */
286
287 .os-games__challenge-dialog {
288 display: flex;
289 flex-direction: column;
290 gap: 12px;
291 min-width: 280px;
292 }
293
294 .os-games__challenge-summary {
295 margin: 0;
296 }
297
298 .os-games__challenge-picked {
299 display: flex;
300 align-items: center;
301 gap: 10px;
302 padding: 8px 10px;
303 border: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
304 border-radius: 8px;
305 }
306
307 .os-games__challenge-footer {
308 display: flex;
309 align-items: center;
310 justify-content: flex-end;
311 gap: 10px;
312 }
313