tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }