$header-icon-size: theme('spacing.4'); $header-button-size-mobile: $mobile-nice-padding; $header-button-size: theme('spacing.8'); .w-panel { margin-bottom: theme('spacing.10'); } .w-panel__header { display: flex; align-items: center; margin-bottom: theme('spacing.3'); margin-inline-start: -1 * $mobile-nice-padding; @include media-breakpoint-up(sm) { $gap: theme('spacing.1'); gap: $gap; margin-inline-start: calc(-1 * 2 * ($header-button-size + $gap)); } } .w-panel__heading { @apply w-h3; display: inline-block; margin: 0; cursor: pointer; padding-inline-end: theme('spacing.2'); @include media-breakpoint-up(sm) { padding-inline-end: theme('spacing.5'); } } .w-panel__heading--label { @apply w-label-1; } .w-panel__anchor, .w-panel__toggle, .w-panel__controls .button.button--icon, .w-panel__controls-cue { @include show-focus-outline-inside(); display: inline-grid; justify-content: center; align-content: center; color: theme('colors.primary.DEFAULT'); border-radius: theme('borderRadius.full'); padding: 0; width: $header-button-size-mobile; height: $header-button-size-mobile; &:focus-visible, &:hover { background-color: $color-grey-5; @media (forced-colors: active) { border: 1px solid currentColor; } } &[disabled] { color: $color-grey-3; cursor: not-allowed; // Counter hover styles. background-color: transparent; @media (forced-colors: active) { color: GrayText; } } @include media-breakpoint-up(sm) { width: $header-button-size; height: $header-button-size; } } .w-panel__anchor { // Only hide anchors for devices that support hover interactions. @media (hover: hover) { .w-panel__header:not(:hover, :focus-within) & { opacity: 0; } } } // The suffix anchor is intended for small viewports only. .w-panel__anchor--suffix { @include media-breakpoint-up(sm) { display: none; } } // The prefix anchor can be used when there is enough space in the margin of the page. .w-panel__anchor--prefix { display: none; @include media-breakpoint-up(sm) { display: inline-grid; } } .w-panel__toggle { appearance: none; background: transparent; } .w-panel__icon { width: $header-icon-size; height: $header-icon-size; // Only rotate the default caret icon, not custom ones. [aria-expanded='false'] &.icon-arrow-down-big { transform: rotate(-90deg); } &.icon-link { width: theme('spacing.[3.5]'); height: theme('spacing.[3.5]'); } } .w-panel__divider { flex: 1; } .w-panel__controls { // Add additional invisible padding for a more forgiving hover area. padding: theme('spacing.4'); margin: calc(-1 * theme('spacing.4')); margin-inline-end: calc(-1 * theme('spacing.8')); margin-inline-start: 0; @include media-breakpoint-up(sm) { margin: calc(-1 * theme('spacing.4')); margin-inline-start: 0; } // The cue is meant to be displayed on top of a real button. > .w-panel__controls-cue { position: absolute; visibility: hidden; } @media (hover: hover) { // Hiding with opacity only, so the elements can still be focused. > * { opacity: 0; } > .w-panel__controls-cue { opacity: 1; visibility: visible; } .w-panel__header:is(:hover, :focus-within) & > * { opacity: 1; // The cue should be fully hidden, not just transparent. &.w-panel__controls-cue { visibility: hidden; } } } } .w-panel__wrapper { @include max-form-width(); }