main
css 153 lines 3.54 KB
Raw
1 /* ===========================================
2 Action Buttons - Icon-only copy/speak/view details
3 Show on hover for pointer devices, always visible on touch
4 =========================================== */
5
6 .step-action-buttons {
7 display: flex;
8 flex-direction: row;
9 align-items: center;
10 gap: var(--spacing-sm);
11 padding: var(--spacing-sm) 0;
12 opacity: 0;
13 transition: opacity 0.2s ease-in-out;
14 pointer-events: none;
15 user-select: none;
16 }
17
18 .step-action-buttons .expand-btn {
19 display: none;
20 align-items: center;
21 background: transparent;
22 border: none;
23 color: var(--color-text-muted);
24 font-family: "Rubik", Arial, Helvetica, sans-serif;
25 font-size: var(--font-size-xs);
26 cursor: pointer;
27 padding: var(--spacing-xs) 0;
28 opacity: 0.7;
29 transition: opacity 0.15s ease;
30 }
31
32 .step-action-buttons .expand-btn:hover {
33 opacity: 1;
34 }
35
36 .step-action-buttons .action-button,
37 .action-button {
38 display: flex;
39 align-items: center;
40 justify-content: center;
41 background: transparent;
42 border: none;
43 padding: 2px;
44 cursor: pointer;
45 }
46
47 .step-action-buttons .action-button .material-symbols-outlined,
48 .action-button .material-symbols-outlined {
49 font-size: 0.85rem;
50 line-height: 1;
51 color: var(--color-message-text);
52 font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;
53 transition: color 0.15s ease;
54 }
55
56 .step-action-buttons .action-button:hover .material-symbols-outlined,
57 .action-button:hover .material-symbols-outlined {
58 color: var(--color-text);
59 }
60
61 /* Success state */
62 .step-action-buttons .action-button.success .material-symbols-outlined,
63 .action-button.success .material-symbols-outlined {
64 color: #4CAF50;
65 font-variation-settings: 'FILL' 1, 'wght' 500, 'GRAD' 0, 'opsz' 20;
66 }
67
68 /* Error state */
69 .step-action-buttons .action-button.error .material-symbols-outlined,
70 .action-button.error .material-symbols-outlined {
71 color: var(--color-accent);
72 font-variation-settings: 'FILL' 1, 'wght' 500, 'GRAD' 0, 'opsz' 20;
73 }
74
75 .show-more-btn,
76 .show-less-btn {
77 display: none;
78 }
79
80 .message.message-collapsible.has-overflow:not(.expanded) > .step-action-buttons {
81 opacity: 1;
82 pointer-events: auto;
83 }
84
85 .message.message-collapsible.has-overflow:not(.expanded)
86 > .step-action-buttons
87 .show-more-btn {
88 display: inline-flex;
89 pointer-events: auto;
90 }
91
92 .device-pointer
93 .message.message-collapsible.has-overflow:not(.expanded)
94 > .step-action-buttons
95 .action-button {
96 opacity: 0;
97 pointer-events: none;
98 }
99
100 .device-pointer
101 .message.message-collapsible.has-overflow:not(.expanded):hover
102 > .step-action-buttons
103 .action-button {
104 opacity: 1;
105 pointer-events: auto;
106 }
107
108 .device-pointer
109 .message.message-collapsible.has-overflow.expanded:hover
110 > .step-action-buttons
111 .show-less-btn {
112 display: inline-flex;
113 pointer-events: auto;
114 }
115
116 .device-touch
117 .message.message-collapsible.has-overflow.expanded
118 > .step-action-buttons
119 .show-less-btn {
120 display: inline-flex;
121 pointer-events: auto;
122 }
123
124 /* User messages: right-aligned */
125 .message-user .step-action-buttons {
126 justify-content: flex-end;
127 width: 100%;
128 }
129
130 .message-user .step-action-buttons .expand-btn {
131 order: 1;
132 }
133
134
135
136 /* ===========================================
137 Hover behavior - Pointer devices
138 =========================================== */
139
140 .device-pointer .step-action-buttons:hover,
141 .device-pointer :hover > .step-action-buttons {
142 opacity: 1;
143 pointer-events: auto;
144 }
145
146 /* ===========================================
147 Touch devices - Always visible
148 =========================================== */
149
150 .device-touch .step-action-buttons {
151 opacity: 1;
152 pointer-events: auto;
153 }