agent-office-cli 0.0.1

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,833 @@
1
+ /* === AgentOffice Auth — Warm Atelier === */
2
+ @import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=DM+Serif+Display&display=swap');
3
+
4
+ /* --- Reset --- */
5
+ *, *::before, *::after { box-sizing: border-box; }
6
+
7
+ /* --- Auth design tokens --- */
8
+ :root {
9
+ --auth-bg: #f4ebe0;
10
+ --auth-surface: #fffbf5;
11
+ --auth-border: #d6c9b6;
12
+ --auth-border-strong: #2f2b26;
13
+ --auth-text: #2f2b26;
14
+ --auth-text-muted: #8a7e6e;
15
+ --auth-accent: #b95c33;
16
+ --auth-accent-hover: #a34e28;
17
+ --auth-accent-glow: rgba(185, 92, 51, 0.15);
18
+ --auth-error-bg: #fef0ee;
19
+ --auth-error-border: #e8a89e;
20
+ --auth-error-text: #8b3a2e;
21
+ --auth-success-bg: #effbf0;
22
+ --auth-success-border: #a3d9a5;
23
+ --auth-radius: 14px;
24
+ --auth-radius-sm: 10px;
25
+ --auth-font-body: 'DM Sans', system-ui, sans-serif;
26
+ --auth-font-display: 'DM Serif Display', Georgia, serif;
27
+ --auth-shadow: 0 1px 3px rgba(47,43,38,0.06), 0 8px 24px rgba(47,43,38,0.08);
28
+ --auth-shadow-lg: 0 2px 8px rgba(47,43,38,0.08), 0 16px 48px rgba(47,43,38,0.12);
29
+
30
+ /* Dashboard light tokens */
31
+ --dash-bg: #f4ebe0;
32
+ --dash-surface: #fffbf5;
33
+ --dash-surface-hover: #f8f2e8;
34
+ --dash-border: #d6c9b6;
35
+ --dash-text: #2f2b26;
36
+ --dash-text-muted: #8a7e6e;
37
+ --dash-accent: #b95c33;
38
+ }
39
+
40
+ /* --- Base auth shell --- */
41
+ .auth-page {
42
+ margin: 0;
43
+ min-height: 100vh;
44
+ font-family: var(--auth-font-body);
45
+ color: var(--auth-text);
46
+ background: var(--auth-bg);
47
+ background-image:
48
+ radial-gradient(ellipse 120% 80% at 20% 0%, rgba(185,92,51,0.06) 0%, transparent 60%),
49
+ radial-gradient(ellipse 80% 100% at 90% 100%, rgba(185,92,51,0.04) 0%, transparent 50%);
50
+ -webkit-font-smoothing: antialiased;
51
+ }
52
+
53
+ .auth-shell {
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ min-height: 100vh;
58
+ padding: 24px 16px;
59
+ }
60
+
61
+ /* --- Card --- */
62
+ .auth-card {
63
+ width: 100%;
64
+ max-width: 440px;
65
+ background: var(--auth-surface);
66
+ border: 1px solid var(--auth-border);
67
+ border-radius: 20px;
68
+ box-shadow: var(--auth-shadow);
69
+ padding: 40px 36px 36px;
70
+ animation: authCardIn 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
71
+ }
72
+
73
+ @keyframes authCardIn {
74
+ from { opacity: 0; transform: translateY(12px) scale(0.98); }
75
+ to { opacity: 1; transform: translateY(0) scale(1); }
76
+ }
77
+
78
+ /* --- Brand --- */
79
+ .auth-brand {
80
+ display: flex;
81
+ align-items: center;
82
+ gap: 8px;
83
+ margin-bottom: 28px;
84
+ }
85
+
86
+ .auth-brand-mark {
87
+ width: 28px;
88
+ height: 28px;
89
+ background: var(--auth-accent);
90
+ border-radius: 8px;
91
+ display: grid;
92
+ place-items: center;
93
+ flex-shrink: 0;
94
+ }
95
+
96
+ .auth-brand-mark svg {
97
+ width: 16px;
98
+ height: 16px;
99
+ fill: #fff;
100
+ }
101
+
102
+ .auth-brand-name {
103
+ font-family: var(--auth-font-display);
104
+ font-size: 18px;
105
+ color: var(--auth-text);
106
+ letter-spacing: -0.01em;
107
+ }
108
+
109
+ /* --- Headings --- */
110
+ .auth-title {
111
+ font-family: var(--auth-font-display);
112
+ font-size: 28px;
113
+ font-weight: 400;
114
+ margin: 0 0 6px;
115
+ letter-spacing: -0.02em;
116
+ line-height: 1.2;
117
+ }
118
+
119
+ .auth-subtitle {
120
+ color: var(--auth-text-muted);
121
+ font-size: 14px;
122
+ line-height: 1.6;
123
+ margin: 0 0 28px;
124
+ }
125
+
126
+ /* --- Form --- */
127
+ .auth-form {
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: 18px;
131
+ }
132
+
133
+ .auth-field {
134
+ display: flex;
135
+ flex-direction: column;
136
+ gap: 6px;
137
+ }
138
+
139
+ .auth-label {
140
+ font-size: 13px;
141
+ font-weight: 600;
142
+ color: var(--auth-text);
143
+ letter-spacing: 0.01em;
144
+ }
145
+
146
+ .auth-input {
147
+ width: 100%;
148
+ padding: 11px 14px;
149
+ border: 1.5px solid var(--auth-border);
150
+ border-radius: var(--auth-radius-sm);
151
+ background: #fff;
152
+ font-size: 15px;
153
+ font-family: var(--auth-font-body);
154
+ color: var(--auth-text);
155
+ transition: border-color 0.2s, box-shadow 0.2s;
156
+ outline: none;
157
+ }
158
+
159
+ .auth-input::placeholder {
160
+ color: var(--auth-text-muted);
161
+ opacity: 0.6;
162
+ }
163
+
164
+ .auth-input:focus {
165
+ border-color: var(--auth-accent);
166
+ box-shadow: 0 0 0 3px var(--auth-accent-glow);
167
+ }
168
+
169
+ /* --- Buttons --- */
170
+ .auth-btn {
171
+ padding: 12px 20px;
172
+ border: none;
173
+ border-radius: var(--auth-radius-sm);
174
+ font-family: var(--auth-font-body);
175
+ font-size: 15px;
176
+ font-weight: 600;
177
+ cursor: pointer;
178
+ transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
179
+ outline: none;
180
+ position: relative;
181
+ }
182
+
183
+ .auth-btn:focus-visible {
184
+ box-shadow: 0 0 0 3px var(--auth-accent-glow);
185
+ }
186
+
187
+ .auth-btn-primary {
188
+ background: var(--auth-accent);
189
+ color: #fff;
190
+ }
191
+
192
+ .auth-btn-primary:hover:not(:disabled) {
193
+ background: var(--auth-accent-hover);
194
+ transform: translateY(-1px);
195
+ box-shadow: 0 4px 12px rgba(185,92,51,0.25);
196
+ }
197
+
198
+ .auth-btn-primary:active:not(:disabled) {
199
+ transform: translateY(0);
200
+ box-shadow: none;
201
+ }
202
+
203
+ .auth-btn:disabled {
204
+ opacity: 0.55;
205
+ cursor: not-allowed;
206
+ transform: none;
207
+ }
208
+
209
+ .auth-btn-ghost {
210
+ background: #fff;
211
+ color: var(--auth-text);
212
+ border: 1.5px solid var(--auth-border);
213
+ }
214
+
215
+ .auth-btn-ghost:hover:not(:disabled) {
216
+ border-color: var(--auth-border-strong);
217
+ background: #fefcf8;
218
+ }
219
+
220
+ .auth-btn-sm {
221
+ padding: 8px 14px;
222
+ font-size: 13px;
223
+ border-radius: 8px;
224
+ }
225
+
226
+ /* --- Email row with send code --- */
227
+ .auth-email-row {
228
+ display: flex;
229
+ gap: 10px;
230
+ align-items: flex-start;
231
+ }
232
+
233
+ .auth-email-row .auth-input {
234
+ flex: 1;
235
+ min-width: 0;
236
+ }
237
+
238
+ .auth-send-btn {
239
+ padding: 11px 16px;
240
+ border: 1.5px solid var(--auth-border);
241
+ border-radius: var(--auth-radius-sm);
242
+ background: #fff;
243
+ color: var(--auth-text);
244
+ font-family: var(--auth-font-body);
245
+ font-size: 13px;
246
+ font-weight: 600;
247
+ cursor: pointer;
248
+ white-space: nowrap;
249
+ flex-shrink: 0;
250
+ transition: all 0.2s;
251
+ }
252
+
253
+ .auth-send-btn:hover:not(:disabled) {
254
+ border-color: var(--auth-accent);
255
+ color: var(--auth-accent);
256
+ }
257
+
258
+ .auth-send-btn:disabled {
259
+ opacity: 0.45;
260
+ cursor: not-allowed;
261
+ }
262
+
263
+ .auth-send-btn.sent {
264
+ border-color: var(--auth-success-border);
265
+ color: #3d7a3f;
266
+ background: var(--auth-success-bg);
267
+ }
268
+
269
+ /* --- Code input row --- */
270
+ .auth-code-row {
271
+ display: flex;
272
+ align-items: center;
273
+ gap: 12px;
274
+ max-height: 0;
275
+ overflow: hidden;
276
+ opacity: 0;
277
+ transition: max-height 0.4s cubic-bezier(0.16, 1, 0.3, 1),
278
+ opacity 0.3s ease,
279
+ margin 0.4s cubic-bezier(0.16, 1, 0.3, 1);
280
+ margin-top: 0;
281
+ }
282
+
283
+ .auth-code-row.visible {
284
+ max-height: 80px;
285
+ opacity: 1;
286
+ margin-top: 0;
287
+ }
288
+
289
+ .auth-code-input {
290
+ flex: 1;
291
+ padding: 11px 14px;
292
+ border: 1.5px solid var(--auth-border);
293
+ border-radius: var(--auth-radius-sm);
294
+ background: #fff;
295
+ font-size: 22px;
296
+ font-weight: 700;
297
+ font-family: 'DM Sans', monospace;
298
+ letter-spacing: 6px;
299
+ text-align: center;
300
+ color: var(--auth-text);
301
+ transition: border-color 0.2s, box-shadow 0.2s;
302
+ outline: none;
303
+ min-width: 0;
304
+ }
305
+
306
+ .auth-code-input::placeholder {
307
+ font-size: 14px;
308
+ letter-spacing: 1px;
309
+ font-weight: 400;
310
+ color: var(--auth-text-muted);
311
+ opacity: 0.5;
312
+ }
313
+
314
+ .auth-code-input:focus {
315
+ border-color: var(--auth-accent);
316
+ box-shadow: 0 0 0 3px var(--auth-accent-glow);
317
+ }
318
+
319
+ .auth-resend-btn {
320
+ background: none;
321
+ border: none;
322
+ padding: 4px 0;
323
+ font-family: var(--auth-font-body);
324
+ font-size: 13px;
325
+ font-weight: 600;
326
+ color: var(--auth-accent);
327
+ cursor: pointer;
328
+ white-space: nowrap;
329
+ min-width: 56px;
330
+ text-align: right;
331
+ transition: color 0.2s;
332
+ }
333
+
334
+ .auth-resend-btn:disabled {
335
+ color: var(--auth-text-muted);
336
+ cursor: default;
337
+ }
338
+
339
+ .auth-resend-btn:hover:not(:disabled) {
340
+ color: var(--auth-accent-hover);
341
+ }
342
+
343
+ /* --- Turnstile --- */
344
+ .auth-turnstile {
345
+ display: flex;
346
+ justify-content: center;
347
+ }
348
+
349
+ .auth-turnstile:empty {
350
+ display: none;
351
+ }
352
+
353
+ /* --- Error box --- */
354
+ .auth-error {
355
+ margin-top: 4px;
356
+ padding: 10px 14px;
357
+ background: var(--auth-error-bg);
358
+ border: 1px solid var(--auth-error-border);
359
+ border-radius: var(--auth-radius-sm);
360
+ font-size: 13px;
361
+ line-height: 1.5;
362
+ color: var(--auth-error-text);
363
+ animation: authShake 0.4s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
364
+ }
365
+
366
+ @keyframes authShake {
367
+ 10%, 90% { transform: translateX(-1px); }
368
+ 20%, 80% { transform: translateX(2px); }
369
+ 30%, 50%, 70% { transform: translateX(-3px); }
370
+ 40%, 60% { transform: translateX(3px); }
371
+ }
372
+
373
+ /* --- Toggle link --- */
374
+ .auth-toggle {
375
+ margin-top: 24px;
376
+ padding-top: 20px;
377
+ border-top: 1px solid var(--auth-border);
378
+ text-align: center;
379
+ font-size: 14px;
380
+ color: var(--auth-text-muted);
381
+ }
382
+
383
+ .auth-toggle a {
384
+ color: var(--auth-accent);
385
+ cursor: pointer;
386
+ font-weight: 600;
387
+ text-decoration: none;
388
+ transition: color 0.15s;
389
+ }
390
+
391
+ .auth-toggle a:hover {
392
+ color: var(--auth-accent-hover);
393
+ text-decoration: underline;
394
+ }
395
+
396
+ /* --- Mode sections --- */
397
+ .auth-mode { display: none; }
398
+ .auth-mode.active {
399
+ display: block;
400
+ animation: authFadeIn 0.3s ease both;
401
+ }
402
+
403
+ @keyframes authFadeIn {
404
+ from { opacity: 0; transform: translateY(6px); }
405
+ to { opacity: 1; transform: translateY(0); }
406
+ }
407
+
408
+ /* --- Divider --- */
409
+ .auth-divider {
410
+ display: flex;
411
+ align-items: center;
412
+ gap: 16px;
413
+ margin: 4px 0;
414
+ color: var(--auth-text-muted);
415
+ font-size: 12px;
416
+ text-transform: uppercase;
417
+ letter-spacing: 0.06em;
418
+ }
419
+
420
+ .auth-divider::before,
421
+ .auth-divider::after {
422
+ content: "";
423
+ flex: 1;
424
+ height: 1px;
425
+ background: var(--auth-border);
426
+ }
427
+
428
+ /* ========================================
429
+ Dashboard (light theme)
430
+ ======================================== */
431
+ .dash-page {
432
+ margin: 0;
433
+ min-height: 100vh;
434
+ font-family: var(--auth-font-body);
435
+ color: var(--dash-text);
436
+ background: var(--dash-bg);
437
+ background-image:
438
+ radial-gradient(ellipse 120% 80% at 20% 0%, rgba(185,92,51,0.06) 0%, transparent 60%),
439
+ radial-gradient(ellipse 80% 100% at 90% 100%, rgba(185,92,51,0.04) 0%, transparent 50%);
440
+ -webkit-font-smoothing: antialiased;
441
+ }
442
+
443
+ .dash-shell {
444
+ display: flex;
445
+ justify-content: center;
446
+ padding: 40px 16px 60px;
447
+ min-height: 100vh;
448
+ }
449
+
450
+ .dash-card {
451
+ width: 100%;
452
+ max-width: 560px;
453
+ animation: authCardIn 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
454
+ }
455
+
456
+ /* --- Dashboard header --- */
457
+ .dash-header {
458
+ display: flex;
459
+ align-items: center;
460
+ justify-content: space-between;
461
+ margin-bottom: 8px;
462
+ }
463
+
464
+ .dash-header-actions {
465
+ display: flex;
466
+ align-items: center;
467
+ gap: 10px;
468
+ }
469
+
470
+ .dash-brand {
471
+ display: flex;
472
+ align-items: center;
473
+ gap: 8px;
474
+ }
475
+
476
+ .dash-brand-mark {
477
+ width: 24px;
478
+ height: 24px;
479
+ background: var(--dash-accent);
480
+ border-radius: 6px;
481
+ display: grid;
482
+ place-items: center;
483
+ }
484
+
485
+ .dash-brand-mark svg {
486
+ width: 14px;
487
+ height: 14px;
488
+ fill: #fff;
489
+ }
490
+
491
+ .dash-brand-name {
492
+ font-family: var(--auth-font-display);
493
+ font-size: 15px;
494
+ color: var(--dash-text-muted);
495
+ }
496
+
497
+ .dash-logout {
498
+ background: none;
499
+ border: 1px solid var(--dash-border);
500
+ border-radius: 8px;
501
+ color: var(--dash-text-muted);
502
+ cursor: pointer;
503
+ font-family: var(--auth-font-body);
504
+ font-size: 13px;
505
+ padding: 6px 14px;
506
+ transition: all 0.2s;
507
+ }
508
+
509
+ .dash-nav-link {
510
+ display: inline-flex;
511
+ align-items: center;
512
+ justify-content: center;
513
+ min-height: 33px;
514
+ padding: 6px 14px;
515
+ border: 1px solid var(--dash-border);
516
+ border-radius: 8px;
517
+ color: var(--dash-text-muted);
518
+ text-decoration: none;
519
+ font-family: var(--auth-font-body);
520
+ font-size: 13px;
521
+ transition: all 0.2s;
522
+ }
523
+
524
+ .dash-nav-link:hover {
525
+ border-color: var(--dash-text-muted);
526
+ color: var(--dash-text);
527
+ }
528
+
529
+ .dash-logout:hover {
530
+ border-color: var(--dash-text-muted);
531
+ color: var(--dash-text);
532
+ }
533
+
534
+ /* --- Dashboard title --- */
535
+ .dash-title {
536
+ font-family: var(--auth-font-display);
537
+ font-size: 32px;
538
+ font-weight: 400;
539
+ margin: 20px 0 4px;
540
+ letter-spacing: -0.02em;
541
+ }
542
+
543
+ .dash-user {
544
+ display: flex;
545
+ align-items: center;
546
+ gap: 8px;
547
+ margin-bottom: 32px;
548
+ font-size: 14px;
549
+ color: var(--dash-text-muted);
550
+ }
551
+
552
+ .dash-user strong {
553
+ color: var(--dash-text);
554
+ font-weight: 600;
555
+ }
556
+
557
+ /* --- Dashboard sections --- */
558
+ .dash-section {
559
+ background: var(--dash-surface);
560
+ border: 1px solid var(--dash-border);
561
+ border-radius: 16px;
562
+ padding: 24px;
563
+ margin-bottom: 16px;
564
+ box-shadow: var(--auth-shadow);
565
+ }
566
+
567
+ .dash-section-title {
568
+ font-family: var(--auth-font-display);
569
+ font-size: 18px;
570
+ font-weight: 400;
571
+ margin: 0 0 16px;
572
+ letter-spacing: -0.01em;
573
+ }
574
+
575
+ /* --- Key list --- */
576
+ .dash-key-item {
577
+ display: flex;
578
+ align-items: center;
579
+ padding: 10px 14px;
580
+ background: var(--dash-bg);
581
+ border: 1px solid var(--dash-border);
582
+ border-radius: var(--auth-radius-sm);
583
+ margin-bottom: 8px;
584
+ gap: 10px;
585
+ transition: border-color 0.15s;
586
+ }
587
+
588
+ .dash-key-item:hover {
589
+ border-color: var(--auth-border-strong);
590
+ }
591
+
592
+ .dash-key-prefix {
593
+ font-family: 'DM Sans', monospace;
594
+ font-size: 13px;
595
+ font-weight: 600;
596
+ color: var(--dash-text);
597
+ letter-spacing: 0.02em;
598
+ }
599
+
600
+ .dash-key-label {
601
+ font-size: 13px;
602
+ color: var(--dash-text-muted);
603
+ }
604
+
605
+ .dash-key-date {
606
+ font-size: 12px;
607
+ color: var(--dash-text-muted);
608
+ opacity: 0.6;
609
+ margin-left: auto;
610
+ }
611
+
612
+ .dash-key-delete {
613
+ background: none;
614
+ border: 1px solid #e8a89e;
615
+ color: #8b3a2e;
616
+ border-radius: 6px;
617
+ padding: 4px 10px;
618
+ cursor: pointer;
619
+ font-family: var(--auth-font-body);
620
+ font-size: 12px;
621
+ font-weight: 500;
622
+ transition: all 0.15s;
623
+ flex-shrink: 0;
624
+ }
625
+
626
+ .dash-key-delete:hover {
627
+ background: #8b3a2e;
628
+ color: #fff;
629
+ }
630
+
631
+ .dash-empty {
632
+ text-align: center;
633
+ padding: 20px;
634
+ color: var(--dash-text-muted);
635
+ font-size: 14px;
636
+ }
637
+
638
+ .dash-create-btn {
639
+ width: 100%;
640
+ padding: 10px;
641
+ margin-top: 8px;
642
+ border: 1px dashed var(--dash-border);
643
+ background: none;
644
+ color: var(--dash-text-muted);
645
+ border-radius: var(--auth-radius-sm);
646
+ cursor: pointer;
647
+ font-family: var(--auth-font-body);
648
+ font-size: 14px;
649
+ font-weight: 500;
650
+ transition: all 0.2s;
651
+ }
652
+
653
+ .dash-create-btn:hover {
654
+ border-color: var(--dash-accent);
655
+ color: var(--dash-accent);
656
+ background: rgba(185,92,51,0.06);
657
+ }
658
+
659
+ /* --- New key banner --- */
660
+ .dash-new-key {
661
+ background: var(--auth-success-bg);
662
+ border: 1px solid var(--auth-success-border);
663
+ border-radius: var(--auth-radius-sm);
664
+ padding: 14px 16px;
665
+ margin-bottom: 12px;
666
+ animation: authFadeIn 0.3s ease both;
667
+ }
668
+
669
+ .dash-new-key p {
670
+ margin: 0 0 8px;
671
+ font-size: 13px;
672
+ color: #3d7a3f;
673
+ font-weight: 500;
674
+ }
675
+
676
+ .dash-new-key-value {
677
+ display: flex;
678
+ align-items: center;
679
+ gap: 8px;
680
+ }
681
+
682
+ .dash-new-key-value code {
683
+ flex: 1;
684
+ font-size: 12px;
685
+ word-break: break-all;
686
+ background: #f0f7f0;
687
+ padding: 8px 10px;
688
+ border-radius: 6px;
689
+ color: var(--dash-text);
690
+ font-family: 'DM Sans', monospace;
691
+ }
692
+
693
+ .dash-copy-btn {
694
+ background: #3d7a3f;
695
+ border: none;
696
+ color: #fff;
697
+ border-radius: 6px;
698
+ padding: 6px 12px;
699
+ cursor: pointer;
700
+ font-family: var(--auth-font-body);
701
+ font-size: 12px;
702
+ font-weight: 600;
703
+ white-space: nowrap;
704
+ transition: background 0.15s;
705
+ }
706
+
707
+ .dash-copy-btn:hover {
708
+ background: #2d6a2f;
709
+ }
710
+
711
+ /* --- Command box --- */
712
+ .dash-command {
713
+ background: var(--dash-bg);
714
+ border: 1px solid var(--dash-border);
715
+ border-radius: var(--auth-radius-sm);
716
+ padding: 14px 16px;
717
+ position: relative;
718
+ }
719
+
720
+ .dash-command code {
721
+ display: block;
722
+ font-size: 13px;
723
+ word-break: break-all;
724
+ white-space: pre-wrap;
725
+ color: var(--dash-text);
726
+ font-family: 'DM Sans', monospace;
727
+ padding-right: 56px;
728
+ line-height: 1.5;
729
+ }
730
+
731
+ .dash-command .dash-copy-btn {
732
+ position: absolute;
733
+ top: 10px;
734
+ right: 10px;
735
+ background: var(--dash-surface);
736
+ border: 1px solid var(--dash-border);
737
+ }
738
+
739
+ .dash-command .dash-copy-btn:hover {
740
+ background: var(--dash-surface-hover);
741
+ }
742
+
743
+ .dash-helper {
744
+ font-size: 13px;
745
+ color: var(--dash-text-muted);
746
+ margin: 10px 0 0;
747
+ line-height: 1.5;
748
+ }
749
+
750
+ /* --- Office link --- */
751
+ .dash-office-link {
752
+ display: block;
753
+ text-align: center;
754
+ padding: 12px;
755
+ background: var(--dash-accent);
756
+ color: #fff;
757
+ border-radius: var(--auth-radius-sm);
758
+ text-decoration: none;
759
+ font-weight: 600;
760
+ font-size: 14px;
761
+ transition: all 0.2s;
762
+ }
763
+
764
+ .dash-office-link:hover {
765
+ transform: translateY(-1px);
766
+ box-shadow: 0 4px 12px rgba(185,92,51,0.25);
767
+ }
768
+
769
+ .dash-office-link.offline {
770
+ background: var(--dash-surface);
771
+ border: 1px solid var(--dash-border);
772
+ color: var(--dash-text-muted);
773
+ pointer-events: none;
774
+ transform: none;
775
+ box-shadow: none;
776
+ }
777
+
778
+ /* ========================================
779
+ Responsive
780
+ ======================================== */
781
+ @media (max-width: 520px) {
782
+ .auth-card {
783
+ padding: 28px 20px 24px;
784
+ border-radius: 16px;
785
+ }
786
+
787
+ .auth-title {
788
+ font-size: 24px;
789
+ }
790
+
791
+ .auth-email-row {
792
+ flex-direction: column;
793
+ gap: 8px;
794
+ }
795
+
796
+ .auth-send-btn {
797
+ width: 100%;
798
+ text-align: center;
799
+ }
800
+
801
+ .auth-code-input {
802
+ font-size: 18px;
803
+ letter-spacing: 4px;
804
+ }
805
+
806
+ .dash-shell {
807
+ padding: 20px 12px 40px;
808
+ }
809
+
810
+ .dash-section {
811
+ padding: 18px 16px;
812
+ border-radius: 14px;
813
+ }
814
+
815
+ .dash-title {
816
+ font-size: 26px;
817
+ }
818
+
819
+ .dash-key-item {
820
+ flex-wrap: wrap;
821
+ gap: 6px;
822
+ }
823
+
824
+ .dash-key-date {
825
+ margin-left: 0;
826
+ width: 100%;
827
+ order: 10;
828
+ }
829
+
830
+ .dash-key-delete {
831
+ margin-left: auto;
832
+ }
833
+ }