panelUI-shared.css (63470B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 :root { 6 --panelui-subview-transition-duration: 150ms; 7 8 --panel-banner-item-color: var(--button-text-color); 9 --panel-banner-item-background-color: var(--button-background-color); 10 --panel-banner-item-hover-bgcolor: var(--button-background-color-hover); 11 --panel-banner-item-active-bgcolor: var(--button-background-color-active); 12 --panel-banner-item-update-supported-bgcolor: light-dark(#2ac3a2, #54ffbd); 13 --panel-banner-item-info-icon-bgcolor: light-dark(#0090ed, #80ebff); 14 15 --menu-panel-width: 22.35em; 16 --menu-panel-width-wide: 29em; 17 18 --arrowpanel-header-info-icon-padding: 4px; 19 --arrowpanel-header-info-icon-full-width: calc(16px + (2 * var(--arrowpanel-header-info-icon-padding))); 20 --panel-separator-padding-vertical: 4px; 21 --panel-separator-padding-horizontal: 8px; 22 --panel-separator-padding: var(--panel-separator-padding-vertical) var(--panel-separator-padding-horizontal); 23 --panel-subview-body-padding-block: 8px; 24 --panel-subview-body-padding-inline: 0; 25 --panel-subview-body-padding: var(--panel-subview-body-padding-block) var(--panel-subview-body-padding-inline); 26 27 --panel-and-palette-icon-size: 16px; 28 29 &:not([lwtheme]) { 30 --panel-separator-zap-gradient: linear-gradient(90deg, #9059ff 0%, #ff4aa2 52.08%, #ffbd4f 100%); 31 } 32 33 &[uidensity="compact"] { 34 --arrowpanel-menuitem-margin-inline: 4px; 35 --arrowpanel-menuitem-padding-block: 4px; 36 --panel-separator-padding-horizontal: 4px; 37 --panel-subview-body-padding-block: 4px; 38 :is(panel, menupopup):not([touchmode]) { 39 --arrowpanel-header-back-icon-padding: 4px; 40 } 41 } 42 } 43 44 /* The vars in this rule are not on the :root above so that they would 45 * work in conjunction with when touchmode attribute is set on the panels. */ 46 panel, 47 menupopup { 48 /* The value for the header back icon padding is selected in a way that the 49 * height of the header and its separator will be equal to the panel inner 50 * top padding plus standard menuitem, so that the header's separator will 51 * be located excatly where a normal toolbarseparator would be located after 52 * the first menuitem, in a menu without a header. */ 53 --arrowpanel-header-back-icon-padding: 6px; 54 --arrowpanel-header-back-icon-full-width: calc(16px + (2 * var(--arrowpanel-header-back-icon-padding))); 55 /* The min-height is calculated with the separator's horizontal margin rather 56 * than the vertical, to let the back icon have even spacing all around 57 * while being aligned with the separator. */ 58 --arrowpanel-header-min-height: calc(var(--arrowpanel-header-back-icon-full-width) + (var(--panel-separator-padding-horizontal) * 2)); 59 } 60 61 panel toolbarseparator { 62 color: var(--panel-separator-color); 63 padding: var(--panel-separator-padding); 64 } 65 66 #PanelUI-menu-button { 67 &[badge-status] > .toolbarbutton-badge-stack > .toolbarbutton-badge { 68 display: flex; 69 height: 10px; 70 width: 10px; 71 background-size: contain; 72 border: none; 73 74 &:-moz-window-inactive { 75 filter: grayscale(100%); 76 } 77 } 78 79 &[badge-status="extension-new-tab"], 80 &[badge-status="download-success"] { 81 > .toolbarbutton-badge-stack > .toolbarbutton-badge { 82 display: none; 83 } 84 } 85 86 &[badge-status="update-available"], 87 &[badge-status="update-downloading"], 88 &[badge-status="update-manual"], 89 &[badge-status="update-other-instance"], 90 &[badge-status="update-restart"], 91 &[badge-status="update-unsupported"] { 92 > .toolbarbutton-badge-stack > .toolbarbutton-badge { 93 box-shadow: none; 94 /* "!important" is necessary to override the rule in toolbarbutton.css */ 95 margin: -5px 0 0 !important; 96 margin-inline-end: -3px !important; 97 min-width: var(--icon-size-xsmall); 98 min-height: var(--icon-size-xsmall); 99 -moz-context-properties: fill; 100 background: url(chrome://browser/skin/notification-fill-12.svg) no-repeat center; 101 background-size: var(--icon-size-xsmall); 102 } 103 } 104 105 &[badge-status="update-available"], 106 &[badge-status="update-downloading"], 107 &[badge-status="update-manual"], 108 &[badge-status="update-other-instance"], 109 &[badge-status="update-restart"] { 110 > .toolbarbutton-badge-stack > .toolbarbutton-badge { 111 fill: var(--panel-banner-item-update-supported-bgcolor); 112 } 113 } 114 115 &[badge-status="update-unsupported"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { 116 background: url(chrome://global/skin/icons/warning-fill-12.svg) no-repeat center; 117 fill: var(--warning-icon-bgcolor); 118 } 119 } 120 121 .panel-banner-item { 122 &[notificationid="update-available"], 123 &[notificationid="update-downloading"], 124 &[notificationid="update-manual"], 125 &[notificationid="update-other-instance"], 126 &[notificationid="update-restart"] { 127 > .toolbarbutton-icon { 128 background-image: url(chrome://browser/skin/update-badge.svg); 129 background-repeat: no-repeat; 130 background-position: center; 131 -moz-context-properties: fill; 132 fill: var(--panel-banner-item-update-supported-bgcolor); 133 } 134 } 135 136 &[notificationid="update-unsupported"] > .toolbarbutton-icon { 137 background: url(chrome://global/skin/icons/warning.svg) no-repeat center; 138 -moz-context-properties: stroke, fill; 139 stroke: var(--arrowpanel-background); 140 fill: var(--warning-icon-bgcolor); 141 } 142 } 143 144 :root[taskbartab] { 145 #appMenu-new-tab-button2, 146 #appMenu-new-window-button2, 147 #appMenu-new-private-window-button2, 148 #appMenu-new-private-window-button2 + toolbarseparator, 149 #appMenu-bookmarks-button { 150 display: none; 151 } 152 } 153 154 #PanelUI-menu-button[badge-status="addon-alert"], 155 #PanelUI-menu-button[badge-status="fxa-needs-authentication"], 156 #fxa-toolbar-menu-button[badge-status="login_failed"] { 157 > .toolbarbutton-badge-stack > .toolbarbutton-badge { 158 height: 13px; 159 background: url(chrome://global/skin/icons/warning-fill-12.svg) center / contain no-repeat transparent; 160 box-shadow: none; 161 border-radius: 0; 162 -moz-context-properties: fill, stroke; 163 fill: var(--warning-icon-bgcolor); 164 stroke: var(--toolbar-bgcolor); 165 } 166 } 167 168 #fxa-toolbar-menu-button[badge-status="sync-disabled"] > .toolbarbutton-badge-stack > .toolbarbutton-badge { 169 box-shadow: none; 170 min-width: var(--icon-size-xsmall); 171 min-height: var(--icon-size-xsmall); 172 -moz-context-properties: stroke, fill; 173 background: url(chrome://browser/skin/notification-fill-12.svg) no-repeat center; 174 background-size: var(--icon-size-xsmall); 175 stroke: var(--arrowpanel-background); 176 fill: var(--warning-icon-bgcolor); 177 filter: drop-shadow(0 0 5px var(--warning-icon-bgcolor)); 178 } 179 180 #fxa-toolbar-menu-button:is([badge-status="login_failed"], [badge-status="sync-disabled"]) > .toolbarbutton-badge-stack > .toolbarbutton-badge { 181 display: flex; 182 } 183 184 .cui-widget-panel, 185 #widget-overflow, 186 #unified-extensions-panel { 187 font: menu; 188 } 189 190 panelmultiview { 191 align-items: flex-start; 192 min-width: 0; 193 min-height: 0; 194 195 &[transitioning] { 196 pointer-events: none; 197 } 198 } 199 200 panelview { 201 flex-direction: column; 202 padding: 0; 203 204 &:not([visible]) { 205 visibility: collapse; 206 } 207 } 208 209 .panel-viewcontainer { 210 overflow: hidden; 211 flex-shrink: 0; 212 min-width: 0; 213 min-height: 0; 214 max-height: 100%; 215 216 &[panelopen] { 217 transition-property: height; 218 transition-timing-function: var(--animation-easing-function); 219 transition-duration: var(--panelui-subview-transition-duration); 220 will-change: height; 221 } 222 223 &.offscreen { 224 display: block; 225 } 226 } 227 228 .panel-viewstack { 229 overflow: visible; 230 transition: height var(--panelui-subview-transition-duration); 231 } 232 233 .panel-subview-body { 234 overflow-y: auto; 235 overflow-x: hidden; 236 flex: 1; 237 padding: var(--panel-subview-body-padding); 238 239 &:not(:last-child) { 240 padding-bottom: 0; 241 } 242 243 toolbarseparator + & { 244 padding-top: 0; 245 } 246 } 247 248 .panel-view-body-unscrollable { 249 overflow: hidden; 250 flex: 1; 251 } 252 253 .panel-info-button { 254 appearance: none; 255 color: var(--button-text-color-ghost); 256 background-color: var(--button-background-color-ghost); 257 padding: 0; 258 border-radius: var(--button-border-radius); 259 flex-shrink: 0; 260 261 &[disabled] { 262 visibility: hidden; 263 } 264 265 &:hover { 266 color: var(--button-text-color-ghost-hover); 267 background-color: var(--button-background-color-ghost-hover); 268 } 269 270 &:not(:hover)[checked], 271 &:hover:active { 272 color: var(--button-text-color-ghost-active); 273 background-color: var(--button-background-color-ghost-active); 274 } 275 276 &:focus-visible { 277 outline: var(--focus-outline); 278 } 279 280 > image { 281 list-style-image: url(chrome://global/skin/icons/info.svg); 282 -moz-context-properties: fill, fill-opacity; 283 fill: currentColor; 284 padding: var(--arrowpanel-header-info-icon-padding); 285 } 286 } 287 288 #widget-overflow-list:empty + #widget-overflow-fixed-separator, 289 #widget-overflow:not([hasfixeditems]) #widget-overflow-fixed-separator { 290 display: none; 291 } 292 293 #wrapper-edit-controls:is([place="palette"], [place="panel"]) > #edit-controls, 294 #wrapper-zoom-controls:is([place="palette"], [place="panel"]) > #zoom-controls, 295 :is(panelview, #widget-overflow-fixed-list) .toolbaritem-combined-buttons { 296 margin: var(--arrowpanel-menuitem-margin); 297 } 298 299 /* Tweaks for menupopups hanging off toolbar buttons to make them feel like panels */ 300 301 .toolbar-menupopup { 302 &, 303 menupopup { 304 appearance: none; 305 border: none; 306 font: menu; 307 background-color: transparent; 308 --panel-background: var(--arrowpanel-background); 309 --panel-color: var(--arrowpanel-color); 310 --panel-border-color: var(--arrowpanel-border-color); 311 --panel-border-radius: var(--arrowpanel-border-radius); 312 --panel-padding: var(--panel-subview-body-padding); 313 --panel-shadow-margin: var(--arrowpanel-shadow-margin); 314 --menuitem-border-radius: var(--arrowpanel-menuitem-border-radius); 315 --menuitem-padding: var(--arrowpanel-menuitem-padding); 316 --menuitem-margin: var(--arrowpanel-menuitem-margin); 317 } 318 319 menupopup { 320 /* Align non top-level menupopup's first menuitem with the menuitem that opened it. 321 * The 1px is for the menupopup's border. */ 322 margin-top: calc(-1 * (var(--panel-subview-body-padding-block) + var(--panel-shadow-margin) + 1px)); 323 } 324 325 menu, 326 menuitem { 327 &[disabled] { 328 color: var(--button-text-color-ghost-disabled); 329 background-color: var(--button-background-color-ghost-disabled); 330 opacity: var(--button-opacity-disabled); 331 } 332 333 &:not([disabled])[_moz-menuactive] { 334 color: var(--button-text-color-ghost-hover); 335 background-color: var(--button-background-color-ghost-hover); 336 337 &:active { 338 color: var(--button-text-color-ghost-active); 339 background-color: var(--button-background-color-ghost-active); 340 } 341 } 342 343 &::before { 344 content: none; /* Reset's macOS' checkmark spacing */ 345 } 346 } 347 348 .menu-text, 349 .menu-icon, 350 .menu-accel, 351 menu::after { 352 /* Reset spacing set by menu.css */ 353 margin: 0; 354 padding: 0; 355 } 356 357 menuitem:not(.menuitem-iconic, [image]) > .menu-icon, 358 menu:not(.menu-iconic) > .menu-icon { 359 display: none; 360 } 361 362 .menu-icon { 363 margin-inline-end: 8px; 364 } 365 366 menu::after, 367 .menu-accel { 368 margin-inline-start: 16px; 369 } 370 371 menu::after { 372 fill-opacity: 0.6; 373 } 374 375 menuseparator { 376 padding: var(--panel-separator-padding); 377 } 378 } 379 380 #BMB_bookmarksPopup { 381 max-width: 30em; 382 } 383 384 menupopup[emptyplacesresult] > .hide-if-empty-places-result { 385 display: none; 386 } 387 388 :is(.toolbar-menupopup, .toolbar-menupopup menupopup)[emptyplacesresult] > menuitem > .menu-accel-container > .menu-accel { 389 margin: 0; 390 } 391 392 #confirmation-hint { 393 --arrowpanel-background: #0060df; 394 --arrowpanel-border-color: #0060df; 395 --arrowpanel-color: #fff; 396 --arrowpanel-padding: 6px 10px; 397 font-size: 1.1rem; 398 399 &::part(content) { 400 align-items: center; 401 } 402 403 /* Don't show the checkmark if there is a description */ 404 &.with-description #confirmation-hint-checkmark-animation-container { 405 display: none; 406 } 407 408 &[data-message-id="loginRemoved"] #confirmation-hint-checkmark-image { 409 background-image: url("chrome://global/skin/icons/delete.svg"); 410 background-size: contain; 411 -moz-context-properties: fill; 412 fill: #fff; 413 animation: none; 414 } 415 } 416 417 #confirmation-hint-checkmark-animation-container { 418 position: relative; 419 overflow: hidden; 420 width: 14px; 421 height: 14px; 422 423 &[animate] > #confirmation-hint-checkmark-image { 424 display: block; 425 position: absolute; 426 background-image: url(chrome://browser/skin/success-animation.svg); 427 background-repeat: no-repeat; 428 /* frames are 16px wide by 14px high */ 429 min-width: 304px; 430 max-width: 304px; 431 min-height: 14px; 432 max-height: 14px; 433 animation-name: confirmation-hint-checkmark-animation; 434 animation-fill-mode: forwards; 435 animation-timing-function: steps(18); 436 -moz-context-properties: fill; 437 fill: currentColor; 438 439 &:-moz-locale-dir(rtl) { 440 animation-name: confirmation-hint-checkmark-animation-rtl; 441 transform: translateX(288px); 442 } 443 444 @media (prefers-reduced-motion: no-preference) { 445 animation-duration: 300ms; 446 animation-delay: 60ms; 447 } 448 } 449 } 450 451 @keyframes confirmation-hint-checkmark-animation { 452 from { 453 transform: translateX(0); 454 } 455 to { 456 transform: translateX(-288px); 457 } 458 } 459 460 @keyframes confirmation-hint-checkmark-animation-rtl { 461 from { 462 transform: translateX(288px); 463 } 464 to { 465 transform: translateX(0); 466 } 467 } 468 469 #confirmation-hint-message { 470 margin-inline: 7px 0; 471 472 #confirmation-hint.with-description & { 473 font-size: 1.2em; 474 font-weight: var(--font-weight-semibold); 475 } 476 } 477 478 @media (prefers-reduced-motion: no-preference) { 479 #confirmation-hint-message-container { 480 transform: scale(0.8); 481 opacity: 0; 482 transition: 483 transform 120ms cubic-bezier(0.25, 1.27, 0.35, 1.18), 484 opacity 60ms linear; 485 486 #confirmation-hint-checkmark-animation-container[animate] + & { 487 transform: scale(1); 488 opacity: 1; 489 } 490 } 491 } 492 493 .cui-widget-panel { 494 --arrowpanel-padding: var(--panel-subview-body-padding); 495 } 496 497 #appMenu-popup panelview, 498 /* The Report Broken Site panel can be opened from the Help menu 499 * in the menubar, which isn't a descendant of #appMenu-popup. 500 * Target it specifically in this rule to make it the same width 501 * as if it was a standard panelview opened from the app menu. */ 502 #report-broken-site-popup-mainView[mainview], 503 #PanelUI-fxa { 504 width: 22.5em; 505 } 506 507 :where(#customizationui-widget-multiview) panelview:not([extension]) { 508 min-width: var(--menu-panel-width); 509 max-width: 35em; 510 } 511 512 #appMenu-libraryView, 513 #pageActionPanel panelview, 514 #widget-overflow panelview { 515 min-width: var(--menu-panel-width-wide); 516 max-width: var(--menu-panel-width-wide); 517 } 518 519 /* Add 2 * 16px extra width for touch mode button padding. */ 520 #appMenu-popup[touchmode] panelview { 521 min-width: calc(var(--menu-panel-width) + 32px); 522 } 523 524 .toolbaritem-combined-buttons:is(:not([cui-areatype="toolbar"]), [overflowedItem="true"]) > toolbarbutton > .toolbarbutton-icon { 525 min-width: 0; 526 min-height: 0; 527 margin: 0; 528 } 529 530 .animate-out { 531 animation-name: widget-animate-out; 532 animation-fill-mode: forwards; 533 animation-duration: 500ms; 534 animation-timing-function: var(--animation-easing-function); 535 } 536 537 @keyframes widget-animate-out { 538 0% { 539 opacity: 1; 540 transform: scale(1); 541 } 542 100% { 543 opacity: 0; 544 transform: scale(0.5); 545 } 546 } 547 548 /* Webextension buttons */ 549 toolbarbutton[constrain-size="true"][cui-areatype="panel"] > .toolbarbutton-icon, 550 toolbarbutton[constrain-size="true"][cui-areatype="panel"] > .toolbarbutton-badge-stack > .toolbarbutton-icon { 551 height: var(--panel-and-palette-icon-size); 552 width: var(--panel-and-palette-icon-size); 553 } 554 555 #zoom-in-button > .toolbarbutton-text, 556 #zoom-out-button > .toolbarbutton-text, 557 #zoom-reset-button > .toolbarbutton-icon { 558 display: none; 559 } 560 561 /* Main menu banner menuitems */ 562 563 #appMenu-popup { 564 .panel-banner-item, 565 .addon-banner-item { 566 align-items: flex-start; 567 color: var(--panel-banner-item-color); 568 background-color: var(--panel-banner-item-background-color); 569 margin-bottom: 4px; 570 font-weight: var(--font-weight-semibold); 571 } 572 573 .panel-banner-item, 574 .addon-banner-item { 575 &:not([disabled]):hover { 576 background-color: var(--panel-banner-item-hover-bgcolor); 577 578 &:active { 579 background-color: var(--panel-banner-item-active-bgcolor); 580 } 581 } 582 583 > .toolbarbutton-text { 584 display: inline-block; 585 padding: 0; 586 } 587 } 588 } 589 590 :root[uidensity="compact"] { 591 .panel-banner-item, 592 .addon-banner-item { 593 /* Without some padding the button gets too crowded even for compact mode 594 when the text wraps to a newline. */ 595 padding-block: 4px; 596 } 597 } 598 599 .panel-banner-item > .toolbarbutton-icon { 600 width: 16px; 601 height: 16px; 602 /* Move the icon to appear after the text label. */ 603 order: 2; 604 } 605 606 .addon-banner-item { 607 > .toolbarbutton-icon { 608 display: none; 609 } 610 611 /* Addon banners use that one for the addon's icon and need a content element 612 added to put their generic notification in. */ 613 &::after { 614 content: ""; 615 display: flex; 616 background: url(chrome://global/skin/icons/warning.svg) no-repeat center; 617 width: 16px; 618 height: 16px; 619 -moz-context-properties: fill; 620 fill: var(--warning-icon-bgcolor); 621 margin-inline-start: 10px; 622 } 623 } 624 625 /* FxAccount indicator bits. */ 626 627 @keyframes syncRotate { 628 from { 629 transform: rotate(0); 630 } 631 to { 632 transform: rotate(360deg); 633 } 634 } 635 636 @media (prefers-reduced-motion: no-preference) { 637 #PanelUI-fxa-menu-syncnow-button[syncstatus="active"] > .toolbarbutton-icon, 638 #PanelUI-remotetabs-syncnow[syncstatus="active"] > .toolbarbutton-icon, 639 .syncNowBtn[syncstatus="active"] { 640 animation: syncRotate 0.8s linear infinite; 641 -moz-context-properties: fill; 642 fill: var(--toolbarbutton-icon-fill-attention); 643 visibility: visible; 644 } 645 } 646 647 .syncNowBtn { 648 -moz-context-properties: fill; 649 fill: currentColor; 650 height: 16px; 651 width: 16px; 652 list-style-image: url("chrome://browser/skin/sync.svg"); 653 visibility: collapse; 654 order: 2; 655 } 656 657 #fxa-menu-account-fxa-avatar { 658 pointer-events: none; 659 list-style-image: var(--avatar-image-url); 660 -moz-context-properties: fill; 661 fill: currentColor; 662 } 663 664 /* Handle different UI states. */ 665 666 #appMenu-mainView:not([showing-fxa-menu-message], [showing-default-cta-menu-message]) #appMenu-menu-message, 667 #PanelUI-fxa:not([showing-fxa-menu-message]) #PanelUI-fxa-menu-message { 668 display: none; 669 } 670 671 #appMenu-mainView[showing-fxa-menu-message] { 672 & #appMenu-fxa-status2, 673 & #appMenu-fxa-separator { 674 display: none; 675 } 676 } 677 678 #PanelUI-fxa[showing-fxa-menu-message] #fxa-manage-account-button { 679 display: none; 680 } 681 682 :root:not([fxastatus="signedin"]) #PanelUI-fxa-menu-syncnow-button { 683 display: none; 684 } 685 686 /* Error states */ 687 688 #appMenu-fxa-status2 { 689 display: flex; 690 691 &[fxastatus] { 692 margin: 0; 693 padding: 0; 694 } 695 696 &:not([fxastatus]) { 697 padding-block: 0 2px; 698 699 > #appMenu-fxa-label2 { 700 padding: 6px 12px; 701 color: var(--button-text-color); 702 background-color: var(--button-background-color); 703 font-size: 0.8em; 704 font-weight: var(--font-weight-semibold); 705 706 &:hover { 707 color: var(--button-text-color-hover); 708 background-color: var(--button-background-color-hover); 709 } 710 711 &:hover:active { 712 color: var(--button-text-color-active); 713 background-color: var(--button-background-color-active); 714 } 715 } 716 } 717 } 718 719 #appMenu-fxa-text, 720 #appMenu-fxa-status2[fxastatus] > #appMenu-fxa-label2 { 721 flex: 1; 722 align-self: center; 723 } 724 725 #appMenu-fxa-status2[fxastatus] > #appMenu-fxa-label2 > vbox > #appMenu-header-description, 726 #appMenu-fxa-text { 727 font-weight: var(--font-weight-semibold); 728 } 729 730 :root[fxadisabled="true"] #appMenu-fxa-status2, 731 :root[fxadisabled="true"] #appMenu-fxa-separator { 732 display: none; 733 } 734 735 #fxa-manage-account-button > vbox > label, 736 #PanelUI-fxa-menu-syncnow-button > hbox > label, 737 #PanelUI-remotetabs-syncnow > hbox > label, 738 #appMenu-fxa-label2 > vbox > label { 739 margin: 0; 740 } 741 742 #PanelUI-fxa-cta-menu, 743 #PanelUI-fxa-menu-services { 744 .fxa-cta-button { 745 margin: var(--space-xsmall); 746 } 747 } 748 749 .PanelUI-fxa-menu-section-title, 750 .PanelUI-remotetabs-clientcontainer > label[itemtype="client"] { 751 /* FIXME: these elements should use the subview-subheader class */ 752 color: var(--text-color-deemphasized); 753 font-size: 0.9em; 754 margin-top: 6px; 755 margin-bottom: 2px; 756 } 757 758 #appMenu-fxa-status2 { 759 &[fxastatus="login-failed"] #appMenu-fxa-label2::after { 760 content: url("chrome://global/skin/icons/warning.svg"); 761 -moz-context-properties: fill; 762 fill: var(--warning-icon-bgcolor); 763 } 764 765 &[fxastatus="unverified"] #appMenu-fxa-label2::after { 766 content: url("chrome://global/skin/icons/info-filled.svg"); 767 -moz-context-properties: fill; 768 fill: var(--panel-banner-item-info-icon-bgcolor); 769 } 770 } 771 772 .PanelUI-fxa-menu-setup-sync { 773 padding: 16px; 774 } 775 776 .sync-setup-icon, 777 .sync-status-indicator { 778 width: 20px; 779 height: 20px; 780 box-shadow: none; 781 -moz-context-properties: fill; 782 fill: currentColor; 783 } 784 785 .sync-setup-icon { 786 list-style-image: url("chrome://browser/skin/sync-off.svg"); 787 } 788 789 .sync-status-indicator { 790 background: url("chrome://browser/skin/notification-fill-12.svg") no-repeat center; 791 margin-inline-end: var(--space-xsmall); 792 fill: var(--warning-icon-bgcolor); 793 background-size: 18px; 794 } 795 796 .sync-setup-title { 797 font-size: 1.1em; 798 font-weight: normal; 799 margin-block: auto; 800 } 801 802 .sync-setup-description { 803 padding: var(--space-large) 0; 804 } 805 806 #PanelUI-fxa-menu-setup-sync-button, 807 .sync-status-container { 808 margin-inline-start: var(--space-small); 809 } 810 811 #PanelUI-fxa-menu-setup-sync-button { 812 padding: 6px 12px; 813 background-color: var(--button-background-color); 814 font-size: 0.9em; 815 font-weight: var(--font-weight-semibold); 816 max-width: fit-content; 817 border-radius: var(--button-border-radius); 818 819 &:hover { 820 background-color: var(--button-background-color-hover); 821 } 822 823 &:hover:active { 824 background-color: var(--button-background-color-active); 825 } 826 } 827 828 /* Firefox Account Toolbar Panel */ 829 830 #fxa-avatar-image { 831 width: var(--icon-size); 832 height: var(--icon-size); 833 } 834 835 :root { 836 --avatar-image-url: url(chrome://browser/skin/fxa/avatar.svg); 837 838 &[fxastatus="not_configured"] { 839 --avatar-image-url: url(chrome://browser/skin/fxa/avatar-empty.svg); 840 } 841 842 /** 843 * If we're not showing the glowing badge, we'll switch to the cutout variant 844 * of avatar-empty. If we ARE showing the glowing badge, we don't want the 845 * cutout to appear. 846 */ 847 &[fxastatus="not_configured"][fxa-avatar-icon-variant="human-circle"] { 848 #fxa-toolbar-menu-button { 849 --avatar-image-url: url(chrome://browser/skin/fxa/avatar-empty-circle.svg); 850 } 851 852 #fxa-toolbar-menu-button[showing-callout] { 853 --avatar-image-url: url(chrome://browser/skin/fxa/avatar-empty.svg); 854 } 855 } 856 857 /** 858 * Similar to the above for the fox variant of the icon, we only want to show 859 * the cutout variant if we're showing the glowing badge. 860 */ 861 &[fxastatus="not_configured"][fxa-avatar-icon-variant="fox-circle"] { 862 #fxa-toolbar-menu-button { 863 --avatar-image-url: url(chrome://browser/skin/fxa/avatar-fox-circle.svg); 864 } 865 866 #fxa-toolbar-menu-button[showing-callout] { 867 --avatar-image-url: url(chrome://browser/skin/fxa/avatar-fox.svg); 868 } 869 } 870 871 /** 872 * This overrides the hidden state of the badge so that we can repurpose it 873 * for the "circle" that fills the little cut-out in the -circle avatar 874 * variants. We only do this if we're not currently showing the glowing badge 875 * on the button. 876 * 877 * This is pretty gross, but it's just for the signed-out avatar experiment, 878 * and I'm hoping we're okay accepting this until we decide whether or not 879 * one of these variants should be the default signed-out avatar. At that 880 * point, I'm hoping we can shift to something less gross (bug 1938106). 881 */ 882 &[fxastatus="not_configured"][fxa-avatar-icon-variant$="-circle"] #fxa-toolbar-menu-button:not([showing-callout]) { 883 .avatar-container { 884 position: relative; 885 886 &:-moz-locale-dir(rtl) { 887 transform: scaleX(-1); 888 } 889 } 890 891 .avatar-container::after { 892 content: ""; 893 position: absolute; 894 top: calc(var(--icon-size) - 6px); 895 /* Avatar icon size minus its circle width minus half of the little circle icon size */ 896 left: calc(var(--icon-size) - 1px - 6px / 2); 897 height: 6px; 898 width: 6px; 899 background-image: url(chrome://browser/skin/fxa/circle.svg); 900 background-repeat: no-repeat; 901 background-position: center; 902 opacity: 0.43; 903 904 @media (prefers-color-scheme: dark) { 905 opacity: 0.67; 906 } 907 } 908 } 909 910 &:not([fxatoolbarmenu]) #fxa-toolbar-menu-button { 911 display: none; 912 } 913 914 /* stylelint-disable-next-line media-query-no-invalid */ 915 @media not -moz-pref("identity.fxaccounts.toolbar.defaultVisible") { 916 /* Hide the FxA toolbar button when its in the nav-bar, until in use */ 917 &[fxastatus="not_configured"] #widget-overflow-list > #fxa-toolbar-menu-button, 918 &[fxastatus="not_configured"] #nav-bar-customization-target > #fxa-toolbar-menu-button { 919 display: none; 920 } 921 } 922 923 /* Non-signedin statuses icons are not totally round. */ 924 &[fxastatus="signedin"] #fxa-avatar-image { 925 border-radius: var(--border-radius-circle); 926 } 927 928 &[fxastatus="signedin"] #fxa-avatar-label { 929 display: none; 930 } 931 932 &:not([fxastatus="signedin"]) #PanelUI-fxa-menu-connect-device-button { 933 color: var(--text-color-disabled); 934 } 935 } 936 937 #fxa-avatar-image { 938 list-style-image: var(--avatar-image-url); 939 } 940 941 #fxa-avatar-label { 942 margin: 0; 943 margin-inline-start: var(--space-small); 944 } 945 946 #fxa-menu-header-title { 947 color: var(--arrowpanel-color); 948 text-wrap: wrap; 949 } 950 951 #fxa-menu-header-description { 952 color: var(--text-color-deemphasized); 953 font-weight: var(--heading-font-weight); 954 text-wrap: wrap; 955 } 956 957 #cta-menu-header-description { 958 color: var(--text-color-deemphasized); 959 } 960 961 #PanelUI-appMenu-fxa-label-last-synced { 962 font-size: 10px; 963 font-style: italic; 964 color: var(--text-color-deemphasized); 965 } 966 967 #PanelUI-fxa-menu-send-button { 968 list-style-image: url(chrome://browser/skin/fxa/send.svg); 969 } 970 971 .ctaMenuLogo { 972 width: 16px; 973 height: 16px; 974 margin-inline-start: 5px; 975 } 976 977 #PanelUI-fxa-menu-monitor-button { 978 list-style-image: url(chrome://browser/skin/fxa/monitor.svg); 979 } 980 981 #PanelUI-fxa-menu-relay-button, 982 #PanelUI-services-menu-relay-button { 983 list-style-image: url(chrome://browser/content/logos/relay.svg); 984 } 985 986 #PanelUI-fxa-menu-vpn-button { 987 list-style-image: url("chrome://browser/skin/preferences/vpn-logo.svg"); 988 -moz-context-properties: fill; 989 fill: currentColor; 990 } 991 992 :root:not([fxastatus="signedin"]) #PanelUI-fxa-menu-connect-device-button { 993 color: var(--text-color-disabled); 994 } 995 996 /* From the FxA menu -> synced tabs, we don't need to clutter the view with 997 redundant buttons because these are accessible from the main menu */ 998 panelmultiview[mainViewId="PanelUI-fxa"] #PanelUI-remotetabs-syncnow { 999 display: none; 1000 } 1001 1002 #PanelUI-sendTabToDevice > .panel-subview-body:not([state]) > #PanelUI-sendTabToDevice-syncingDevices { 1003 display: none; 1004 } 1005 1006 #PanelUI-fxa-menu-sendtab-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { 1007 transform: scaleX(-1); 1008 } 1009 1010 .fxaSendLogo, 1011 .fxaMonitorLogo { 1012 margin-top: 15px; 1013 height: 80px; 1014 width: 80px; 1015 } 1016 1017 .fxaSendToDeviceLogo { 1018 margin-top: 15px; 1019 height: 119px; 1020 width: 164px; 1021 list-style-image: url(chrome://browser/skin/fxa/send-to-device.svg); 1022 } 1023 1024 .fxaSendLogo { 1025 list-style-image: url(chrome://browser/content/logos/send.svg); 1026 } 1027 1028 .fxaMonitorLogo { 1029 list-style-image: url(chrome://browser/content/logos/monitor.svg); 1030 } 1031 1032 #PanelUI-remotetabs { 1033 --panel-ui-sync-illustration-height: 141px; 1034 } 1035 1036 .sendToDevice-device { 1037 &[clientType="phone"] { 1038 list-style-image: url("chrome://browser/skin/device-phone.svg"); 1039 } 1040 1041 &[clientType="tablet"] { 1042 list-style-image: url("chrome://browser/skin/device-tablet.svg"); 1043 } 1044 1045 &[clientType="desktop"] { 1046 list-style-image: url("chrome://browser/skin/device-desktop.svg"); 1047 } 1048 1049 &[clientType="tv"] { 1050 list-style-image: url("chrome://browser/skin/device-tv.svg"); 1051 } 1052 1053 &[clientType="vr"] { 1054 list-style-image: url("chrome://browser/skin/device-vr.svg"); 1055 } 1056 1057 &.signintosync { 1058 list-style-image: url("chrome://browser/skin/sync.svg"); 1059 } 1060 } 1061 1062 .PanelUI-fxa-service-description-label, 1063 .PanelUI-remotetabs-instruction-label { 1064 /* If you change the margin here, the min-height of the synced tabs panel 1065 (e.g. #PanelUI-remotetabs[mainview] #PanelUI-remotetabs-setupsync, etc) may 1066 need adjusting (see bug 1248506) */ 1067 margin: 0; 1068 text-align: center; 1069 text-shadow: none; 1070 max-width: 15em; 1071 margin-top: 10px; 1072 } 1073 1074 .PanelUI-fxa-signin-button, 1075 .PanelUI-remotetabs-button { 1076 appearance: none; 1077 background-color: #0060df; 1078 /* !important for the color as an OSX specific rule when a lightweight theme 1079 is used for buttons in the toolbox overrides. See bug 1238531 for details */ 1080 color: white !important; 1081 border-radius: var(--border-radius-xsmall); 1082 /* If you change the margin or padding below, the min-height of the synced tabs 1083 panel (e.g. #PanelUI-remotetabs[mainview] #PanelUI-remotetabs-setupsync, 1084 etc) may need adjusting (see bug 1248506) */ 1085 margin-block: 15px; 1086 text-shadow: none; 1087 min-width: 200px; 1088 padding: 1em; 1089 1090 &:hover { 1091 background-color: #003eaa; 1092 1093 &:active { 1094 background-color: #002275; 1095 } 1096 } 1097 } 1098 1099 .remotetabs-promo-link { 1100 margin: 0; 1101 } 1102 1103 .PanelUI-remotetabs-notabsforclient-label { 1104 color: var(--text-color-deemphasized); 1105 /* This margin is to line this label up with the labels in toolbarbuttons. */ 1106 margin-inline-start: 28px; 1107 } 1108 1109 .fxaSyncIllustration, 1110 .fxaSyncIllustrationIssue { 1111 /* If you change the margin here, the min-height of the synced tabs panel 1112 (e.g. #PanelUI-remotetabs[mainview] #PanelUI-remotetabs-setupsync, etc) may 1113 need adjusting (see bug 1248506) */ 1114 width: 204px; 1115 height: var(--panel-ui-sync-illustration-height); 1116 -moz-context-properties: fill; 1117 fill: #cdcdcd; 1118 } 1119 1120 .fxaSyncIllustration { 1121 list-style-image: url(chrome://browser/skin/fxa/sync-illustration.svg); 1122 } 1123 1124 .fxaSyncIllustrationIssue { 1125 list-style-image: url(chrome://browser/skin/fxa/sync-illustration-issue.svg); 1126 } 1127 1128 .PanelUI-fxa-signin-button > .toolbarbutton-text, 1129 .PanelUI-remotetabs-button > .toolbarbutton-text { 1130 /* Overrides toolbar[mode="icons"] from xul.css */ 1131 display: block; 1132 } 1133 1134 #PanelUI-remotetabs[mainview] { 1135 /* panel anchored to toolbar button might be too skinny */ 1136 min-width: 19em; 1137 1138 .PanelUI-remotetabs-notabsforclient-label { 1139 margin-inline-start: 32px; 1140 } 1141 1142 /* Work around bug 1224412 - these boxes will cause scrollbars to appear when 1143 the panel is anchored to a toolbar button. 1144 */ 1145 /* prettier-ignore */ 1146 #PanelUI-remotetabs-setupsync, 1147 #PanelUI-remotetabs-syncdisabled, 1148 #PanelUI-remotetabs-reauthsync, 1149 #PanelUI-remotetabs-unverified, 1150 #PanelUI-remotetabs-nodevicespane, 1151 #PanelUI-remotetabs-tabsdisabledpane { 1152 min-height: calc(var(--panel-ui-sync-illustration-height) + 1153 15px + /* margin of .fxaSyncIllustration */ 1154 30px + /* margin of .PanelUI-remotetabs-button */ 1155 8px + /* padding of .PanelUI-remotetabs-button */ 1156 1em); 1157 } 1158 } 1159 1160 /* Collapse the non-active vboxes in the remotetabs deck to use only the 1161 height the active box needs */ 1162 #PanelUI-remotetabs-deck { 1163 &:not([selectedIndex="1"]) > #PanelUI-remotetabs-tabsdisabledpane, 1164 &:not([selectedIndex="2"]) > #PanelUI-remotetabs-fetching, 1165 &:not([selectedIndex="3"]) > #PanelUI-remotetabs-nodevicespane { 1166 visibility: collapse; 1167 } 1168 } 1169 1170 #PanelUI-remotetabs-main[devices-status="single"] > #PanelUI-remotetabs-buttons { 1171 display: none; 1172 } 1173 1174 #PanelUI-fxa-remotetabs-deck:not([syncingtabs]) { 1175 display: none; 1176 } 1177 1178 #customization-palette .toolbarbutton-text { 1179 display: none; 1180 } 1181 1182 .subview-subheader, 1183 panelview .toolbarbutton-1, 1184 .subviewbutton, 1185 .widget-overflow-list .toolbarbutton-1 { 1186 appearance: none; 1187 margin: var(--arrowpanel-menuitem-margin); 1188 min-height: 24px; 1189 padding: var(--arrowpanel-menuitem-padding); 1190 border-radius: var(--arrowpanel-menuitem-border-radius); 1191 background-color: transparent; 1192 flex-shrink: 0; 1193 } 1194 1195 .subview-subheader { 1196 font-size: 0.9em; 1197 font-weight: inherit; 1198 color: var(--text-color-deemphasized); 1199 padding-block: 4px; 1200 box-sizing: border-box; 1201 } 1202 1203 .subviewbutton { 1204 /* toolbarbuttons default to centered, but we don't want that for subviews. */ 1205 justify-content: flex-start; 1206 1207 /* We don't always display: none this item, and if it has forced width (like above) 1208 * or margin, that impacts the position of the label. Fix: 1209 */ 1210 > .toolbarbutton-icon { 1211 margin: 0; 1212 } 1213 1214 > .toolbarbutton-text { 1215 text-align: start; 1216 display: block; 1217 } 1218 1219 &[shortcut]::after { 1220 content: attr(shortcut); 1221 display: flex; 1222 } 1223 1224 &[shortcut]:not([disabled])::after { 1225 color: var(--text-color-deemphasized); 1226 } 1227 1228 &[shortcut]::after, 1229 .widget-overflow-list .subviewbutton-nav::after, 1230 .PanelUI-subView .subviewbutton-nav::after { 1231 margin-inline-start: 10px; 1232 } 1233 1234 &[checked] { 1235 list-style-image: url(chrome://global/skin/icons/check.svg); 1236 -moz-context-properties: fill; 1237 fill: currentColor; 1238 color: inherit; 1239 } 1240 1241 &[type="open-to-new"]::after { 1242 content: url(chrome://global/skin/icons/open-in-new.svg); 1243 -moz-context-properties: fill, fill-opacity; 1244 fill: currentColor; 1245 fill-opacity: 0.6; 1246 display: flex; 1247 height: var(--icon-size-xsmall); 1248 width: var(--icon-size-xsmall); 1249 } 1250 1251 &[type="open-to-new"]:-moz-locale-dir(rtl)::after { 1252 transform: scaleX(-1); 1253 } 1254 } 1255 1256 .subviewbutton-iconic > .toolbarbutton-text, 1257 .subviewbutton[image] > .toolbarbutton-text, 1258 .subviewbutton[targetURI] > .toolbarbutton-text, 1259 .subviewbutton.bookmark-item > .toolbarbutton-text, 1260 .subviewbutton[checked] > .toolbarbutton-text { 1261 padding-inline-start: 8px; 1262 } 1263 1264 .subviewbutton-iconic { 1265 -moz-context-properties: fill; 1266 fill: currentColor; 1267 1268 > .toolbarbutton-icon { 1269 width: 16px; 1270 height: 16px; 1271 } 1272 } 1273 1274 #appMenu-profiles-button, 1275 #PanelUI-fxa-menu-profiles-button { 1276 justify-content: space-between; 1277 } 1278 1279 /* Set the --appmenu-profiles-theme-bg and --appmenu-profiles-theme-fg 1280 * variables inline on the toolbarbutton */ 1281 #appMenu-profiles-button.subviewbutton-iconic > .toolbarbutton-icon, 1282 #PanelUI-fxa-menu-profiles-button.subviewbutton-iconic > .toolbarbutton-icon, 1283 .subviewbutton-iconic.profile-item > .toolbarbutton-icon { 1284 -moz-context-properties: fill, stroke; 1285 fill: var(--appmenu-profiles-theme-bg); 1286 stroke: var(--appmenu-profiles-theme-fg); 1287 } 1288 1289 /* Adjust the Zoom toolbaritem padding to have its height the same as other toolbarbuttons, 1290 * also in compact density and touch mode. */ 1291 #appMenu-zoom-controls { 1292 padding-block: max(0px, var(--arrowpanel-menuitem-padding-block) - 4px); 1293 1294 > .subviewbutton { 1295 margin-inline-start: 2px; 1296 padding: 4px; 1297 } 1298 1299 /* hover and active color changes are applied to child elements not the button itself */ 1300 > .subviewbutton:not([disabled]):is(:hover, :hover:active) { 1301 color: unset; 1302 background-color: unset; 1303 } 1304 1305 > .subviewbutton:focus-visible { 1306 outline: none; 1307 } 1308 } 1309 1310 #appMenu-zoom-controls > .subviewbutton-iconic:focus-visible > .toolbarbutton-icon, 1311 #appMenu-zoomReset-button2:focus-visible > .toolbarbutton-text { 1312 outline: var(--focus-outline); 1313 } 1314 1315 #appMenu-zoomReduce-button2, 1316 #appMenu-zoomEnlarge-button2 { 1317 > .toolbarbutton-icon { 1318 -moz-context-properties: fill, stroke; 1319 color: var(--button-text-color); 1320 fill: currentColor; 1321 /* the stroke color is used to fill the circle in the icon */ 1322 stroke: var(--button-background-color); 1323 border-radius: var(--border-radius-circle); 1324 padding: 0; 1325 } 1326 1327 &:not([disabled]):hover > .toolbarbutton-icon { 1328 color: var(--button-text-color-hover); 1329 stroke: var(--button-background-color-hover); 1330 } 1331 1332 &:not([disabled]):active:hover > .toolbarbutton-icon { 1333 color: var(--button-text-color-hover); 1334 stroke: var(--button-background-color-active); 1335 } 1336 } 1337 1338 #appMenu-zoomReset-button2 > .toolbarbutton-text, 1339 #appMenu-fullscreen-button2 > .toolbarbutton-icon { 1340 border-radius: var(--border-radius-xsmall); 1341 } 1342 1343 #appMenu-fullscreen-button2 > .toolbarbutton-icon { 1344 padding: 1px; 1345 color: var(--button-text-color); 1346 background-color: var(--button-background-color); 1347 } 1348 1349 #appMenu-zoomReset-button2:not([disabled]):hover > .toolbarbutton-text, 1350 #appMenu-fullscreen-button2:not([disabled]):hover > .toolbarbutton-icon { 1351 color: var(--button-text-color-hover); 1352 background-color: var(--button-background-color-hover); 1353 } 1354 1355 #appMenu-zoomReset-button2:not([disabled]):hover:active > .toolbarbutton-text, 1356 #appMenu-fullscreen-button2:not([disabled]):hover:active > .toolbarbutton-icon { 1357 color: var(--button-text-color-active); 1358 background-color: var(--button-background-color-active); 1359 } 1360 1361 /** 1362 * When the Zoom Reset button is disabled, we don't want the zoom-level 1363 * indicator to be so hard to read, so we override the disabled text 1364 * style on it. 1365 */ 1366 #appMenu-zoomReset-button2[disabled], 1367 #zoom-reset-button[disabled] { 1368 opacity: 1; 1369 } 1370 1371 .panel-subview-footer-button { 1372 /* Set the footer's bottom margin according to menuitems inline margin 1373 to make sure the footer's margin is even from all sides. */ 1374 margin-bottom: var(--arrowpanel-menuitem-margin-inline); 1375 } 1376 1377 #protections-popup-mainView .subviewbutton-nav:not(.notFound), 1378 .widget-overflow-list .subviewbutton-nav, 1379 .PanelUI-subView .subviewbutton-nav { 1380 &::after { 1381 -moz-context-properties: fill, fill-opacity; 1382 content: url(chrome://global/skin/icons/arrow-right.svg); 1383 fill: currentColor; 1384 fill-opacity: 0.6; 1385 display: flex; 1386 } 1387 1388 &:-moz-locale-dir(rtl)::after { 1389 content: url(chrome://global/skin/icons/arrow-left.svg); 1390 } 1391 } 1392 1393 .PanelUI-subView { 1394 .subviewbutton-nav-down::after { 1395 -moz-context-properties: fill, fill-opacity; 1396 content: url(chrome://global/skin/icons/arrow-down.svg); 1397 fill: currentColor; 1398 fill-opacity: 0.6; 1399 display: flex; 1400 } 1401 1402 .toolbaritem-combined-buttons > .subviewbutton { 1403 flex: none; 1404 height: auto; 1405 margin-inline-start: 18px; 1406 min-width: auto; 1407 padding: 4px 5px; 1408 } 1409 1410 .toolbaritem-combined-buttons > .subviewbutton-iconic > .toolbarbutton-text, 1411 .toolbaritem-combined-buttons > .subviewbutton:not(.subviewbutton-iconic) > .toolbarbutton-icon { 1412 display: none; 1413 } 1414 1415 toolbarseparator.proton-zap::before { 1416 border-image: var(--panel-separator-zap-gradient, none) 1; 1417 } 1418 } 1419 1420 /* A menu item with some buttons at the end. */ 1421 .toolbaritem-menu-buttons { 1422 /* Use the same margin at the start as at the end (other margin set below). */ 1423 margin-inline-start: 8px; 1424 1425 > .subviewbutton { 1426 min-width: auto; 1427 padding-inline: 5px; 1428 } 1429 1430 > .subviewbutton-iconic:not([flex]) > .toolbarbutton-text { 1431 display: none; 1432 } 1433 } 1434 1435 .toolbaritem-combined-buttons, 1436 .toolbaritem-menu-buttons { 1437 align-items: center; 1438 flex-direction: row; 1439 border: 0; 1440 border-radius: 0; 1441 } 1442 1443 .toolbaritem-combined-buttons:not([widget-type="button-and-view"], [widget-type="custom"]), 1444 .toolbaritem-menu-buttons { 1445 margin-inline-end: 8px; 1446 } 1447 1448 panelmultiview .toolbaritem-combined-buttons > label { 1449 flex: 1; 1450 margin: 0; 1451 padding: 4px 0; 1452 } 1453 1454 #appMenu-zoomReset-button2 > .toolbarbutton-text { 1455 min-width: calc(4ch + 8px); 1456 text-align: center; 1457 } 1458 1459 .toolbaritem-combined-buttons > .subviewbutton:not(.subviewbutton-iconic) > .toolbarbutton-text { 1460 padding-inline-start: 0; 1461 } 1462 1463 panelview .toolbarbutton-1 { 1464 margin-top: 6px; 1465 } 1466 1467 :is( 1468 panelview .toolbarbutton-1, 1469 toolbarbutton.subviewbutton, 1470 .widget-overflow-list .toolbarbutton-1, 1471 .toolbaritem-combined-buttons:is(:not([cui-areatype="toolbar"]), [overflowedItem="true"]) > toolbarbutton 1472 ) { 1473 color: var(--button-text-color-ghost); 1474 background-color: var(--button-background-color-ghost); 1475 1476 &:focus-visible { 1477 outline: var(--focus-outline); 1478 outline-offset: var(--focus-outline-inset); 1479 } 1480 1481 &[disabled] { 1482 color: var(--button-text-color-ghost-disabled); 1483 background-color: var(--button-background-color-ghost-disabled); 1484 opacity: var(--button-opacity-disabled); 1485 } 1486 1487 &:not([disabled]):hover { 1488 color: var(--button-text-color-ghost-hover); 1489 background-color: var(--button-background-color-ghost-hover); 1490 1491 &:active { 1492 color: var(--button-text-color-ghost-active); 1493 background-color: var(--button-background-color-ghost-active); 1494 box-shadow: 0 1px 0 hsla(210, 4%, 10%, 0.03) inset; 1495 } 1496 } 1497 } 1498 1499 .PanelUI-tabitem-container > toolbarbutton[itemtype="tab"], 1500 #PanelUI-historyItems > toolbarbutton { 1501 list-style-image: url("chrome://global/skin/icons/defaultFavicon.svg"); 1502 -moz-context-properties: fill; 1503 fill: currentColor; 1504 } 1505 1506 #fxa-menu-account-fxa-avatar, 1507 #appMenu-fxa-label > .toolbarbutton-icon, 1508 #PanelUI-containersItems > .subviewbutton > .toolbarbutton-icon, 1509 .PanelUI-tabitem-container > toolbarbutton[itemtype="tab"] > .toolbarbutton-icon, 1510 .PanelUI-remotetabs-clientcontainer > toolbarbutton > .toolbarbutton-icon, 1511 #PanelUI-recentlyClosedWindows > toolbarbutton > .toolbarbutton-icon, 1512 #PanelUI-recentlyClosedTabs > toolbarbutton > .toolbarbutton-icon, 1513 #PanelUI-historyItems > toolbarbutton > .toolbarbutton-icon { 1514 width: 16px; 1515 height: 16px; 1516 1517 /* Apply crisp rendering for favicons at exactly 2x resolution */ 1518 @media (resolution: 2x) { 1519 image-rendering: -moz-crisp-edges; 1520 } 1521 } 1522 1523 #PanelUI-fxa-remotetabs-tabspane, 1524 #PanelUI-remotetabs-tabspane { 1525 min-width: 0; 1526 } 1527 1528 .PanelUI-tabitem-container { 1529 transition: 1530 opacity 0.2s ease, 1531 transform 0.2s ease; 1532 1533 &.tabitem-removed { 1534 opacity: 0; 1535 transform: translateY(-20px); 1536 } 1537 1538 > toolbarbutton[itemtype="tab"] { 1539 flex: 1; 1540 min-width: 0; 1541 display: flex; 1542 1543 &[disabled] { 1544 pointer-events: none; 1545 } 1546 } 1547 } 1548 1549 toolbarbutton[itemtype="showmorebutton"], 1550 toolbarbutton[itemtype="showinactivebutton"] { 1551 padding-inline-start: 0; 1552 1553 > label { 1554 /* Needed to properly left-align with the rest of list */ 1555 margin-inline-start: -8px; 1556 } 1557 } 1558 1559 .remote-tabs-close-button { 1560 .toolbarbutton-icon { 1561 /* To match the nav elements in the panel */ 1562 -moz-context-properties: fill, fill-opacity; 1563 fill: currentColor; 1564 fill-opacity: 0.6; 1565 display: flex; 1566 } 1567 } 1568 1569 .remote-tabs-undo-button { 1570 font-size: 0.8em; 1571 font-weight: var(--font-weight-semibold); 1572 } 1573 1574 .toolbaritem-combined-buttons { 1575 &:where(:not(.unified-extensions-item)):is(:not([cui-areatype="toolbar"]), [overflowedItem="true"]) > toolbarbutton { 1576 border: 0; 1577 margin: 0; 1578 flex: 1; 1579 padding-block: var(--arrowpanel-menuitem-padding-block); 1580 flex-direction: row; 1581 } 1582 1583 &[cui-areatype="panel"] > .toolbarbutton-combined-buttons-dropmarker, 1584 &[overflowedItem] > .toolbarbutton-combined-buttons-dropmarker { 1585 display: none; 1586 } 1587 1588 &:is(:not([cui-areatype="toolbar"]), [overflowedItem="true"]) > toolbarbutton:not(.toolbarbutton-1)[disabled] { 1589 opacity: 0.4; 1590 /* Override toolbarbutton.css which sets the color to GrayText */ 1591 color: inherit; 1592 } 1593 1594 &:is(:not([cui-areatype="toolbar"]), [overflowedItem="true"]) > separator { 1595 /* Override toolbarbuttons.css which sets the color to currentColor */ 1596 color: var(--panel-separator-color); 1597 } 1598 } 1599 1600 #zoom-controls[cui-areatype="toolbar"] > #zoom-reset-button > .toolbarbutton-text { 1601 display: block; 1602 /* 4 chars max, but `ch` is the width of the `0` glyph, so account for larger glyphs by adding 1ch */ 1603 min-width: calc(5ch + var(--toolbarbutton-inner-padding) * 2); 1604 } 1605 1606 .widget-overflow-list { 1607 .toolbarbutton-1 { 1608 align-items: center; 1609 flex-direction: row; 1610 } 1611 1612 .toolbarbutton-1:not(.toolbarbutton-combined) > .toolbarbutton-text { 1613 text-align: start; 1614 padding-inline-start: 0.5em; 1615 } 1616 1617 > #stop-reload-button > .toolbarbutton-1 { 1618 flex: 1; 1619 } 1620 } 1621 1622 #widget-overflow-list > toolbarspring { 1623 display: none; 1624 } 1625 1626 #PanelUI-panicView > .panel-subview-body, 1627 #PanelUI-panicView { 1628 overflow: visible; 1629 } 1630 1631 #PanelUI-panicView.cui-widget-panelview { 1632 min-width: 280px; 1633 } 1634 1635 #PanelUI-panic-timeframe { 1636 padding: 15px; 1637 border-bottom: 1px solid var(--panel-separator-color); 1638 } 1639 1640 #panic-button-success-icon, 1641 #PanelUI-panic-timeframe-icon { 1642 background-color: transparent; 1643 margin-inline-end: 10px; 1644 list-style-image: image-set( 1645 url(chrome://browser/skin/panic-panel/header.png), 1646 url(chrome://browser/skin/panic-panel/header@2x.png) 2x 1647 ); 1648 max-height: var(--size-item-xlarge); 1649 width: var(--size-item-xlarge); 1650 } 1651 1652 #panic-button-success-header { 1653 align-items: center; 1654 margin-bottom: 5px; 1655 } 1656 1657 #PanelUI-panic-timeframe-icon:-moz-locale-dir(rtl) { 1658 transform: scaleX(-1); 1659 } 1660 1661 .subviewradio { 1662 appearance: none; 1663 align-items: center; 1664 padding: 3px; 1665 margin: 0 0 2px; 1666 background-color: transparent; 1667 border-radius: var(--border-radius-small); 1668 border: 1px solid transparent; 1669 1670 &:hover { 1671 background-color: var(--button-background-color-hover); 1672 } 1673 1674 &:is([selected], [selected]:hover, :hover:active) { 1675 background-color: var(--button-background-color-active); 1676 } 1677 1678 > .radio-check { 1679 appearance: none; 1680 width: 16px; 1681 height: 16px; 1682 border: 1px solid rgba(110, 110, 110, 0.4); 1683 border-radius: var(--border-radius-circle); 1684 margin: 1px 5px; 1685 background-color: rgba(150, 150, 150, 0.2); 1686 } 1687 1688 > .radio-check[selected] { 1689 background-color: light-dark(#fff, transparent); 1690 border: 4px solid light-dark(#177ee6, #00ddff); 1691 } 1692 } 1693 1694 radiogroup:focus-visible > .subviewradio[focused="true"] { 1695 outline: var(--focus-outline); 1696 1697 > .radio-label-box { 1698 outline: none; 1699 } 1700 } 1701 1702 #PanelUI-panic-explanations { 1703 padding: 10px 10px 0; 1704 } 1705 1706 #PanelUI-panic-actionlist-main-label { 1707 color: var(--text-color-deemphasized); 1708 font-size: 0.9em; 1709 } 1710 1711 .PanelUI-panic-actionlist { 1712 padding: 2px 0; 1713 1714 &::before { 1715 display: inline-block; 1716 content: ""; 1717 width: 16px; 1718 height: 16px; 1719 margin-inline-end: 4px; 1720 background-image: image-set( 1721 url(chrome://browser/skin/panic-panel/icons.png), 1722 url(chrome://browser/skin/panic-panel/icons@2x.png) 2x 1723 ); 1724 vertical-align: bottom; 1725 } 1726 } 1727 1728 #PanelUI-panic-actionlist-newwindow::before { 1729 background-position-x: 16px; 1730 } 1731 1732 #PanelUI-panic-actionlist-windows::before { 1733 background-position-x: 32px; 1734 } 1735 1736 #PanelUI-panic-actionlist-history::before { 1737 background-position-x: 48px; 1738 } 1739 1740 #PanelUI-panic-warning { 1741 color: #d74345; 1742 text-align: center; 1743 width: 100%; 1744 margin-top: 20px; 1745 } 1746 1747 #PanelUI-panic-view-button { 1748 appearance: none; 1749 background-color: var(--button-background-color-destructive); 1750 color: var(--button-text-color-destructive); 1751 margin: 5px 15px 11px; 1752 border: 1px solid var(--button-border-color-destructive); 1753 border-radius: var(--button-border-radius); 1754 font-weight: var(--font-weight-semibold); 1755 padding: 10px; 1756 1757 &:hover { 1758 background-color: var(--button-background-color-destructive-hover); 1759 color: var(--button-text-color-destructive-hover); 1760 border-color: var(--button-border-color-destructive-hover); 1761 } 1762 1763 &:hover:active { 1764 background-color: var(--button-background-color-destructive-active); 1765 color: var(--button-text-color-destructive-active); 1766 border-color: var(--button-border-color-destructive-active); 1767 } 1768 1769 &:focus-visible { 1770 outline: var(--focus-outline); 1771 outline-offset: var(--focus-outline-offset); 1772 } 1773 1774 > .toolbarbutton-text { 1775 text-align: center; 1776 text-shadow: none; 1777 } 1778 } 1779 1780 #panic-button-success-closebutton { 1781 background-color: var(--button-background-color); 1782 color: var(--button-text-color); 1783 margin: 5px 0 0; 1784 border: 1px solid transparent; 1785 border-radius: var(--button-border-radius); 1786 padding: 10px; 1787 font-weight: var(--font-weight-semibold); 1788 appearance: none; 1789 1790 &:hover { 1791 background-color: var(--button-background-color-hover); 1792 &:active { 1793 background-color: var(--button-background-color-active); 1794 } 1795 } 1796 } 1797 1798 .panel-header { 1799 display: flex; 1800 align-items: center; 1801 justify-content: center; 1802 text-align: center; 1803 /* Set the header's padding according to menuitems horizontal padding 1804 to make sure they are even from all sides and aligned according to that padding. */ 1805 padding: var(--arrowpanel-menuitem-margin-inline); 1806 /* Calculate the header's height assuming it includes an icon even if it doesn't, 1807 to make sure all headers are the same height (assuming their text is a one liner). */ 1808 min-height: var(--arrowpanel-header-min-height); 1809 1810 + toolbarseparator { 1811 padding-top: 0 !important; 1812 } 1813 1814 > h1 { 1815 flex: auto; 1816 margin: 0; 1817 } 1818 1819 &.panel-header-with-info-button > h1 { 1820 /* Add the size of the info button to center properly. */ 1821 margin-inline-start: var(--arrowpanel-header-info-icon-full-width); 1822 } 1823 1824 &.panel-header-with-info-button > .subviewbutton-back + h1 { 1825 margin-inline-start: 0; 1826 margin-inline-end: calc(var(--arrowpanel-header-back-icon-full-width) - var(--arrowpanel-header-info-icon-full-width)); 1827 } 1828 1829 &:not(.panel-header-with-additional-element) > .subviewbutton-back + h1 { 1830 /* Add the size of the back button to center properly. */ 1831 margin-inline-end: var(--arrowpanel-header-back-icon-full-width); 1832 } 1833 1834 &.panel-header-with-additional-element > .additional-element-on-inline-start + h1 { 1835 /* This is for panels where the extra element is on the inline-start side like 1836 * the Report Broken Site panel. 1837 * The var needs to be set manually via CSS on the .panel-header element as we 1838 * can't predict what icon (and thus its size) may be in use. */ 1839 margin-inline-end: var(--arrowpanel-header-additional-element-width); 1840 } 1841 1842 > h1 > span { 1843 display: inline-block; 1844 white-space: pre-wrap; 1845 } 1846 1847 > .subviewbutton-back { 1848 -moz-context-properties: fill; 1849 fill: var(--button-icon-fill); 1850 list-style-image: url(chrome://global/skin/icons/arrow-left.svg); 1851 padding: var(--arrowpanel-header-back-icon-padding); 1852 } 1853 1854 > .subviewbutton-back:-moz-locale-dir(rtl) { 1855 list-style-image: url(chrome://global/skin/icons/arrow-right.svg); 1856 } 1857 } 1858 1859 .subviewbutton-back { 1860 margin: 0; 1861 1862 > .toolbarbutton-text { 1863 display: none; 1864 } 1865 } 1866 1867 /* Protections panel info message */ 1868 #protections-popup { 1869 #info-message-container { 1870 height: 260px; 1871 overflow: hidden; 1872 transition: margin-bottom 0.25s; 1873 } 1874 1875 #info-message-container[disabled] { 1876 /* Offset the height when hidden. This makes the panel content 1877 * cover the info message and reveal it as it slides down, rather 1878 * than the info message growing in height. */ 1879 margin-bottom: -260px; 1880 pointer-events: none; 1881 } 1882 1883 #info-message-container[disabled] #protections-popup-message { 1884 opacity: 0; 1885 } 1886 } 1887 1888 #protections-popup-message { 1889 display: flex; 1890 align-items: flex-end; 1891 height: calc(100% - 20px); 1892 margin: 10px; 1893 transition: opacity 0.25s; 1894 opacity: 1; 1895 background-image: url(chrome://browser/skin/controlcenter/hero-message-background.svg); 1896 background-repeat: no-repeat; 1897 background-position: top right; 1898 -moz-context-properties: fill; 1899 1900 &:-moz-locale-dir(rtl) { 1901 background-position-x: left; 1902 } 1903 1904 .protections-popup-content { 1905 display: block; 1906 margin: 12px 0; 1907 } 1908 1909 .protections-popup-message-title { 1910 display: grid; 1911 font-size: 1.3em; 1912 font-weight: var(--heading-font-weight); 1913 line-height: 1.4em; 1914 margin: 14px 0 0; 1915 grid-column-start: 1; 1916 } 1917 1918 .protections-popup-message-body { 1919 /* -10px to compensate for the margin on the container. We can't get rid of that 1920 because it helps position the background image. */ 1921 margin: 0 calc(-10px + var(--horizontal-padding)) var(--vertical-section-padding); 1922 margin-inline: 6px; 1923 } 1924 1925 .text-link { 1926 color: inherit; 1927 font-weight: var(--font-weight-semibold); 1928 } 1929 } 1930 1931 #customizationui-widget-panel { 1932 /* In the next two rules the panel's width is set according to the 1933 * profiler backdrop image when not opened from the overflow panel. */ 1934 #PanelUI-profiler { 1935 min-width: 319px; 1936 max-width: 319px; 1937 } 1938 1939 &[viewId="PanelUI-profiler"] { 1940 --panel-width: 319px; 1941 } 1942 } 1943 1944 :where(#PanelUI-profiler) :is(description, label) { 1945 margin: 0; 1946 } 1947 1948 #PanelUI-profiler-header { 1949 &[isinfocollapsed="false"] { 1950 background: radial-gradient(circle farthest-side at top right, #03b1f4, #0556cd); 1951 color: #fff; 1952 1953 &:-moz-locale-dir(rtl) { 1954 background: radial-gradient(circle farthest-side at top left, #03b1f4, #0556cd); 1955 } 1956 1957 :is(button, toolbarbutton):focus-visible { 1958 outline-color: currentColor; 1959 } 1960 1961 toolbarseparator { 1962 color: #0003; 1963 } 1964 } 1965 1966 &[isinfocollapsed="true"] #PanelUI-profiler-info { 1967 opacity: 0; 1968 pointer-events: none; 1969 } 1970 1971 /* The header has an attribute "animationready" that is either set to "true" or to 1972 "false". When the DOM is being initialized it is set to "false" so that animations 1973 do not run. */ 1974 &[animationready="true"] #PanelUI-profiler-info { 1975 transition: 1976 margin-block-end 250ms, 1977 opacity 250ms; 1978 } 1979 } 1980 1981 #PanelUI-profiler-info { 1982 min-height: 180px; 1983 padding: 0 15px 15px; 1984 background: top 10px right no-repeat url("chrome://browser/skin/profiler-popup-backdrop.png"); 1985 opacity: 1; 1986 } 1987 1988 #PanelUI-profiler-content { 1989 position: relative; 1990 padding: calc(15px - var(--panel-separator-padding-vertical)) 15px 15px; 1991 } 1992 1993 .PanelUI-profiler-description-title { 1994 font-size: 1.3em; 1995 font-weight: var(--heading-font-weight); 1996 margin-block: 2px; 1997 } 1998 1999 .PanelUI-profiler-description { 2000 margin-block: 4px; 2001 } 2002 2003 #PanelUI-profiler-learn-more { 2004 margin-top: 4px; 2005 color: #fff; 2006 text-decoration: underline; 2007 2008 &:hover:active { 2009 color: #fffc; 2010 } 2011 } 2012 2013 #PanelUI-profiler-presets { 2014 margin: 8px 0; 2015 2016 &[disabled]::part(label-box) { 2017 opacity: 0.5; 2018 } 2019 } 2020 2021 #PanelUI-profiler-content-edit-settings { 2022 font-size: 0.9em; 2023 } 2024 2025 .PanelUI-profiler-content-label { 2026 font-weight: var(--font-weight-semibold); 2027 } 2028 2029 #PanelUI-profiler-content-description { 2030 margin-block: 4px; 2031 font-size: 0.9em; 2032 color: var(--text-color-deemphasized); 2033 } 2034 2035 #PanelUI-profiler-content-recording:not([hidden]) { 2036 display: flex; 2037 place-items: center; 2038 place-content: center; 2039 gap: 13px; 2040 padding-block: 28px; 2041 font-size: 1.3em; 2042 } 2043 2044 .PanelUI-profiler-recording-icon { 2045 width: 42px; 2046 list-style-image: url(chrome://devtools/skin/images/tool-profiler.svg); 2047 -moz-context-properties: fill; 2048 fill: currentColor; 2049 opacity: 0.3; 2050 } 2051 2052 .PanelUI-profiler-button { 2053 appearance: none; 2054 background-color: var(--button-background-color); 2055 border-radius: var(--button-border-radius); 2056 color: var(--button-text-color); 2057 padding: 8px; 2058 margin: 0 5px; 2059 2060 &:hover { 2061 background-color: var(--button-background-color-hover); 2062 &:active { 2063 background-color: var(--button-background-color-active); 2064 } 2065 } 2066 2067 &:focus-visible { 2068 outline: var(--focus-outline); 2069 outline-offset: var(--focus-outline-offset); 2070 } 2071 } 2072 2073 .PanelUI-profiler-button-primary { 2074 background-color: var(--color-accent-primary); 2075 color: var(--button-text-color-primary); 2076 2077 &:hover { 2078 background-color: var(--color-accent-primary-hover); 2079 &:active { 2080 background-color: var(--color-accent-primary-active); 2081 } 2082 } 2083 } 2084 2085 .PanelUI-profiler-shortcut { 2086 padding-block-start: 5px; 2087 opacity: 0.5; 2088 text-align: center; 2089 } 2090 2091 .PanelUI-profiler-buttons { 2092 margin: 7px 10px 0; 2093 } 2094 2095 .PanelUI-profiler-info-icon { 2096 margin-inline-end: 10px; 2097 margin-block-start: 25px; 2098 width: 50px; 2099 list-style-image: url(chrome://devtools/skin/images/tool-profiler.svg); 2100 -moz-context-properties: fill; 2101 fill: #fff; 2102 } 2103 2104 /* Web-extension pop-ups */ 2105 2106 .cui-widget-panelview[id^="PanelUI-webext-"] { 2107 border-radius: var(--arrowpanel-border-radius); 2108 } 2109 2110 .webextension-popup-browser, 2111 .webextension-popup-stack { 2112 border-radius: inherit; 2113 } 2114 2115 .webextension-popup-stack { 2116 position: relative; 2117 } 2118 2119 /* Reset/Restart Private Browsing Panel */ 2120 2121 #reset-pbm-panel { 2122 max-width: var(--menu-panel-width-wide); 2123 } 2124 2125 #reset-pbm-panel-container { 2126 padding: 16px 16px 0; 2127 gap: 8px; 2128 } 2129 2130 #reset-pbm-panel-header > description { 2131 margin-bottom: 0; 2132 } 2133 2134 #reset-pbm-panel-header > description, 2135 #reset-pbm-panel-description, 2136 #reset-pbm-panel-footer { 2137 margin-inline: 0; 2138 } 2139 2140 #reset-pbm-panel-header > description { 2141 font-weight: var(--heading-font-weight); 2142 } 2143 2144 #reset-pbm-panel-checkbox { 2145 margin-inline: 0 8px; 2146 } 2147 2148 /* Report Broken Site panels */ 2149 2150 /* Hide the Report Broken Site menu item that 2151 * is on the App Menu's Help sub-menu. 2152 */ 2153 #appMenu_help_reportBrokenSite { 2154 display: none; 2155 } 2156 2157 .report-broken-site-view { 2158 max-height: 68vh; 2159 2160 description, 2161 label, 2162 menulist, 2163 input, 2164 textarea { 2165 margin: 0; 2166 } 2167 2168 > .panel-subview-body { 2169 toolbarbutton { 2170 margin-inline: calc(-1 * var(--arrowpanel-menuitem-padding-inline)); 2171 } 2172 2173 toolbarbutton::after { 2174 position: absolute; 2175 inset-inline-end: calc(2 * var(--arrowpanel-menuitem-padding-inline)); 2176 } 2177 } 2178 2179 #report-broken-site-panel-preview-items { 2180 margin: var(--arrowpanel-menuitem-padding); 2181 display: flex; 2182 flex-direction: column; 2183 align-items: flex-start; 2184 border: var(--border-width) solid var(--border-color-card); 2185 border-radius: var(--border-radius-medium); 2186 background-color: var(--background-color-box); 2187 box-sizing: border-box; 2188 2189 summary { 2190 cursor: pointer; 2191 padding-block: var(--space-large); 2192 } 2193 2194 .data { 2195 padding: var(--arrowpanel-menuitem-padding); 2196 background: 2197 linear-gradient(0deg, color-mix(in srgb, currentColor 7%, transparent) 0, transparent 16px), 2198 linear-gradient(180deg, color-mix(in srgb, currentColor 7%, transparent) 0, transparent 16px); 2199 overflow: auto; 2200 2201 .entry { 2202 text-indent: var(--space-large) hanging; 2203 } 2204 2205 .entry > span:first-child { 2206 margin-inline-end: var(--space-small); 2207 } 2208 } 2209 2210 details { 2211 & { 2212 width: 100%; 2213 } 2214 2215 &:not(:first-of-type) > summary { 2216 border-top: 1px solid var(--border-color-card); 2217 } 2218 2219 > summary { 2220 list-style: none; 2221 cursor: pointer; 2222 width: -moz-available; 2223 padding: var(--arrowpanel-menuitem-padding); 2224 padding-inline-start: calc(16px + calc(2 * var(--arrowpanel-menuitem-padding-block))); 2225 background-image: url("chrome://global/skin/icons/arrow-down.svg"); 2226 background-position: var(--arrowpanel-menuitem-padding-block) var(--arrowpanel-menuitem-padding-inline); 2227 background-repeat: no-repeat; 2228 -moz-context-properties: fill; 2229 fill: currentColor; 2230 } 2231 2232 &[open] > summary { 2233 background-image: url("chrome://global/skin/icons/arrow-up.svg"); 2234 } 2235 } 2236 2237 details > summary { 2238 color: var(--button-text-color); 2239 background-color: var(--button-background-color-ghost); 2240 2241 &:hover { 2242 background-color: var(--button-background-color-hover); 2243 color: var(--button-text-color-hover); 2244 } 2245 2246 &:active { 2247 background-color: var(--button-background-color-active); 2248 color: var(--button-text-color-active); 2249 } 2250 2251 &:focus-visible { 2252 outline: var(--focus-outline); 2253 } 2254 2255 @media (prefers-contrast) { 2256 outline: var(--button-border-color) solid var(--border-width); 2257 } 2258 } 2259 2260 details > summary { 2261 border-radius: calc(var(--border-radius-medium) - var(--border-width)); 2262 } 2263 2264 details:not(:first-of-type):not(:last-of-type) > summary { 2265 border-radius: 0; 2266 } 2267 2268 details:first-of-type, 2269 details:last-of-type[open] { 2270 > summary { 2271 border-end-end-radius: 0; 2272 border-end-start-radius: 0; 2273 } 2274 } 2275 2276 details:last-of-type > summary { 2277 border-start-start-radius: 0; 2278 border-start-end-radius: 0; 2279 } 2280 } 2281 2282 p { 2283 line-height: 1.5; 2284 } 2285 2286 vbox > checkbox { 2287 margin-block-start: var(--space-large); 2288 } 2289 2290 #report-broken-site-popup-blocked-trackers > p { 2291 font-size: 0.9em; 2292 color: var(--text-color-deemphasized); 2293 line-height: 1.2em; 2294 margin-inline-start: calc(var(--space-medium) + var(--checkbox-size)); 2295 } 2296 2297 textarea { 2298 resize: vertical; 2299 } 2300 2301 > .panel-subview-body > label { 2302 margin-block: 1.5em 0.5em; 2303 2304 &.invalid-message { 2305 margin-block: 0.5em 0; 2306 background-image: url("chrome://global/skin/icons/error.svg"); 2307 background-position: left center; 2308 background-repeat: no-repeat; 2309 -moz-context-properties: fill; 2310 fill: var(--icon-color-critical); 2311 padding-inline-start: calc(16px + 0.25em); 2312 2313 &:-moz-locale-dir(rtl) { 2314 background-position-x: right; 2315 } 2316 2317 display: none; 2318 2319 input:user-invalid + &, 2320 select:user-invalid + & { 2321 display: block; 2322 } 2323 } 2324 } 2325 2326 &.main-view { 2327 p { 2328 margin-block: 0; 2329 } 2330 2331 a { 2332 margin-block: 1.5em 1em; 2333 } 2334 2335 hbox:has(a#report-broken-site-popup-send-more-info-link[hidden]) + #report-broken-site-popup-preview-button { 2336 margin-block-start: 1.5em; 2337 } 2338 } 2339 2340 &.sent-view { 2341 @media not (prefers-contrast) { 2342 background-color: var(--background-color-success); 2343 } 2344 2345 > .panel-header { 2346 --arrowpanel-header-additional-element-width: 16px; 2347 2348 > .checkmark-icon { 2349 list-style-image: url(chrome://global/skin/icons/check-filled.svg); 2350 -moz-context-properties: fill; 2351 fill: #2ac3a2; 2352 } 2353 } 2354 2355 > .panel-subview-body { 2356 /* Don't let the footer appear way down in the panel while there's 2357 * almost no content above. */ 2358 flex: 0 auto; 2359 2360 > .subview-subheader { 2361 font-size: inherit; 2362 } 2363 } 2364 } 2365 } 2366 2367 #report-broken-site-panel-container { 2368 padding: 8px 16px 16px; 2369 } 2370 2371 /* ----- Profiles panels ----- */ 2372 2373 #profiles-header-content { 2374 max-width: 16em; 2375 white-space: nowrap; 2376 overflow: hidden; 2377 text-overflow: ellipsis; 2378 } 2379 2380 #profiles-edit-this-profile-button { 2381 list-style-image: url("chrome://global/skin/icons/edit-outline.svg"); 2382 padding: var(--arrowpanel-header-back-icon-padding); 2383 margin: 0; 2384 } 2385 2386 #profiles-edit-this-profile-button > .toolbarbutton-text { 2387 display: none; 2388 } 2389 2390 #profiles-copy-profile-button { 2391 list-style-image: url("chrome://global/skin/icons/edit-copy.svg"); 2392 } 2393 2394 #profiles-create-profile-button { 2395 list-style-image: url("chrome://global/skin/icons/plus.svg"); 2396 } 2397 2398 #profile-icon-image { 2399 width: 90px; 2400 height: 90px; 2401 -moz-context-properties: fill, stroke; 2402 fill: var(--appmenu-profiles-theme-bg); 2403 stroke: var(--appmenu-profiles-theme-fg); 2404 border: 4px solid var(--panel-background); 2405 border-radius: var(--border-radius-circle); 2406 } 2407 2408 #current-profile { 2409 align-items: center; 2410 gap: var(--space-small); 2411 position: relative; 2412 } 2413 2414 #half-height-profile { 2415 background: var(--appmenu-profiles-theme-bg); 2416 width: 100%; 2417 height: 50%; 2418 z-index: -1; 2419 position: absolute; 2420 top: 0; 2421 border-block-end: 1px solid var(--border-color-card); 2422 } 2423 2424 #PanelUI-profiles > .panel-subview-body { 2425 padding-block-start: 0; 2426 } 2427 2428 /* ----- Profiles FxA panel ----- */ 2429 2430 /* Special case: hide the profiles menuitem if the FxA/Sync panel is shown as 2431 * a submenu of the app menu, rather than anchored to the FxA/Sync toolbar 2432 * button. */ 2433 #appMenu-popup panelmultiview[mainViewId="appMenu-mainView"] #PanelUI-fxa-menu-profiles-button { 2434 display: none; 2435 } 2436 2437 /* ----- Content Analysis indicator panel ----- */ 2438 2439 #content-analysis-panel-container { 2440 padding: 8px; 2441 } 2442 2443 /* ----- IP Protection panel ----- */ 2444 #PanelUI-ipprotection { 2445 width: 400px; 2446 } 2447 2448 #ipprotection-experiment-badge { 2449 margin-inline-start: var(--space-xsmall); 2450 display: inline-block; 2451 } 2452 2453 #ipprotection-header-button { 2454 list-style-image: url(chrome://global/skin/icons/help.svg); 2455 }