1%if 0
2/* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5%endif
6
7%define fieldHoverBorderColor hsla(240,5%,5%,.35)
8%define urlbarMarginInline 5px
9%define urlbarSearchButtonWidth calc(16px + 2 * var(--urlbar-icon-padding))
10
11:root {
12  --toolbar-field-border-color: hsla(240,5%,5%,.25);
13  --toolbar-field-focus-border-color: var(--focus-outline-color);
14  --urlbar-container-padding: 1px;
15}
16
17@media not (prefers-contrast) {
18  :root {
19    --toolbar-field-border-color: transparent;
20    --toolbar-field-focus-border-color: color-mix(in srgb, var(--focus-outline-color) 50%, transparent);
21  }
22}
23
24#urlbar-container,
25#search-container {
26  padding-block: 4px;
27  margin-inline: @urlbarMarginInline@;
28}
29
30:root[uidensity=touch] #urlbar-container,
31:root[uidensity=touch] #search-container {
32  padding-block: 5px;
33}
34
35#urlbar,
36#searchbar {
37  min-height: var(--urlbar-min-height);
38  text-shadow: none;
39  color: var(--toolbar-field-non-lwt-color, FieldText);
40}
41
42#urlbar-background,
43#searchbar {
44  background-color: Field;
45  background-clip: border-box;
46  border: 1px solid var(--toolbar-field-border-color);
47  border-radius: var(--toolbarbutton-border-radius);
48}
49
50#urlbar:not([focused="true"], [open]) > #urlbar-background,
51#searchbar:not(:focus-within) {
52  background-color: var(--toolbar-field-non-lwt-bgcolor, Field);
53}
54
55#urlbar-input-container,
56#searchbar {
57  border-radius: var(--toolbarbutton-border-radius);
58  overflow: clip;
59}
60
61#urlbar-input,
62#urlbar-scheme,
63.searchbar-textbox {
64  -moz-box-flex: 1;
65  background-color: transparent;
66  color: inherit;
67  border: none;
68  margin: 0;
69  padding: 0;
70  outline: none;
71}
72
73#urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background {
74  border: var(--focus-outline);
75  /* We used --focus-outline above to inherit its width and style properties,
76     but we still want to use the theme's border-color.
77     --toolbar-field-focus-border-color is set equal to --focus-outline-color
78     on :root, but LWT themes can override this value. */
79  border-color: var(--toolbar-field-focus-border-color);
80}
81
82#urlbar[focused="true"] > #urlbar-background {
83  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.23);
84}
85
86#urlbar[open] > #urlbar-background {
87  border-color: var(--arrowpanel-border-color);
88  box-shadow: 0 2px 14px rgba(0, 0, 0, 0.13);
89}
90
91/* We draw the searchbar's border as a combination of its 1px unfocused border
92   and a 1px inset box-shadow. If we did it all as a border, the searchbar's
93   contents would shift when its border-width expanded by 1px when focused.
94   Removing the border when focused would also shift contents. #urlbar gets
95   around this problem by applying its border to #urlbar-background, which is
96   positioned absolutely. We don't plan on changing the searchbar's UX
97   significantly, so it's better to avoid that extra complexity. */
98#searchbar:focus-within {
99  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.23),
100              0 0 0 1px var(--toolbar-field-focus-border-color) inset;
101  border-color: var(--toolbar-field-focus-border-color);
102}
103
104#urlbar:-moz-lwtheme,
105#searchbar:-moz-lwtheme {
106  color: var(--lwt-toolbar-field-color, black);
107}
108
109#urlbar:-moz-lwtheme > #urlbar-background,
110#searchbar:-moz-lwtheme {
111  background-color: var(--lwt-toolbar-field-background-color, hsla(0,0%,100%,.8));
112}
113
114#urlbar:not([focused="true"], [open]):-moz-lwtheme > #urlbar-background,
115#searchbar:not(:focus-within):-moz-lwtheme {
116  border-color: var(--lwt-toolbar-field-border-color, var(--toolbar-field-border-color));
117}
118
119#urlbar:not([focused="true"], [open]):-moz-lwtheme:hover > #urlbar-background,
120#searchbar:not(:focus-within):-moz-lwtheme:hover {
121  border-color: var(--lwt-toolbar-field-border-color, @fieldHoverBorderColor@);
122}
123
124#urlbar:-moz-lwtheme:hover > #urlbar-background,
125#searchbar:-moz-lwtheme:hover {
126  background-color: var(--lwt-toolbar-field-background-color, white);
127}
128
129#urlbar:is([focused="true"], [open]):-moz-lwtheme,
130#searchbar:focus-within:-moz-lwtheme {
131  color: var(--lwt-toolbar-field-focus-color);
132}
133
134#urlbar:is([focused="true"], [open]):-moz-lwtheme > #urlbar-background,
135#searchbar:focus-within:-moz-lwtheme {
136  background-color: var(--lwt-toolbar-field-focus);
137}
138
139#TabsToolbar #searchbar:not(:focus-within) {
140  /* The tabs toolbar is usually a different color than the other toolbars, and
141     we can't predict it, to avoid a transparent field we enforce a border. */
142  border-color: color-mix(in srgb, currentColor 20%, transparent);
143}
144
145#urlbar-input:-moz-lwtheme::selection,
146.searchbar-textbox:-moz-lwtheme::selection {
147  background-color: var(--lwt-toolbar-field-highlight, -moz-system-color(text-select-background, light));
148  color: var(--lwt-toolbar-field-highlight-text, -moz-system-color(text-select-foreground, light));
149}
150
151#urlbar-input:not(:focus):-moz-lwtheme::selection,
152.searchbar-textbox:not(:focus-within):-moz-lwtheme::selection {
153  background-color: var(--lwt-toolbar-field-highlight, -moz-system-color(text-select-background-disabled, light));
154}
155
156:root[lwt-toolbar-field-focus-brighttext] #urlbar-input:focus::selection,
157:root[lwt-toolbar-field-focus-brighttext] .searchbar-textbox:focus-within::selection {
158  background-color: var(--lwt-toolbar-field-highlight, -moz-system-color(text-select-background, dark));
159  color: var(--lwt-toolbar-field-highlight-text, -moz-system-color(text-select-foreground, dark));
160}
161
162:root[lwt-toolbar-field-brighttext] #urlbar-input:not(:focus)::selection,
163:root[lwt-toolbar-field-brighttext] .searchbar-textbox:not(:focus-within)::selection {
164  background-color: var(--lwt-toolbar-field-highlight, -moz-system-color(text-select-background-disabled, dark));
165  color: var(--lwt-toolbar-field-highlight-text, -moz-system-color(text-select-foreground, dark));
166}
167
168#urlbar:not([focused="true"]) {
169  caret-color: transparent;
170}
171
172#urlbar.searchButton > #urlbar-input-container > #urlbar-search-button {
173  width: @urlbarSearchButtonWidth@;
174  background-image: url(chrome://global/skin/icons/search-glass.svg);
175  background-repeat: no-repeat;
176  background-position: center;
177  -moz-context-properties: fill, fill-opacity;
178  fill: var(--toolbarbutton-icon-fill);
179  fill-opacity: var(--toolbarbutton-icon-fill-opacity);
180}
181
182#urlbar.searchButton > #urlbar-input-container[pageproxystate="invalid"] > #urlbar-search-button {
183  margin-inline-end: 6px;
184}
185
186/**
187 * The urlbar background is a separate element so we can animate it
188 * independently from the content. It's positioned absolutely and stretched to
189 * the bounds of the urlbar.
190 */
191
192#urlbar,
193#urlbar-input-container,
194.urlbarView {
195  position: relative;
196}
197
198#urlbar-background {
199  display: block;
200  position: absolute;
201  inset: 0;
202}
203
204:root:not([chromehidden~="toolbar"]) #urlbar.searchButton:not([breakout]) > #urlbar-background,
205:root:not([chromehidden~="toolbar"]) #urlbar.searchButton:not([breakout-extend]) > #urlbar-background {
206  inset-inline-start: @urlbarSearchButtonWidth@;
207}
208
209#urlbar-input-container {
210  /* Match urlbar-background's border. */
211  border: 1px solid transparent;
212  padding: var(--urlbar-container-padding);
213}
214
215#urlbar-container[breakout] {
216  position: relative;
217  min-height: var(--urlbar-container-height);
218}
219
220#urlbar[breakout] {
221  display: block;
222  position: absolute;
223  width: 100%;
224  height: var(--urlbar-height);
225  top: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2);
226  left: 0;
227}
228
229#urlbar[breakout] > #urlbar-input-container {
230  width: 100%;
231  height: 100%;
232}
233
234#urlbar:not([open]) > .urlbarView,
235#urlbar:not([breakout]) > .urlbarView {
236  display: none;
237}
238
239#urlbar[breakout][breakout-extend],
240#urlbar[breakout][breakout-extend-disabled][open] {
241  /* The z-index needs to be big enough to trump other positioned UI pieces
242     that we want to overlay. 3 is used in the tab bar. */
243  z-index: 3;
244  height: auto;
245}
246
247#urlbar[breakout][breakout-extend] {
248  top: 0;
249  left: -@urlbarMarginInline@;
250  width: calc(100% + 2 * @urlbarMarginInline@);
251}
252
253#urlbar[breakout][breakout-extend] > #urlbar-input-container {
254  height: var(--urlbar-toolbar-height);
255  padding-block: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2 + var(--urlbar-container-padding));
256  padding-inline: calc(@urlbarMarginInline@ + var(--urlbar-container-padding));
257}
258
259#urlbar.searchButton[breakout][breakout-extend] > #urlbar-input-container > #urlbar-search-button {
260  fill: currentColor;
261  fill-opacity: .6;
262}
263
264@keyframes urlbar-grow {
265  0% {
266    transform: scaleX(.99) scaleY(.95);
267  }
268  100% {
269    transform: scale(1.0);
270  }
271}
272
273#urlbar[breakout][breakout-extend] > #urlbar-background {
274  animation-name: urlbar-grow;
275  animation-duration: 0s;
276  animation-timing-function: var(--animation-easing-function);
277}
278
279@media (prefers-reduced-motion: no-preference) {
280  #urlbar[breakout][breakout-extend][breakout-extend-animate] > #urlbar-background {
281    animation-duration: 150ms;
282  }
283}
284
285:root[chromehidden~="toolbar"] #urlbar-container {
286  /* Remove excess space between the address bar and the menu button in popups. */
287  padding-inline-end: 0;
288}
289
290:root[customizing] .urlbar-input-box {
291  visibility: hidden;
292}
293
294#urlbar-container {
295  -moz-box-align: center;
296}
297
298#urlbar-search-splitter {
299  /* The splitter width should equal the location and search bars' combined
300     neighboring margin and border width. */
301  min-width: 12px;
302  margin: 0 -6px;
303  position: relative;
304  border: none;
305  background: transparent;
306  appearance: none;
307}
308
309/* Urlbar search mode indicator */
310#urlbar-search-mode-indicator {
311  display: none;
312  background-color: var(--urlbar-box-bgcolor);
313  margin-inline-end: 8px;
314  align-items: center;
315  border-radius: var(--urlbar-icon-border-radius);
316  padding-inline: 8px 6px;
317}
318
319#urlbar[searchmode] > #urlbar-input-container > #urlbar-search-mode-indicator {
320  display: inline-flex;
321}
322
323#urlbar[searchmode] > #urlbar-input-container > #urlbar-label-box {
324  display: none;
325}
326
327/* Use system colors for low/high contrast mode */
328@media (prefers-contrast) {
329  #urlbar-search-mode-indicator {
330    background-color: Highlight;
331    outline-color: Highlight;
332    color: HighlightText;
333  }
334}
335
336#urlbar-search-mode-indicator-title {
337  padding-inline: 0 3px;
338  opacity: var(--identity-box-label-opacity);
339}
340
341#urlbar-search-mode-indicator-close {
342  background: url(chrome://global/skin/icons/close.svg) no-repeat center;
343  background-size: 10px 10px;
344  width: 16px;
345  height: 16px;
346  -moz-context-properties: fill, fill-opacity;
347  fill-opacity: 0.6;
348  stroke-opacity: var(--identity-box-label-opacity);
349  fill: var(--lwt-toolbar-field-focus-color);
350  border-radius: var(--urlbar-icon-border-radius);
351}
352
353#urlbar-search-mode-indicator-close:hover {
354  background-color: hsla(0,0%,70%,.2);
355}
356#urlbar-search-mode-indicator-close:hover:active {
357  background-color: hsla(0,0%,70%,.3);
358}
359
360@media (prefers-contrast) {
361  #urlbar-search-mode-indicator-close {
362    fill: HighlightText;
363    fill-opacity: 1.0;
364  }
365}
366
367/* Page action panel */
368.pageAction-panel-button > .toolbarbutton-icon {
369  width: 16px;
370  height: 16px;
371}
372
373#pageAction-panel-bookmark,
374#star-button {
375  list-style-image: url("chrome://browser/skin/bookmark-hollow.svg");
376}
377#pageAction-panel-bookmark[starred],
378#star-button[starred] {
379  list-style-image: url("chrome://browser/skin/bookmark.svg");
380}
381#star-button[starred] {
382  fill-opacity: 1;
383  fill: var(--toolbarbutton-icon-fill-attention);
384}
385
386/* URL bar and page action buttons */
387
388/* The background can be very dark and if the add-on uses a black-ish svg it
389   will be barely visible. In the future we should have a standardized SVG
390   solution we can apply to add-on icons, for now we can only try to make them
391   visible through some filtering tricks */
392:root[lwt-toolbar-field-brighttext] #urlbar:not([focused="true"]) .urlbar-addon-page-action[style*=".svg"] > .urlbar-icon,
393:root[lwt-toolbar-field-focus-brighttext] #urlbar[focused="true"] .urlbar-addon-page-action[style*=".svg"] > .urlbar-icon {
394  filter: grayscale(100%) brightness(20%) invert();
395}
396
397@media (prefers-color-scheme: dark) {
398  /* As above, but for the default theme in dark mode, which suffers from the same issue */
399  :root:not(:-moz-lwtheme) .urlbar-addon-page-action[style*=".svg"] > .urlbar-icon {
400    filter: grayscale(100%) brightness(20%) invert();
401  }
402}
403
404#userContext-icons,
405#urlbar-zoom-button {
406  margin-inline: 6px;
407}
408
409.urlbar-icon {
410  width: calc(var(--urlbar-min-height) - 2px /* border */ - 2 * var(--urlbar-container-padding));
411  height: calc(var(--urlbar-min-height) - 2px /* border */ - 2 * var(--urlbar-container-padding));
412  padding: var(--urlbar-icon-padding);
413  -moz-context-properties: fill, fill-opacity;
414  fill: currentColor;
415  fill-opacity: var(--urlbar-icon-fill-opacity);
416  color: inherit;
417}
418
419.urlbar-icon,
420.urlbar-icon-wrapper {
421  border-radius: var(--urlbar-icon-border-radius);
422}
423
424:root[uidensity=compact] .urlbar-icon {
425  margin-inline: 1px;
426}
427
428:not(.urlbar-icon-wrapper) > .urlbar-icon:not([disabled]):hover,
429.urlbar-icon-wrapper:not([disabled]):hover {
430  background-color: hsla(0,0%,70%,.2);
431}
432
433:not(.urlbar-icon-wrapper) > .urlbar-icon:not([disabled])[open],
434:not(.urlbar-icon-wrapper) > .urlbar-icon:not([disabled]):hover:active,
435.urlbar-icon-wrapper:not([disabled])[open],
436.urlbar-icon-wrapper:not([disabled]):hover:active {
437  background-color: hsla(0,0%,70%,.3);
438}
439
440.urlbar-icon:-moz-focusring,
441.urlbar-icon-wrapper:-moz-focusring {
442  outline: var(--toolbarbutton-focus-outline);
443  outline-offset: -2px;
444}
445
446#urlbar-go-button,
447.search-go-button {
448  list-style-image: url("chrome://browser/skin/forward.svg");
449}
450
451#urlbar-go-button:-moz-locale-dir(rtl),
452.search-go-button:-moz-locale-dir(rtl) {
453  transform: scaleX(-1);
454}
455
456#pageActionButton,
457.share-more-button {
458  list-style-image: url("chrome://global/skin/icons/more.svg");
459}
460
461/**
462 * Contextual Feature Recommendation
463 *
464 * Animate the recommendation icon to expand outwards and display a text label.
465 * Fake the effect of a smoothly expanding width without animating any widths
466 * by (continuously) animating only `mask-position-x` and `transform`.
467 *
468 * In a few places, transition a property using the timing-function `step-start`
469 * while collapsed and `step-end` while expanded in order to (discretely) modify
470 * the value while expanded and while transitioning in either direction.
471 *
472 * This UI is part of an experiment launching in LTR locales only. Fixing the
473 * RTL issues is tracked by Bug 1485725.
474 */
475
476:root {
477  --cfr-animation-duration: 0.35s;
478  --cfr-button-addons-icon: url(chrome://activity-stream/content/data/content/assets/glyph-webextension-16.svg);
479  --cfr-button-features-icon: url(chrome://activity-stream/content/data/content/assets/glyph-cfr-feature-16.svg);
480  --cfr-button-highlights-icon: url(chrome://global/skin/icons/highlights.svg);
481  --cfr-active-color: #0060df;
482}
483
484#contextual-feature-recommendation {
485  width: 28px;
486  margin-inline-start: 0;
487  transition: margin-inline-start step-end var(--cfr-animation-duration);
488}
489#urlbar[cfr-recommendation-state="expanded"] #contextual-feature-recommendation {
490  margin-inline-start: calc(var(--cfr-label-width) * -1);
491  transition: margin-inline-start step-start var(--cfr-animation-duration);
492}
493
494#cfr-button {
495  margin: -2px 0;
496  transition-property: fill, fill-opacity, transform;
497  transition-timing-function: ease-in-out;
498  transition-duration: var(--cfr-animation-duration);
499}
500#contextual-feature-recommendation[data-cfr-icon="webextensions-icon"] #cfr-button {
501  list-style-image: var(--cfr-button-addons-icon);
502}
503#contextual-feature-recommendation[data-cfr-icon="recommendations-icon"] #cfr-button {
504  list-style-image: var(--cfr-button-features-icon);
505}
506#contextual-feature-recommendation[data-cfr-icon="highlights-icon"] #cfr-button {
507  list-style-image: var(--cfr-button-highlights-icon);
508}
509#urlbar[cfr-recommendation-state="expanded"] #cfr-button {
510  fill: white;
511  fill-opacity: 1;
512  background-color: transparent; /* Override hover background-color */
513  transform: translateX(calc(var(--cfr-label-width) * -1));
514}
515#urlbar[cfr-recommendation-state="expanded"] #cfr-button:-moz-locale-dir(rtl) {
516  transform: translateX(calc(var(--cfr-label-width)));
517}
518@keyframes cfr-button-fade-through-active-color {
519  33% {
520    fill-opacity: 1;
521    fill: var(--cfr-active-color);
522  }
523  67% {
524    fill-opacity: 1;
525    fill: var(--cfr-active-color);
526  }
527}
528#urlbar[cfr-recommendation-state="collapsed"] #cfr-button {
529  animation: cfr-button-fade-through-active-color calc(3 * var(--cfr-animation-duration));
530}
531
532#cfr-label-container {
533  width: 0;
534  overflow: hidden;
535  border-radius: 5px;
536  padding-inline-start: 28px;
537  mask-image: linear-gradient(to right, transparent 0, black 0);
538  mask-position-x: var(--cfr-label-width);
539  mask-repeat: no-repeat;
540  transition-property: background-color, mask-position-x, width, margin-inline-end;
541  transition-timing-function: ease-in-out, ease-in-out, step-end, step-end;
542  transition-duration: var(--cfr-animation-duration);
543  -moz-box-align: center;
544  margin-block: calc((var(--urlbar-min-height) - var(--urlbar-container-padding) - 2px /* border */ - 24px) / 2);
545}
546#cfr-label-container:-moz-locale-dir(rtl) {
547  mask-position-x: calc(var(--cfr-label-width) * -1);
548}
549
550#urlbar[cfr-recommendation-state="expanded"] #cfr-label-container {
551  width: calc(var(--cfr-label-width) + 28px);
552  background-color: var(--cfr-active-color);
553  margin-inline-end: -28px;
554  mask-position-x: 0;
555  transition-timing-function: ease-in-out, ease-in-out, step-start, step-start;
556}
557
558#cfr-label {
559  margin: 0;
560  padding: 3px 5px;
561  padding-inline-start: 0;
562  color: white;
563  mask-image: linear-gradient(to right, transparent 0, black 0);
564  mask-position-x: var(--cfr-label-width);
565  mask-repeat: no-repeat;
566  transition: mask-position-x ease-in-out var(--cfr-animation-duration);
567}
568#cfr-label:-moz-locale-dir(rtl) {
569  mask-position-x: calc(var(--cfr-label-width) * -1);
570}
571#urlbar[cfr-recommendation-state="expanded"] #cfr-label {
572  mask-position-x: 0;
573}
574
575/* Shift the url-bar text fading to stop the recommendation overlapping */
576#urlbar[cfr-recommendation-state] #urlbar-input {
577  /* A mask-image is usually only defined for the url bar when text overflows.
578     We need to re-define the mask image here so that it shows up correctly when
579     we transition to or from an `expanded` state (in which the right end of the
580     url bar may be obscured without overflow). */
581  mask-image: linear-gradient(to left, transparent, black 3ch);
582  transition: mask-position-x ease-in-out var(--cfr-animation-duration);
583}
584#urlbar[cfr-recommendation-state] #urlbar-input:-moz-locale-dir(rtl) {
585  mask-image: linear-gradient(to right, transparent, black 3ch);
586}
587#urlbar[cfr-recommendation-state="expanded"] #urlbar-input {
588  mask-position-x: calc(var(--cfr-label-width) * -1);
589}
590#urlbar[cfr-recommendation-state="expanded"] #urlbar-input:-moz-locale-dir(rtl) {
591  mask-position-x: calc(var(--cfr-label-width));
592}
593
594/* Reader mode icon */
595
596#reader-mode-button > .urlbar-icon {
597  list-style-image: url(chrome://browser/skin/reader-mode.svg);
598}
599
600#reader-mode-button[readeractive] > .urlbar-icon {
601  fill: var(--toolbarbutton-icon-fill-attention);
602  fill-opacity: 1;
603}
604
605/* Zoom button */
606
607#urlbar-zoom-button {
608  appearance: none;
609  color: inherit;
610  font-size: .8em;
611  padding: 3px 7px;
612  border-radius: var(--urlbar-icon-border-radius);
613  background-color: var(--urlbar-box-bgcolor);
614  margin-block: calc((var(--urlbar-min-height) - 20px) / 2 - 1px /* border */ - var(--urlbar-container-padding));
615  overflow: hidden;
616}
617
618#urlbar-zoom-button:hover {
619  background-color: var(--urlbar-box-hover-bgcolor);
620}
621
622#urlbar-zoom-button:hover:active {
623  background-color: var(--urlbar-box-active-bgcolor);
624}
625
626@keyframes urlbar-zoom-reset-pulse {
627  0% {
628    transform: scale(0);
629  }
630  75% {
631    transform: scale(1.5);
632  }
633  100% {
634    transform: scale(1.0);
635  }
636}
637
638#urlbar-zoom-button[animate="true"] {
639  animation-name: urlbar-zoom-reset-pulse;
640  animation-duration: 250ms;
641}
642
643#urlbar-zoom-button:-moz-focusring {
644  outline: var(--toolbarbutton-focus-outline);
645  outline-offset: calc(var(--focus-outline-width) * -1);
646}
647
648#urlbar-zoom-button > .toolbarbutton-text {
649  display: -moz-box;
650}
651
652#urlbar-zoom-button > .toolbarbutton-icon {
653  display: none;
654}
655
656/* Search bar */
657
658#search-container {
659  min-width: 125px;
660}
661
662.searchbar-search-button {
663  -moz-box-align: center;
664  fill: currentColor;
665}
666
667.searchbar-search-icon {
668  list-style-image: url(chrome://global/skin/icons/search-glass.svg);
669  -moz-context-properties: fill, fill-opacity;
670  fill-opacity: var(--urlbar-icon-fill-opacity);
671  pointer-events: none;
672  margin-inline: 8px 6px;
673  width: 16px;
674}
675
676.searchbar-search-icon-overlay {
677  pointer-events: none;
678}
679
680.searchbar-search-button[addengines=true] > .searchbar-search-icon-overlay {
681  list-style-image: url(chrome://browser/skin/search-indicator-badge-add.svg);
682  margin-inline: -15px 4px;
683  margin-top: -10px;
684  width: 11px;
685  height: 11px;
686}
687
688.searchbar-search-button[addengines=true] > .searchbar-search-icon-overlay:-moz-locale-dir(rtl) {
689  margin-inline: -25px 14px;
690}
691
692.searchbar-search-button:hover:not([addengines=true]) > .searchbar-search-icon-overlay {
693  list-style-image: url(chrome://global/skin/icons/arrow-down-12.svg);
694  -moz-context-properties: fill;
695  margin-inline: -8px 2px;
696  width: 6px;
697  height: 6px;
698}
699
700.searchbar-search-button:hover:not([addengines=true]) > .searchbar-search-icon-overlay:-moz-locale-dir(rtl) {
701  margin-inline: -26px 20px;
702}
703
704.searchbar-engine-one-off-add-engine:not([image]),
705moz-input-box > menupopup .context-menu-add-engine:not([image]) {
706  list-style-image: url("chrome://browser/skin/search-engine-placeholder.png");
707}
708
709@media (min-resolution: 1.1dppx) {
710  .searchbar-engine-one-off-add-engine:not([image]),
711  moz-input-box > menupopup .context-menu-add-engine:not([image]) {
712    list-style-image: url("chrome://browser/skin/search-engine-placeholder@2x.png");
713  }
714}
715
716.searchbar-engine-one-off-add-engine > .button-box::after,
717moz-input-box > menupopup .context-menu-add-engine > .menu-iconic-left::after {
718  content: "";
719  position: relative;
720  display: -moz-box;
721  background: url(chrome://browser/skin/search-indicator-badge-add.svg) no-repeat center;
722  height: 11px;
723  width: 11px;
724  margin-inline: -4px -7px;
725  margin-top: -13px;
726}
727
728moz-input-box > menupopup .context-menu-add-engine > .menu-iconic-left::after {
729  /* These differ from the urlbar and searchbar because the context menu
730     may not have enough space */
731  margin-inline: -7px -4px;
732  margin-top: -8px;
733}
734
735/* Fade a little the icon so that the + badge is more evident and the button
736   is less likely to be visually confused with a normal search shortcut */
737.searchbar-engine-one-off-add-engine[image]:not(:hover) > .button-box > .button-icon {
738  opacity: 0.7;
739}
740.searchbar-engine-one-off-add-engine[image]:hover > .button-box > .button-icon {
741  opacity: 1;
742}
743
744#urlbar-input::placeholder,
745.searchbar-textbox::placeholder {
746  opacity: 0.69;
747}
748