codex-work-receipt 0.10.1 → 0.11.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.
@@ -0,0 +1,2270 @@
1
+ :root {
2
+ --ink: #171713;
3
+ --paper: #ffffff;
4
+ --desk: #eeeae3;
5
+ --desk-soft: #f6f3ee;
6
+ --muted: #6d6c65;
7
+ --line: #aaa8a0;
8
+ --accent: #f3f2ed;
9
+ --shadow: rgba(31, 30, 24, .18);
10
+ --mark-bg: #ffffff;
11
+ --mark-fg: #171713;
12
+ --night-0: #061020;
13
+ --night-1: #0b1c32;
14
+ --night-2: #17314b;
15
+ --night-3: #315064;
16
+ --mint: #a8dad2;
17
+ --lamp: #ffc879;
18
+ --wood: #62483c;
19
+ --wood-dark: #30292a;
20
+ --scene-text: #f5f1e7;
21
+ --wind-speed: 11s;
22
+ }
23
+
24
+ html[data-theme="diner"] {
25
+ --ink: #a7475d;
26
+ --paper: #f7dde3;
27
+ --desk: #f2ece8;
28
+ --desk-soft: #faf6f3;
29
+ --muted: #b46b7b;
30
+ --line: #d29aa7;
31
+ --accent: #f0cdd6;
32
+ --shadow: rgba(116, 58, 72, .18);
33
+ --mark-bg: #f7dde3;
34
+ --mark-fg: #a7475d;
35
+ }
36
+
37
+ html[data-theme="payroll"] {
38
+ --ink: #ffe077;
39
+ --paper: #66742f;
40
+ --desk: #edebe3;
41
+ --desk-soft: #f7f5ef;
42
+ --muted: #e8cf74;
43
+ --line: #9aa35d;
44
+ --accent: #5c682b;
45
+ --shadow: rgba(48, 57, 19, .24);
46
+ --mark-bg: #66742f;
47
+ --mark-fg: #ffe077;
48
+ }
49
+
50
+ * { box-sizing: border-box; }
51
+ html { scroll-behavior: smooth; background: var(--night-0); }
52
+
53
+ body {
54
+ margin: 0;
55
+ min-width: 320px;
56
+ min-height: 100vh;
57
+ overflow-x: hidden;
58
+ background:
59
+ radial-gradient(circle at 22% 18%, rgba(157, 208, 211, .12), transparent 24%),
60
+ linear-gradient(180deg, var(--night-0) 0, var(--night-1) 34%, var(--night-2) 68%, #192635 100%);
61
+ color: var(--scene-text);
62
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
63
+ }
64
+
65
+ button, a { -webkit-tap-highlight-color: transparent; }
66
+ button { font: inherit; }
67
+
68
+ .ambient {
69
+ position: fixed;
70
+ inset: 0;
71
+ z-index: 0;
72
+ overflow: hidden;
73
+ pointer-events: none;
74
+ }
75
+
76
+ .stars,
77
+ .stars::before,
78
+ .stars::after {
79
+ position: absolute;
80
+ inset: 0;
81
+ content: "";
82
+ background-repeat: repeat;
83
+ }
84
+
85
+ .stars {
86
+ opacity: .75;
87
+ background-image:
88
+ radial-gradient(circle, rgba(255,255,255,.95) 0 1px, transparent 1.4px),
89
+ radial-gradient(circle, rgba(168,218,210,.85) 0 1px, transparent 1.5px);
90
+ background-position: 24px 32px, 137px 91px;
91
+ background-size: 191px 173px, 263px 229px;
92
+ animation: star-drift 70s linear infinite;
93
+ }
94
+
95
+ .stars::before {
96
+ opacity: .4;
97
+ background-image: radial-gradient(circle, rgba(255,220,171,.9) 0 1px, transparent 1.8px);
98
+ background-position: 71px 14px;
99
+ background-size: 311px 277px;
100
+ }
101
+
102
+ .stars::after {
103
+ opacity: .25;
104
+ background-image: radial-gradient(circle, #fff 0 1.5px, transparent 2px);
105
+ background-position: 17px 88px;
106
+ background-size: 437px 389px;
107
+ }
108
+
109
+ .haze {
110
+ position: absolute;
111
+ inset: auto -15% 7vh;
112
+ height: 42vh;
113
+ opacity: .44;
114
+ background:
115
+ radial-gradient(ellipse at 25% 60%, rgba(150,188,188,.4), transparent 32%),
116
+ radial-gradient(ellipse at 75% 62%, rgba(119,160,166,.28), transparent 28%);
117
+ filter: blur(28px);
118
+ animation: haze-breathe 12s ease-in-out infinite alternate;
119
+ }
120
+
121
+ .world-header {
122
+ position: fixed;
123
+ top: 0;
124
+ left: 0;
125
+ right: 0;
126
+ z-index: 80;
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: space-between;
130
+ gap: 18px;
131
+ min-height: 72px;
132
+ padding: 14px clamp(18px, 3vw, 48px);
133
+ border-bottom: 1px solid rgba(210,232,227,.13);
134
+ background: linear-gradient(180deg, rgba(4,13,27,.9), rgba(4,13,27,.42));
135
+ backdrop-filter: blur(14px);
136
+ }
137
+
138
+ .office-id { display: flex; align-items: center; gap: 12px; min-width: 0; }
139
+
140
+ .office-id__mark {
141
+ display: grid;
142
+ place-items: center;
143
+ width: 38px;
144
+ height: 38px;
145
+ flex: 0 0 auto;
146
+ border: 1px solid rgba(168,218,210,.5);
147
+ border-radius: 50%;
148
+ background: rgba(168,218,210,.08);
149
+ color: var(--mint);
150
+ font: 700 17px/1 ui-monospace, SFMono-Regular, Menlo, monospace;
151
+ }
152
+
153
+ .office-id strong,
154
+ .office-id span { display: block; }
155
+ .office-id strong { font-size: 13px; font-weight: 650; letter-spacing: .14em; }
156
+ .office-id span { margin-top: 4px; color: rgba(226,239,235,.52); font: 9px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .15em; }
157
+
158
+ .header-status {
159
+ display: flex;
160
+ align-items: center;
161
+ gap: 8px;
162
+ color: rgba(238,242,233,.76);
163
+ font: 10px/1.3 ui-monospace, SFMono-Regular, Menlo, monospace;
164
+ letter-spacing: .08em;
165
+ white-space: nowrap;
166
+ }
167
+
168
+ .status-light {
169
+ width: 7px;
170
+ height: 7px;
171
+ border-radius: 50%;
172
+ background: var(--mint);
173
+ box-shadow: 0 0 0 4px rgba(168,218,210,.09), 0 0 14px rgba(168,218,210,.8);
174
+ animation: signal-pulse 2.8s ease-in-out infinite;
175
+ }
176
+
177
+ .world-button {
178
+ display: inline-flex;
179
+ align-items: center;
180
+ justify-content: center;
181
+ gap: 7px;
182
+ min-height: 34px;
183
+ padding: 7px 12px;
184
+ border: 1px solid rgba(216,235,230,.2);
185
+ border-radius: 999px;
186
+ background: rgba(10,28,45,.52);
187
+ color: rgba(242,244,235,.86);
188
+ cursor: pointer;
189
+ font-size: 11px;
190
+ transition: border-color .2s ease, background .2s ease, transform .2s ease;
191
+ }
192
+
193
+ .world-button:hover { border-color: rgba(216,235,230,.44); background: rgba(24,49,68,.75); transform: translateY(-1px); }
194
+ .world-button svg { width: 14px; height: 14px; }
195
+
196
+ .world {
197
+ position: relative;
198
+ z-index: 2;
199
+ display: grid;
200
+ grid-template-columns: minmax(520px, 1fr) 540px;
201
+ gap: clamp(22px, 3vw, 48px);
202
+ width: min(100%, 1540px);
203
+ min-height: 100vh;
204
+ margin: 0 auto;
205
+ padding: 0 clamp(22px, 3vw, 48px);
206
+ }
207
+
208
+ .scene {
209
+ position: sticky;
210
+ top: 0;
211
+ height: 100vh;
212
+ min-height: 690px;
213
+ overflow: visible;
214
+ }
215
+
216
+ .scene-intro {
217
+ position: absolute;
218
+ top: clamp(110px, 14vh, 150px);
219
+ left: clamp(0px, 3vw, 42px);
220
+ z-index: 20;
221
+ width: min(430px, 72%);
222
+ }
223
+
224
+ .scene-kicker {
225
+ display: flex;
226
+ align-items: center;
227
+ gap: 10px;
228
+ margin: 0 0 14px;
229
+ color: var(--mint);
230
+ font: 10px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace;
231
+ letter-spacing: .18em;
232
+ }
233
+
234
+ .scene-kicker::before { width: 34px; height: 1px; content: ""; background: rgba(168,218,210,.58); }
235
+
236
+ .scene-intro h1 {
237
+ margin: 0;
238
+ font-family: "Songti SC", "STSong", "Noto Serif CJK SC", serif;
239
+ font-size: clamp(38px, 4.5vw, 70px);
240
+ font-weight: 500;
241
+ line-height: 1.06;
242
+ letter-spacing: -.045em;
243
+ text-wrap: balance;
244
+ text-shadow: 0 6px 30px rgba(0,0,0,.2);
245
+ }
246
+
247
+ .scene-intro h1 em { color: var(--lamp); font-style: normal; }
248
+ .scene-intro p:last-child { max-width: 29em; margin: 18px 0 0; color: rgba(224,235,232,.63); font-size: 13px; line-height: 1.8; }
249
+
250
+ .moon {
251
+ position: absolute;
252
+ top: 15vh;
253
+ right: 3vw;
254
+ width: clamp(92px, 11vw, 155px);
255
+ aspect-ratio: 1;
256
+ border-radius: 50%;
257
+ opacity: .88;
258
+ background: radial-gradient(circle at 62% 60%, rgba(125,155,159,.2) 0 9%, transparent 9.5%), #dce5d7;
259
+ box-shadow: 0 0 80px rgba(198,225,213,.18), 0 0 180px rgba(159,197,190,.08);
260
+ }
261
+
262
+ .mountains {
263
+ position: absolute;
264
+ left: -20vw;
265
+ right: -4vw;
266
+ bottom: 7vh;
267
+ height: 39vh;
268
+ background:
269
+ linear-gradient(145deg, transparent 48%, #1a2c3b 49% 72%, transparent 73%) 0 100% / 47% 100% no-repeat,
270
+ linear-gradient(215deg, transparent 48%, #20384a 49% 76%, transparent 77%) 46% 100% / 53% 90% no-repeat,
271
+ linear-gradient(145deg, transparent 48%, #132435 49% 76%, transparent 77%) 100% 100% / 48% 78% no-repeat;
272
+ filter: drop-shadow(0 -25px 45px rgba(23,49,70,.55));
273
+ }
274
+
275
+ .mountains::after { position: absolute; left: 0; right: 0; bottom: -8vh; height: 20vh; content: ""; background: linear-gradient(180deg, #152332, #0c1725); }
276
+
277
+ .cliff {
278
+ position: absolute;
279
+ right: -6vw;
280
+ bottom: 0;
281
+ width: 76%;
282
+ height: 31vh;
283
+ min-height: 220px;
284
+ background:
285
+ radial-gradient(ellipse at 18% 15%, rgba(90,107,105,.22) 0 1%, transparent 1.5%),
286
+ linear-gradient(158deg, #2b3c40 0 26%, #1a292f 27% 62%, #111f29 63%);
287
+ clip-path: polygon(9% 0, 100% 0, 100% 100%, 0 100%, 6% 68%, 2% 42%);
288
+ }
289
+
290
+ .grass {
291
+ position: absolute;
292
+ right: -5vw;
293
+ bottom: 30vh;
294
+ z-index: 4;
295
+ width: 73%;
296
+ height: 22px;
297
+ border-top: 2px solid rgba(71,100,92,.75);
298
+ background: repeating-linear-gradient(76deg, transparent 0 8px, rgba(91,124,108,.7) 9px 10px, transparent 11px 18px);
299
+ transform-origin: center bottom;
300
+ animation: grass-sway 3.8s ease-in-out infinite alternate;
301
+ }
302
+
303
+ .office {
304
+ position: absolute;
305
+ right: clamp(-12px, 1vw, 14px);
306
+ bottom: 24vh;
307
+ z-index: 10;
308
+ width: clamp(310px, 29vw, 400px);
309
+ height: clamp(245px, 24vw, 320px);
310
+ filter: drop-shadow(0 28px 35px rgba(0,0,0,.38));
311
+ }
312
+
313
+ .antenna {
314
+ position: absolute;
315
+ top: -82px;
316
+ left: 55%;
317
+ width: 4px;
318
+ height: 90px;
319
+ background: #17272f;
320
+ transform: rotate(-4deg);
321
+ transform-origin: bottom;
322
+ }
323
+
324
+ .antenna::before,
325
+ .antenna::after {
326
+ position: absolute;
327
+ border: 1px solid rgba(168,218,210,.58);
328
+ border-radius: 50%;
329
+ content: "";
330
+ animation: radio-wave 2.8s ease-out infinite;
331
+ }
332
+
333
+ .antenna::before { top: -9px; left: -9px; width: 20px; height: 20px; }
334
+ .antenna::after { top: -17px; left: -17px; width: 36px; height: 36px; animation-delay: .7s; }
335
+ .antenna i { position: absolute; top: -3px; left: -3px; width: 10px; height: 10px; border-radius: 50%; background: var(--mint); box-shadow: 0 0 15px var(--mint); }
336
+
337
+ .roof { position: absolute; inset: 0 0 auto; height: 30%; background: linear-gradient(135deg, #314850, #20323b 70%); clip-path: polygon(8% 0, 92% 0, 100% 100%, 0 100%); }
338
+ .wall { position: absolute; left: 8%; right: 4%; top: 27%; bottom: 0; border: 1px solid rgba(255,255,255,.07); background: linear-gradient(180deg, #6a5043, #493a36); box-shadow: inset 0 -28px 50px rgba(27,24,26,.35); }
339
+ .office-sign { position: absolute; top: 15%; left: 22%; z-index: 3; padding: 8px 14px 7px; border: 1px solid rgba(245,208,150,.38); background: #22363c; color: #f6cf91; font: 600 10px/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .18em; box-shadow: 0 8px 16px rgba(0,0,0,.22); animation: sign-swing 5.4s ease-in-out infinite; transform-origin: top center; }
340
+
341
+ .window {
342
+ position: absolute;
343
+ top: 37%;
344
+ left: 15%;
345
+ z-index: 3;
346
+ width: 43%;
347
+ height: 46%;
348
+ overflow: hidden;
349
+ border: 7px solid #2c3231;
350
+ background:
351
+ linear-gradient(90deg, transparent 48%, rgba(44,50,49,.65) 49% 52%, transparent 53%),
352
+ linear-gradient(180deg, transparent 48%, rgba(44,50,49,.65) 49% 52%, transparent 53%),
353
+ radial-gradient(circle at 45% 80%, rgba(255,200,121,.9), rgba(171,108,63,.92) 42%, #513c34 80%);
354
+ box-shadow: 0 0 45px rgba(255,183,92,.38), inset 0 0 24px rgba(255,219,160,.38);
355
+ }
356
+
357
+ .pet {
358
+ position: absolute;
359
+ left: 50%;
360
+ bottom: -10px;
361
+ z-index: 2;
362
+ width: min(112px, 80%);
363
+ height: auto;
364
+ transform: translateX(-50%);
365
+ filter: drop-shadow(0 7px 7px rgba(35,24,19,.28));
366
+ }
367
+
368
+ .door { position: absolute; right: 10%; bottom: 0; z-index: 2; width: 23%; height: 52%; border: 5px solid #302f2d; background: linear-gradient(90deg, #4b3b35, #5d463b); }
369
+ .door::after { position: absolute; top: 52%; right: 10px; width: 5px; height: 5px; border-radius: 50%; content: ""; background: var(--lamp); box-shadow: 0 0 8px rgba(255,200,121,.6); }
370
+
371
+ .printer {
372
+ position: absolute;
373
+ top: 45%;
374
+ right: -15%;
375
+ z-index: 8;
376
+ width: 33%;
377
+ height: 31%;
378
+ border: 1px solid #151e22;
379
+ border-radius: 8px 8px 4px 4px;
380
+ background: linear-gradient(145deg, #536269, #28383e 72%);
381
+ box-shadow: 0 14px 22px rgba(0,0,0,.32), inset 0 1px 0 rgba(255,255,255,.12);
382
+ }
383
+
384
+ .printer::before { position: absolute; left: 13%; right: 13%; top: 28%; height: 12%; border: 2px solid #152329; border-radius: 4px; content: ""; background: #08161c; box-shadow: inset 0 2px 5px #000; }
385
+ .printer::after { position: absolute; top: 11%; right: 13%; width: 7px; height: 7px; border-radius: 50%; content: ""; background: var(--mint); box-shadow: 0 0 8px var(--mint); }
386
+ .printer span { position: absolute; left: 13%; bottom: 12%; color: rgba(230,240,236,.45); font: 7px/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .12em; }
387
+
388
+ .log-board {
389
+ position: absolute;
390
+ right: 32%;
391
+ bottom: -48px;
392
+ z-index: 12;
393
+ width: 132px;
394
+ padding: 11px 13px;
395
+ border: 2px solid #332825;
396
+ background: #755341;
397
+ color: #f3d4a5;
398
+ box-shadow: inset 0 0 0 3px rgba(143,104,76,.42), 0 10px 20px rgba(0,0,0,.24);
399
+ font-size: 10px;
400
+ line-height: 1.45;
401
+ text-decoration: none;
402
+ transform: rotate(-2deg);
403
+ transition: transform .2s ease;
404
+ }
405
+
406
+ .log-board:hover { transform: rotate(-1deg) translateY(-3px); }
407
+ .log-board small { display: block; margin-bottom: 4px; color: rgba(246,218,177,.6); font: 7px/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .13em; }
408
+
409
+ .sponsor-crate {
410
+ position: absolute;
411
+ right: 52%;
412
+ bottom: -76px;
413
+ z-index: 11;
414
+ display: grid;
415
+ grid-template-columns: 31px 1fr;
416
+ gap: 8px;
417
+ align-items: center;
418
+ width: 145px;
419
+ padding: 9px 10px;
420
+ border: 2px solid #332825;
421
+ background: #654839;
422
+ color: #ead7bd;
423
+ box-shadow: inset 0 0 0 3px rgba(132,94,70,.42), 0 10px 20px rgba(0,0,0,.22);
424
+ font-size: 9px;
425
+ line-height: 1.35;
426
+ text-decoration: none;
427
+ transition: transform .2s ease;
428
+ }
429
+
430
+ .sponsor-crate:hover { transform: translateY(-3px); }
431
+ .sponsor-crate img { width: 31px; height: 31px; border-radius: 7px; }
432
+ .sponsor-crate small { display: block; color: rgba(234,215,189,.55); font-size: 7px; letter-spacing: .08em; }
433
+
434
+ .wind-lines {
435
+ position: absolute;
436
+ right: -9vw;
437
+ top: 43%;
438
+ z-index: 5;
439
+ width: 48%;
440
+ height: 150px;
441
+ opacity: .34;
442
+ background:
443
+ linear-gradient(90deg, transparent, rgba(168,218,210,.72) 34% 76%, transparent 90%) 0 12px / 100% 1px no-repeat,
444
+ linear-gradient(90deg, transparent, rgba(168,218,210,.46) 23% 68%, transparent 88%) 45px 69px / 88% 1px no-repeat,
445
+ linear-gradient(90deg, transparent, rgba(168,218,210,.36) 47% 82%, transparent 94%) 0 130px / 75% 1px no-repeat;
446
+ animation: wind-pass 3.4s ease-in-out infinite;
447
+ }
448
+
449
+ .ticket-rail {
450
+ position: relative;
451
+ z-index: 30;
452
+ min-width: 0;
453
+ padding-top: 55vh;
454
+ padding-bottom: 14vh;
455
+ perspective: 1800px;
456
+ }
457
+
458
+ .paper-bridge {
459
+ position: absolute;
460
+ top: calc(55vh + 37px);
461
+ left: -98px;
462
+ z-index: 1;
463
+ width: 116px;
464
+ height: 58px;
465
+ border-radius: 2px 18px 4px 16px;
466
+ background:
467
+ repeating-linear-gradient(0deg, color-mix(in srgb, var(--ink) 2%, transparent) 0 1px, transparent 1px 4px),
468
+ var(--paper);
469
+ box-shadow: 0 13px 18px rgba(0,0,0,.22);
470
+ transform-origin: left center;
471
+ animation: bridge-flutter 4.2s ease-in-out infinite;
472
+ }
473
+
474
+ .ticket-sway {
475
+ position: relative;
476
+ z-index: 3;
477
+ width: 540px;
478
+ transform-origin: 5% 0;
479
+ animation: receipt-wind var(--wind-speed) cubic-bezier(.4,0,.2,1) infinite;
480
+ will-change: transform;
481
+ }
482
+
483
+ .ticket-sway::before {
484
+ position: absolute;
485
+ inset: 42px 18px 50px 30px;
486
+ z-index: -1;
487
+ content: "";
488
+ background: rgba(0,0,0,.34);
489
+ filter: blur(34px);
490
+ animation: shadow-wind var(--wind-speed) ease-in-out infinite;
491
+ }
492
+
493
+ .ticket-sway:hover { animation-play-state: paused; }
494
+ .ticket-sway:hover::before { animation-play-state: paused; }
495
+
496
+ .receipt-toolbar {
497
+ display: flex;
498
+ width: 100%;
499
+ justify-content: space-between;
500
+ align-items: center;
501
+ margin-bottom: 20px;
502
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
503
+ }
504
+
505
+ .theme-switcher { display: flex; flex-wrap: nowrap; }
506
+
507
+ .theme-button {
508
+ appearance: none;
509
+ border: 1px solid color-mix(in srgb, var(--ink) 28%, transparent);
510
+ border-radius: 0;
511
+ background: color-mix(in srgb, var(--paper) 74%, transparent);
512
+ color: var(--ink);
513
+ cursor: pointer;
514
+ font: inherit;
515
+ font-size: 12px;
516
+ padding: 7px 12px;
517
+ margin-left: -1px;
518
+ transition: background .15s ease, color .15s ease;
519
+ }
520
+
521
+ .theme-button:first-child { margin-left: 0; border-radius: 6px 0 0 6px; }
522
+ .theme-button:last-child { border-radius: 0 6px 6px 0; }
523
+ .theme-button[aria-pressed="true"] { position: relative; z-index: 1; border-color: var(--ink); background: var(--ink); color: var(--paper); }
524
+
525
+ .export-button {
526
+ appearance: none;
527
+ border: 1px solid #333;
528
+ border-radius: 6px;
529
+ background: #222;
530
+ color: #fff;
531
+ cursor: pointer;
532
+ font: inherit;
533
+ font-size: 12px;
534
+ font-weight: 600;
535
+ padding: 7px 14px;
536
+ transition: opacity .15s ease, transform .15s ease;
537
+ }
538
+
539
+ .export-button:hover { opacity: .85; transform: translateY(-1px); }
540
+
541
+ .receipt-scope {
542
+ width: 540px;
543
+ color: var(--ink);
544
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
545
+ transition: color .2s ease;
546
+ }
547
+
548
+ .receipt-scope .export-sheet { padding: 10px 0; }
549
+
550
+ .receipt-scope .paper {
551
+ position: relative;
552
+ background:
553
+ repeating-linear-gradient(0deg, color-mix(in srgb, var(--ink) 2%, transparent) 0, color-mix(in srgb, var(--ink) 2%, transparent) 1px, transparent 1px, transparent 4px),
554
+ var(--paper);
555
+ box-shadow: 0 22px 60px var(--shadow);
556
+ filter: contrast(.985);
557
+ }
558
+
559
+ .receipt-scope .paper::before,
560
+ .receipt-scope .paper::after {
561
+ content: "";
562
+ position: absolute;
563
+ left: 0;
564
+ width: 100%;
565
+ height: 10px;
566
+ background: linear-gradient(135deg, transparent 7px, var(--paper) 0) 0 0 / 14px 14px repeat-x;
567
+ }
568
+
569
+ .receipt-scope .paper::before { top: -9px; transform: rotate(180deg); }
570
+ .receipt-scope .paper::after { bottom: -9px; }
571
+ .receipt-scope .receipt { padding: 34px 28px 32px; }
572
+ .receipt-scope .brand { text-align: center; }
573
+
574
+ .receipt-scope .brand-mark {
575
+ display: inline-grid;
576
+ place-items: center;
577
+ width: 46px;
578
+ height: 46px;
579
+ margin-bottom: 12px;
580
+ border: 2px solid var(--ink);
581
+ border-radius: 50%;
582
+ background: var(--mark-bg);
583
+ color: var(--mark-fg);
584
+ font-size: 22px;
585
+ font-weight: 800;
586
+ }
587
+
588
+ .receipt-scope h1 { margin: 0; font-size: clamp(22px, 7vw, 30px); letter-spacing: .08em; }
589
+ .receipt-scope .subtitle { margin: 9px 0 0; color: var(--muted); font-size: 12px; letter-spacing: .12em; }
590
+
591
+ .receipt-scope .meta {
592
+ display: grid;
593
+ grid-template-columns: 1fr 1fr;
594
+ gap: 6px 18px;
595
+ margin: 26px 0 16px;
596
+ font-size: 12px;
597
+ }
598
+
599
+ .receipt-scope .meta div:nth-child(even) { text-align: right; }
600
+ .receipt-scope .divider { height: 1px; margin: 18px 0; border-top: 1px dashed var(--line); }
601
+
602
+ .receipt-scope .receipt-row {
603
+ display: flex;
604
+ align-items: baseline;
605
+ justify-content: space-between;
606
+ gap: 24px;
607
+ padding: 6px 0;
608
+ font-size: 14px;
609
+ }
610
+
611
+ .receipt-scope .receipt-row span { color: var(--muted); }
612
+ .receipt-scope .receipt-row strong { text-align: right; font-weight: 700; }
613
+ .receipt-scope .receipt-row--emphasize { margin: 3px -6px; padding: 8px 6px; background: var(--accent); }
614
+ .receipt-scope .insights-title { margin: 0 0 12px; font-size: 14px; letter-spacing: 0; text-align: center; }
615
+
616
+ .receipt-scope .insight-metrics {
617
+ display: grid;
618
+ grid-template-columns: repeat(2, minmax(0, 1fr));
619
+ border-top: 1px solid var(--line);
620
+ border-left: 1px solid var(--line);
621
+ }
622
+
623
+ .receipt-scope .insight-metric { min-width: 0; padding: 10px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
624
+ .receipt-scope .insight-metric span,
625
+ .receipt-scope .insight-metric strong,
626
+ .receipt-scope .insight-metric small { display: block; }
627
+ .receipt-scope .insight-metric span { color: var(--muted); font-size: 10px; line-height: 1.35; }
628
+ .receipt-scope .insight-metric strong { margin-top: 5px; font-size: 16px; line-height: 1.2; }
629
+ .receipt-scope .insight-metric small { margin-top: 4px; overflow: hidden; color: var(--muted); font-size: 9px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
630
+
631
+ .receipt-scope .heatmap-block,
632
+ .receipt-scope .structure-grid { margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--line); }
633
+ .receipt-scope .heatmap-block h3,
634
+ .receipt-scope .structure-group h3 { margin: 0 0 9px; color: var(--muted); font-size: 10px; letter-spacing: 0; text-transform: uppercase; }
635
+ .receipt-scope .heatmap-grid { display: grid; grid-template-columns: repeat(24, minmax(0, 1fr)); gap: 2px; }
636
+ .receipt-scope .heatmap-cell { display: block; height: 22px; background: color-mix(in srgb, var(--ink) var(--heat), transparent); }
637
+ .receipt-scope .heatmap-axis { display: flex; justify-content: space-between; margin-top: 5px; color: var(--muted); font-size: 8px; }
638
+ .receipt-scope .structure-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
639
+ .receipt-scope .structure-group { min-width: 0; }
640
+
641
+ .receipt-scope .structure-row {
642
+ display: grid;
643
+ grid-template-columns: minmax(0, 1fr) minmax(32px, .65fr) auto;
644
+ gap: 6px;
645
+ align-items: center;
646
+ min-width: 0;
647
+ padding: 4px 0;
648
+ font-size: 9px;
649
+ }
650
+
651
+ .receipt-scope .structure-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
652
+ .receipt-scope .structure-bar { display: block; height: 4px; background: color-mix(in srgb, var(--ink) 10%, transparent); }
653
+ .receipt-scope .structure-bar i { display: block; height: 100%; background: var(--ink); }
654
+ .receipt-scope .structure-row strong { font-size: 8px; white-space: nowrap; }
655
+ .receipt-scope .verdict { text-align: center; }
656
+ .receipt-scope .verdict h2 { margin: 0; font-size: 22px; letter-spacing: .04em; }
657
+
658
+ .receipt-scope .review {
659
+ margin: 12px auto 0;
660
+ max-width: 30em;
661
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif;
662
+ font-size: 14px;
663
+ line-height: 1.7;
664
+ }
665
+
666
+ .receipt-scope .salary { padding: 10px 0 2px; font-size: 14px; }
667
+ .receipt-scope .salary-line { display: flex; justify-content: space-between; align-items: baseline; gap: 18px; }
668
+ .receipt-scope .salary-line span { color: var(--muted); }
669
+ .receipt-scope .salary strong { font-size: 28px; }
670
+ .receipt-scope .salary strong small { margin-left: 6px; font-size: 12px; color: var(--muted); }
671
+
672
+ .receipt-scope .barcode {
673
+ display: flex;
674
+ align-items: stretch;
675
+ box-sizing: border-box;
676
+ width: 100%;
677
+ height: 48px;
678
+ margin: 18px auto 8px;
679
+ max-width: 320px;
680
+ padding: 0 20px;
681
+ overflow: hidden;
682
+ }
683
+
684
+ .receipt-scope .barcode-segment { display: block; flex-basis: 0; flex-shrink: 0; min-width: 0; height: 100%; }
685
+ .receipt-scope .barcode-segment--bar { background: var(--ink); }
686
+ .receipt-scope .barcode-segment--space { background: transparent; }
687
+ .receipt-scope .footer { text-align: center; font-size: 11px; line-height: 1.65; color: var(--muted); }
688
+
689
+ .receipt-scope .transfer-stub { margin-top: 32px; padding: 26px 24px 24px; }
690
+ .receipt-scope .transfer-heading { text-align: center; }
691
+ .receipt-scope .transfer-heading h2 { margin: 0; font-size: 18px; letter-spacing: .08em; }
692
+ .receipt-scope .transfer-heading p { margin: 7px 0 0; color: var(--muted); font-size: 11px; }
693
+ .receipt-scope .transfer-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); align-items: start; gap: 22px; margin-top: 20px; }
694
+ .receipt-scope .qr-item { text-align: center; }
695
+ .receipt-scope .qr-frame { display: grid; place-items: center; width: min(100%, 210px); aspect-ratio: 1; margin: 0 auto 10px; padding: 10px; border: 1px solid var(--line); background: #fff; }
696
+ .receipt-scope .qr-frame img { display: block; width: 100%; height: 100%; object-fit: contain; }
697
+ .receipt-scope .qr-item strong { display: block; font-size: 12px; }
698
+ .receipt-scope .qr-item span { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; line-height: 1.45; }
699
+ .receipt-scope .file-import-card { padding: 18px; border: 1px solid var(--line); background: color-mix(in srgb, var(--paper) 94%, var(--ink)); }
700
+ .receipt-scope .file-import-card > strong { display: block; font-size: 14px; }
701
+ .receipt-scope .file-import-card ol { margin: 12px 0 16px; padding-left: 20px; color: var(--muted); font-family: system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif; font-size: 11px; line-height: 1.65; }
702
+
703
+ .receipt-scope .download-file-button {
704
+ width: 100%;
705
+ padding: 10px 14px;
706
+ border: 1px solid var(--ink);
707
+ border-radius: 999px;
708
+ background: var(--ink);
709
+ color: var(--paper);
710
+ cursor: pointer;
711
+ font: inherit;
712
+ font-size: 12px;
713
+ font-weight: 800;
714
+ }
715
+
716
+ .receipt-scope .download-file-hint,
717
+ .receipt-scope .download-status { display: block; margin-top: 6px; color: var(--muted); font-family: system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif; font-size: 10px; line-height: 1.45; text-align: center; }
718
+ .receipt-scope .download-status { min-height: 14px; }
719
+ .receipt-scope .download-status[data-state="success"] { color: #287a36; }
720
+ .receipt-scope .file-import-card > p { margin: 14px 0 0; color: var(--muted); font-family: system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif; font-size: 10px; line-height: 1.55; text-align: center; }
721
+ .receipt-scope .transfer-note { margin: 18px 0 0; padding-top: 14px; border-top: 1px dashed var(--line); color: var(--muted); font-family: system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif; font-size: 11px; line-height: 1.65; text-align: center; }
722
+
723
+ .privacy {
724
+ margin: 26px auto 0;
725
+ max-width: 470px;
726
+ padding: 12px 16px;
727
+ border: 1px solid rgba(208,228,222,.1);
728
+ border-radius: 10px;
729
+ background: rgba(8,22,35,.42);
730
+ color: rgba(222,235,230,.5);
731
+ font-size: 11px;
732
+ line-height: 1.65;
733
+ text-align: center;
734
+ }
735
+
736
+ .departure {
737
+ position: relative;
738
+ margin-top: 42px;
739
+ padding: 26px 28px;
740
+ overflow: hidden;
741
+ border: 1px solid rgba(206,227,220,.16);
742
+ border-radius: 16px;
743
+ background: linear-gradient(135deg, rgba(19,42,57,.86), rgba(8,23,37,.88));
744
+ box-shadow: 0 24px 60px rgba(0,0,0,.22);
745
+ color: #e7eee8;
746
+ text-align: center;
747
+ }
748
+
749
+ .departure::before { position: absolute; inset: 0; content: ""; background: radial-gradient(circle at 50% 0, rgba(168,218,210,.12), transparent 42%); pointer-events: none; }
750
+ .departure small { position: relative; display: block; color: rgba(168,218,210,.62); font: 8px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .18em; }
751
+ .departure h2 { position: relative; margin: 12px 0 8px; font-family: "Songti SC", "STSong", serif; font-size: 23px; font-weight: 500; }
752
+ .departure p { position: relative; margin: 0 auto; max-width: 28em; color: rgba(226,237,232,.57); font-size: 11px; line-height: 1.7; }
753
+
754
+ .github-link {
755
+ position: relative;
756
+ display: inline-flex;
757
+ align-items: center;
758
+ gap: 8px;
759
+ margin-top: 17px;
760
+ padding: 10px 15px;
761
+ border: 1px solid rgba(231,240,236,.26);
762
+ border-radius: 999px;
763
+ background: rgba(236,242,238,.94);
764
+ color: #122431;
765
+ font-size: 11px;
766
+ font-weight: 700;
767
+ text-decoration: none;
768
+ transition: transform .2s ease, box-shadow .2s ease;
769
+ }
770
+
771
+ .github-link:hover { transform: translateY(-2px); box-shadow: 0 9px 24px rgba(0,0,0,.22); }
772
+
773
+ .toast {
774
+ position: fixed;
775
+ left: 50%;
776
+ bottom: 32px;
777
+ z-index: 120;
778
+ padding: 10px 15px;
779
+ border: 1px solid rgba(218,233,228,.19);
780
+ border-radius: 999px;
781
+ opacity: 0;
782
+ background: rgba(9,23,35,.92);
783
+ color: rgba(239,242,234,.9);
784
+ box-shadow: 0 14px 36px rgba(0,0,0,.26);
785
+ font-size: 11px;
786
+ pointer-events: none;
787
+ transform: translate(-50%, 12px);
788
+ transition: opacity .2s ease, transform .2s ease;
789
+ }
790
+
791
+ .toast[data-show="true"] { opacity: 1; transform: translate(-50%, 0); }
792
+
793
+ body.wind-paused .ticket-sway,
794
+ body.wind-paused .ticket-sway::before,
795
+ body.wind-paused .paper-bridge,
796
+ body.wind-paused .grass,
797
+ body.wind-paused .wind-lines,
798
+ body.wind-paused .office-sign { animation-play-state: paused; }
799
+
800
+ @keyframes receipt-wind {
801
+ 0%, 100% { transform: translate3d(-6px,0,0) rotateZ(-1.2deg) rotateY(-1deg); }
802
+ 18% { transform: translate3d(5px,-1px,0) rotateZ(.35deg) rotateY(.7deg); }
803
+ 38% { transform: translate3d(12px,1px,0) rotateZ(.85deg) rotateY(1.5deg); }
804
+ 56% { transform: translate3d(1px,0,0) rotateZ(-.25deg) rotateY(-.3deg); }
805
+ 68% { transform: translate3d(18px,-2px,0) rotateZ(1.55deg) rotateY(2.2deg); }
806
+ 76% { transform: translate3d(7px,1px,0) rotateZ(.35deg) rotateY(.6deg); }
807
+ }
808
+
809
+ @keyframes shadow-wind {
810
+ 0%, 100% { transform: translate(12px,22px); opacity: .72; }
811
+ 38% { transform: translate(22px,24px); opacity: .55; }
812
+ 68% { transform: translate(30px,27px); opacity: .46; }
813
+ }
814
+
815
+ @keyframes bridge-flutter {
816
+ 0%,100% { transform: rotate(5deg) skewY(-4deg) scaleY(1); }
817
+ 40% { transform: rotate(0) skewY(2deg) scaleY(.95); }
818
+ 70% { transform: rotate(7deg) skewY(-2deg) scaleY(1.04); }
819
+ }
820
+
821
+ @keyframes wind-pass { 0%,100% { opacity: .1; transform: translateX(-35px); } 55% { opacity: .5; transform: translateX(36px); } }
822
+ @keyframes grass-sway { from { transform: skewX(-7deg); } to { transform: skewX(8deg); } }
823
+ @keyframes sign-swing { 0%,100% { transform: rotate(-2deg); } 50% { transform: rotate(3deg); } 68% { transform: rotate(7deg); } }
824
+ @keyframes star-drift { to { transform: translate3d(-191px,0,0); } }
825
+ @keyframes haze-breathe { from { transform: translateX(-2%) scale(1); } to { transform: translateX(2%) scale(1.08); } }
826
+ @keyframes signal-pulse { 0%,100% { opacity: .52; } 45% { opacity: 1; } }
827
+ @keyframes radio-wave { 0% { opacity: 0; transform: scale(.4); } 35% { opacity: .7; } 100% { opacity: 0; transform: scale(1.45); } }
828
+
829
+ @media (max-width: 1120px) {
830
+ .world { grid-template-columns: minmax(430px,1fr) 520px; padding-inline: 18px; }
831
+ .ticket-sway, .receipt-scope { width: 520px; }
832
+ .scene-intro { width: 64%; }
833
+ .scene-intro h1 { font-size: clamp(36px,5vw,54px); }
834
+ .office { right: -16px; transform: scale(.9); transform-origin: right bottom; }
835
+ }
836
+
837
+ @media (max-width: 880px) {
838
+ .world-header { min-height: 64px; }
839
+ .header-status { display: none; }
840
+ .world-button span { display: none; }
841
+ .world-button { width: 35px; padding: 0; }
842
+ .world { display: block; width: 100%; padding: 0; }
843
+ .scene { position: relative; height: 78vh; min-height: 630px; overflow: hidden; }
844
+ .scene-intro { top: 100px; left: 22px; width: min(480px,calc(100% - 44px)); }
845
+ .scene-intro h1 { max-width: 8em; font-size: clamp(40px,12vw,62px); }
846
+ .scene-intro p:last-child { max-width: 25em; font-size: 12px; }
847
+ .moon { top: 19%; right: -20px; }
848
+ .office { right: -16px; bottom: 18vh; transform: scale(.78); }
849
+ .cliff { right: -15%; bottom: 0; width: 92%; height: 22vh; }
850
+ .grass { right: -15%; bottom: 21vh; width: 88%; }
851
+ .mountains { bottom: 0; }
852
+ .wind-lines { display: none; }
853
+ .ticket-rail { width: min(100% - 28px,540px); margin: -44px auto 0; padding: 0 0 80px; perspective: none; }
854
+ .paper-bridge { display: none; }
855
+ .ticket-sway, .receipt-scope { width: 100%; }
856
+ .ticket-sway { animation-duration: 13s; transform-origin: 50% 0; }
857
+ }
858
+
859
+ @media (max-width: 560px) {
860
+ .office-id strong { font-size: 11px; }
861
+ .office-id span { display: none; }
862
+ .scene { min-height: 600px; }
863
+ .office { right: -46px; bottom: 16vh; transform: scale(.69); }
864
+ .receipt-toolbar { flex-direction: column; gap: 10px; }
865
+ .receipt-scope .receipt { padding-inline: 20px; }
866
+ .receipt-scope .meta { grid-template-columns: 1fr; }
867
+ .receipt-scope .meta div:nth-child(even) { text-align: left; }
868
+ .receipt-scope .structure-grid,
869
+ .receipt-scope .transfer-layout { grid-template-columns: 1fr; }
870
+ .receipt-scope .insight-metric strong { font-size: 14px; }
871
+ .departure { margin-inline: 4px; }
872
+ }
873
+
874
+ @media (prefers-reduced-motion: reduce) {
875
+ html { scroll-behavior: auto; }
876
+ *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
877
+ }
878
+
879
+ /* V3 composition: the report is the foreground subject; the printed strip is atmosphere. */
880
+ .world {
881
+ display: block;
882
+ position: relative;
883
+ width: min(100%, 1540px);
884
+ min-height: 100vh;
885
+ padding-inline: clamp(22px, 3vw, 48px);
886
+ }
887
+
888
+ .scene {
889
+ position: fixed;
890
+ top: 0;
891
+ left: 50%;
892
+ width: min(100%, 1540px);
893
+ height: 100vh;
894
+ min-height: 690px;
895
+ overflow: hidden;
896
+ transform: translateX(-50%);
897
+ }
898
+
899
+ .scene-intro {
900
+ top: 104px;
901
+ left: clamp(22px, 4vw, 62px);
902
+ width: 270px;
903
+ }
904
+
905
+ .scene-kicker {
906
+ margin-bottom: 9px;
907
+ font-size: 8px;
908
+ letter-spacing: .14em;
909
+ }
910
+
911
+ .scene-kicker::before { width: 22px; }
912
+
913
+ .scene-intro h1 {
914
+ max-width: 13em;
915
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif;
916
+ font-size: 18px;
917
+ font-weight: 500;
918
+ line-height: 1.5;
919
+ letter-spacing: .02em;
920
+ color: rgba(236,242,236,.68);
921
+ text-shadow: none;
922
+ }
923
+
924
+ .scene-intro h1 em { color: rgba(255,200,121,.84); }
925
+ .scene-intro p:last-child { display: none; }
926
+
927
+ .moon { top: 13vh; right: 8vw; opacity: .7; }
928
+
929
+ .office {
930
+ left: clamp(80px, 17vw, 270px);
931
+ right: auto;
932
+ bottom: 17vh;
933
+ opacity: .91;
934
+ }
935
+
936
+ .cliff {
937
+ left: -5vw;
938
+ right: auto;
939
+ width: 61%;
940
+ opacity: .86;
941
+ }
942
+
943
+ .grass {
944
+ left: -2vw;
945
+ right: auto;
946
+ width: 59%;
947
+ opacity: .78;
948
+ }
949
+
950
+ .wind-lines {
951
+ left: 34%;
952
+ right: auto;
953
+ top: 47%;
954
+ width: 64%;
955
+ opacity: .22;
956
+ }
957
+
958
+ .ambient-receipt {
959
+ position: absolute;
960
+ left: 39%;
961
+ top: 51%;
962
+ z-index: 7;
963
+ width: 66%;
964
+ height: 150px;
965
+ opacity: .24;
966
+ filter: blur(.35px) saturate(.75);
967
+ transform: rotate(5deg);
968
+ transform-origin: left center;
969
+ pointer-events: none;
970
+ animation: ambient-receipt-wind 6.8s cubic-bezier(.42,0,.24,1) infinite;
971
+ }
972
+
973
+ .ambient-paper {
974
+ position: absolute;
975
+ inset: 22px 0 10px;
976
+ overflow: hidden;
977
+ border-radius: 4px 24px 9px 18px;
978
+ background:
979
+ repeating-linear-gradient(0deg, rgba(58,65,61,.09) 0 1px, transparent 1px 11px),
980
+ linear-gradient(100deg, #ded9c8, #f1ecdc 62%, #d8d2c1);
981
+ box-shadow: 0 18px 32px rgba(0,0,0,.24);
982
+ clip-path: polygon(0 6%, 5% 1%, 12% 7%, 20% 2%, 30% 8%, 42% 2%, 56% 7%, 70% 1%, 84% 6%, 100% 2%, 100% 88%, 92% 96%, 82% 90%, 70% 98%, 58% 91%, 44% 97%, 30% 90%, 15% 97%, 0 91%);
983
+ }
984
+
985
+ .ambient-paper::before {
986
+ position: absolute;
987
+ left: 6%;
988
+ top: 25%;
989
+ width: 48px;
990
+ height: 48px;
991
+ border: 2px solid rgba(67,74,68,.35);
992
+ border-radius: 50%;
993
+ content: "CWR";
994
+ color: rgba(67,74,68,.45);
995
+ font: 700 10px/48px ui-monospace, SFMono-Regular, Menlo, monospace;
996
+ text-align: center;
997
+ transform: rotate(-8deg);
998
+ }
999
+
1000
+ .ambient-paper::after {
1001
+ position: absolute;
1002
+ left: 16%;
1003
+ right: 10%;
1004
+ top: 30%;
1005
+ height: 8px;
1006
+ content: "";
1007
+ opacity: .5;
1008
+ background: repeating-linear-gradient(90deg, rgba(55,64,60,.45) 0 28px, transparent 28px 42px);
1009
+ box-shadow: 0 22px 0 rgba(55,64,60,.22), 0 44px 0 rgba(55,64,60,.16);
1010
+ }
1011
+
1012
+ .ticket-rail {
1013
+ position: relative;
1014
+ z-index: 30;
1015
+ width: 540px;
1016
+ min-width: 0;
1017
+ margin-left: calc(54% - 270px);
1018
+ padding-top: 84px;
1019
+ padding-bottom: 14vh;
1020
+ perspective: none;
1021
+ }
1022
+
1023
+ .paper-bridge { display: none; }
1024
+
1025
+ .ticket-sway {
1026
+ width: 540px;
1027
+ animation: none;
1028
+ transform: rotate(.12deg);
1029
+ transform-origin: 50% 0;
1030
+ will-change: auto;
1031
+ }
1032
+
1033
+ .ticket-sway::before {
1034
+ animation: none;
1035
+ opacity: .58;
1036
+ transform: translate(16px, 24px);
1037
+ }
1038
+
1039
+ .ticket-sway:hover { animation-play-state: running; }
1040
+
1041
+ .departure {
1042
+ width: 318px;
1043
+ margin: 34px 2px 0 auto;
1044
+ padding: 19px 20px 18px;
1045
+ border-radius: 8px;
1046
+ text-align: left;
1047
+ transform: rotate(.7deg);
1048
+ box-shadow: 0 16px 38px rgba(0,0,0,.2);
1049
+ }
1050
+
1051
+ .departure::before {
1052
+ background:
1053
+ linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px) 0 0 / 18px 100%,
1054
+ radial-gradient(circle at 50% 0, rgba(168,218,210,.12), transparent 42%);
1055
+ }
1056
+
1057
+ .departure h2 { margin: 9px 0 7px; font-size: 18px; line-height: 1.35; }
1058
+ .departure p { margin: 0; font-size: 10px; }
1059
+ .github-link { width: 100%; margin-top: 13px; justify-content: center; }
1060
+
1061
+ body.wind-paused .ambient-receipt { animation-play-state: paused; }
1062
+
1063
+ @keyframes ambient-receipt-wind {
1064
+ 0%, 100% { transform: translate3d(-12px,0,0) rotate(4deg) skewY(-1deg); }
1065
+ 24% { transform: translate3d(10px,-8px,0) rotate(6deg) skewY(1.5deg); }
1066
+ 48% { transform: translate3d(24px,4px,0) rotate(7.5deg) skewY(-.5deg); }
1067
+ 68% { transform: translate3d(48px,-15px,0) rotate(10deg) skewY(2.5deg); }
1068
+ 78% { transform: translate3d(18px,2px,0) rotate(6deg) skewY(-1deg); }
1069
+ }
1070
+
1071
+ @media (max-width: 1120px) {
1072
+ .world { display: block; padding-inline: 18px; }
1073
+ .scene { width: 100%; }
1074
+ .office { left: clamp(30px, 10vw, 110px); transform: scale(.88); }
1075
+ .ticket-rail { width: 520px; margin-left: calc(58% - 260px); }
1076
+ .ticket-sway, .receipt-scope { width: 520px; }
1077
+ .ambient-receipt { left: 35%; width: 72%; }
1078
+ }
1079
+
1080
+ @media (max-width: 880px) {
1081
+ .world { display: block; width: 100%; padding: 0; }
1082
+
1083
+ .scene {
1084
+ position: relative;
1085
+ left: auto;
1086
+ width: 100%;
1087
+ height: 52vh;
1088
+ min-height: 430px;
1089
+ overflow: hidden;
1090
+ transform: none;
1091
+ }
1092
+
1093
+ .scene-intro {
1094
+ top: 82px;
1095
+ left: 20px;
1096
+ width: 210px;
1097
+ }
1098
+
1099
+ .scene-intro h1 { max-width: 12em; font-size: 16px; }
1100
+ .moon { top: 16%; right: -12px; }
1101
+
1102
+ .office {
1103
+ left: -8px;
1104
+ right: auto;
1105
+ bottom: 7vh;
1106
+ transform: scale(.64);
1107
+ transform-origin: left bottom;
1108
+ }
1109
+
1110
+ .cliff { left: -15%; right: auto; width: 92%; height: 22vh; }
1111
+ .grass { left: -10%; right: auto; bottom: 21vh; width: 82%; }
1112
+ .ambient-receipt { left: 32%; top: 54%; width: 82%; height: 112px; opacity: .2; }
1113
+
1114
+ .ticket-rail {
1115
+ width: min(100% - 28px, 540px);
1116
+ margin: -34vh auto 0;
1117
+ padding: 0 0 80px;
1118
+ }
1119
+
1120
+ .ticket-sway, .receipt-scope { width: 100%; }
1121
+ .ticket-sway { transform: none; }
1122
+ }
1123
+
1124
+ @media (max-width: 560px) {
1125
+ .scene { height: 50vh; min-height: 400px; }
1126
+ .scene-intro { top: 78px; }
1127
+ .office { left: -36px; bottom: 6vh; transform: scale(.58); }
1128
+ .ambient-receipt { left: 28%; top: 56%; width: 90%; opacity: .18; }
1129
+ .ticket-rail { margin-top: -35vh; }
1130
+ .departure { width: min(318px, calc(100% - 10px)); margin-right: 5px; }
1131
+ }
1132
+
1133
+ /* V4: move the office clear of the receipt and keep all three project links together. */
1134
+ .office {
1135
+ left: clamp(-36px, 4vw, 62px);
1136
+ right: auto;
1137
+ }
1138
+
1139
+ .office-info-cluster {
1140
+ position: absolute;
1141
+ left: 10%;
1142
+ bottom: -118px;
1143
+ z-index: 14;
1144
+ display: grid;
1145
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1146
+ gap: 8px;
1147
+ width: 286px;
1148
+ }
1149
+
1150
+ .office-info-cluster .log-board,
1151
+ .github-board {
1152
+ position: static;
1153
+ display: block;
1154
+ width: auto;
1155
+ min-height: 64px;
1156
+ padding: 10px 11px;
1157
+ border: 2px solid #332825;
1158
+ background: #755341;
1159
+ color: #f3d4a5;
1160
+ box-shadow: inset 0 0 0 3px rgba(143,104,76,.42), 0 10px 20px rgba(0,0,0,.24);
1161
+ font-size: 9px;
1162
+ line-height: 1.45;
1163
+ text-decoration: none;
1164
+ transform: none;
1165
+ transition: transform .2s ease, filter .2s ease;
1166
+ }
1167
+
1168
+ .github-board {
1169
+ background: #4d544c;
1170
+ color: #e8ddbe;
1171
+ box-shadow: inset 0 0 0 3px rgba(100,115,101,.42), 0 10px 20px rgba(0,0,0,.24);
1172
+ }
1173
+
1174
+ .office-info-cluster .log-board small,
1175
+ .github-board small {
1176
+ display: block;
1177
+ margin-bottom: 5px;
1178
+ color: rgba(246,218,177,.58);
1179
+ font: 7px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace;
1180
+ letter-spacing: .08em;
1181
+ }
1182
+
1183
+ .github-board small { color: rgba(218,231,210,.52); }
1184
+
1185
+ .office-info-cluster .log-board:hover,
1186
+ .github-board:hover {
1187
+ filter: brightness(1.08);
1188
+ transform: translateY(-3px);
1189
+ }
1190
+
1191
+ .office-info-cluster .sponsor-crate {
1192
+ position: static;
1193
+ grid-column: 1 / -1;
1194
+ width: 100%;
1195
+ min-height: 48px;
1196
+ padding: 8px 10px;
1197
+ transform: none;
1198
+ }
1199
+
1200
+ .office-info-cluster .sponsor-crate:hover { transform: translateY(-3px); }
1201
+
1202
+ @media (max-width: 1120px) {
1203
+ .office { left: clamp(-28px, 2vw, 24px); }
1204
+ }
1205
+
1206
+ @media (max-width: 880px) {
1207
+ .office { left: -52px; bottom: 11vh; }
1208
+ .office-info-cluster { bottom: -88px; }
1209
+ }
1210
+
1211
+ @media (max-width: 560px) {
1212
+ .office { left: -70px; bottom: 11vh; }
1213
+ .office-info-cluster { bottom: -82px; }
1214
+ }
1215
+
1216
+ /* V5: the night office stays still while the original receipt scrolls in its own dock. */
1217
+ html,
1218
+ body {
1219
+ width: 100%;
1220
+ height: 100%;
1221
+ overflow: hidden;
1222
+ }
1223
+
1224
+ body {
1225
+ min-height: 0;
1226
+ height: 100dvh;
1227
+ overscroll-behavior: none;
1228
+ }
1229
+
1230
+ .world {
1231
+ width: 100%;
1232
+ height: 100dvh;
1233
+ min-height: 0;
1234
+ padding: 0;
1235
+ overflow: hidden;
1236
+ }
1237
+
1238
+ .scene {
1239
+ height: 100dvh;
1240
+ min-height: 0;
1241
+ }
1242
+
1243
+ .ticket-rail {
1244
+ position: fixed;
1245
+ top: 72px;
1246
+ bottom: 0;
1247
+ left: 54%;
1248
+ z-index: 34;
1249
+ width: 572px;
1250
+ height: auto;
1251
+ margin: 0;
1252
+ padding: 0 16px 104px;
1253
+ overflow-x: hidden;
1254
+ overflow-y: auto;
1255
+ overscroll-behavior: contain;
1256
+ perspective: none;
1257
+ scrollbar-gutter: stable;
1258
+ scrollbar-width: thin;
1259
+ scrollbar-color: rgba(168,218,210,.42) rgba(5,15,27,.12);
1260
+ transform: translateX(-50%);
1261
+ }
1262
+
1263
+ .ticket-rail::-webkit-scrollbar { width: 8px; }
1264
+ .ticket-rail::-webkit-scrollbar-track { background: rgba(5,15,27,.12); }
1265
+ .ticket-rail::-webkit-scrollbar-thumb {
1266
+ border: 2px solid transparent;
1267
+ border-radius: 999px;
1268
+ background: rgba(168,218,210,.42);
1269
+ background-clip: padding-box;
1270
+ }
1271
+
1272
+ .receipt-toolbar {
1273
+ position: sticky;
1274
+ top: 0;
1275
+ z-index: 48;
1276
+ width: 100%;
1277
+ min-height: 54px;
1278
+ margin: 0 0 12px;
1279
+ padding: 10px 0 11px;
1280
+ background:
1281
+ linear-gradient(180deg, rgba(5,15,28,.98) 0%, rgba(6,18,32,.94) 72%, rgba(6,18,32,.76) 88%, transparent 100%);
1282
+ backdrop-filter: blur(13px);
1283
+ }
1284
+
1285
+ .receipt-toolbar::after {
1286
+ position: absolute;
1287
+ right: 0;
1288
+ bottom: -12px;
1289
+ left: 0;
1290
+ height: 18px;
1291
+ content: "";
1292
+ background: linear-gradient(180deg, rgba(2,9,18,.3), transparent);
1293
+ pointer-events: none;
1294
+ }
1295
+
1296
+ .theme-button {
1297
+ border-color: color-mix(in srgb, var(--ink) 34%, rgba(225,238,233,.4));
1298
+ box-shadow: 0 5px 18px rgba(0,0,0,.12);
1299
+ }
1300
+
1301
+ .export-button { box-shadow: 0 7px 22px rgba(0,0,0,.2); }
1302
+
1303
+ /* The three existing project links now read as one lit notice board. */
1304
+ .office-info-cluster {
1305
+ left: 7%;
1306
+ bottom: -118px;
1307
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1308
+ gap: 9px;
1309
+ width: 312px;
1310
+ padding: 30px 10px 10px;
1311
+ border: 1px solid rgba(42,31,27,.78);
1312
+ border-radius: 3px;
1313
+ background:
1314
+ linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px) 0 0 / 22px 100%,
1315
+ linear-gradient(180deg, rgba(102,72,54,.96), rgba(67,49,42,.97));
1316
+ box-shadow:
1317
+ inset 0 0 0 3px rgba(155,112,75,.22),
1318
+ 0 18px 28px rgba(0,0,0,.28),
1319
+ 0 -10px 36px rgba(255,194,105,.07);
1320
+ animation: notice-awaken 1.45s cubic-bezier(.2,.8,.2,1) .28s both;
1321
+ }
1322
+
1323
+ .office-info-cluster::before {
1324
+ position: absolute;
1325
+ top: -52px;
1326
+ left: 50%;
1327
+ z-index: -1;
1328
+ width: 220px;
1329
+ height: 92px;
1330
+ content: "";
1331
+ opacity: .34;
1332
+ background: linear-gradient(180deg, rgba(255,205,126,.48), rgba(255,193,101,.08) 62%, transparent);
1333
+ clip-path: polygon(43% 0, 57% 0, 100% 100%, 0 100%);
1334
+ filter: blur(8px);
1335
+ pointer-events: none;
1336
+ transform: translateX(-50%);
1337
+ }
1338
+
1339
+ .notice-lamp {
1340
+ position: absolute;
1341
+ top: -20px;
1342
+ left: 50%;
1343
+ z-index: 3;
1344
+ width: 54px;
1345
+ height: 16px;
1346
+ border: 3px solid #2c2927;
1347
+ border-radius: 12px 12px 5px 5px;
1348
+ background: #74604b;
1349
+ box-shadow: 0 6px 11px rgba(0,0,0,.34);
1350
+ transform: translateX(-50%);
1351
+ }
1352
+
1353
+ .notice-lamp i {
1354
+ position: absolute;
1355
+ right: 8px;
1356
+ bottom: -3px;
1357
+ left: 8px;
1358
+ height: 5px;
1359
+ border-radius: 0 0 999px 999px;
1360
+ background: #ffd18b;
1361
+ box-shadow: 0 0 10px rgba(255,202,122,.9), 0 0 28px rgba(255,188,93,.62);
1362
+ animation: notice-lamp-on 1.2s ease-out .34s both;
1363
+ }
1364
+
1365
+ .notice-title {
1366
+ position: absolute;
1367
+ top: 8px;
1368
+ left: 50%;
1369
+ color: rgba(255,226,180,.82);
1370
+ font: 700 8px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace;
1371
+ letter-spacing: .18em;
1372
+ white-space: nowrap;
1373
+ transform: translateX(-50%);
1374
+ }
1375
+
1376
+ .office-info-cluster .log-board,
1377
+ .github-board {
1378
+ min-height: 68px;
1379
+ padding: 11px 12px;
1380
+ border-width: 1px;
1381
+ font-size: 9px;
1382
+ box-shadow: inset 0 0 0 2px rgba(255,255,255,.045), 0 8px 16px rgba(0,0,0,.24);
1383
+ }
1384
+
1385
+ .office-info-cluster .log-board {
1386
+ border-color: rgba(151,218,204,.4);
1387
+ background: linear-gradient(155deg, #37615c, #294945);
1388
+ color: #d8eee8;
1389
+ }
1390
+
1391
+ .office-info-cluster .log-board small { color: rgba(185,235,224,.58); }
1392
+
1393
+ .github-board {
1394
+ border-color: rgba(255,208,126,.72);
1395
+ background:
1396
+ radial-gradient(circle at 86% 16%, rgba(255,220,151,.2) 0 2px, transparent 3px),
1397
+ linear-gradient(155deg, #715637, #4f3b2c);
1398
+ color: #ffe2ae;
1399
+ box-shadow:
1400
+ inset 0 0 0 2px rgba(255,225,172,.07),
1401
+ 0 8px 18px rgba(0,0,0,.25),
1402
+ 0 0 18px rgba(255,194,93,.08);
1403
+ }
1404
+
1405
+ .github-board small { color: rgba(255,221,161,.62); }
1406
+
1407
+ .office-info-cluster .log-board:hover,
1408
+ .github-board:hover,
1409
+ .office-info-cluster .sponsor-crate:hover {
1410
+ filter: brightness(1.14) saturate(1.04);
1411
+ transform: translateY(-4px);
1412
+ }
1413
+
1414
+ .office-info-cluster .sponsor-crate {
1415
+ grid-template-columns: 38px minmax(0, 1fr);
1416
+ min-height: 66px;
1417
+ padding: 9px 12px;
1418
+ border-width: 1px;
1419
+ background: linear-gradient(155deg, #70513f, #574034);
1420
+ box-shadow: inset 0 0 0 2px rgba(255,255,255,.035), 0 8px 16px rgba(0,0,0,.22);
1421
+ }
1422
+
1423
+ .office-info-cluster .sponsor-crate img {
1424
+ width: 38px;
1425
+ height: 38px;
1426
+ }
1427
+
1428
+ .sponsor-offer {
1429
+ display: block;
1430
+ width: fit-content;
1431
+ margin-top: 4px;
1432
+ padding: 2px 5px 3px;
1433
+ border: 1px solid rgba(137,255,82,.42);
1434
+ border-radius: 3px;
1435
+ background: rgba(80,255,55,.09);
1436
+ color: #9cff55;
1437
+ font-size: 9.5px;
1438
+ font-weight: 900;
1439
+ line-height: 1.3;
1440
+ letter-spacing: .01em;
1441
+ text-shadow: 0 0 4px rgba(100,255,55,1), 0 0 11px rgba(77,255,38,.72);
1442
+ }
1443
+
1444
+ /* A separate command drawer sits below the moon and never joins the receipt scroll. */
1445
+ .feature-dock {
1446
+ --feature-ink: #282620;
1447
+ --feature-muted: #756f65;
1448
+ --feature-line: #c9c2b6;
1449
+ --feature-soft-line: #ded7cc;
1450
+ --feature-paper: #f6f2e9;
1451
+ --feature-paper-soft: #fbfaf7;
1452
+ --feature-command: #ece8df;
1453
+ position: fixed;
1454
+ top: calc(13vh + clamp(92px, 11vw, 155px) + 24px);
1455
+ right: clamp(24px, 3vw, 64px);
1456
+ z-index: 64;
1457
+ width: 328px;
1458
+ max-width: calc(100vw - 32px);
1459
+ padding: 0;
1460
+ overflow: hidden;
1461
+ border: 1px solid rgba(205,221,214,.3);
1462
+ border-radius: 12px;
1463
+ background: rgba(8,25,39,.86);
1464
+ color: rgba(237,242,233,.9);
1465
+ box-shadow: 0 22px 55px rgba(0,0,0,.32), inset 0 1px 0 rgba(255,255,255,.05);
1466
+ backdrop-filter: blur(15px);
1467
+ transition: width .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
1468
+ }
1469
+
1470
+ .feature-dock[open] {
1471
+ border-color: rgba(255,204,126,.35);
1472
+ background: rgba(7,22,35,.96);
1473
+ box-shadow: 0 25px 65px rgba(0,0,0,.42), 0 0 42px rgba(255,191,93,.06);
1474
+ }
1475
+
1476
+ .feature-dock__summary {
1477
+ display: flex;
1478
+ align-items: center;
1479
+ justify-content: space-between;
1480
+ gap: 10px;
1481
+ min-height: 52px;
1482
+ padding: 11px 13px;
1483
+ cursor: pointer;
1484
+ list-style: none;
1485
+ user-select: none;
1486
+ }
1487
+
1488
+ .feature-dock__summary::-webkit-details-marker { display: none; }
1489
+ .feature-dock__summary:hover { background: rgba(168,218,210,.07); }
1490
+ .feature-dock__summary:focus-visible { outline: 2px solid var(--mint); outline-offset: -3px; }
1491
+
1492
+ .feature-dock__title {
1493
+ display: inline-flex;
1494
+ align-items: center;
1495
+ gap: 8px;
1496
+ min-width: 0;
1497
+ font-size: 12px;
1498
+ font-weight: 680;
1499
+ letter-spacing: .03em;
1500
+ }
1501
+
1502
+ .feature-dock__terminal {
1503
+ color: var(--mint);
1504
+ font: 700 12px/1 ui-monospace, SFMono-Regular, Menlo, monospace;
1505
+ text-shadow: 0 0 12px rgba(168,218,210,.4);
1506
+ }
1507
+
1508
+ .feature-dock__meta { display: inline-flex; align-items: center; gap: 7px; flex: 0 0 auto; }
1509
+ .feature-dock__count { color: rgba(224,234,230,.52); font: 9px/1 ui-monospace, SFMono-Regular, Menlo, monospace; }
1510
+ .feature-dock__chevron { width: 15px; height: 15px; transition: transform .18s ease; }
1511
+ .feature-dock[open] .feature-dock__chevron { transform: rotate(180deg); }
1512
+ .feature-dock__compact { display: none; color: rgba(232,239,234,.68); font-size: 9px; }
1513
+
1514
+ .feature-dock__body {
1515
+ max-height: min(58vh, 570px);
1516
+ padding: 12px;
1517
+ overflow-x: hidden;
1518
+ overflow-y: auto;
1519
+ overscroll-behavior: contain;
1520
+ border-top: 1px solid rgba(205,221,214,.14);
1521
+ background: var(--feature-paper-soft);
1522
+ color: var(--feature-ink);
1523
+ scrollbar-width: thin;
1524
+ scrollbar-color: #aaa194 transparent;
1525
+ animation: feature-reveal .18s ease-out;
1526
+ }
1527
+
1528
+ .feature-dock__description { margin: 0 0 11px; color: var(--feature-muted); font-size: 10px; line-height: 1.5; }
1529
+
1530
+ .feature-tabs__list {
1531
+ display: grid;
1532
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1533
+ gap: 5px;
1534
+ margin-bottom: 12px;
1535
+ }
1536
+
1537
+ .feature-tab {
1538
+ display: inline-flex;
1539
+ align-items: center;
1540
+ justify-content: center;
1541
+ gap: 5px;
1542
+ min-width: 0;
1543
+ min-height: 34px;
1544
+ padding: 7px 5px;
1545
+ border: 1px solid var(--feature-line);
1546
+ border-radius: 5px;
1547
+ background: var(--feature-command);
1548
+ color: var(--feature-muted);
1549
+ cursor: pointer;
1550
+ font-size: 9px;
1551
+ font-weight: 700;
1552
+ line-height: 1.2;
1553
+ }
1554
+
1555
+ .feature-tab span {
1556
+ min-width: 17px;
1557
+ padding: 1px 4px;
1558
+ border-radius: 999px;
1559
+ background: rgba(40,38,32,.08);
1560
+ font-size: 8px;
1561
+ text-align: center;
1562
+ }
1563
+
1564
+ .feature-tab[aria-selected="true"] { border-color: var(--feature-ink); background: var(--feature-ink); color: #fff; }
1565
+ .feature-tab[aria-selected="true"] span { background: rgba(255,255,255,.18); }
1566
+ .feature-tab:focus-visible { outline: 2px solid #81786c; outline-offset: 2px; }
1567
+ .feature-tabs[data-ready="true"] .feature-panel[hidden] { display: none; }
1568
+
1569
+ .feature-panel + .feature-panel {
1570
+ margin-top: 13px;
1571
+ padding-top: 12px;
1572
+ border-top: 1px solid var(--feature-soft-line);
1573
+ }
1574
+
1575
+ .feature-tabs[data-ready="true"] .feature-panel + .feature-panel { margin-top: 0; padding-top: 0; border-top: 0; }
1576
+ .feature-panel ul { margin: 0; padding: 0; list-style: none; }
1577
+ .feature-dock .feature-panel ul { display: block; }
1578
+
1579
+ .feature-command {
1580
+ min-width: 0;
1581
+ margin-top: 10px;
1582
+ padding-top: 10px;
1583
+ border-top: 1px dashed var(--feature-soft-line);
1584
+ }
1585
+
1586
+ .feature-command:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
1587
+ .feature-dock .feature-command:nth-child(2) { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--feature-soft-line); }
1588
+ .feature-command__name { display: block; margin-bottom: 5px; color: var(--feature-ink); font-size: 10px; font-weight: 650; line-height: 1.4; }
1589
+ .feature-command__action { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 5px; align-items: stretch; }
1590
+
1591
+ .feature-command code {
1592
+ display: block;
1593
+ min-width: 0;
1594
+ padding: 7px;
1595
+ overflow-x: auto;
1596
+ border: 1px solid #d5cfc4;
1597
+ border-radius: 4px;
1598
+ background: var(--feature-command);
1599
+ color: #34312c;
1600
+ font: 9px/1.35 ui-monospace, SFMono-Regular, Menlo, monospace;
1601
+ white-space: nowrap;
1602
+ scrollbar-width: thin;
1603
+ }
1604
+
1605
+ .feature-copy-button {
1606
+ display: inline-flex;
1607
+ align-items: center;
1608
+ justify-content: center;
1609
+ gap: 3px;
1610
+ min-width: 52px;
1611
+ padding: 5px 7px;
1612
+ border: 1px solid #bdb5a9;
1613
+ border-radius: 4px;
1614
+ background: #fff;
1615
+ color: #4c4942;
1616
+ cursor: pointer;
1617
+ font-size: 9px;
1618
+ font-weight: 650;
1619
+ }
1620
+
1621
+ .feature-copy-button:hover { background: #e5dfd4; }
1622
+ .feature-copy-button:focus-visible { outline: 2px solid var(--feature-ink); outline-offset: 2px; }
1623
+ .feature-copy-button svg { width: 11px; height: 11px; flex: 0 0 auto; }
1624
+ .feature-copy-button[data-state="success"] { border-color: #78a782; background: #eef7ef; color: #276036; }
1625
+ .feature-copy-button[data-state="error"] { border-color: #c88c84; background: #fff1ef; color: #8b3028; }
1626
+
1627
+ .feature-copy-status {
1628
+ position: absolute;
1629
+ width: 1px;
1630
+ height: 1px;
1631
+ padding: 0;
1632
+ margin: -1px;
1633
+ overflow: hidden;
1634
+ clip: rect(0,0,0,0);
1635
+ white-space: nowrap;
1636
+ border: 0;
1637
+ }
1638
+
1639
+ @keyframes notice-awaken {
1640
+ 0% { opacity: .32; filter: brightness(.5); transform: translateY(4px); }
1641
+ 42% { opacity: 1; filter: brightness(1.35); transform: translateY(-1px); }
1642
+ 100% { opacity: 1; filter: brightness(1); transform: translateY(0); }
1643
+ }
1644
+
1645
+ @keyframes notice-lamp-on {
1646
+ 0%, 18% { opacity: .12; }
1647
+ 28% { opacity: 1; }
1648
+ 39% { opacity: .32; }
1649
+ 52%, 100% { opacity: 1; }
1650
+ }
1651
+
1652
+ @keyframes feature-reveal {
1653
+ from { opacity: 0; transform: translateY(-4px); }
1654
+ to { opacity: 1; transform: translateY(0); }
1655
+ }
1656
+
1657
+ @media (max-width: 1430px) {
1658
+ .feature-dock { right: 0; width: min(326px, calc(100vw - 18px)); border-radius: 12px 0 0 12px; }
1659
+ .feature-dock:not([open]) { width: 64px; }
1660
+ .feature-dock:not([open]) .feature-dock__summary { min-height: 70px; padding: 9px 6px; justify-content: center; }
1661
+ .feature-dock:not([open]) .feature-dock__title { flex-direction: column; gap: 5px; }
1662
+ .feature-dock:not([open]) .feature-dock__title-text,
1663
+ .feature-dock:not([open]) .feature-dock__meta { display: none; }
1664
+ .feature-dock:not([open]) .feature-dock__compact { display: block; }
1665
+ }
1666
+
1667
+ @media (max-width: 1120px) {
1668
+ .ticket-rail { left: 58%; width: 552px; }
1669
+ .office-info-cluster { width: 306px; }
1670
+ }
1671
+
1672
+ @media (max-width: 880px) {
1673
+ .world-header { min-height: 64px; }
1674
+ .scene { position: fixed; top: 0; left: 0; width: 100%; height: 100dvh; min-height: 0; transform: none; }
1675
+ .office { left: -52px; bottom: 11vh; }
1676
+ .ticket-rail {
1677
+ top: clamp(144px, 22vh, 190px);
1678
+ bottom: 0;
1679
+ left: 50%;
1680
+ width: min(100%, 568px);
1681
+ margin: 0;
1682
+ padding: 0 14px 112px;
1683
+ transform: translateX(-50%);
1684
+ }
1685
+ .ticket-sway,
1686
+ .receipt-scope { width: 100%; }
1687
+ }
1688
+
1689
+ @media (max-width: 760px) {
1690
+ .feature-dock,
1691
+ .feature-dock:not([open]) {
1692
+ top: auto;
1693
+ right: 8px;
1694
+ bottom: 0;
1695
+ left: 8px;
1696
+ width: auto;
1697
+ max-width: none;
1698
+ border-radius: 12px 12px 0 0;
1699
+ }
1700
+ .feature-dock:not([open]) .feature-dock__summary { min-height: 52px; padding: 11px 13px; justify-content: space-between; }
1701
+ .feature-dock:not([open]) .feature-dock__title { flex-direction: row; gap: 8px; }
1702
+ .feature-dock:not([open]) .feature-dock__title-text,
1703
+ .feature-dock:not([open]) .feature-dock__meta { display: inline-flex; }
1704
+ .feature-dock:not([open]) .feature-dock__compact { display: none; }
1705
+ .feature-dock__body { max-height: min(62vh, 560px); }
1706
+ }
1707
+
1708
+ @media (max-width: 560px) {
1709
+ .ticket-rail { width: 100%; padding-inline: 10px; }
1710
+ .receipt-toolbar { gap: 8px; padding-top: 9px; }
1711
+ .theme-switcher { width: 100%; }
1712
+ .theme-button { flex: 1 1 0; padding-inline: 4px; font-size: 10px; }
1713
+ .export-button { width: 100%; }
1714
+ .office-info-cluster { bottom: -82px; }
1715
+ }
1716
+
1717
+ /* V6: one receipt office, two shifts, and a clear hierarchy for future collections. */
1718
+ html[data-scene="day"] {
1719
+ --scene-text: #263a40;
1720
+ --mint: #397f76;
1721
+ --lamp: #c87a32;
1722
+ }
1723
+
1724
+ html[data-scene="day"] body {
1725
+ background:
1726
+ radial-gradient(circle at 78% 17%, rgba(255,241,190,.68), transparent 20%),
1727
+ radial-gradient(circle at 18% 22%, rgba(255,255,255,.52), transparent 26%),
1728
+ linear-gradient(180deg, #b9d9df 0%, #d6e7e2 36%, #eadfc9 69%, #9fb4b2 100%);
1729
+ }
1730
+
1731
+ html[data-scene="day"] .stars { opacity: 0; }
1732
+ html[data-scene="day"] .haze {
1733
+ opacity: .68;
1734
+ background:
1735
+ radial-gradient(ellipse at 22% 62%, rgba(255,255,255,.82), transparent 34%),
1736
+ radial-gradient(ellipse at 70% 67%, rgba(245,238,216,.66), transparent 33%);
1737
+ filter: blur(24px);
1738
+ }
1739
+
1740
+ .scene::before {
1741
+ position: absolute;
1742
+ inset: 18% -8% auto 24%;
1743
+ z-index: 1;
1744
+ height: 170px;
1745
+ content: "";
1746
+ opacity: 0;
1747
+ background:
1748
+ radial-gradient(ellipse at 18% 60%, rgba(255,255,255,.58) 0 18%, transparent 42%),
1749
+ radial-gradient(ellipse at 47% 44%, rgba(255,251,234,.5) 0 22%, transparent 49%),
1750
+ radial-gradient(ellipse at 78% 66%, rgba(255,255,255,.42) 0 17%, transparent 43%);
1751
+ filter: blur(13px);
1752
+ pointer-events: none;
1753
+ transition: opacity .45s ease;
1754
+ }
1755
+
1756
+ html[data-scene="day"] .scene::before { opacity: .76; }
1757
+
1758
+ .world-header {
1759
+ display: grid;
1760
+ grid-template-columns: minmax(220px, 1fr) auto minmax(450px, 1fr);
1761
+ min-height: 78px;
1762
+ padding: 10px clamp(16px, 2.4vw, 38px);
1763
+ transition: color .35s ease, background .35s ease, border-color .35s ease;
1764
+ }
1765
+
1766
+ .ticket-rail { top: 78px; }
1767
+
1768
+ .office-id { justify-self: start; }
1769
+
1770
+ .primary-nav {
1771
+ display: flex;
1772
+ align-items: center;
1773
+ justify-content: center;
1774
+ gap: 4px;
1775
+ padding: 4px;
1776
+ border: 1px solid rgba(216,235,230,.14);
1777
+ border-radius: 999px;
1778
+ background: rgba(8,23,37,.32);
1779
+ }
1780
+
1781
+ .primary-nav__button {
1782
+ position: relative;
1783
+ min-height: 34px;
1784
+ padding: 7px 13px;
1785
+ border: 0;
1786
+ border-radius: 999px;
1787
+ background: transparent;
1788
+ color: rgba(232,239,234,.62);
1789
+ cursor: pointer;
1790
+ font-size: 11px;
1791
+ white-space: nowrap;
1792
+ transition: color .2s ease, background .2s ease, transform .2s ease;
1793
+ }
1794
+
1795
+ .primary-nav__button:hover { color: #fff; transform: translateY(-1px); }
1796
+ .primary-nav__button.is-active { background: rgba(235,242,237,.94); color: #132532; font-weight: 750; }
1797
+ .primary-nav__button small {
1798
+ position: absolute;
1799
+ top: -7px;
1800
+ right: -3px;
1801
+ padding: 2px 4px;
1802
+ border-radius: 999px;
1803
+ background: #705339;
1804
+ color: #ffe2ae;
1805
+ font-size: 6px;
1806
+ line-height: 1;
1807
+ }
1808
+
1809
+ .header-controls {
1810
+ display: flex;
1811
+ align-items: center;
1812
+ justify-content: flex-end;
1813
+ gap: 7px;
1814
+ min-width: 0;
1815
+ justify-self: end;
1816
+ }
1817
+
1818
+ .scene-mode-switch {
1819
+ display: flex;
1820
+ padding: 3px;
1821
+ border: 1px solid rgba(216,235,230,.17);
1822
+ border-radius: 999px;
1823
+ background: rgba(8,23,37,.38);
1824
+ }
1825
+
1826
+ .scene-mode-switch button {
1827
+ min-height: 28px;
1828
+ padding: 5px 9px;
1829
+ border: 0;
1830
+ border-radius: 999px;
1831
+ background: transparent;
1832
+ color: rgba(232,239,234,.57);
1833
+ cursor: pointer;
1834
+ font-size: 9px;
1835
+ white-space: nowrap;
1836
+ }
1837
+
1838
+ .scene-mode-switch button[aria-pressed="true"] {
1839
+ background: rgba(168,218,210,.16);
1840
+ color: #eff7f2;
1841
+ box-shadow: inset 0 0 0 1px rgba(168,218,210,.22);
1842
+ }
1843
+
1844
+ .command-symbol { color: var(--mint); font: 750 11px/1 ui-monospace, SFMono-Regular, Menlo, monospace; }
1845
+
1846
+ html[data-scene="day"] .world-header {
1847
+ border-bottom-color: rgba(50,80,83,.16);
1848
+ background: linear-gradient(180deg, rgba(239,246,239,.92), rgba(229,239,234,.7));
1849
+ color: #263b40;
1850
+ box-shadow: 0 8px 30px rgba(57,79,78,.08);
1851
+ }
1852
+
1853
+ html[data-scene="day"] .office-id__mark {
1854
+ border-color: rgba(50,111,103,.38);
1855
+ background: rgba(255,255,255,.42);
1856
+ color: #326e67;
1857
+ }
1858
+
1859
+ html[data-scene="day"] .office-id span { color: rgba(42,65,69,.5); }
1860
+ html[data-scene="day"] .primary-nav { border-color: rgba(64,91,91,.16); background: rgba(255,255,255,.37); }
1861
+ html[data-scene="day"] .primary-nav__button { color: rgba(43,66,70,.64); }
1862
+ html[data-scene="day"] .primary-nav__button:hover { color: #21383c; }
1863
+ html[data-scene="day"] .primary-nav__button.is-active { background: #315f5b; color: #fff; }
1864
+ html[data-scene="day"] .scene-mode-switch { border-color: rgba(64,91,91,.17); background: rgba(255,255,255,.42); }
1865
+ html[data-scene="day"] .scene-mode-switch button { color: rgba(43,66,70,.58); }
1866
+ html[data-scene="day"] .scene-mode-switch button[aria-pressed="true"] { background: #d3e8df; color: #244c48; box-shadow: inset 0 0 0 1px rgba(49,95,91,.18); }
1867
+ html[data-scene="day"] .world-button { border-color: rgba(54,86,87,.2); background: rgba(255,255,255,.48); color: #2d464a; }
1868
+ html[data-scene="day"] .world-button:hover { border-color: rgba(54,86,87,.38); background: rgba(255,255,255,.78); }
1869
+
1870
+ .scene-intro {
1871
+ top: 106px;
1872
+ left: clamp(22px, 4vw, 62px);
1873
+ width: 330px;
1874
+ padding: 18px 19px 17px;
1875
+ border: 1px solid rgba(211,231,225,.13);
1876
+ border-radius: 14px;
1877
+ background: linear-gradient(145deg, rgba(7,22,36,.64), rgba(8,25,38,.34));
1878
+ box-shadow: 0 20px 45px rgba(0,0,0,.15), inset 0 1px 0 rgba(255,255,255,.035);
1879
+ backdrop-filter: blur(13px);
1880
+ }
1881
+
1882
+ .arrival-shift {
1883
+ display: flex;
1884
+ align-items: center;
1885
+ gap: 8px;
1886
+ color: rgba(210,231,224,.67);
1887
+ font: 700 8px/1.3 ui-monospace, SFMono-Regular, Menlo, monospace;
1888
+ letter-spacing: .13em;
1889
+ }
1890
+
1891
+ .arrival-shift .status-light { flex: 0 0 auto; }
1892
+ .arrival-time { margin: 10px 0 0; color: rgba(218,232,227,.47); font: 8px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .1em; }
1893
+
1894
+ .scene-intro h1 {
1895
+ max-width: none;
1896
+ margin-top: 14px;
1897
+ color: rgba(239,243,234,.92);
1898
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif;
1899
+ font-size: 34px;
1900
+ font-weight: 720;
1901
+ line-height: 1.08;
1902
+ letter-spacing: -.035em;
1903
+ text-shadow: 0 7px 24px rgba(0,0,0,.17);
1904
+ }
1905
+
1906
+ .scene-intro h1 em { color: var(--lamp); font-style: normal; }
1907
+ .scene-intro .arrival-copy {
1908
+ display: block;
1909
+ max-width: none;
1910
+ margin: 13px 0 0;
1911
+ color: rgba(222,235,230,.64);
1912
+ font-size: 11px;
1913
+ line-height: 1.7;
1914
+ }
1915
+
1916
+ .arrival-stats {
1917
+ display: grid;
1918
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1919
+ gap: 6px;
1920
+ margin-top: 14px;
1921
+ }
1922
+
1923
+ .arrival-stats span {
1924
+ display: block;
1925
+ min-width: 0;
1926
+ padding: 8px 6px;
1927
+ border: 1px solid rgba(202,225,218,.11);
1928
+ border-radius: 7px;
1929
+ background: rgba(168,218,210,.045);
1930
+ color: rgba(221,234,229,.5);
1931
+ font-size: 7px;
1932
+ line-height: 1.35;
1933
+ text-align: center;
1934
+ }
1935
+
1936
+ .arrival-stats strong { display: block; margin-bottom: 3px; color: rgba(240,244,235,.88); font-size: 10px; white-space: nowrap; }
1937
+
1938
+ html[data-scene="day"] .scene-intro {
1939
+ border-color: rgba(62,91,91,.16);
1940
+ background: linear-gradient(145deg, rgba(250,248,235,.82), rgba(239,245,236,.6));
1941
+ box-shadow: 0 20px 46px rgba(61,85,84,.12), inset 0 1px 0 rgba(255,255,255,.65);
1942
+ }
1943
+
1944
+ html[data-scene="day"] .arrival-shift { color: #46726d; }
1945
+ html[data-scene="day"] .arrival-time { color: rgba(47,72,75,.52); }
1946
+ html[data-scene="day"] .scene-intro h1 { color: #263d42; text-shadow: none; }
1947
+ html[data-scene="day"] .scene-intro h1 em { color: #b96c2b; }
1948
+ html[data-scene="day"] .scene-intro .arrival-copy { color: rgba(43,66,69,.66); }
1949
+ html[data-scene="day"] .arrival-stats span { border-color: rgba(54,90,88,.14); background: rgba(255,255,255,.36); color: rgba(45,70,72,.53); }
1950
+ html[data-scene="day"] .arrival-stats strong { color: #2b5451; }
1951
+
1952
+ html[data-scene="day"] .moon {
1953
+ opacity: .95;
1954
+ background:
1955
+ radial-gradient(circle at 35% 30%, rgba(255,255,255,.84), transparent 28%),
1956
+ radial-gradient(circle, #fff1bd 0 56%, #f6d58d 72%, #dda45f 100%);
1957
+ box-shadow: 0 0 55px rgba(255,232,161,.55), 0 0 150px rgba(255,214,128,.25);
1958
+ }
1959
+
1960
+ html[data-scene="day"] .mountains { opacity: .62; filter: brightness(1.85) saturate(.46) drop-shadow(0 -20px 35px rgba(86,116,118,.24)); }
1961
+ html[data-scene="day"] .mountains::after { background: linear-gradient(180deg, #79979c, #678188); }
1962
+ html[data-scene="day"] .cliff {
1963
+ opacity: .72;
1964
+ background:
1965
+ radial-gradient(ellipse at 18% 15%, rgba(225,231,213,.24) 0 1%, transparent 1.5%),
1966
+ linear-gradient(158deg, #829694 0 26%, #657d7d 27% 62%, #536d72 63%);
1967
+ }
1968
+ html[data-scene="day"] .grass { opacity: .62; border-top-color: rgba(75,112,91,.64); background: repeating-linear-gradient(76deg, transparent 0 8px, rgba(79,122,91,.58) 9px 10px, transparent 11px 18px); }
1969
+ html[data-scene="day"] .wind-lines { opacity: .26; filter: sepia(.2); }
1970
+ html[data-scene="day"] .ambient-receipt { opacity: .31; filter: blur(.15px) saturate(.72) brightness(1.04); }
1971
+ html[data-scene="day"] .office { opacity: .96; filter: drop-shadow(0 22px 28px rgba(55,69,67,.28)) brightness(1.06); }
1972
+ html[data-scene="day"] .window { box-shadow: 0 0 28px rgba(255,183,92,.24), inset 0 0 18px rgba(255,219,160,.28); }
1973
+ html[data-scene="day"] .office-sign { background: #34545a; color: #ffe0aa; }
1974
+ html[data-scene="day"] .notice-lamp i { opacity: .68; box-shadow: 0 0 8px rgba(255,202,122,.56), 0 0 20px rgba(255,188,93,.34); }
1975
+
1976
+ .printer {
1977
+ appearance: none;
1978
+ padding: 0;
1979
+ color: inherit;
1980
+ cursor: pointer;
1981
+ transition: filter .2s ease, transform .2s ease;
1982
+ }
1983
+
1984
+ .printer:hover,
1985
+ .printer:focus-visible { filter: brightness(1.22); transform: translateY(-2px); }
1986
+ .printer:focus-visible { outline: 2px solid var(--mint); outline-offset: 3px; }
1987
+
1988
+ .today-package {
1989
+ position: fixed;
1990
+ top: calc(13vh + clamp(92px, 11vw, 155px) + 24px);
1991
+ right: clamp(24px, 3vw, 64px);
1992
+ z-index: 52;
1993
+ width: 328px;
1994
+ padding: 13px;
1995
+ border: 1px solid rgba(205,224,217,.22);
1996
+ border-radius: 14px;
1997
+ background: linear-gradient(145deg, rgba(8,25,39,.9), rgba(6,19,31,.82));
1998
+ box-shadow: 0 24px 58px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.045);
1999
+ backdrop-filter: blur(15px);
2000
+ }
2001
+
2002
+ .today-package__heading {
2003
+ display: flex;
2004
+ align-items: end;
2005
+ justify-content: space-between;
2006
+ gap: 12px;
2007
+ padding: 2px 2px 11px;
2008
+ }
2009
+
2010
+ .today-package__heading small,
2011
+ .today-package__heading strong { display: block; }
2012
+ .today-package__heading small { margin-bottom: 5px; color: rgba(168,218,210,.58); font: 7px/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .13em; }
2013
+ .today-package__heading strong { font-size: 15px; letter-spacing: .04em; }
2014
+ .today-package__heading > span { color: rgba(225,236,231,.42); font: 8px/1 ui-monospace, SFMono-Regular, Menlo, monospace; }
2015
+
2016
+ .package-item {
2017
+ display: grid;
2018
+ grid-template-columns: 34px minmax(0, 1fr) auto;
2019
+ gap: 9px;
2020
+ align-items: center;
2021
+ width: 100%;
2022
+ min-height: 55px;
2023
+ margin-top: 7px;
2024
+ padding: 8px 9px;
2025
+ border: 1px solid rgba(205,224,217,.11);
2026
+ border-radius: 9px;
2027
+ background: rgba(215,230,224,.035);
2028
+ color: rgba(235,240,232,.82);
2029
+ cursor: pointer;
2030
+ text-align: left;
2031
+ transition: border-color .2s ease, background .2s ease, transform .2s ease;
2032
+ }
2033
+
2034
+ .package-item:hover { border-color: rgba(205,224,217,.25); background: rgba(215,230,224,.075); transform: translateY(-2px); }
2035
+ .package-item.is-active { border-color: rgba(168,218,210,.34); background: rgba(168,218,210,.1); }
2036
+ .package-item > span:nth-child(2) { min-width: 0; }
2037
+ .package-item strong,
2038
+ .package-item small { display: block; }
2039
+ .package-item strong { font-size: 11px; }
2040
+ .package-item small { margin-top: 4px; overflow: hidden; color: rgba(221,234,229,.47); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
2041
+ .package-item b { padding: 4px 6px; border-radius: 999px; background: rgba(255,196,105,.1); color: rgba(255,218,160,.72); font-size: 7px; font-weight: 700; white-space: nowrap; }
2042
+ .package-item.is-active b { background: rgba(137,227,188,.11); color: #a7e6cd; }
2043
+
2044
+ .package-item__icon {
2045
+ display: grid;
2046
+ place-items: center;
2047
+ width: 32px;
2048
+ height: 32px;
2049
+ border: 1px solid rgba(210,229,222,.16);
2050
+ border-radius: 9px;
2051
+ background: rgba(255,255,255,.045);
2052
+ color: rgba(232,239,234,.66);
2053
+ font-size: 9px;
2054
+ font-weight: 750;
2055
+ }
2056
+
2057
+ .package-item__icon--mood { color: #f0b4c2; }
2058
+ .package-item__icon--badge { color: #ffd184; }
2059
+
2060
+ .today-package__links {
2061
+ display: grid;
2062
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2063
+ gap: 7px;
2064
+ margin-top: 10px;
2065
+ }
2066
+
2067
+ .today-package__links button {
2068
+ min-height: 32px;
2069
+ border: 1px solid rgba(205,224,217,.13);
2070
+ border-radius: 8px;
2071
+ background: rgba(255,255,255,.025);
2072
+ color: rgba(223,235,230,.55);
2073
+ cursor: pointer;
2074
+ font-size: 8px;
2075
+ }
2076
+
2077
+ .today-package__links button:hover { border-color: rgba(205,224,217,.3); color: rgba(241,244,236,.86); }
2078
+
2079
+ html[data-scene="day"] .today-package {
2080
+ border-color: rgba(55,87,87,.18);
2081
+ background: linear-gradient(145deg, rgba(248,246,230,.9), rgba(231,241,232,.82));
2082
+ color: #294246;
2083
+ box-shadow: 0 24px 55px rgba(67,88,85,.16), inset 0 1px 0 rgba(255,255,255,.7);
2084
+ }
2085
+
2086
+ html[data-scene="day"] .today-package__heading small { color: #4b7a72; }
2087
+ html[data-scene="day"] .today-package__heading > span { color: rgba(45,69,71,.46); }
2088
+ html[data-scene="day"] .package-item { border-color: rgba(54,85,84,.12); background: rgba(255,255,255,.35); color: #2c4649; }
2089
+ html[data-scene="day"] .package-item:hover { border-color: rgba(54,85,84,.27); background: rgba(255,255,255,.62); }
2090
+ html[data-scene="day"] .package-item.is-active { border-color: rgba(49,104,94,.3); background: rgba(188,222,205,.38); }
2091
+ html[data-scene="day"] .package-item small { color: rgba(43,68,70,.52); }
2092
+ html[data-scene="day"] .package-item b { background: rgba(185,108,43,.09); color: #946037; }
2093
+ html[data-scene="day"] .package-item.is-active b { background: rgba(49,104,94,.1); color: #32685e; }
2094
+ html[data-scene="day"] .package-item__icon { border-color: rgba(52,84,83,.13); background: rgba(255,255,255,.48); color: #49746e; }
2095
+ html[data-scene="day"] .package-item__icon--mood { color: #b75d74; }
2096
+ html[data-scene="day"] .package-item__icon--badge { color: #a76a25; }
2097
+ html[data-scene="day"] .today-package__links button { border-color: rgba(54,85,84,.14); background: rgba(255,255,255,.28); color: rgba(43,68,70,.58); }
2098
+ html[data-scene="day"] .today-package__links button:hover { border-color: rgba(54,85,84,.3); color: #29484a; }
2099
+
2100
+ html[data-scene="day"] .receipt-toolbar {
2101
+ background: linear-gradient(180deg, rgba(218,233,228,.97) 0%, rgba(222,236,229,.92) 72%, rgba(222,236,229,.72) 88%, transparent 100%);
2102
+ }
2103
+
2104
+ html[data-scene="day"] .receipt-toolbar::after { background: linear-gradient(180deg, rgba(78,104,101,.13), transparent); }
2105
+ html[data-scene="day"] .ticket-rail { scrollbar-color: rgba(48,100,91,.45) rgba(255,255,255,.12); }
2106
+ html[data-scene="day"] .privacy { border-color: rgba(52,81,81,.14); background: rgba(245,247,237,.5); color: rgba(43,67,69,.58); }
2107
+
2108
+ /* The command list is now a drawer opened from the Header or the receipt printer. */
2109
+ .feature-dock,
2110
+ .feature-dock:not([open]) {
2111
+ top: 88px;
2112
+ right: 16px;
2113
+ bottom: auto;
2114
+ left: auto;
2115
+ width: min(390px, calc(100vw - 32px));
2116
+ max-width: none;
2117
+ border-radius: 14px;
2118
+ transform: translateX(22px) scale(.985);
2119
+ transform-origin: top right;
2120
+ transition: opacity .2s ease, visibility .2s ease, transform .2s ease, box-shadow .2s ease;
2121
+ }
2122
+
2123
+ .feature-dock:not([open]) {
2124
+ visibility: hidden;
2125
+ opacity: 0;
2126
+ pointer-events: none;
2127
+ }
2128
+
2129
+ .feature-dock[open] {
2130
+ visibility: visible;
2131
+ opacity: 1;
2132
+ transform: translateX(0) scale(1);
2133
+ }
2134
+
2135
+ .feature-dock:not([open]) .feature-dock__summary { min-height: 52px; padding: 11px 13px; justify-content: space-between; }
2136
+ .feature-dock:not([open]) .feature-dock__title { flex-direction: row; gap: 8px; }
2137
+ .feature-dock:not([open]) .feature-dock__title-text,
2138
+ .feature-dock:not([open]) .feature-dock__meta { display: inline-flex; }
2139
+ .feature-dock:not([open]) .feature-dock__compact { display: none; }
2140
+ .feature-dock__body { max-height: calc(100dvh - 158px); }
2141
+
2142
+ @media (max-width: 1430px) {
2143
+ .world-header { grid-template-columns: minmax(190px, 1fr) auto minmax(390px, 1fr); }
2144
+ .office-id span { display: none; }
2145
+ .command-drawer-toggle > span:last-child { display: none; }
2146
+ .command-drawer-toggle { width: 35px; padding: 0; }
2147
+ .today-package { right: 12px; width: 270px; }
2148
+ .today-package__heading { padding-bottom: 8px; }
2149
+ .package-item { min-height: 49px; }
2150
+ }
2151
+
2152
+ @media (max-width: 1250px) {
2153
+ .today-package { width: 178px; padding: 10px; }
2154
+ .today-package__heading > span,
2155
+ .package-item small,
2156
+ .package-item b { display: none; }
2157
+ .package-item { grid-template-columns: 28px minmax(0, 1fr); gap: 7px; min-height: 43px; padding: 7px; }
2158
+ .package-item__icon { width: 27px; height: 27px; border-radius: 7px; }
2159
+ .today-package__links { grid-template-columns: 1fr; }
2160
+ }
2161
+
2162
+ @media (max-width: 1180px) {
2163
+ .world-header { grid-template-columns: auto 1fr auto; gap: 10px; }
2164
+ .office-id strong { font-size: 11px; }
2165
+ .primary-nav__button { padding-inline: 9px; }
2166
+ .scene-mode-switch button { padding-inline: 7px; }
2167
+ }
2168
+
2169
+ @media (max-width: 1119px) and (min-width: 881px) {
2170
+ .today-package { width: 64px; padding: 7px; }
2171
+ .today-package__heading { display: block; padding: 2px 0 5px; text-align: center; }
2172
+ .today-package__heading small,
2173
+ .today-package__heading > span { display: none; }
2174
+ .today-package__heading strong { font-size: 8px; }
2175
+ .package-item { display: block; min-height: 39px; padding: 5px; text-align: center; }
2176
+ .package-item__icon { display: grid; margin: 0 auto; }
2177
+ .package-item > span:nth-child(2),
2178
+ .package-item b,
2179
+ .today-package__links { display: none; }
2180
+ }
2181
+
2182
+ @media (max-width: 880px) {
2183
+ .world-header {
2184
+ grid-template-areas: "office controls" "nav nav";
2185
+ grid-template-columns: auto 1fr;
2186
+ grid-template-rows: 42px 34px;
2187
+ gap: 3px 8px;
2188
+ min-height: 92px;
2189
+ padding: 7px 10px 6px;
2190
+ }
2191
+ .office-id { grid-area: office; }
2192
+ .office-id > div:last-child { display: none; }
2193
+ .office-id__mark { width: 34px; height: 34px; }
2194
+ .primary-nav { grid-area: nav; width: 100%; padding: 2px; }
2195
+ .primary-nav__button { flex: 1 1 0; min-height: 28px; padding: 4px 5px; font-size: 9px; }
2196
+ .primary-nav__button small { top: -4px; right: 2px; }
2197
+ .header-controls { grid-area: controls; gap: 5px; }
2198
+ .scene-mode-switch { padding: 2px; }
2199
+ .scene-mode-switch button { min-height: 26px; padding: 4px 6px; font-size: 8px; }
2200
+ .world-button { min-height: 30px; }
2201
+ .world-button .command-symbol { display: inline; }
2202
+ #windToggle span { display: none; }
2203
+ #windToggle { width: 32px; padding: 0; }
2204
+ .scene-intro {
2205
+ top: 104px;
2206
+ left: 10px;
2207
+ width: calc(58% - 15px);
2208
+ min-width: 0;
2209
+ height: 106px;
2210
+ padding: 11px 12px;
2211
+ overflow: hidden;
2212
+ border-radius: 10px;
2213
+ }
2214
+ .arrival-shift { font-size: 7px; }
2215
+ .arrival-time { margin-top: 6px; font-size: 7px; }
2216
+ .scene-intro h1 { margin-top: 8px; font-size: 20px; line-height: 1.04; }
2217
+ .scene-intro .arrival-copy,
2218
+ .arrival-stats { display: none; }
2219
+ .today-package {
2220
+ top: 104px;
2221
+ right: 10px;
2222
+ left: auto;
2223
+ width: calc(42% - 5px);
2224
+ height: 106px;
2225
+ padding: 7px;
2226
+ overflow: hidden;
2227
+ border-radius: 10px;
2228
+ }
2229
+ .today-package__heading { padding: 0 2px 4px; }
2230
+ .today-package__heading small,
2231
+ .today-package__heading > span { display: none; }
2232
+ .today-package__heading strong { font-size: 10px; }
2233
+ .package-item { display: block; min-height: 22px; margin-top: 3px; padding: 4px 5px; border-radius: 5px; text-align: center; }
2234
+ .package-item__icon,
2235
+ .package-item small,
2236
+ .package-item b,
2237
+ .today-package__links { display: none; }
2238
+ .package-item strong { overflow: hidden; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
2239
+ .ticket-rail { top: 220px; }
2240
+ .feature-dock,
2241
+ .feature-dock:not([open]) {
2242
+ top: 98px;
2243
+ right: 8px;
2244
+ bottom: 8px;
2245
+ left: 8px;
2246
+ width: auto;
2247
+ max-width: none;
2248
+ border-radius: 12px;
2249
+ }
2250
+ .feature-dock__body { max-height: calc(100dvh - 174px); }
2251
+ }
2252
+
2253
+ @media (max-width: 560px) {
2254
+ .scene-mode-switch button:first-child { max-width: 43px; overflow: hidden; text-overflow: ellipsis; }
2255
+ .primary-nav__button small { display: none; }
2256
+ .receipt-toolbar { margin-bottom: 8px; }
2257
+ .receipt-toolbar .export-actions { width: 100%; align-items: stretch; flex-direction: column; }
2258
+ }
2259
+
2260
+ @media print {
2261
+ html, body { width: auto; height: auto; overflow: visible; }
2262
+ body { background: #fff; }
2263
+ .ambient, .world-header, .scene, .today-package, .feature-dock, .paper-bridge, .departure, .privacy, .toast { display: none !important; }
2264
+ .world { display: block; width: 540px; height: auto; margin: 0 auto; padding: 0; overflow: visible; }
2265
+ .ticket-rail { position: static; width: 540px; height: auto; padding: 0; overflow: visible; transform: none; }
2266
+ .receipt-toolbar { display: none; }
2267
+ .ticket-sway { width: 540px; animation: none; transform: none; }
2268
+ .ticket-sway::before { display: none; }
2269
+ .receipt-scope .paper { box-shadow: none; }
2270
+ }