1 /* vim:set ts=2 sw=2 sts=2 et: */
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/. */
6 /* CSS Variables specific to the devtools toolbar that aren't defined by the themes */
10 --toolbar-tab-hover: #FFCF00;
11 --toolbar-tab-hover-active: #FF9F00;
12 --searchbox-background-color: #000000;
13 --searchbox-border-color: #9C9CFF;
14 --searcbox-no-match-background-color: #400000;
15 --searcbox-no-match-border-color: #FF0000;
16 --magnifying-glass-image: url(images/search.svg);
17 --filter-image: url(images/filter.svg);
18 --tool-options-image: url(images/tool-options-tbutton.svg);
19 --icon-filter: invert(1);
20 --checked-icon-filter: url(images/filters.svg#checked-icon-state);
21 --toolbar-button-border-color: #A09090;
26 .devtools-sidebar-tabs tabs {
29 /* border-bottom-width: 1px;*/
33 box-sizing: border-box;
34 font: 11px "Liberation Sans",Arial,Tahoma,Helvetica,sans-serif;
41 border-bottom: 3px solid var(--theme-body-background);
44 .devtools-toolbar checkbox {
45 /* LCARStrek checkbox colors don't work well against toolbar background */
46 background-color: var(--theme-toolbar-background);
48 line-height: -moz-block-height;
50 .devtools-toolbar checkbox .checkbox-check {
52 .devtools-toolbar checkbox .checkbox-label-box {
54 .devtools-toolbar checkbox .checkbox-label-box .checkbox-label {
57 /* HTML Checkboxes - a lot copied from global/in-content/common.css */
58 /* Hide the actual checkbox */
59 input[type="checkbox"]:not(#browser-style-checkbox),
60 #browser-style-checkbox:not([label]) { /* not()s are workaround for old placement of checkbox in label */
67 /* Create a box to style as the checkbox */
68 input[type="checkbox"] + label::before {
69 display: inline-block;
71 vertical-align: middle;
74 .devtools-searchbox + #browser-style-checkbox-label, /* workaround for old placement of checkbox in label */
75 input[type="checkbox"] + label {
77 color: var(--theme-capped-toolbar-text);
80 input[type="checkbox"] + label::before {
81 -moz-appearance: none;
85 border: 1px solid var(--theme-body-color);
86 margin-inline-end: 3px;
87 margin-inline-start: 2px;
88 background-color: var(--theme-toolbar-background);
89 background-position: center center;
90 background-repeat: no-repeat;
93 input[type="checkbox"]:not(:disabled) + label:hover::before {
94 border-color: var(--theme-hover-background);
96 .devtools-searchbox + #browser-style-checkbox-label:hover, /* workaround for old placement of checkbox in label */
97 input[type="checkbox"]:not(:disabled) + label:hover {
98 color: var(--theme-hover-background);
100 input[type="checkbox"]:checked + label::before {
101 background-image: url("chrome://global/skin/in-content/check.svg#check");
104 input[type="checkbox"]:checked:disabled + label::before {
105 background-image: url("chrome://global/skin/in-content/check.svg#check-disabled");
107 input[type="checkbox"]:checked:not(:disabled) + label:hover::before {
108 background-image: url("chrome://global/skin/in-content/check.svg#check-hover");
110 input[type="checkbox"]:disabled + label::before {
111 border-color: var(--theme-body-color-inactive);
113 input[type="checkbox"]:disabled + label {
114 color: var(--theme-body-color-inactive);
117 .devtools-separator {
120 background-image: linear-gradient(transparent 15%, var(--theme-splitter-color) 15%, var(--theme-splitter-color) 85%, transparent 85%);
121 background-size: 1px 100%;
122 background-repeat: no-repeat;
123 background-position: 0, 1px, 2px;
126 /* HTML toolbars - style them LCARStrek-like */
128 div.devtools-toolbar {
129 background-size: calc(100% - 30px);
130 background-image: linear-gradient(90deg, var(--theme-capped-toolbar-background), var(--theme-capped-toolbar-background));
131 background-repeat: no-repeat;
132 background-position: center center;
136 div.devtools-toolbar::before,
137 div.devtools-toolbar::after {
142 background-color: var(--theme-toolbar-caps);
145 div.devtools-toolbar::before {
146 border-radius: 8px 0px 0px 8px;
148 border-inline-end: 3px solid black;
149 margin-inline-end: 2px;
152 div.devtools-toolbar::after {
153 border-radius: 0px 8px 8px 0px;
155 border-inline-start: 3px solid black;
156 margin-inline-start: auto; /* originally 2px, but auto makes us able to get flexible free space */
159 /* Toolbar buttons */
162 .devtools-toolbarbutton,
167 .devtools-toolbarbutton {
170 .devtools-toolbarbutton:not([label]) > .toolbarbutton-icon,
171 .devtools-button::before {
174 /* transition: opacity 0.05s ease-in-out;*/
185 margin-inline-start: 2px;
186 background: var(--theme-toolbar-background);
187 color: var(--theme-body-color);
188 /* The icon is absolutely positioned in the button using ::before */
192 .devtools-button:not([disabled]):hover {
193 background: var(--theme-hover-background);
194 color: var(--theme-hover-color);
197 .devtools-button:not([disabled]):hover:active {
198 background: var(--theme-active-background);
199 color: var(--theme-active-color);
202 /* Menu type buttons and checked states */
203 .devtools-button[checked] {
204 background: var(--theme-selection-background);
205 color: var(--theme-selection-color);
208 .devtools-button::before {
214 margin: -8px 0 0 -8px;
215 /* background-size: cover;
216 background-repeat: no-repeat;*/
217 /* transition: opacity 0.05s ease-in-out;*/
220 .devtools-button:-moz-focusring {
224 /* Standalone buttons */
225 .devtools-button[standalone],
226 .devtools-button[data-standalone],
227 .devtools-toolbarbutton[standalone],
228 .devtools-toolbarbutton[data-standalone],
229 .menu-filter-button {
231 /* min-height: 32px; */
233 background-color: var(--theme-button-background);
234 color: var(--theme-button-color);
235 border-radius: 300px;
238 .devtools-button[standalone]:hover,
239 .devtools-button[data-standalone]:hover,
240 .devtools-toolbarbutton[standalone]:hover,
241 .devtools-toolbarbutton[data-standalone]:hover,
242 .menu-filter-button:hover {
243 background-color: var(--theme-hover-background);
244 color: var(--theme-hover-color);
247 .devtools-button[standalone]:hover:active,
248 .devtools-button[data-standalone]:hover:active,
249 .devtools-toolbarbutton[standalone]:hover:active,
250 .devtools-toolbarbutton[data-standalone]:hover:active,
251 .menu-filter-button:hover:active {
252 background-color: var(--theme-active-background);
253 color: var(--theme-active-color);
256 .menu-filter-button.checked {
257 background: var(--theme-selection-background);
258 color: var(--theme-selection-color);
261 .menu-filter-button + .menu-filter-button {
262 margin-inline-start: 2px;
265 .devtools-toolbarbutton[standalone], .devtools-toolbarbutton[data-standalone] {
268 .devtools-toolbarbutton[label][standalone] {
272 .devtools-toolbarbutton,
277 /* Icon button styles */
278 .devtools-toolbarbutton:not([label]),
279 .devtools-toolbarbutton[text-as-image] {
283 /* Set flex attribute to Toolbox buttons and Picker container so,
284 they don't overlapp with the tab bar */
289 #toolbox-picker-container {
291 margin-inline-start: 1px;
294 .devtools-toolbarbutton:not([label]) > .toolbarbutton-text {
298 .devtools-toolbar .devtools-toolbarbutton {
299 margin-inline-start: 2px;
302 .devtools-toolbarbutton > .toolbarbutton-icon {
305 /* Menu button styles (eg. web console filters) */
306 .devtools-toolbarbutton[type=menu-button] > .toolbarbutton-menubutton-button {
307 /* -moz-box-orient: horizontal; */
310 .devtools-toolbarbutton[type=menu-button] {
313 .devtools-toolbarbutton > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
316 .devtools-menulist > .menulist-dropmarker {
319 .devtools-toolbarbutton[type=menu] > .toolbarbutton-menu-dropmarker,
320 .devtools-toolbarbutton[type=menu-button] > .toolbarbutton-menubutton-dropmarker {
323 /* Icon-only buttons */
324 .devtools-button:empty::before,
325 .devtools-toolbarbutton:not([label]):not([disabled]) > image {
329 .devtools-button:hover:empty::before,
330 .devtools-button[checked]:empty::before,
331 .devtools-button[open]:empty::before,
332 .devtools-toolbarbutton:not([label]):hover > image,
333 .devtools-toolbarbutton:not([label])[checked=true] > image,
334 .devtools-toolbarbutton:not([label])[open=true] > image {
338 .devtools-button:disabled,
339 .devtools-button[disabled],
340 .devtools-toolbarbutton[disabled] {
341 /* opacity: 0.5 !important;*/
344 .devtools-button[standalone]::before,
345 .devtools-button[data-standalone]::before,
346 .devtools-button:not([disabled]):hover::before,
347 .devtools-button:not([disabled]):hover:active::before,
348 .devtools-button[checked]:empty::before,
349 .devtools-button[open]:empty::before,
350 .devtools-toolbarbutton[standalone] > image,
351 .devtools-toolbarbutton[data-standalone] > image,
352 .devtools-toolbarbutton:not([disabled]):hover > image,
353 .devtools-toolbarbutton:not([disabled]):hover:active > image,
354 .devtools-toolbarbutton[checked=true] > image,
355 .devtools-toolbarbutton[open=true] > image {
356 filter: var(--checked-icon-filter);
359 .devtools-button[disabled]::before,
360 .devtools-toolbarbutton[disabled] > image {
361 filter: url(images/filters.svg#disabled-icon-state);
364 /* Icon-and-text buttons */
365 .devtools-toolbarbutton.icon-and-text .toolbarbutton-text {
366 margin-inline-start: .5em !important;
370 /* Text-only buttons */
371 .devtools-toolbarbutton[label]:not([text-as-image]):not([type=menu-button]),
372 .devtools-toolbarbutton[data-text-only],
373 #toolbox-buttons .devtools-toolbarbutton[text-as-image] {
374 /* background-color: rgba(0, 0, 0, .2); / Splitter */
377 /* Text-only button states */
378 .devtools-button:not(:empty):not([disabled]):hover,
379 #toolbox-buttons .devtools-toolbarbutton:not([disabled])[text-as-image]:hover,
380 .devtools-toolbarbutton:not(:-moz-any([checked=true],[disabled],[text-as-image]))[label]:hover {
381 /* background: rgba(0, 0, 0, .3); / Splitters */
384 .devtools-button:not(:empty):not([disabled]):hover:active,
385 #toolbox-buttons .devtools-toolbarbutton:not([disabled])[text-as-image]:hover:active,
386 .devtools-toolbarbutton:not(:-moz-any([checked=true],[disabled],[text-as-image]))[label]:hover:active {
387 /* background: rgba(0, 0, 0, .4); / Splitters */
390 .devtools-toolbarbutton:not([disabled])[label][checked=true],
391 .devtools-toolbarbutton:not([disabled])[label][open],
392 .devtools-button:not(:empty)[checked=true],
393 #toolbox-buttons .devtools-toolbarbutton[text-as-image][checked=true] {
394 /* background: rgba(29, 79, 115, .7); / Select highlight blue /
395 color: var(--theme-selection-color); */
398 .devtools-menulist[open=true],
399 .devtools-toolbarbutton[open=true],
400 .devtools-toolbarbutton[open=true]:hover,
401 .devtools-toolbarbutton[open=true]:hover:active,
402 .devtools-toolbarbutton[checked=true],
403 .devtools-toolbarbutton[checked=true]:hover,
404 #toolbox-buttons .devtools-toolbarbutton[text-as-image][checked] {
405 /* background: rgba(29, 79, 115, .8); / Select highlight blue /
406 color: var(--theme-selection-color); */
410 --clear-icon-url: url("chrome://devtools/skin/images/clear.svg");
413 .devtools-button.devtools-clear-icon::before {
414 background-image: var(--clear-icon-url);
417 .devtools-toolbarbutton.devtools-clear-icon {
418 list-style-image: var(--clear-icon-url);
421 .devtools-option-toolbarbutton {
422 list-style-image: var(--tool-options-image);
425 .devtools-toolbarbutton-group > .devtools-toolbarbutton:last-child {
428 .devtools-toolbarbutton-group + .devtools-toolbarbutton {
431 .devtools-separator + .devtools-toolbarbutton {
437 .devtools-searchinput,
438 .devtools-filterinput {
439 /* -moz-appearance: none;
444 border-color: var(--theme-splitter-color);
450 :root[platform="mac"] .devtools-searchinput,
451 :root[platform="mac"] .devtools-textinput {
452 /* border-radius: 20px;*/
455 .devtools-searchinput,
456 .devtools-filterinput {
460 padding-inline-start: 22px;
461 padding-inline-end: 4px;
462 background-position: 8px center;
463 background-size: 11px 11px;
464 background-repeat: no-repeat;
468 .devtools-searchinput {
469 background-image: var(--magnifying-glass-image);
472 .devtools-filterinput {
473 background-image: var(--filter-image);
476 .devtools-searchinput:-moz-locale-dir(rtl),
477 .devtools-searchinput:dir(rtl),
478 .devtools-filterinput:-moz-locale-dir(rtl),
479 .devtools-filterinput:dir(rtl) {
480 background-position: calc(100% - 8px) center;
483 .devtools-searchinput > .textbox-input-box > .textbox-search-icons > .textbox-search-icon,
484 .devtools-filterinput > .textbox-input-box > .textbox-search-icons > .textbox-search-icon {
488 .devtools-searchinput .textbox-input::placeholder,
489 .devtools-filterinput .textbox-input::placeholder {
493 /* Searchbox is a div container element for a search input element */
494 .devtools-searchbox {
500 button + .devtools-searchbox {
501 margin-inline-start: 2px;
504 /* The spacing is accomplished with a padding on the searchbox */
505 .devtools-searchbox > .devtools-textinput,
506 .devtools-searchbox > .devtools-searchinput {
509 .devtools-textinput:focus,
510 .devtools-searchinput:focus,
511 .devtools-filterinput:focus {
512 border-color: var(--theme-focus-border-color-textbox);
513 /* box-shadow: var(--theme-focus-box-shadow-textbox);*/
514 transition: all 0.2s ease-in-out;
518 /* Don't add 'double spacing' for inputs that are at beginning / end
519 of a toolbar (since the toolbar has it's own spacing). */
520 .devtools-toolbar > .devtools-textinput:first-child,
521 .devtools-toolbar > .devtools-searchinput:first-child,
522 .devtools-toolbar > .devtools-filterinput:first-child {
524 .devtools-toolbar > .devtools-textinput:last-child,
525 .devtools-toolbar > .devtools-searchinput:last-child,
526 .devtools-toolbar > .devtools-filterinput:last-child {
528 .devtools-toolbar > .devtools-searchbox:first-child {
530 .devtools-toolbar > .devtools-searchbox:last-child {
533 .devtools-rule-searchbox {
539 .devtools-rule-searchbox[filled] {
540 background-color: var(--searchbox-background-color);
541 border-color: var(--searchbox-border-color);
542 padding-inline-end: 23px;
545 .devtools-style-searchbox-no-match {
546 background-color: var(--searchbox-no-match-background-color) !important;
547 border-color: var(--searchbox-no-match-border-color) !important;
550 .devtools-searchinput-clear {
558 background-position: 0 0;
559 background-repeat: no-repeat;
560 background-color: transparent;
563 .devtools-searchinput-clear:dir(rtl) {
568 .devtools-searchinput-clear {
569 background-image: url("chrome://devtools/skin/images/search-clear.svg");
572 .devtools-style-searchbox-no-match + .devtools-searchinput-clear {
573 background-image: url("chrome://devtools/skin/images/search-clear-failed.svg") !important;
576 .devtools-searchinput-clear:hover {
577 background-position: -16px 0;
580 .devtools-searchinput > .textbox-input-box > .textbox-search-icons > .textbox-search-clear,
581 .devtools-filterinput > .textbox-input-box > .textbox-search-icons > .textbox-search-clear {
582 list-style-image: url("chrome://devtools/skin/images/search-clear.svg");
583 -moz-image-region: rect(0, 16px, 16px, 0);
586 .devtools-searchinput > .textbox-input-box > .textbox-search-icons > .textbox-search-clear:hover,
587 .devtools-filterinput > .textbox-input-box > .textbox-search-icons > .textbox-search-clear:hover {
588 -moz-image-region: rect(0, 32px, 16px, 16px);
591 /* In-tools sidebar */
593 .devtools-sidebar-tabs {
597 .devtools-sidebar-tabs > tabpanels {
602 .devtools-sidebar-tabs tabs {
607 .devtools-sidebar-alltabs {
608 /* -moz-appearance: none;
613 border-width: 0 0 1px 0;
614 border-inline-start-width: 1px;
615 border-style: solid;*/
618 .devtools-sidebar-alltabs .toolbarbutton-icon {
622 .devtools-sidebar-tabs tabs > .tabs-right,
623 .devtools-sidebar-tabs tabs > .tabs-left {
627 .devtools-sidebar-tabs tabs > tab {
635 .devtools-sidebar-tabs tabs > tab:-moz-focusring {
639 .devtools-sidebar-tabs tabs > tab:first-of-type {
640 margin-inline-start: 0;
643 .devtools-sidebar-tabs tabs > tab:last-of-type {
644 border-inline-end-width: 0;
647 .devtools-sidebar-tabs tabs > tab {
650 .devtools-sidebar-tabs tabs > tab[selected],
651 .devtools-sidebar-tabs tabs > tab[selected] + tab {
654 .devtools-sidebar-tabs tabs > tab:first-child {
657 .devtools-sidebar-tabs tabs > tab:hover {
660 .devtools-sidebar-tabs tabs > tab:hover:active {
663 .devtools-sidebar-tabs tabs > tab[selected],
664 .devtools-sidebar-tabs tabs > tab[selected]:hover:active {
667 .hidden-labels-box:not(.visible) > label,
668 .hidden-labels-box.visible ~ .hidden-labels-box > label:last-child {
672 .devtools-invisible-splitter {
673 border-color: transparent;
674 background-color: transparent;
677 .devtools-horizontal-splitter,
678 .devtools-side-splitter {
679 /* background-color: var(--theme-splitter-color);*/
682 /* HACK around hardcoded stylings for the HTML-based sidebar tabs */
683 .tabs .tabs-menu-item,
684 .theme-dark .tabs .tabs-menu-item,
685 .theme-light .tabs .tabs-menu-item {
687 margin-inline-end: 3px !important;
688 padding: 0 !important;
689 border-radius: 8px 8px 0 0;
690 border: 0 !important;
691 background-color: var(--theme-button-background);
693 .tabs .tabs-menu-item a {
694 color: var(--theme-button-color) !important;
695 padding: 0px 3px !important;
697 .tabs .tabs-menu-item.is-active {
698 height: auto !important;
700 .tabs .tabs-navigation {
701 height: auto !important;
702 border: 0 !important;
703 border-bottom: 3px solid var(--theme-body-background) !important;
708 .devtools-throbber::before {
710 display: inline-block;
711 vertical-align: bottom;
712 margin-inline-end: 0.5em;
715 border: 2px solid currentColor;
716 border-right-color: transparent;
718 animation: 1.1s linear throbber-spin infinite;
721 @keyframes throbber-spin {
726 transform: rotate(360deg);