1818 --border-color : # DEE2E6 ; /* Light gray border */
1919 --border-input-focus : var (--primary-light );
2020 --shadow-color : rgba (0 , 0 , 0 , 0.05 ); /* Softer shadow */
21+ /* Role-based tokens */
22+ --bg-subtle : # F3F4F6 ;
23+ --bg-hover : # ECEFF3 ;
24+ --text-muted : # 6B7280 ;
2125
2226 --bubble-user-bg : var (--primary );
2327 --bubble-user-text : var (--text-on-primary );
3741 --max-width-content : 800px ;
3842
3943 --primary-rgb : 0 , 122 , 255 ;
44+
45+ /* Spacing tokens */
46+ --space-1 : 4px ;
47+ --space-2 : 8px ;
48+ --space-3 : 12px ;
49+ --space-4 : 16px ;
4050}
4151
4252/* Dark Theme */
5969 --border-color : # 38383A ;
6070 --border-input-focus : var (--primary );
6171 --shadow-color : rgba (0 , 0 , 0 , 0.2 );
72+ --bg-subtle : # 2A2A2C ;
73+ --bg-hover : # 333336 ;
74+ --text-muted : # 9CA3AF ;
6275
6376 --bubble-user-bg : var (--primary );
6477 --bubble-user-text : var (--text-on-primary );
@@ -156,18 +169,18 @@ header.top-bar {
156169 display : flex;
157170 align-items : center;
158171 font-size : 0.85rem ;
159- background-color : color-mix (in srgb , var (--primary ) 6 % , transparent );
172+ background-color : var (--bg-subtle );
160173 border-radius : 20px ;
161174 padding : 0.3rem 0.8rem ;
162- color : var (--text-secondary );
175+ color : var (--text-muted );
163176 margin-left : auto;
164177 margin-right : 1rem ;
165178 transition : all 0.2s ease;
166179 position : relative;
167180}
168181
169182.model-indicator : hover {
170- background-color : color-mix (in srgb , var (--primary ) 12 % , transparent );
183+ background-color : var (--bg-hover );
171184 cursor : pointer;
172185}
173186
@@ -228,6 +241,23 @@ header.top-bar {
228241 gap : 1em ;
229242}
230243
244+ /* Virtualized history controls */
245+ .load-older {
246+ align-self : center;
247+ display : inline-flex;
248+ align-items : center;
249+ gap : 8px ;
250+ font-size : 0.875rem ;
251+ color : var (--text-primary );
252+ background : var (--bg-subtle );
253+ border : 1px solid var (--border-color );
254+ border-radius : 999px ;
255+ padding : 6px 12px ;
256+ cursor : pointer;
257+ }
258+ .load-older : hover { background : var (--bg-hover ); }
259+ .load-older svg { opacity : 0.7 ; }
260+
231261/* Date separators */
232262.date-separator {
233263 align-self : center;
@@ -407,6 +437,35 @@ button#send-btn:disabled {
407437 transform : none;
408438}
409439
440+ /* First-run help */
441+ .first-run-help {
442+ max-width : var (--max-width-content );
443+ width : 100% ;
444+ margin : 0 auto;
445+ padding : 0.5rem 1rem 0 ;
446+ }
447+ .first-run-help .tips {
448+ display : flex;
449+ justify-content : space-between;
450+ align-items : center;
451+ gap : 8px ;
452+ font-size : 0.875rem ;
453+ color : var (--text-muted );
454+ background : var (--bg-subtle );
455+ border : 1px dashed var (--border-color );
456+ border-radius : 10px ;
457+ padding : 8px 12px ;
458+ }
459+ .first-run-help .help-dismiss {
460+ background : transparent;
461+ border : none;
462+ color : var (--text-secondary );
463+ width : 28px ; height : 28px ; border-radius : 6px ;
464+ }
465+ .first-run-help .help-dismiss : hover {
466+ background : rgba (0 , 0 , 0 , 0.05 );
467+ }
468+
410469/* File Upload Label - Enhanced */
411470label [for = "file-input" ] {
412471 padding : 10px 16px ;
@@ -602,6 +661,17 @@ label[for="file-input"]:active {
602661 backdrop-filter : blur (8px );
603662}
604663
664+ /* Compact density */
665+ [data-density-compact = "true" ] .bubble {
666+ padding : 0.625rem 0.75rem ;
667+ }
668+ [data-density-compact = "true" ] form # chat-form {
669+ padding : 0.75rem ;
670+ }
671+ [data-density-compact = "true" ] # user_message {
672+ min-height : 38px ;
673+ }
674+
605675.bubble : hover {
606676 transform : translateY (-2px );
607677 box-shadow : 0 4px 12px rgba (0 , 0 , 0 , 0.12 ), 0 6px 16px rgba (0 , 0 , 0 , 0.06 );
@@ -615,9 +685,9 @@ label[for="file-input"]:active {
615685}
616686
617687.assistant-msg {
618- background : rgba (var (--primary-rgb ), 0.06 );
688+ background : rgba (var (--primary-rgb ), 0.05 );
619689 color : var (--bubble-assistant-text );
620- border : 1px solid rgba (var (--primary-rgb ), 0.12 );
690+ border : 1px solid rgba (var (--primary-rgb ), 0.10 );
621691 border-bottom-left-radius : 6px ;
622692 margin-left : 0.5rem ;
623693 backdrop-filter : blur (8px );
@@ -674,6 +744,11 @@ label[for="file-input"]:active {
674744 opacity : 0.7 ;
675745}
676746
747+ /* Hide timestamps unless preference enabled */
748+ : root : not ([data-show-timestamps = "true" ]) .timestamp {
749+ display : none;
750+ }
751+
677752.bubble : hover .timestamp {
678753 opacity : 1 ;
679754 background-color : rgba (0 , 0 , 0 , 0.05 );
@@ -1135,6 +1210,18 @@ label:focus {
11351210 }
11361211}
11371212
1213+ /* Reduced motion override via preference */
1214+ [data-reduced-motion = "true" ] * ,
1215+ [data-reduced-motion = "true" ] * ::before ,
1216+ [data-reduced-motion = "true" ] * ::after {
1217+ animation-duration : 0.01ms !important ;
1218+ animation-iteration-count : 1 !important ;
1219+ transition-duration : 0.01ms !important ;
1220+ }
1221+ [data-reduced-motion = "true" ] .thinking-bar .progress { animation : none !important ; }
1222+ [data-reduced-motion = "true" ] .bubble : hover { transform : none !important ; }
1223+ [data-reduced-motion = "true" ] .action-btn : hover { transform : none !important ; }
1224+
11381225/* High contrast support */
11391226@media (prefers-contrast : high) {
11401227 : root {
0 commit comments