clauddy 1.22.0 → 1.23.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/package.json +1 -1
- package/renderer/index.html +146 -196
- package/renderer/motion.css +531 -0
- package/renderer/pet.js +67 -68
- package/renderer/style.css +514 -684
package/renderer/style.css
CHANGED
|
@@ -56,10 +56,12 @@ body {
|
|
|
56
56
|
|
|
57
57
|
#controls {
|
|
58
58
|
position: absolute;
|
|
59
|
-
top:
|
|
60
|
-
right:
|
|
59
|
+
top: 0;
|
|
60
|
+
right: 8px;
|
|
61
|
+
height: 38px;
|
|
62
|
+
align-items: center;
|
|
61
63
|
display: flex;
|
|
62
|
-
gap:
|
|
64
|
+
gap: 4px;
|
|
63
65
|
opacity: 1;
|
|
64
66
|
z-index: 10;
|
|
65
67
|
-webkit-app-region: no-drag;
|
|
@@ -67,10 +69,11 @@ body {
|
|
|
67
69
|
#controls button {
|
|
68
70
|
width: 19px;
|
|
69
71
|
height: 19px;
|
|
70
|
-
border:
|
|
72
|
+
border: 1px solid rgba(255, 255, 255, 0.035);
|
|
71
73
|
border-radius: 50%;
|
|
72
|
-
background: rgba(255, 255, 255, 0.
|
|
73
|
-
|
|
74
|
+
background: linear-gradient(rgba(255, 255, 255, 0.043), rgba(255, 255, 255, 0.012));
|
|
75
|
+
box-shadow: inset 0 0.5px 0 rgba(255, 255, 255, 0.03);
|
|
76
|
+
color: #ab9886;
|
|
74
77
|
font-size: 12px;
|
|
75
78
|
line-height: 1;
|
|
76
79
|
cursor: pointer;
|
|
@@ -93,14 +96,6 @@ body {
|
|
|
93
96
|
#min {
|
|
94
97
|
font-size: 16px;
|
|
95
98
|
}
|
|
96
|
-
#usage svg {
|
|
97
|
-
stroke: currentColor;
|
|
98
|
-
stroke-width: 2.6;
|
|
99
|
-
fill: none;
|
|
100
|
-
stroke-linecap: round;
|
|
101
|
-
stroke-linejoin: round;
|
|
102
|
-
pointer-events: none;
|
|
103
|
-
}
|
|
104
99
|
#gear {
|
|
105
100
|
font-size: 10px;
|
|
106
101
|
}
|
|
@@ -136,25 +131,31 @@ body.has-update #gear::after {
|
|
|
136
131
|
opacity: 1;
|
|
137
132
|
}
|
|
138
133
|
}
|
|
134
|
+
/* inline lucide glyphs: one stroke treatment for the whole control row */
|
|
135
|
+
.ic {
|
|
136
|
+
width: 9px;
|
|
137
|
+
height: 9px;
|
|
138
|
+
pointer-events: none;
|
|
139
|
+
stroke: currentColor;
|
|
140
|
+
stroke-width: 2.4;
|
|
141
|
+
fill: none;
|
|
142
|
+
stroke-linecap: round;
|
|
143
|
+
stroke-linejoin: round;
|
|
144
|
+
}
|
|
145
|
+
#gear .ic {
|
|
146
|
+
width: 10px;
|
|
147
|
+
height: 10px;
|
|
148
|
+
stroke-width: 2.2;
|
|
149
|
+
}
|
|
139
150
|
/* minimize icon swaps to an "expand" icon when collapsed */
|
|
140
151
|
.ic-max {
|
|
141
152
|
display: none;
|
|
142
|
-
width: 8px;
|
|
143
|
-
height: 8px;
|
|
144
|
-
pointer-events: none;
|
|
145
153
|
}
|
|
146
154
|
body.collapsed #min .ic-min {
|
|
147
155
|
display: none;
|
|
148
156
|
}
|
|
149
157
|
body.collapsed #min .ic-max {
|
|
150
|
-
display:
|
|
151
|
-
}
|
|
152
|
-
.ic-max path {
|
|
153
|
-
stroke: currentColor;
|
|
154
|
-
stroke-width: 2.4;
|
|
155
|
-
fill: none;
|
|
156
|
-
stroke-linecap: round;
|
|
157
|
-
stroke-linejoin: round;
|
|
158
|
+
display: block;
|
|
158
159
|
}
|
|
159
160
|
body.collapsed #gear,
|
|
160
161
|
body.collapsed #usage {
|
|
@@ -164,18 +165,18 @@ body.collapsed #usage {
|
|
|
164
165
|
/* logged-in account chip (top-left, mirrors #controls) */
|
|
165
166
|
#account-chip {
|
|
166
167
|
position: absolute;
|
|
167
|
-
top:
|
|
168
|
+
top: 0;
|
|
168
169
|
left: 10px;
|
|
169
170
|
z-index: 10;
|
|
170
171
|
display: flex;
|
|
171
172
|
align-items: center;
|
|
172
|
-
gap:
|
|
173
|
-
height:
|
|
173
|
+
gap: 5px;
|
|
174
|
+
height: 38px; /* the title band — centres the chip against #controls */
|
|
174
175
|
/* #controls starts at ~154px: stop short of it, the pill has padding too */
|
|
175
176
|
max-width: 142px;
|
|
176
|
-
font-size:
|
|
177
|
+
font-size: 9px;
|
|
177
178
|
line-height: 1;
|
|
178
|
-
color:
|
|
179
|
+
color: #c7b8a7;
|
|
179
180
|
}
|
|
180
181
|
#account-chip[hidden] {
|
|
181
182
|
display: none;
|
|
@@ -188,7 +189,7 @@ body.collapsed #usage {
|
|
|
188
189
|
padding: 0 5px 0 6px;
|
|
189
190
|
margin-left: -6px; /* the text stays where it has always been */
|
|
190
191
|
border-radius: 10px;
|
|
191
|
-
background:
|
|
192
|
+
background: transparent;
|
|
192
193
|
transition:
|
|
193
194
|
background 0.15s,
|
|
194
195
|
color 0.15s;
|
|
@@ -210,18 +211,9 @@ body.collapsed #usage {
|
|
|
210
211
|
stroke-linecap: round;
|
|
211
212
|
stroke-linejoin: round;
|
|
212
213
|
}
|
|
213
|
-
/* a single account
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
cursor: default;
|
|
217
|
-
}
|
|
218
|
-
body.one-account #account-chip:hover {
|
|
219
|
-
background: rgba(255, 255, 255, 0.05);
|
|
220
|
-
color: var(--muted);
|
|
221
|
-
}
|
|
222
|
-
body.one-account .ac-caret {
|
|
223
|
-
display: none;
|
|
224
|
-
}
|
|
214
|
+
/* a single account still opens the menu — that is how a second one is added */
|
|
215
|
+
/* the chevron stays even with a single account — it is the only hint that the
|
|
216
|
+
menu exists at all, and that is where another account gets added */
|
|
225
217
|
/* the widget is mostly a drag region, and those swallow clicks before the page
|
|
226
218
|
ever sees them — so an invisible sheet under the menu catches them instead */
|
|
227
219
|
#acc-backdrop {
|
|
@@ -236,18 +228,18 @@ body.one-account .ac-caret {
|
|
|
236
228
|
/* dropdown under the chip; it overlays the pet rather than resizing the window */
|
|
237
229
|
#acc-menu {
|
|
238
230
|
position: absolute;
|
|
239
|
-
top:
|
|
231
|
+
top: 33px;
|
|
240
232
|
left: 8px;
|
|
241
233
|
z-index: 20;
|
|
242
|
-
min-width:
|
|
243
|
-
max-width:
|
|
244
|
-
max-height:
|
|
234
|
+
min-width: 150px;
|
|
235
|
+
max-width: 190px;
|
|
236
|
+
max-height: 132px;
|
|
245
237
|
overflow-y: auto;
|
|
246
|
-
padding:
|
|
247
|
-
border:
|
|
248
|
-
border-radius:
|
|
249
|
-
background: #
|
|
250
|
-
box-shadow: 0
|
|
238
|
+
padding: 7px;
|
|
239
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
240
|
+
border-radius: 8px;
|
|
241
|
+
background: #30251e;
|
|
242
|
+
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.33);
|
|
251
243
|
-webkit-app-region: no-drag;
|
|
252
244
|
}
|
|
253
245
|
#acc-menu[hidden] {
|
|
@@ -258,15 +250,19 @@ body.one-account .ac-caret {
|
|
|
258
250
|
}
|
|
259
251
|
/* the add entry closes the list: it belongs to no account */
|
|
260
252
|
#acc-menu .acc-add {
|
|
261
|
-
margin-top:
|
|
262
|
-
padding
|
|
263
|
-
border-top:
|
|
253
|
+
margin-top: 3px;
|
|
254
|
+
padding: 9px 4px 0;
|
|
255
|
+
border-top: 1px solid var(--hair);
|
|
264
256
|
border-radius: 0;
|
|
265
|
-
color:
|
|
257
|
+
color: #cb8a67;
|
|
266
258
|
/* no .who inside this one, so it needs the row font itself */
|
|
267
|
-
font-size:
|
|
259
|
+
font-size: 10px;
|
|
268
260
|
white-space: nowrap;
|
|
269
261
|
}
|
|
262
|
+
#acc-menu .acc-add:hover {
|
|
263
|
+
background: transparent;
|
|
264
|
+
color: #e3b193;
|
|
265
|
+
}
|
|
270
266
|
#acc-menu .acc-add:hover {
|
|
271
267
|
background: none;
|
|
272
268
|
color: var(--coral);
|
|
@@ -274,18 +270,19 @@ body.one-account .ac-caret {
|
|
|
274
270
|
/* tighter than the dropdown-less list it replaced: it floats over the pet */
|
|
275
271
|
#acc-menu .acc-item {
|
|
276
272
|
gap: 6px;
|
|
277
|
-
padding: 4px
|
|
273
|
+
padding: 5px 4px;
|
|
278
274
|
border-radius: 5px;
|
|
279
275
|
}
|
|
280
276
|
#acc-menu .acc-item .who {
|
|
281
|
-
font-size:
|
|
277
|
+
font-size: 10px;
|
|
282
278
|
}
|
|
283
279
|
.ac-dot {
|
|
284
280
|
flex: none;
|
|
285
|
-
width:
|
|
286
|
-
height:
|
|
281
|
+
width: 4px;
|
|
282
|
+
height: 4px;
|
|
287
283
|
border-radius: 50%;
|
|
288
|
-
background:
|
|
284
|
+
background: #a1b786;
|
|
285
|
+
box-shadow: 0 0 8px rgba(161, 183, 134, 0.19);
|
|
289
286
|
}
|
|
290
287
|
#ac-email {
|
|
291
288
|
/* line-height:1 leaves the ascender inside the box, so the text reads a hair
|
|
@@ -299,13 +296,15 @@ body.one-account .ac-caret {
|
|
|
299
296
|
}
|
|
300
297
|
.plan-badge {
|
|
301
298
|
flex: none;
|
|
302
|
-
|
|
303
|
-
|
|
299
|
+
text-transform: lowercase;
|
|
300
|
+
padding: 2px 3px;
|
|
301
|
+
border-radius: 3px;
|
|
304
302
|
font-size: 8px;
|
|
305
|
-
font-weight:
|
|
306
|
-
letter-spacing: 0
|
|
307
|
-
color:
|
|
308
|
-
|
|
303
|
+
font-weight: 400;
|
|
304
|
+
letter-spacing: 0;
|
|
305
|
+
color: #c6a385;
|
|
306
|
+
border: 1px solid rgba(181, 144, 109, 0.15);
|
|
307
|
+
background: rgba(181, 144, 109, 0.04);
|
|
309
308
|
}
|
|
310
309
|
.plan-badge[hidden] {
|
|
311
310
|
display: none;
|
|
@@ -329,10 +328,116 @@ body.collapsed #mini-acct-name {
|
|
|
329
328
|
}
|
|
330
329
|
|
|
331
330
|
/* settings panel */
|
|
331
|
+
/* stays in flow so the card keeps a height the window can be sized to (pet.js
|
|
332
|
+
measures #card) — it still reads as an overlay because the stage, the content
|
|
333
|
+
and the mini line all sit this screen out. The negative margins bleed its
|
|
334
|
+
background to the card's edges, past the card's own padding. */
|
|
332
335
|
#settings {
|
|
333
336
|
display: none;
|
|
334
|
-
margin
|
|
337
|
+
margin: 24px -18px -14px;
|
|
338
|
+
padding: 12px 16px;
|
|
339
|
+
background: linear-gradient(145deg, #2c221c, #17120f);
|
|
340
|
+
-webkit-app-region: no-drag;
|
|
341
|
+
}
|
|
342
|
+
/* panel heading: gives the screen a title instead of opening cold on a form */
|
|
343
|
+
.settings-heading {
|
|
344
|
+
display: flex;
|
|
345
|
+
justify-content: space-between;
|
|
346
|
+
align-items: center;
|
|
347
|
+
min-height: 38px;
|
|
348
|
+
}
|
|
349
|
+
.settings-heading h3 {
|
|
350
|
+
font-size: 16px;
|
|
351
|
+
letter-spacing: -0.4px;
|
|
352
|
+
font-weight: 500;
|
|
353
|
+
color: #e7cfb8;
|
|
354
|
+
}
|
|
355
|
+
.settings-heading p {
|
|
356
|
+
font-size: 10px;
|
|
357
|
+
color: #a48b75;
|
|
358
|
+
margin-top: 4px;
|
|
359
|
+
}
|
|
360
|
+
.sh-ico {
|
|
361
|
+
width: 18px;
|
|
362
|
+
height: 18px;
|
|
363
|
+
color: var(--text);
|
|
364
|
+
stroke-width: 2;
|
|
365
|
+
}
|
|
366
|
+
/* group label above a cluster of rows */
|
|
367
|
+
.settings-label {
|
|
368
|
+
display: block;
|
|
369
|
+
font-size: 10px;
|
|
370
|
+
color: #ac9177;
|
|
371
|
+
margin-bottom: 6px;
|
|
372
|
+
}
|
|
373
|
+
.threshold-label {
|
|
374
|
+
margin-top: 15px;
|
|
375
|
+
}
|
|
376
|
+
.settings-segment {
|
|
377
|
+
height: 28px;
|
|
378
|
+
}
|
|
379
|
+
/* connected account: avatar + who + plan, as one bordered block */
|
|
380
|
+
.connect-block {
|
|
381
|
+
display: flex;
|
|
382
|
+
align-items: center;
|
|
383
|
+
gap: 8px;
|
|
384
|
+
margin: 11px 0 13px;
|
|
385
|
+
padding: 8px;
|
|
386
|
+
border: 1px solid rgba(255, 255, 255, 0.043);
|
|
387
|
+
border-radius: 7px;
|
|
388
|
+
background: rgba(255, 255, 255, 0.012);
|
|
389
|
+
}
|
|
390
|
+
.connect-block > div {
|
|
391
|
+
flex: 1;
|
|
392
|
+
display: flex;
|
|
393
|
+
flex-direction: column;
|
|
394
|
+
gap: 5px;
|
|
395
|
+
min-width: 0;
|
|
396
|
+
}
|
|
397
|
+
.cb-out {
|
|
398
|
+
display: flex;
|
|
399
|
+
align-items: center;
|
|
400
|
+
padding: 3px;
|
|
401
|
+
background: none;
|
|
402
|
+
border: 0;
|
|
403
|
+
border-radius: 5px;
|
|
404
|
+
color: #8d7b6c;
|
|
405
|
+
cursor: pointer;
|
|
335
406
|
-webkit-app-region: no-drag;
|
|
407
|
+
transition:
|
|
408
|
+
color 0.15s,
|
|
409
|
+
background 0.15s;
|
|
410
|
+
}
|
|
411
|
+
.cb-out .ic {
|
|
412
|
+
width: 12px;
|
|
413
|
+
height: 12px;
|
|
414
|
+
stroke-width: 1.9;
|
|
415
|
+
}
|
|
416
|
+
.cb-out:hover {
|
|
417
|
+
color: #e0a184;
|
|
418
|
+
background: rgba(255, 255, 255, 0.05);
|
|
419
|
+
}
|
|
420
|
+
.connect-block b {
|
|
421
|
+
font-size: 10px;
|
|
422
|
+
font-weight: 400;
|
|
423
|
+
overflow: hidden;
|
|
424
|
+
text-overflow: ellipsis;
|
|
425
|
+
white-space: nowrap;
|
|
426
|
+
}
|
|
427
|
+
.connect-block > div > span {
|
|
428
|
+
font-size: 9px;
|
|
429
|
+
color: #a28a73;
|
|
430
|
+
}
|
|
431
|
+
.account-avatar {
|
|
432
|
+
width: 24px;
|
|
433
|
+
height: 24px;
|
|
434
|
+
flex: none;
|
|
435
|
+
display: grid;
|
|
436
|
+
place-items: center;
|
|
437
|
+
border-radius: 50%;
|
|
438
|
+
background: rgba(177, 132, 94, 0.13);
|
|
439
|
+
font-size: 13px;
|
|
440
|
+
color: #d5a07b;
|
|
336
441
|
}
|
|
337
442
|
body.settings-open #content,
|
|
338
443
|
body.settings-open #mini {
|
|
@@ -340,16 +445,65 @@ body.settings-open #mini {
|
|
|
340
445
|
}
|
|
341
446
|
body.settings-open #settings {
|
|
342
447
|
display: block;
|
|
343
|
-
animation: set-in 0.
|
|
448
|
+
animation: set-in 0.78s cubic-bezier(0.22, 1, 0.36, 1);
|
|
449
|
+
}
|
|
450
|
+
/* the panel covers the card, so the stage keeps its normal height behind it */
|
|
451
|
+
body.settings-open #stage {
|
|
452
|
+
display: none;
|
|
344
453
|
}
|
|
345
454
|
@keyframes set-in {
|
|
346
455
|
from {
|
|
347
456
|
opacity: 0;
|
|
348
|
-
transform:
|
|
457
|
+
transform: translateX(102%);
|
|
349
458
|
}
|
|
350
459
|
to {
|
|
351
460
|
opacity: 1;
|
|
352
|
-
transform:
|
|
461
|
+
transform: translateX(0);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
/* leaving settings: the panel rides back out to the right. It goes absolute for
|
|
465
|
+
those frames so the card is already at its home height while it plays. */
|
|
466
|
+
body.settings-closing #settings {
|
|
467
|
+
display: block;
|
|
468
|
+
position: absolute;
|
|
469
|
+
inset: 38px 0 0;
|
|
470
|
+
margin: 0;
|
|
471
|
+
z-index: 6;
|
|
472
|
+
overflow: hidden;
|
|
473
|
+
pointer-events: none;
|
|
474
|
+
animation: set-out 0.58s cubic-bezier(0.5, 0, 0.75, 0) forwards;
|
|
475
|
+
}
|
|
476
|
+
@keyframes set-out {
|
|
477
|
+
from {
|
|
478
|
+
opacity: 1;
|
|
479
|
+
transform: translateX(0);
|
|
480
|
+
}
|
|
481
|
+
to {
|
|
482
|
+
opacity: 0;
|
|
483
|
+
transform: translateX(102%);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
/* home comes back in from the other side, so the two screens read as a pair */
|
|
487
|
+
body.settings-closing #content,
|
|
488
|
+
body.settings-closing #stage {
|
|
489
|
+
animation: home-in 0.7s cubic-bezier(0.22, 1, 0.36, 1);
|
|
490
|
+
}
|
|
491
|
+
@keyframes home-in {
|
|
492
|
+
from {
|
|
493
|
+
opacity: 0;
|
|
494
|
+
transform: translateX(-9%);
|
|
495
|
+
}
|
|
496
|
+
to {
|
|
497
|
+
opacity: 1;
|
|
498
|
+
transform: translateX(0);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
@media (prefers-reduced-motion: reduce) {
|
|
502
|
+
body.settings-open #settings,
|
|
503
|
+
body.settings-closing #settings,
|
|
504
|
+
body.settings-closing #content,
|
|
505
|
+
body.settings-closing #stage {
|
|
506
|
+
animation: none;
|
|
353
507
|
}
|
|
354
508
|
}
|
|
355
509
|
.set-hint {
|
|
@@ -363,29 +517,6 @@ body.settings-open #settings {
|
|
|
363
517
|
text-align: left;
|
|
364
518
|
margin: -3px 0 9px;
|
|
365
519
|
}
|
|
366
|
-
.set-field {
|
|
367
|
-
display: block;
|
|
368
|
-
font-size: 9.5px;
|
|
369
|
-
color: var(--muted);
|
|
370
|
-
margin-bottom: 8px;
|
|
371
|
-
}
|
|
372
|
-
.set-field input,
|
|
373
|
-
.set-field select {
|
|
374
|
-
width: 100%;
|
|
375
|
-
margin-top: 3px;
|
|
376
|
-
background: rgba(255, 255, 255, 0.08);
|
|
377
|
-
border: 0.5px solid var(--hair);
|
|
378
|
-
border-radius: 7px;
|
|
379
|
-
color: var(--text);
|
|
380
|
-
font-size: 12px;
|
|
381
|
-
padding: 5px 8px;
|
|
382
|
-
outline: none;
|
|
383
|
-
font-variant-numeric: tabular-nums;
|
|
384
|
-
}
|
|
385
|
-
.set-field input:focus,
|
|
386
|
-
.set-field select:focus {
|
|
387
|
-
border-color: var(--coral);
|
|
388
|
-
}
|
|
389
520
|
/* hide the ugly native number spinners (custom ones below) */
|
|
390
521
|
input[type="number"]::-webkit-inner-spin-button,
|
|
391
522
|
input[type="number"]::-webkit-outer-spin-button {
|
|
@@ -396,18 +527,23 @@ input[type="number"]::-webkit-outer-spin-button {
|
|
|
396
527
|
/* display-mode segmented control (floating pet | menu bar) */
|
|
397
528
|
.seg {
|
|
398
529
|
display: flex;
|
|
399
|
-
gap:
|
|
400
|
-
|
|
530
|
+
gap: 3px;
|
|
531
|
+
height: 31px;
|
|
532
|
+
padding: 3px;
|
|
533
|
+
border: 0.5px solid rgba(255, 255, 255, 0.035);
|
|
534
|
+
background: rgba(15, 16, 23, 0.43);
|
|
535
|
+
border-radius: 6px;
|
|
401
536
|
}
|
|
402
537
|
.seg-btn {
|
|
403
538
|
flex: 1;
|
|
404
|
-
padding:
|
|
539
|
+
padding: 0 4px;
|
|
405
540
|
font-size: 11px;
|
|
406
|
-
color:
|
|
407
|
-
background:
|
|
408
|
-
border: 0
|
|
409
|
-
border-radius:
|
|
541
|
+
color: #938996;
|
|
542
|
+
background: none;
|
|
543
|
+
border: 0;
|
|
544
|
+
border-radius: 4px;
|
|
410
545
|
cursor: pointer;
|
|
546
|
+
white-space: nowrap;
|
|
411
547
|
transition:
|
|
412
548
|
background 0.15s,
|
|
413
549
|
color 0.15s,
|
|
@@ -417,9 +553,11 @@ input[type="number"]::-webkit-outer-spin-button {
|
|
|
417
553
|
color: var(--text);
|
|
418
554
|
}
|
|
419
555
|
.seg-btn.on {
|
|
420
|
-
background:
|
|
421
|
-
|
|
422
|
-
|
|
556
|
+
background: rgba(193, 177, 176, 0.1);
|
|
557
|
+
box-shadow:
|
|
558
|
+
0 1px 4px rgba(0, 0, 0, 0.13),
|
|
559
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
560
|
+
color: #eadccf;
|
|
423
561
|
}
|
|
424
562
|
/* menu-bar mode: the popover auto-sizes, so the minimize control is redundant */
|
|
425
563
|
body.is-menubar #min {
|
|
@@ -436,51 +574,27 @@ body.is-menubar #min {
|
|
|
436
574
|
align-items: center;
|
|
437
575
|
justify-content: space-between;
|
|
438
576
|
gap: 8px;
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
/* the threshold pair lives in an inset card under its toggle row */
|
|
443
|
-
.set-row:has(+ .set-subgroup) {
|
|
444
|
-
border-bottom: none;
|
|
577
|
+
font-size: 11px;
|
|
578
|
+
color: #cdb49b;
|
|
579
|
+
margin-top: 11px;
|
|
445
580
|
}
|
|
446
|
-
/*
|
|
447
|
-
|
|
448
|
-
.set-
|
|
581
|
+
/* the stepper rows stack, so they read as a group at a tighter pitch than the
|
|
582
|
+
reference's 14px — the steppers already carry their own height */
|
|
583
|
+
.set-row:has(.num) {
|
|
584
|
+
margin-top: 5px;
|
|
585
|
+
} /* flat,
|
|
586
|
+
but visibly nested: a soft coral guide bar ties the pair to the
|
|
587
|
+
toggle above {
|
|
449
588
|
position: relative;
|
|
450
589
|
padding-left: 14px;
|
|
451
590
|
border-bottom: 0.5px solid var(--hair);
|
|
452
591
|
padding-bottom: 3px;
|
|
453
592
|
transition: opacity 0.15s;
|
|
454
593
|
}
|
|
455
|
-
.set-subgroup::before {
|
|
456
|
-
content: "";
|
|
457
|
-
position: absolute;
|
|
458
|
-
left: 3px;
|
|
459
|
-
top: 5px;
|
|
460
|
-
bottom: 10px;
|
|
461
|
-
width: 2px;
|
|
462
|
-
border-radius: 1px;
|
|
463
|
-
background: var(--coral);
|
|
464
|
-
opacity: 0.35;
|
|
465
|
-
}
|
|
466
|
-
.set-subgroup .set-row {
|
|
467
|
-
border-bottom: none;
|
|
468
|
-
justify-content: flex-end;
|
|
469
|
-
gap: 10px;
|
|
470
|
-
}
|
|
471
594
|
.set-row-label {
|
|
472
595
|
font-size: 11px;
|
|
473
|
-
font-weight: 600;
|
|
474
|
-
color: var(--text);
|
|
475
|
-
}
|
|
476
|
-
.set-row-hint {
|
|
477
|
-
display: block;
|
|
478
|
-
white-space: nowrap;
|
|
479
|
-
font-style: normal;
|
|
480
596
|
font-weight: 400;
|
|
481
|
-
|
|
482
|
-
color: var(--muted);
|
|
483
|
-
margin-top: 2px;
|
|
597
|
+
color: #cdb49b;
|
|
484
598
|
}
|
|
485
599
|
.set-row.set-sub {
|
|
486
600
|
min-height: 31px;
|
|
@@ -490,7 +604,7 @@ body.is-menubar #min {
|
|
|
490
604
|
font-size: 10.5px;
|
|
491
605
|
color: var(--muted);
|
|
492
606
|
}
|
|
493
|
-
#set-rows.alerts-off .set-
|
|
607
|
+
#set-rows.alerts-off .set-sub {
|
|
494
608
|
opacity: 0.35;
|
|
495
609
|
pointer-events: none;
|
|
496
610
|
}
|
|
@@ -507,10 +621,10 @@ body.is-menubar #min {
|
|
|
507
621
|
appearance: none;
|
|
508
622
|
-webkit-appearance: none;
|
|
509
623
|
margin: 0;
|
|
510
|
-
width:
|
|
511
|
-
height:
|
|
512
|
-
border-radius:
|
|
513
|
-
background:
|
|
624
|
+
width: 29px;
|
|
625
|
+
height: 16px;
|
|
626
|
+
border-radius: 10px;
|
|
627
|
+
background: #5c5146;
|
|
514
628
|
position: relative;
|
|
515
629
|
cursor: pointer;
|
|
516
630
|
-webkit-app-region: no-drag;
|
|
@@ -521,8 +635,8 @@ body.is-menubar #min {
|
|
|
521
635
|
position: absolute;
|
|
522
636
|
top: 2px;
|
|
523
637
|
left: 2px;
|
|
524
|
-
width:
|
|
525
|
-
height:
|
|
638
|
+
width: 12px;
|
|
639
|
+
height: 12px;
|
|
526
640
|
border-radius: 50%;
|
|
527
641
|
background: #fff;
|
|
528
642
|
opacity: 0.85;
|
|
@@ -531,34 +645,36 @@ body.is-menubar #min {
|
|
|
531
645
|
opacity 0.18s;
|
|
532
646
|
}
|
|
533
647
|
.set-toggle:checked {
|
|
534
|
-
background:
|
|
648
|
+
background: #ae7954;
|
|
535
649
|
}
|
|
536
650
|
.set-toggle:checked::after {
|
|
537
|
-
left:
|
|
651
|
+
left: 15px;
|
|
538
652
|
opacity: 1;
|
|
539
653
|
}
|
|
540
654
|
/* number field: minus / value% / plus */
|
|
541
655
|
.num {
|
|
542
656
|
display: flex;
|
|
543
657
|
align-items: center;
|
|
544
|
-
gap: 4px;
|
|
545
658
|
flex: none;
|
|
659
|
+
border: 0.5px solid var(--hair);
|
|
660
|
+
background: rgba(255, 255, 255, 0.012);
|
|
661
|
+
border-radius: 4px;
|
|
662
|
+
overflow: hidden;
|
|
546
663
|
}
|
|
547
664
|
.num-val {
|
|
548
665
|
position: relative;
|
|
549
|
-
width:
|
|
666
|
+
width: 38px;
|
|
550
667
|
}
|
|
551
668
|
.num-val input {
|
|
552
669
|
width: 100%;
|
|
553
|
-
background:
|
|
554
|
-
border: 0
|
|
555
|
-
border-radius: 7px;
|
|
670
|
+
background: none;
|
|
671
|
+
border: 0;
|
|
556
672
|
color: var(--text);
|
|
557
|
-
font-size:
|
|
558
|
-
font-weight:
|
|
673
|
+
font-size: 11px;
|
|
674
|
+
font-weight: 400;
|
|
559
675
|
font-variant-numeric: tabular-nums;
|
|
560
676
|
text-align: right;
|
|
561
|
-
padding: 4px
|
|
677
|
+
padding: 4px 15px 4px 0;
|
|
562
678
|
outline: none;
|
|
563
679
|
transition:
|
|
564
680
|
border-color 0.15s,
|
|
@@ -570,22 +686,22 @@ body.is-menubar #min {
|
|
|
570
686
|
}
|
|
571
687
|
.num-val i {
|
|
572
688
|
position: absolute;
|
|
573
|
-
right:
|
|
689
|
+
right: 3px;
|
|
574
690
|
top: 50%;
|
|
575
691
|
transform: translateY(-50%);
|
|
576
692
|
font-style: normal;
|
|
577
|
-
font-size:
|
|
578
|
-
color:
|
|
693
|
+
font-size: 9px;
|
|
694
|
+
color: #a1876b;
|
|
579
695
|
pointer-events: none;
|
|
580
696
|
}
|
|
581
697
|
.num-btn {
|
|
582
698
|
-webkit-app-region: no-drag;
|
|
583
699
|
border: none;
|
|
584
|
-
background:
|
|
585
|
-
color:
|
|
586
|
-
width:
|
|
587
|
-
height:
|
|
588
|
-
border-radius:
|
|
700
|
+
background: none;
|
|
701
|
+
color: #ceb194;
|
|
702
|
+
width: 22px;
|
|
703
|
+
height: 22px;
|
|
704
|
+
border-radius: 0;
|
|
589
705
|
font-size: 12px;
|
|
590
706
|
line-height: 1;
|
|
591
707
|
display: flex;
|
|
@@ -604,26 +720,18 @@ body.is-menubar #min {
|
|
|
604
720
|
.num-btn:active {
|
|
605
721
|
transform: scale(0.9);
|
|
606
722
|
}
|
|
607
|
-
.set-check {
|
|
608
|
-
display: flex;
|
|
609
|
-
align-items: center;
|
|
610
|
-
gap: 6px;
|
|
611
|
-
font-size: 11px;
|
|
612
|
-
color: var(--text);
|
|
613
|
-
margin-bottom: 9px;
|
|
614
|
-
}
|
|
615
723
|
.set-actions {
|
|
616
724
|
display: flex;
|
|
617
725
|
gap: 8px;
|
|
618
|
-
margin-top:
|
|
726
|
+
margin-top: 17px;
|
|
619
727
|
}
|
|
620
728
|
.set-actions button {
|
|
621
729
|
flex: 1;
|
|
622
|
-
border:
|
|
623
|
-
border-radius:
|
|
624
|
-
padding:
|
|
730
|
+
border: 1px solid rgba(255, 255, 255, 0.082);
|
|
731
|
+
border-radius: 5px;
|
|
732
|
+
padding: 7px;
|
|
625
733
|
font-size: 11px;
|
|
626
|
-
font-weight:
|
|
734
|
+
font-weight: 400;
|
|
627
735
|
cursor: pointer;
|
|
628
736
|
transition:
|
|
629
737
|
background 0.18s,
|
|
@@ -633,15 +741,16 @@ body.is-menubar #min {
|
|
|
633
741
|
transform: scale(0.97);
|
|
634
742
|
}
|
|
635
743
|
#set-cancel {
|
|
636
|
-
background:
|
|
744
|
+
background: none;
|
|
637
745
|
color: var(--text);
|
|
638
746
|
}
|
|
639
747
|
#set-cancel:hover {
|
|
640
748
|
background: rgba(255, 255, 255, 0.2);
|
|
641
749
|
}
|
|
642
750
|
#set-save {
|
|
643
|
-
background:
|
|
644
|
-
color:
|
|
751
|
+
background: #ce926d;
|
|
752
|
+
border-color: #ce926d;
|
|
753
|
+
color: #261a12;
|
|
645
754
|
}
|
|
646
755
|
#set-save:disabled {
|
|
647
756
|
opacity: 0.45;
|
|
@@ -649,14 +758,17 @@ body.is-menubar #min {
|
|
|
649
758
|
}
|
|
650
759
|
#set-save.dirty,
|
|
651
760
|
#set-save.dirty:hover {
|
|
652
|
-
color: #
|
|
761
|
+
color: #261a12; /* filled coral now — dark text, not white */
|
|
653
762
|
}
|
|
654
763
|
#set-save.dirty:hover {
|
|
655
|
-
background: #
|
|
764
|
+
background: #e2a07f;
|
|
765
|
+
border-color: #e2a07f;
|
|
656
766
|
}
|
|
657
767
|
/* unsaved changes: light up and pulse so you don't forget to save */
|
|
658
768
|
#set-save.dirty {
|
|
659
|
-
background:
|
|
769
|
+
background: #ce926d;
|
|
770
|
+
border-color: #ce926d;
|
|
771
|
+
color: #261a12;
|
|
660
772
|
animation: save-pulse 1.6s ease-in-out infinite;
|
|
661
773
|
}
|
|
662
774
|
@keyframes save-pulse {
|
|
@@ -675,9 +787,9 @@ body.is-menubar #min {
|
|
|
675
787
|
align-items: center;
|
|
676
788
|
justify-content: space-between;
|
|
677
789
|
gap: 8px;
|
|
678
|
-
margin-top:
|
|
679
|
-
|
|
680
|
-
|
|
790
|
+
margin-top: 12px;
|
|
791
|
+
font-size: 8px;
|
|
792
|
+
color: #8f755e;
|
|
681
793
|
}
|
|
682
794
|
.upd-ver {
|
|
683
795
|
font-size: 10px;
|
|
@@ -699,14 +811,24 @@ body.is-menubar #min {
|
|
|
699
811
|
color: var(--coral);
|
|
700
812
|
}
|
|
701
813
|
/* compact update button — lighter than the full-width .acc-btn */
|
|
814
|
+
/* once an update is offered, the button says it — the check link is redundant
|
|
815
|
+
and the three of them would not fit the footer on one line */
|
|
816
|
+
body.has-update #upd-check {
|
|
817
|
+
display: none;
|
|
818
|
+
}
|
|
819
|
+
.set-updates .upd-ver,
|
|
820
|
+
.upd-btn,
|
|
821
|
+
#upd-check {
|
|
822
|
+
white-space: nowrap;
|
|
823
|
+
}
|
|
702
824
|
.upd-btn {
|
|
703
|
-
border:
|
|
704
|
-
border-radius:
|
|
705
|
-
padding: 4px
|
|
706
|
-
font-size:
|
|
707
|
-
font-weight:
|
|
708
|
-
color: #
|
|
709
|
-
background:
|
|
825
|
+
border: 1px solid rgba(206, 146, 109, 0.35);
|
|
826
|
+
border-radius: 4px;
|
|
827
|
+
padding: 4px 8px;
|
|
828
|
+
font-size: 9px;
|
|
829
|
+
font-weight: 400;
|
|
830
|
+
color: #e3b193;
|
|
831
|
+
background: rgba(206, 146, 109, 0.09);
|
|
710
832
|
cursor: pointer;
|
|
711
833
|
-webkit-app-region: no-drag;
|
|
712
834
|
transition:
|
|
@@ -714,7 +836,8 @@ body.is-menubar #min {
|
|
|
714
836
|
transform 0.1s;
|
|
715
837
|
}
|
|
716
838
|
.upd-btn:hover {
|
|
717
|
-
background:
|
|
839
|
+
background: rgba(206, 146, 109, 0.2);
|
|
840
|
+
border-color: rgba(206, 146, 109, 0.55);
|
|
718
841
|
}
|
|
719
842
|
.upd-btn:active {
|
|
720
843
|
transform: scale(0.97);
|
|
@@ -732,33 +855,45 @@ body.live .live-only {
|
|
|
732
855
|
display: inline;
|
|
733
856
|
}
|
|
734
857
|
#live-tag {
|
|
735
|
-
|
|
736
|
-
font-
|
|
858
|
+
margin-left: auto;
|
|
859
|
+
font-size: 8px;
|
|
860
|
+
letter-spacing: 0.4px;
|
|
861
|
+
font-weight: 400;
|
|
862
|
+
padding: 3px 5px;
|
|
863
|
+
color: #abbd96;
|
|
864
|
+
border: 1px solid rgba(161, 183, 134, 0.13);
|
|
865
|
+
background: rgba(161, 183, 134, 0.03);
|
|
866
|
+
border-radius: 3px;
|
|
737
867
|
}
|
|
738
868
|
|
|
739
869
|
/* account / auth */
|
|
740
870
|
#account {
|
|
741
|
-
margin-bottom:
|
|
742
|
-
padding-bottom: 10px;
|
|
743
|
-
border-bottom: 0.5px solid var(--hair); /* divider before the first section */
|
|
871
|
+
margin-bottom: 0;
|
|
744
872
|
}
|
|
745
873
|
.acc-btn {
|
|
746
874
|
width: 100%;
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
875
|
+
display: flex;
|
|
876
|
+
align-items: center;
|
|
877
|
+
justify-content: center;
|
|
878
|
+
gap: 6px;
|
|
879
|
+
border: 1px solid rgba(206, 146, 109, 0.35);
|
|
880
|
+
border-radius: 5px;
|
|
881
|
+
padding: 9px;
|
|
750
882
|
font-size: 11px;
|
|
751
|
-
font-weight:
|
|
883
|
+
font-weight: 400;
|
|
752
884
|
cursor: pointer;
|
|
753
|
-
background:
|
|
754
|
-
color: #
|
|
885
|
+
background: rgba(206, 146, 109, 0.09);
|
|
886
|
+
color: #e3b193;
|
|
755
887
|
-webkit-app-region: no-drag;
|
|
888
|
+
/* the glyph rides at the text's weight, not heavier */
|
|
889
|
+
stroke-width: 1.8;
|
|
756
890
|
transition:
|
|
757
891
|
background 0.18s,
|
|
758
892
|
transform 0.1s;
|
|
759
893
|
}
|
|
760
894
|
.acc-btn:hover:not(:disabled) {
|
|
761
|
-
background:
|
|
895
|
+
background: rgba(206, 146, 109, 0.2);
|
|
896
|
+
border-color: rgba(206, 146, 109, 0.55);
|
|
762
897
|
}
|
|
763
898
|
.acc-btn:active:not(:disabled) {
|
|
764
899
|
transform: scale(0.98);
|
|
@@ -786,9 +921,9 @@ body.live .live-only {
|
|
|
786
921
|
text-decoration: underline;
|
|
787
922
|
}
|
|
788
923
|
.acc-ok {
|
|
789
|
-
color: var(--
|
|
790
|
-
font-size:
|
|
791
|
-
font-weight:
|
|
924
|
+
color: var(--text);
|
|
925
|
+
font-size: 9px;
|
|
926
|
+
font-weight: 400;
|
|
792
927
|
flex: 1;
|
|
793
928
|
min-width: 0;
|
|
794
929
|
overflow: hidden;
|
|
@@ -816,23 +951,24 @@ body.live .live-only {
|
|
|
816
951
|
color 0.15s;
|
|
817
952
|
}
|
|
818
953
|
.acc-item:hover {
|
|
819
|
-
background: rgba(255, 255, 255, 0.
|
|
954
|
+
background: rgba(255, 255, 255, 0.04);
|
|
820
955
|
color: var(--text);
|
|
821
956
|
}
|
|
822
957
|
.acc-item.active {
|
|
823
|
-
background:
|
|
824
|
-
color:
|
|
958
|
+
background: transparent;
|
|
959
|
+
color: #e7d6c5;
|
|
825
960
|
cursor: default;
|
|
826
961
|
}
|
|
827
962
|
.acc-item .dot {
|
|
828
|
-
width:
|
|
829
|
-
height:
|
|
963
|
+
width: 4px;
|
|
964
|
+
height: 4px;
|
|
830
965
|
border-radius: 50%;
|
|
831
966
|
background: rgba(255, 255, 255, 0.22); /* logged out: a row with no usage yet */
|
|
832
967
|
flex: none;
|
|
833
968
|
}
|
|
834
969
|
.acc-item.connected .dot {
|
|
835
|
-
background:
|
|
970
|
+
background: #a1b786;
|
|
971
|
+
box-shadow: 0 0 8px rgba(161, 183, 134, 0.19);
|
|
836
972
|
}
|
|
837
973
|
.acc-item .who {
|
|
838
974
|
flex: 1;
|
|
@@ -934,7 +1070,8 @@ body.awaiting #acc-intro {
|
|
|
934
1070
|
display: none;
|
|
935
1071
|
}
|
|
936
1072
|
#acc-disconnected {
|
|
937
|
-
margin-top:
|
|
1073
|
+
margin-top: 8px;
|
|
1074
|
+
margin-bottom: 13px;
|
|
938
1075
|
}
|
|
939
1076
|
|
|
940
1077
|
/* just logged in: a short-lived green cheer at the top of the home panel */
|
|
@@ -948,16 +1085,26 @@ body.awaiting #acc-intro {
|
|
|
948
1085
|
}
|
|
949
1086
|
|
|
950
1087
|
/* limits: real meters when connected, a "connect" prompt otherwise */
|
|
1088
|
+
/* the connect prompt draws its own frame, so the rules on either side of it
|
|
1089
|
+
would box a box. It is `.live` that decides whether it shows — being logged
|
|
1090
|
+
in is not enough, the usage fetch has to have landed — so that is what these
|
|
1091
|
+
have to key off, not `.auth-on`. */
|
|
1092
|
+
body:not(.live) #statusline {
|
|
1093
|
+
border-bottom: 0;
|
|
1094
|
+
}
|
|
1095
|
+
body:not(.live) #bymodel {
|
|
1096
|
+
border-top: 0;
|
|
1097
|
+
}
|
|
951
1098
|
#limits-connect {
|
|
952
1099
|
display: flex;
|
|
953
1100
|
align-items: center;
|
|
954
|
-
gap:
|
|
1101
|
+
gap: 9px;
|
|
955
1102
|
width: 100%;
|
|
956
1103
|
text-align: left;
|
|
957
|
-
border:
|
|
958
|
-
border-radius:
|
|
959
|
-
background: rgba(
|
|
960
|
-
padding: 11px
|
|
1104
|
+
border: 1px solid rgba(206, 146, 109, 0.22);
|
|
1105
|
+
border-radius: 7px;
|
|
1106
|
+
background: rgba(206, 146, 109, 0.055);
|
|
1107
|
+
padding: 10px 11px;
|
|
961
1108
|
cursor: pointer;
|
|
962
1109
|
-webkit-app-region: no-drag;
|
|
963
1110
|
transition:
|
|
@@ -965,15 +1112,15 @@ body.awaiting #acc-intro {
|
|
|
965
1112
|
border-color 0.2s;
|
|
966
1113
|
}
|
|
967
1114
|
#limits-connect:hover {
|
|
968
|
-
background: rgba(
|
|
969
|
-
border-color: rgba(
|
|
1115
|
+
background: rgba(206, 146, 109, 0.13);
|
|
1116
|
+
border-color: rgba(206, 146, 109, 0.42);
|
|
970
1117
|
}
|
|
971
1118
|
.lc-ico {
|
|
972
1119
|
flex: 0 0 auto;
|
|
973
|
-
width:
|
|
974
|
-
height:
|
|
975
|
-
stroke:
|
|
976
|
-
stroke-width:
|
|
1120
|
+
width: 14px;
|
|
1121
|
+
height: 14px;
|
|
1122
|
+
stroke: #cb8a67;
|
|
1123
|
+
stroke-width: 1.8;
|
|
977
1124
|
fill: none;
|
|
978
1125
|
stroke-linecap: round;
|
|
979
1126
|
stroke-linejoin: round;
|
|
@@ -985,14 +1132,14 @@ body.awaiting #acc-intro {
|
|
|
985
1132
|
line-height: 1.25;
|
|
986
1133
|
}
|
|
987
1134
|
.lc-text b {
|
|
988
|
-
font-size:
|
|
989
|
-
font-weight:
|
|
990
|
-
color:
|
|
1135
|
+
font-size: 11px;
|
|
1136
|
+
font-weight: 400;
|
|
1137
|
+
color: #e3cdb8;
|
|
991
1138
|
}
|
|
992
1139
|
.lc-text i {
|
|
993
|
-
font-size:
|
|
1140
|
+
font-size: 9px;
|
|
994
1141
|
font-style: normal;
|
|
995
|
-
color:
|
|
1142
|
+
color: #a28a73;
|
|
996
1143
|
}
|
|
997
1144
|
body.live #limits-connect {
|
|
998
1145
|
display: none;
|
|
@@ -1101,23 +1248,8 @@ body.collapsed #pet {
|
|
|
1101
1248
|
}
|
|
1102
1249
|
/* hide minimize while settings are open (toggling it bugs the layout) */
|
|
1103
1250
|
body.settings-open #min {
|
|
1104
|
-
display: none;
|
|
1105
|
-
}
|
|
1106
|
-
|
|
1107
|
-
/* pet */
|
|
1108
|
-
/* expanded: a little night scene */
|
|
1109
|
-
body.settings-open #stage {
|
|
1110
|
-
height: 100px;
|
|
1111
|
-
}
|
|
1112
|
-
/* the ground layers stretch to fill the stage; while it's shortened, pin them
|
|
1113
|
-
at their natural height so the gears stay round — the top just clips away.
|
|
1114
|
-
#scene keeps stretching (dots and stars tolerate it) so its frame rows stay
|
|
1115
|
-
at the edges; the blocky clouds don't, so they sit this screen out. */
|
|
1116
|
-
body.settings-open #gears {
|
|
1117
|
-
top: auto;
|
|
1118
|
-
bottom: 0;
|
|
1119
|
-
height: 132px;
|
|
1120
|
-
}
|
|
1251
|
+
display: none;
|
|
1252
|
+
} /* pet */
|
|
1121
1253
|
body.settings-open .cloud {
|
|
1122
1254
|
display: none;
|
|
1123
1255
|
}
|
|
@@ -1127,7 +1259,7 @@ body.settings-open #pet {
|
|
|
1127
1259
|
#stage {
|
|
1128
1260
|
position: relative;
|
|
1129
1261
|
height: 132px;
|
|
1130
|
-
margin-top:
|
|
1262
|
+
margin-top: 24px; /* the title band is 38px; the card already pads 14 of it */
|
|
1131
1263
|
border-radius: 12px;
|
|
1132
1264
|
background: radial-gradient(125% 145% at 50% 36%, #050505 52%, #150e0a 100%);
|
|
1133
1265
|
box-shadow: 0 0 22px 7px rgba(6, 5, 4, 0.7);
|
|
@@ -1173,15 +1305,12 @@ body.collapsed #stage {
|
|
|
1173
1305
|
}
|
|
1174
1306
|
body.collapsed #scene {
|
|
1175
1307
|
display: none;
|
|
1176
|
-
}
|
|
1177
|
-
/* minimized = just the pet's face: hide all activity scenery + props */
|
|
1308
|
+
} /* minimized = just the pet's face: hide all activity scenery + props */
|
|
1178
1309
|
body.collapsed #desk,
|
|
1179
1310
|
body.collapsed #plant,
|
|
1180
1311
|
body.collapsed #mug,
|
|
1181
1312
|
body.collapsed #reading,
|
|
1182
|
-
body.collapsed #terminal
|
|
1183
|
-
body.collapsed #gears,
|
|
1184
|
-
body.collapsed #glasses {
|
|
1313
|
+
body.collapsed #terminal {
|
|
1185
1314
|
display: none;
|
|
1186
1315
|
}
|
|
1187
1316
|
/* collapsed: the pet sits a bit high, so the % fits under it inside the ring */
|
|
@@ -1293,47 +1422,11 @@ body.collapsed #shadow {
|
|
|
1293
1422
|
transform-box: fill-box;
|
|
1294
1423
|
transform-origin: center;
|
|
1295
1424
|
animation: blink 5.5s infinite;
|
|
1296
|
-
}
|
|
1297
|
-
/* mechanic mode (settings): hard hat + screwdriver on the pet, loose gears
|
|
1298
|
-
turning behind it. Hidden otherwise. */
|
|
1299
|
-
#robot {
|
|
1300
|
-
opacity: 0;
|
|
1301
|
-
pointer-events: none;
|
|
1302
|
-
transition: opacity 0.2s ease;
|
|
1303
|
-
}
|
|
1304
|
-
/* hard hat colors live inline (built pixel-by-pixel in pet.js buildHat) */
|
|
1305
|
-
.dr-handle {
|
|
1306
|
-
fill: #c0392b;
|
|
1307
|
-
}
|
|
1308
|
-
.dr-handle-hi {
|
|
1309
|
-
fill: #e0685a;
|
|
1310
|
-
}
|
|
1311
|
-
.dr-collar {
|
|
1312
|
-
fill: #9a9a9a;
|
|
1313
|
-
}
|
|
1314
|
-
.dr-tip,
|
|
1315
|
-
.dr-shaft {
|
|
1316
|
-
fill: #d0d0d0;
|
|
1317
|
-
}
|
|
1318
|
-
.dr-hi {
|
|
1319
|
-
fill: #f2f2f2;
|
|
1320
|
-
}
|
|
1321
|
-
#gears {
|
|
1322
|
-
position: absolute;
|
|
1323
|
-
inset: 0;
|
|
1324
|
-
width: 100%;
|
|
1325
|
-
height: 100%;
|
|
1326
|
-
z-index: 1;
|
|
1327
|
-
fill: #7a6a5c;
|
|
1425
|
+
} /* mechanic mode (settings): hard hat + screwdriver on the pet {
|
|
1328
1426
|
opacity: 0;
|
|
1329
1427
|
pointer-events: none;
|
|
1330
1428
|
transition: opacity 0.2s ease;
|
|
1331
|
-
}
|
|
1332
|
-
body.settings-open #robot,
|
|
1333
|
-
body.settings-open #gears {
|
|
1334
|
-
opacity: 1;
|
|
1335
|
-
}
|
|
1336
|
-
/* declutter the scene while configuring: mood marks AND activity props —
|
|
1429
|
+
}/* declutter the scene while configuring: mood marks AND activity props —
|
|
1337
1430
|
the shortened stage only fits the pet and its gears */
|
|
1338
1431
|
body.settings-open #zzz,
|
|
1339
1432
|
body.settings-open #flames,
|
|
@@ -1342,8 +1435,7 @@ body.settings-open #terminal,
|
|
|
1342
1435
|
body.settings-open #reading,
|
|
1343
1436
|
body.settings-open #mug,
|
|
1344
1437
|
body.settings-open #desk,
|
|
1345
|
-
body.settings-open #plant
|
|
1346
|
-
body.settings-open #glasses {
|
|
1438
|
+
body.settings-open #plant {
|
|
1347
1439
|
display: none;
|
|
1348
1440
|
}
|
|
1349
1441
|
/* reading mode: an open book with a magnifying glass scanning the lines */
|
|
@@ -1361,89 +1453,9 @@ body.settings-open #glasses {
|
|
|
1361
1453
|
body.act-reading #reading {
|
|
1362
1454
|
opacity: 1;
|
|
1363
1455
|
}
|
|
1364
|
-
/* reading glasses on the pet */
|
|
1365
|
-
#glasses {
|
|
1366
|
-
opacity: 0;
|
|
1367
|
-
pointer-events: none;
|
|
1368
|
-
transition: opacity 0.2s ease;
|
|
1369
|
-
}
|
|
1370
|
-
.gl-lens {
|
|
1371
|
-
fill: rgba(190, 225, 255, 0.16);
|
|
1372
|
-
stroke: #241c17;
|
|
1373
|
-
stroke-width: 2.4;
|
|
1374
|
-
}
|
|
1375
|
-
.gl-bridge,
|
|
1376
|
-
.gl-arm {
|
|
1377
|
-
fill: none;
|
|
1378
|
-
stroke: #241c17;
|
|
1379
|
-
stroke-width: 2.4;
|
|
1380
|
-
stroke-linecap: round;
|
|
1381
|
-
}
|
|
1382
|
-
body.act-reading #glasses {
|
|
1383
|
-
opacity: 1;
|
|
1384
|
-
}
|
|
1385
|
-
.dc-card {
|
|
1386
|
-
fill: #191d23; /* dark markdown viewer — easier to read on the dark scene */
|
|
1387
|
-
}
|
|
1388
|
-
.dc-ico {
|
|
1389
|
-
fill: none;
|
|
1390
|
-
stroke: #8a9098;
|
|
1391
|
-
stroke-width: 1.1;
|
|
1392
|
-
}
|
|
1393
|
-
.dc-ico-fold {
|
|
1394
|
-
fill: #8a9098;
|
|
1395
|
-
}
|
|
1396
|
-
.dc-title {
|
|
1397
|
-
fill: #e2e5ea;
|
|
1398
|
-
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1399
|
-
font-size: 7px;
|
|
1400
|
-
font-weight: 700;
|
|
1401
|
-
}
|
|
1402
1456
|
#dc-fname {
|
|
1403
1457
|
transition: opacity 0.25s ease;
|
|
1404
1458
|
}
|
|
1405
|
-
.dc-divider {
|
|
1406
|
-
stroke: rgba(255, 255, 255, 0.1);
|
|
1407
|
-
stroke-width: 1;
|
|
1408
|
-
}
|
|
1409
|
-
.dc-h {
|
|
1410
|
-
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1411
|
-
font-size: 6.5px;
|
|
1412
|
-
font-weight: 700;
|
|
1413
|
-
}
|
|
1414
|
-
.dc-h1 {
|
|
1415
|
-
fill: #c39cf0; /* purple */
|
|
1416
|
-
}
|
|
1417
|
-
.dc-g {
|
|
1418
|
-
fill: #7ed07e; /* green */
|
|
1419
|
-
}
|
|
1420
|
-
.dc-b {
|
|
1421
|
-
fill: #6fb3f2; /* blue */
|
|
1422
|
-
}
|
|
1423
|
-
.dc-a {
|
|
1424
|
-
fill: #e0b46a; /* amber */
|
|
1425
|
-
}
|
|
1426
|
-
.dc-body {
|
|
1427
|
-
fill: #626b76; /* muted body text */
|
|
1428
|
-
}
|
|
1429
|
-
/* each heading lights up in turn (a "being read" pulse) */
|
|
1430
|
-
body.act-reading .dc-h {
|
|
1431
|
-
animation: dc-read 4s ease-in-out infinite;
|
|
1432
|
-
}
|
|
1433
|
-
@keyframes dc-read {
|
|
1434
|
-
0% {
|
|
1435
|
-
opacity: 0.5;
|
|
1436
|
-
}
|
|
1437
|
-
7% {
|
|
1438
|
-
opacity: 1;
|
|
1439
|
-
}
|
|
1440
|
-
24% {
|
|
1441
|
-
opacity: 0.5;
|
|
1442
|
-
}
|
|
1443
|
-
100% {
|
|
1444
|
-
opacity: 0.5;
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1447
1459
|
/* editing mode: a coding desk (laptop with colorful code, coffee, plant) */
|
|
1448
1460
|
#desk {
|
|
1449
1461
|
position: absolute;
|
|
@@ -1491,31 +1503,6 @@ body.act-reading:not(.collapsed) #pet {
|
|
|
1491
1503
|
body.act-running:not(.collapsed) #pet {
|
|
1492
1504
|
left: 27px;
|
|
1493
1505
|
}
|
|
1494
|
-
.dk-desk {
|
|
1495
|
-
fill: #262626;
|
|
1496
|
-
}
|
|
1497
|
-
.dk-keys {
|
|
1498
|
-
fill: #4d4d4d;
|
|
1499
|
-
}
|
|
1500
|
-
.mug-body {
|
|
1501
|
-
fill: #d8cbaf;
|
|
1502
|
-
}
|
|
1503
|
-
.mug-rim {
|
|
1504
|
-
fill: #c6b896;
|
|
1505
|
-
}
|
|
1506
|
-
.mug-handle {
|
|
1507
|
-
fill: none;
|
|
1508
|
-
stroke: #d8cbaf;
|
|
1509
|
-
stroke-width: 2.8;
|
|
1510
|
-
stroke-linecap: round;
|
|
1511
|
-
}
|
|
1512
|
-
.mug-code {
|
|
1513
|
-
fill: none;
|
|
1514
|
-
stroke: #2a211a;
|
|
1515
|
-
stroke-width: 1.7;
|
|
1516
|
-
stroke-linecap: square;
|
|
1517
|
-
stroke-linejoin: miter;
|
|
1518
|
-
}
|
|
1519
1506
|
.dk-wisp {
|
|
1520
1507
|
fill: none;
|
|
1521
1508
|
stroke: #c9c9c9;
|
|
@@ -1524,36 +1511,6 @@ body.act-running:not(.collapsed) #pet {
|
|
|
1524
1511
|
opacity: 0;
|
|
1525
1512
|
vector-effect: non-scaling-stroke;
|
|
1526
1513
|
}
|
|
1527
|
-
.dk-deck2 {
|
|
1528
|
-
fill: #3a3a3a;
|
|
1529
|
-
}
|
|
1530
|
-
.dk-screen {
|
|
1531
|
-
fill: #1c1c1c;
|
|
1532
|
-
}
|
|
1533
|
-
.dk-glass {
|
|
1534
|
-
fill: #0b0b0b;
|
|
1535
|
-
}
|
|
1536
|
-
.c-grn {
|
|
1537
|
-
fill: #6fcf6f;
|
|
1538
|
-
}
|
|
1539
|
-
.c-yel {
|
|
1540
|
-
fill: #e2c46a;
|
|
1541
|
-
}
|
|
1542
|
-
.c-blu {
|
|
1543
|
-
fill: #6fb3f2;
|
|
1544
|
-
}
|
|
1545
|
-
.c-cur {
|
|
1546
|
-
fill: #cdeccf;
|
|
1547
|
-
}
|
|
1548
|
-
.dk-pot {
|
|
1549
|
-
fill: #b98a5e;
|
|
1550
|
-
}
|
|
1551
|
-
.dk-leaf {
|
|
1552
|
-
fill: #3f9150;
|
|
1553
|
-
}
|
|
1554
|
-
.dk-leaf-c {
|
|
1555
|
-
fill: #57a95f;
|
|
1556
|
-
}
|
|
1557
1514
|
/* shared potted plant (editing + reading desks) */
|
|
1558
1515
|
#plant {
|
|
1559
1516
|
position: absolute;
|
|
@@ -1568,24 +1525,11 @@ body.act-running:not(.collapsed) #pet {
|
|
|
1568
1525
|
body.act-editing #plant {
|
|
1569
1526
|
opacity: 1;
|
|
1570
1527
|
}
|
|
1571
|
-
body.act-editing .c-cur {
|
|
1572
|
-
animation: cursor-blink 1s steps(1, end) infinite;
|
|
1573
|
-
}
|
|
1574
1528
|
body.act-editing .dk-wisp,
|
|
1575
1529
|
body.act-reading .dk-wisp {
|
|
1576
1530
|
transform-box: view-box;
|
|
1577
1531
|
animation: steam 2.6s ease-in-out infinite;
|
|
1578
1532
|
}
|
|
1579
|
-
@keyframes cursor-blink {
|
|
1580
|
-
0%,
|
|
1581
|
-
50% {
|
|
1582
|
-
opacity: 1;
|
|
1583
|
-
}
|
|
1584
|
-
51%,
|
|
1585
|
-
100% {
|
|
1586
|
-
opacity: 0;
|
|
1587
|
-
}
|
|
1588
|
-
}
|
|
1589
1533
|
@keyframes steam {
|
|
1590
1534
|
0% {
|
|
1591
1535
|
opacity: 0;
|
|
@@ -1824,187 +1768,16 @@ body.act-running #claude {
|
|
|
1824
1768
|
body.act-running #terminal {
|
|
1825
1769
|
opacity: 1;
|
|
1826
1770
|
}
|
|
1827
|
-
.tm-win {
|
|
1828
|
-
fill: #14161a;
|
|
1829
|
-
}
|
|
1830
|
-
.tm-border {
|
|
1831
|
-
fill: none;
|
|
1832
|
-
stroke: rgba(255, 255, 255, 0.14);
|
|
1833
|
-
stroke-width: 0.7;
|
|
1834
|
-
}
|
|
1835
|
-
.tm-bar {
|
|
1836
|
-
fill: #262a30;
|
|
1837
|
-
}
|
|
1838
|
-
.tm-d1 {
|
|
1839
|
-
fill: #ff5f57;
|
|
1840
|
-
}
|
|
1841
|
-
.tm-d2 {
|
|
1842
|
-
fill: #febc2e;
|
|
1843
|
-
}
|
|
1844
|
-
.tm-d3 {
|
|
1845
|
-
fill: #28c840;
|
|
1846
|
-
}
|
|
1847
|
-
.tm-prompt-c {
|
|
1848
|
-
fill: #6fcf6f;
|
|
1849
|
-
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1850
|
-
font-size: 7.5px;
|
|
1851
|
-
font-weight: 700;
|
|
1852
|
-
}
|
|
1853
|
-
.tm-head {
|
|
1854
|
-
fill: #d6d9de;
|
|
1855
|
-
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1856
|
-
font-size: 7px;
|
|
1857
|
-
font-weight: 600;
|
|
1858
|
-
}
|
|
1859
|
-
.tm-txt {
|
|
1860
|
-
fill: #cfd3d8;
|
|
1861
|
-
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1862
|
-
font-size: 6.5px;
|
|
1863
|
-
}
|
|
1864
|
-
.tm-dots {
|
|
1865
|
-
fill: #8a9098;
|
|
1866
|
-
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1867
|
-
font-size: 7px;
|
|
1868
|
-
font-weight: 700;
|
|
1869
|
-
}
|
|
1870
|
-
.tm-cursor {
|
|
1871
|
-
fill: #6fcf6f;
|
|
1872
|
-
}
|
|
1873
|
-
.tm-check {
|
|
1874
|
-
fill: none;
|
|
1875
|
-
stroke: #28c840;
|
|
1876
|
-
stroke-width: 1.5;
|
|
1877
|
-
stroke-linecap: round;
|
|
1878
|
-
stroke-linejoin: round;
|
|
1879
|
-
}
|
|
1880
|
-
.tm-spin {
|
|
1881
|
-
fill: none;
|
|
1882
|
-
stroke: #cfd3d8;
|
|
1883
|
-
stroke-width: 1.6;
|
|
1884
|
-
stroke-linecap: round;
|
|
1885
|
-
transform-box: view-box;
|
|
1886
|
-
transform-origin: 8px 54px; /* the spinner's own centre */
|
|
1887
|
-
}
|
|
1888
|
-
.tm-done-txt {
|
|
1889
|
-
fill: #6fcf6f;
|
|
1890
|
-
font-family: "SF Mono", ui-monospace, Menlo, monospace;
|
|
1891
|
-
font-size: 6.5px;
|
|
1892
|
-
font-weight: 600;
|
|
1893
|
-
}
|
|
1894
|
-
/* task log lifecycle (5s): lines stream in → Waiting spins → ✓ Done → restart */
|
|
1895
|
-
.tskA,
|
|
1896
|
-
.tskB,
|
|
1897
|
-
.tskC,
|
|
1898
|
-
.tskWait,
|
|
1899
|
-
.tskDone {
|
|
1900
|
-
opacity: 0;
|
|
1901
|
-
}
|
|
1902
|
-
body.act-running .tskA {
|
|
1903
|
-
animation: tskA 5s linear infinite;
|
|
1904
|
-
}
|
|
1905
|
-
body.act-running .tskB {
|
|
1906
|
-
animation: tskB 5s linear infinite;
|
|
1907
|
-
}
|
|
1908
|
-
body.act-running .tskC {
|
|
1909
|
-
animation: tskC 5s linear infinite;
|
|
1910
|
-
}
|
|
1911
|
-
body.act-running .tskWait {
|
|
1912
|
-
animation: tskWait 5s linear infinite;
|
|
1913
|
-
}
|
|
1914
|
-
body.act-running .tskDone {
|
|
1915
|
-
animation: tskDone 5s linear infinite;
|
|
1916
|
-
}
|
|
1917
|
-
body.act-running .tm-spin {
|
|
1918
|
-
animation: tm-spin-rot 0.8s linear infinite;
|
|
1919
|
-
}
|
|
1920
|
-
body.act-running .tm-cursor {
|
|
1921
|
-
animation: cursor-blink 1s steps(1, end) infinite;
|
|
1922
|
-
}
|
|
1923
|
-
@keyframes tm-spin-rot {
|
|
1924
|
-
to {
|
|
1925
|
-
transform: rotate(360deg);
|
|
1926
|
-
}
|
|
1927
|
-
}
|
|
1928
|
-
@keyframes tskA {
|
|
1929
|
-
0%,
|
|
1930
|
-
4% {
|
|
1931
|
-
opacity: 0;
|
|
1932
|
-
}
|
|
1933
|
-
8%,
|
|
1934
|
-
90% {
|
|
1935
|
-
opacity: 1;
|
|
1936
|
-
}
|
|
1937
|
-
96%,
|
|
1938
|
-
100% {
|
|
1939
|
-
opacity: 0;
|
|
1940
|
-
}
|
|
1941
|
-
}
|
|
1942
|
-
@keyframes tskB {
|
|
1943
|
-
0%,
|
|
1944
|
-
16% {
|
|
1945
|
-
opacity: 0;
|
|
1946
|
-
}
|
|
1947
|
-
20%,
|
|
1948
|
-
90% {
|
|
1949
|
-
opacity: 1;
|
|
1950
|
-
}
|
|
1951
|
-
96%,
|
|
1952
|
-
100% {
|
|
1953
|
-
opacity: 0;
|
|
1954
|
-
}
|
|
1955
|
-
}
|
|
1956
|
-
@keyframes tskC {
|
|
1957
|
-
0%,
|
|
1958
|
-
30% {
|
|
1959
|
-
opacity: 0;
|
|
1960
|
-
}
|
|
1961
|
-
34%,
|
|
1962
|
-
90% {
|
|
1963
|
-
opacity: 1;
|
|
1964
|
-
}
|
|
1965
|
-
96%,
|
|
1966
|
-
100% {
|
|
1967
|
-
opacity: 0;
|
|
1968
|
-
}
|
|
1969
|
-
}
|
|
1970
|
-
@keyframes tskWait {
|
|
1971
|
-
0%,
|
|
1972
|
-
6% {
|
|
1973
|
-
opacity: 0;
|
|
1974
|
-
}
|
|
1975
|
-
10%,
|
|
1976
|
-
46% {
|
|
1977
|
-
opacity: 1;
|
|
1978
|
-
}
|
|
1979
|
-
52%,
|
|
1980
|
-
100% {
|
|
1981
|
-
opacity: 0;
|
|
1982
|
-
}
|
|
1983
|
-
}
|
|
1984
|
-
@keyframes tskDone {
|
|
1985
|
-
0%,
|
|
1986
|
-
52% {
|
|
1987
|
-
opacity: 0;
|
|
1988
|
-
}
|
|
1989
|
-
58%,
|
|
1990
|
-
90% {
|
|
1991
|
-
opacity: 1;
|
|
1992
|
-
}
|
|
1993
|
-
96%,
|
|
1994
|
-
100% {
|
|
1995
|
-
opacity: 0;
|
|
1996
|
-
}
|
|
1997
|
-
}
|
|
1998
1771
|
|
|
1999
1772
|
/* status */
|
|
2000
1773
|
#statusline {
|
|
2001
|
-
margin-top: 2px;
|
|
2002
|
-
font-size: 11.5px;
|
|
2003
|
-
color: var(--muted);
|
|
2004
1774
|
display: flex;
|
|
2005
1775
|
align-items: center;
|
|
2006
|
-
justify-content: center;
|
|
2007
1776
|
gap: 6px;
|
|
1777
|
+
padding: 11px 0 12px; /* clear the stage's edge — the live pill sat on it */
|
|
1778
|
+
border-bottom: 1px solid var(--hair);
|
|
1779
|
+
font-size: 11px;
|
|
1780
|
+
color: #c4b29f;
|
|
2008
1781
|
}
|
|
2009
1782
|
#statusline .sep {
|
|
2010
1783
|
opacity: 0.4;
|
|
@@ -2020,6 +1793,8 @@ body.act-running .tm-cursor {
|
|
|
2020
1793
|
color: var(--text);
|
|
2021
1794
|
}
|
|
2022
1795
|
#rate {
|
|
1796
|
+
font-size: 10px;
|
|
1797
|
+
color: #978572;
|
|
2023
1798
|
font-variant-numeric: tabular-nums;
|
|
2024
1799
|
}
|
|
2025
1800
|
body.state-working #status-dot {
|
|
@@ -2046,8 +1821,8 @@ body.state-tired #status-text {
|
|
|
2046
1821
|
.sub {
|
|
2047
1822
|
/* small enough that "resets in 69h 15m (Fri 7:01 AM) · 1.02B tokens" stays on one line */
|
|
2048
1823
|
font-size: 9px;
|
|
2049
|
-
color:
|
|
2050
|
-
margin-top:
|
|
1824
|
+
color: #96816d;
|
|
1825
|
+
margin-top: 5px;
|
|
2051
1826
|
letter-spacing: 0px;
|
|
2052
1827
|
white-space: nowrap;
|
|
2053
1828
|
overflow: hidden;
|
|
@@ -2068,120 +1843,146 @@ body.state-tired #status-text {
|
|
|
2068
1843
|
|
|
2069
1844
|
/* 30-day map */
|
|
2070
1845
|
#heat {
|
|
2071
|
-
|
|
1846
|
+
padding-top: 0; /* #heat-meta draws its own rule and padding, like a .sec */
|
|
2072
1847
|
}
|
|
2073
1848
|
#heat-row {
|
|
2074
1849
|
display: flex;
|
|
2075
1850
|
gap: 2px;
|
|
2076
|
-
height:
|
|
1851
|
+
height: 7px;
|
|
1852
|
+
margin-top: 7px;
|
|
2077
1853
|
}
|
|
1854
|
+
/* a warm ramp that climbs in lightness AND saturation at once: opacity alone
|
|
1855
|
+
collapses the low steps into one smudge against the dark card, so the busy
|
|
1856
|
+
days and the quiet ones have to differ in colour, not just in strength */
|
|
2078
1857
|
.sq {
|
|
2079
1858
|
flex: 1;
|
|
2080
|
-
border-radius:
|
|
2081
|
-
background: rgba(255, 255, 255, 0.
|
|
1859
|
+
border-radius: 1.5px;
|
|
1860
|
+
background: rgba(255, 255, 255, 0.05); /* no activity */
|
|
2082
1861
|
transition: background 0.4s;
|
|
2083
1862
|
}
|
|
2084
1863
|
.sq.lv1 {
|
|
2085
|
-
background: #
|
|
1864
|
+
background: #6b4430;
|
|
2086
1865
|
}
|
|
2087
1866
|
.sq.lv2 {
|
|
2088
|
-
background: #
|
|
1867
|
+
background: #9c6340;
|
|
2089
1868
|
}
|
|
2090
1869
|
.sq.lv3 {
|
|
2091
|
-
background: #
|
|
1870
|
+
background: #cf8b52;
|
|
2092
1871
|
}
|
|
2093
1872
|
.sq.lv4 {
|
|
2094
|
-
background: #
|
|
1873
|
+
background: #f0b464;
|
|
2095
1874
|
}
|
|
2096
1875
|
#heat-meta {
|
|
2097
1876
|
display: flex;
|
|
2098
1877
|
justify-content: space-between;
|
|
2099
|
-
font-size:
|
|
2100
|
-
color:
|
|
2101
|
-
|
|
2102
|
-
|
|
1878
|
+
font-size: 9px;
|
|
1879
|
+
color: #a58d77;
|
|
1880
|
+
border-top: 1px solid var(--hair);
|
|
1881
|
+
padding-top: 9px;
|
|
1882
|
+
margin-top: 0;
|
|
1883
|
+
letter-spacing: 0;
|
|
2103
1884
|
}
|
|
2104
1885
|
#month-total {
|
|
2105
|
-
font-weight:
|
|
2106
|
-
color:
|
|
1886
|
+
font-weight: 400;
|
|
1887
|
+
color: #a58d77;
|
|
2107
1888
|
font-variant-numeric: tabular-nums;
|
|
2108
1889
|
}
|
|
2109
1890
|
|
|
2110
|
-
/* divider */
|
|
2111
|
-
.divider {
|
|
2112
|
-
height: 0.5px;
|
|
2113
|
-
background: var(--hair);
|
|
2114
|
-
margin: 12px 0;
|
|
2115
|
-
}
|
|
2116
|
-
|
|
2117
1891
|
/* meters */
|
|
1892
|
+
#limits-meters {
|
|
1893
|
+
padding: 0 0 12px;
|
|
1894
|
+
}
|
|
1895
|
+
.meter {
|
|
1896
|
+
margin-top: 12px;
|
|
1897
|
+
}
|
|
2118
1898
|
.meter + .meter,
|
|
2119
1899
|
#scoped-meters .meter {
|
|
2120
|
-
margin-top:
|
|
1900
|
+
margin-top: 12px;
|
|
2121
1901
|
}
|
|
2122
1902
|
.meter-top {
|
|
2123
1903
|
display: flex;
|
|
2124
1904
|
justify-content: space-between;
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
1905
|
+
align-items: center;
|
|
1906
|
+
font-size: 11px;
|
|
1907
|
+
color: #cbb9a7;
|
|
1908
|
+
margin-bottom: 0;
|
|
2128
1909
|
}
|
|
2129
1910
|
.meter-top i {
|
|
2130
1911
|
font-style: italic;
|
|
2131
1912
|
opacity: 0.5;
|
|
2132
1913
|
font-size: 9px;
|
|
2133
1914
|
}
|
|
1915
|
+
/* the number is plain while there is nothing to worry about — colour is the
|
|
1916
|
+
warning, so spending it at 5% leaves nothing to say at 90% */
|
|
2134
1917
|
.meter-top span:last-child {
|
|
2135
|
-
font-
|
|
1918
|
+
font-size: 12px;
|
|
1919
|
+
font-weight: 500;
|
|
2136
1920
|
color: var(--text);
|
|
2137
1921
|
font-variant-numeric: tabular-nums;
|
|
1922
|
+
transition: color 0.6s;
|
|
2138
1923
|
}
|
|
2139
1924
|
.track {
|
|
2140
1925
|
width: 100%;
|
|
2141
|
-
height:
|
|
2142
|
-
background:
|
|
2143
|
-
border-radius:
|
|
1926
|
+
height: 4px;
|
|
1927
|
+
background: rgba(255, 255, 255, 0.035);
|
|
1928
|
+
border-radius: 4px;
|
|
2144
1929
|
overflow: hidden;
|
|
1930
|
+
margin-top: 7px;
|
|
2145
1931
|
}
|
|
2146
1932
|
.fill {
|
|
2147
1933
|
height: 100%;
|
|
2148
1934
|
width: 0%;
|
|
2149
|
-
background:
|
|
2150
|
-
border-radius:
|
|
1935
|
+
background: var(--coral);
|
|
1936
|
+
border-radius: 4px;
|
|
2151
1937
|
transition:
|
|
2152
|
-
width 0.7s cubic-bezier(0.
|
|
2153
|
-
background 0.
|
|
1938
|
+
width 0.7s cubic-bezier(0.22, 1, 0.36, 1),
|
|
1939
|
+
background 0.7s;
|
|
2154
1940
|
}
|
|
2155
1941
|
.fill.week {
|
|
2156
|
-
background:
|
|
1942
|
+
background: var(--coral);
|
|
1943
|
+
}
|
|
1944
|
+
/* the ramp, shared by the bars and their numbers */
|
|
1945
|
+
.fill.mid {
|
|
1946
|
+
background: #e5b55d;
|
|
1947
|
+
}
|
|
1948
|
+
.fill.hot,
|
|
1949
|
+
.fill.high.hot {
|
|
1950
|
+
background: #ee705e;
|
|
2157
1951
|
}
|
|
2158
|
-
.
|
|
2159
|
-
|
|
1952
|
+
.meter-top span:last-child.mid {
|
|
1953
|
+
color: #e5b55d;
|
|
1954
|
+
}
|
|
1955
|
+
.meter-top span:last-child.hot {
|
|
1956
|
+
color: #ee705e;
|
|
2160
1957
|
}
|
|
2161
1958
|
|
|
2162
1959
|
/* by model / by project — collapsible sections */
|
|
1960
|
+
.sec {
|
|
1961
|
+
border-top: 1px solid var(--hair);
|
|
1962
|
+
padding: 9px 0;
|
|
1963
|
+
}
|
|
2163
1964
|
.sec-head {
|
|
2164
1965
|
display: flex;
|
|
2165
1966
|
align-items: center;
|
|
2166
1967
|
justify-content: space-between;
|
|
2167
1968
|
width: 100%;
|
|
2168
1969
|
padding: 0;
|
|
2169
|
-
margin-bottom:
|
|
1970
|
+
margin-bottom: 0;
|
|
2170
1971
|
background: none;
|
|
2171
1972
|
border: 0;
|
|
2172
1973
|
cursor: pointer;
|
|
2173
1974
|
font: inherit;
|
|
2174
|
-
font-size:
|
|
2175
|
-
color:
|
|
2176
|
-
letter-spacing: 0
|
|
1975
|
+
font-size: 10px;
|
|
1976
|
+
color: #a38c78;
|
|
1977
|
+
letter-spacing: 0;
|
|
2177
1978
|
-webkit-app-region: no-drag;
|
|
2178
1979
|
}
|
|
2179
1980
|
.sec-head:hover {
|
|
2180
1981
|
color: var(--text);
|
|
2181
1982
|
}
|
|
2182
1983
|
.sec-chev {
|
|
2183
|
-
width:
|
|
2184
|
-
height:
|
|
1984
|
+
width: 10px;
|
|
1985
|
+
height: 10px;
|
|
2185
1986
|
fill: none;
|
|
2186
1987
|
stroke: currentColor;
|
|
2187
1988
|
stroke-width: 2.2;
|
|
@@ -2192,52 +1993,81 @@ body.state-tired #status-text {
|
|
|
2192
1993
|
.sec.folded .sec-chev {
|
|
2193
1994
|
transform: rotate(-90deg);
|
|
2194
1995
|
}
|
|
1996
|
+
/* 0fr -> 1fr is the only way a height-to-content box can be animated; the inner
|
|
1997
|
+
wrapper is what actually clips, so the rows never reflow mid-slide */
|
|
1998
|
+
.sec-body {
|
|
1999
|
+
display: grid;
|
|
2000
|
+
grid-template-rows: 1fr;
|
|
2001
|
+
transition: grid-template-rows 0.42s cubic-bezier(0.22, 1, 0.36, 1);
|
|
2002
|
+
}
|
|
2003
|
+
.sec-body > div {
|
|
2004
|
+
min-height: 0;
|
|
2005
|
+
overflow: hidden;
|
|
2006
|
+
}
|
|
2195
2007
|
.sec.folded .sec-body {
|
|
2196
|
-
|
|
2008
|
+
grid-template-rows: 0fr;
|
|
2197
2009
|
}
|
|
2198
2010
|
.sec.folded .sec-head {
|
|
2199
2011
|
margin-bottom: 0;
|
|
2200
2012
|
}
|
|
2201
2013
|
.mrow {
|
|
2202
|
-
display:
|
|
2014
|
+
display: grid;
|
|
2015
|
+
grid-template-columns: 1fr 40px 44px;
|
|
2203
2016
|
align-items: center;
|
|
2204
2017
|
gap: 7px;
|
|
2205
|
-
font-size:
|
|
2206
|
-
color:
|
|
2207
|
-
margin-
|
|
2018
|
+
font-size: 10px;
|
|
2019
|
+
color: #c7b19a;
|
|
2020
|
+
margin-top: 7px;
|
|
2021
|
+
margin-bottom: 0;
|
|
2208
2022
|
}
|
|
2209
2023
|
.mrow .mname {
|
|
2210
|
-
/*
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2024
|
+
/* the grid now fixes the bar column, so every track starts at the same x
|
|
2025
|
+
without measuring the names */
|
|
2026
|
+
display: flex;
|
|
2027
|
+
align-items: center;
|
|
2028
|
+
gap: 5px;
|
|
2029
|
+
font-weight: 400;
|
|
2214
2030
|
overflow: hidden;
|
|
2215
2031
|
text-overflow: ellipsis;
|
|
2216
2032
|
white-space: nowrap;
|
|
2217
2033
|
}
|
|
2218
|
-
/*
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2034
|
+
/* a rank dot, so a row reads as an entry rather than a bare label */
|
|
2035
|
+
.mrow .mname::before {
|
|
2036
|
+
content: "";
|
|
2037
|
+
flex: none;
|
|
2038
|
+
width: 3px;
|
|
2039
|
+
height: 3px;
|
|
2040
|
+
border-radius: 50%;
|
|
2041
|
+
background: #b1967c;
|
|
2042
|
+
}
|
|
2043
|
+
.mrow:nth-child(1) .mname::before {
|
|
2044
|
+
background: var(--coral);
|
|
2045
|
+
}
|
|
2046
|
+
.mrow:nth-child(2) .mname::before {
|
|
2047
|
+
background: #c8a475;
|
|
2222
2048
|
}
|
|
2049
|
+
.mrow:nth-child(3) .mname::before {
|
|
2050
|
+
background: #807769;
|
|
2051
|
+
}
|
|
2052
|
+
/* project names are paths, not four-letter families — the grid's first column
|
|
2053
|
+
takes the slack and clips the rest, full name on the row's title attribute */
|
|
2223
2054
|
.mrow .mbar {
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
border-radius: 3px;
|
|
2055
|
+
height: 3px;
|
|
2056
|
+
background: rgba(255, 255, 255, 0.024);
|
|
2057
|
+
border-radius: 2px;
|
|
2228
2058
|
overflow: hidden;
|
|
2229
2059
|
}
|
|
2230
2060
|
.mrow .mbar > i {
|
|
2231
2061
|
display: block;
|
|
2232
2062
|
height: 100%;
|
|
2233
|
-
background:
|
|
2234
|
-
border-radius:
|
|
2063
|
+
background: #c2865e;
|
|
2064
|
+
border-radius: 2px;
|
|
2235
2065
|
transition: width 0.6s ease;
|
|
2236
2066
|
}
|
|
2237
2067
|
.mrow .mval {
|
|
2238
|
-
|
|
2068
|
+
text-align: right;
|
|
2239
2069
|
font-size: 10px;
|
|
2240
|
-
color:
|
|
2070
|
+
color: #a48b74;
|
|
2241
2071
|
font-variant-numeric: tabular-nums;
|
|
2242
2072
|
}
|
|
2243
2073
|
|