/* Copyright 2022 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ @import url(draw_layer_builder.css); @import url(toggle_button.css); @import url(signature_manager.css); :root { --outline-width: 2px; --outline-color: #0060df; --outline-around-width: 1px; --outline-around-color: #f0f0f4; --hover-outline-around-color: var(--outline-around-color); --focus-outline: solid var(--outline-width) var(--outline-color); --unfocus-outline: solid var(--outline-width) transparent; --focus-outline-around: solid var(--outline-around-width) var(--outline-around-color); --hover-outline-color: #8f8f9d; --hover-outline: solid var(--outline-width) var(--hover-outline-color); --hover-outline-around: solid var(--outline-around-width) var(--hover-outline-around-color); --freetext-line-height: 1.35; --freetext-padding: 2px; --resizer-bg-color: var(--outline-color); --resizer-size: 6px; --resizer-shift: calc( 0px - (var(--outline-width) + var(--resizer-size)) / 2 - var(--outline-around-width) ); --editorFreeText-editing-cursor: text; --editorInk-editing-cursor: url(images/cursor-editorInk.svg) 0 16, pointer; --editorHighlight-editing-cursor: url(images/cursor-editorTextHighlight.svg) 24 24, text; --editorFreeHighlight-editing-cursor: url(images/cursor-editorFreeHighlight.svg) 1 18, pointer; --new-alt-text-warning-image: url(images/altText_warning.svg); } /* The following class is used to hide an element but keep it available to * for screen readers. */ .visuallyHidden { position: absolute; top: 0; left: 0; border: 0; margin: 0; padding: 0; width: 0; height: 0; overflow: hidden; white-space: nowrap; font-size: 0; } .textLayer { &.highlighting { cursor: var(--editorFreeHighlight-editing-cursor); &:not(.free) span { cursor: var(--editorHighlight-editing-cursor); &[role="img"] { cursor: var(--editorFreeHighlight-editing-cursor); } } &.free span { cursor: var(--editorFreeHighlight-editing-cursor); } } } #viewerContainer.pdfPresentationMode:fullscreen, .annotationEditorLayer.disabled { .noAltTextBadge { display: none !important; } } @media (min-resolution: 1.1dppx) { :root { --editorFreeText-editing-cursor: url(images/cursor-editorFreeText.svg) 0 16, text; } } @media screen and (forced-colors: active) { :root { --outline-color: CanvasText; --outline-around-color: ButtonFace; --resizer-bg-color: ButtonText; --hover-outline-color: Highlight; --hover-outline-around-color: SelectedItemText; } } [data-editor-rotation="90"] { transform: rotate(90deg); } [data-editor-rotation="180"] { transform: rotate(180deg); } [data-editor-rotation="270"] { transform: rotate(270deg); } .annotationEditorLayer { background: transparent; position: absolute; inset: 0; font-size: calc(100px * var(--total-scale-factor)); transform-origin: 0 0; cursor: auto; .selectedEditor { z-index: 100000 !important; } &.drawing * { pointer-events: none !important; } } .annotationEditorLayer.waiting { content: ""; cursor: wait; position: absolute; inset: 0; width: 100%; height: 100%; } .annotationEditorLayer.disabled { pointer-events: none; } .annotationEditorLayer.freetextEditing { cursor: var(--editorFreeText-editing-cursor); } .annotationEditorLayer.inkEditing { cursor: var(--editorInk-editing-cursor); } .annotationEditorLayer .draw { box-sizing: border-box; } .annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor, .signatureEditor) { position: absolute; background: transparent; z-index: 1; transform-origin: 0 0; cursor: auto; max-width: 100%; max-height: 100%; border: var(--unfocus-outline); &.draggable.selectedEditor { cursor: move; } &.selectedEditor { border: var(--focus-outline); outline: var(--focus-outline-around); &::before { /* This is a workaround for the lack of support for stripes(...) (see https://drafts.csswg.org/css-images-4/#stripes). The outline should be composed of 1px white, 2px blue and 1px white. This could be achieved in different ways: - using a linear-gradient; - using a box-shadow; - using an outline on the selected element and an outline+border on the ::before pseudo-element. All these options lead to incorrect rendering likely due to rounding issues. That said it doesn't mean that the current is ideal, but it's the best we could come up with for the moment. One drawback of this approach is that we use a border on the selected element which means that we must take care of it when positioning the div in js (see AnnotationEditor._borderLineWidth in editor.js). */ content: ""; position: absolute; inset: 0; border: var(--focus-outline-around); pointer-events: none; } } &:hover:not(.selectedEditor) { border: var(--hover-outline); outline: var(--hover-outline-around); &::before { content: ""; position: absolute; inset: 0; border: var(--focus-outline-around); } } } .annotationEditorLayer :is( .freeTextEditor, .inkEditor, .stampEditor, .highlightEditor, .signatureEditor ), .textLayer { .editToolbar { --editor-toolbar-delete-image: url(images/editor-toolbar-delete.svg); --editor-toolbar-bg-color: #f0f0f4; --editor-toolbar-highlight-image: url(images/toolbarButton-editorHighlight.svg); --editor-toolbar-fg-color: #2e2e56; --editor-toolbar-border-color: #8f8f9d; --editor-toolbar-hover-border-color: var(--editor-toolbar-border-color); --editor-toolbar-hover-bg-color: #e0e0e6; --editor-toolbar-hover-fg-color: var(--editor-toolbar-fg-color); --editor-toolbar-hover-outline: none; --editor-toolbar-focus-outline-color: #0060df; --editor-toolbar-shadow: 0 2px 6px 0 rgb(58 57 68 / 0.2); --editor-toolbar-vert-offset: 6px; --editor-toolbar-height: 28px; --editor-toolbar-padding: 2px; --alt-text-done-color: #2ac3a2; --alt-text-warning-color: #0090ed; --alt-text-hover-done-color: var(--alt-text-done-color); --alt-text-hover-warning-color: var(--alt-text-warning-color); @media (prefers-color-scheme: dark) { --editor-toolbar-bg-color: #2b2a33; --editor-toolbar-fg-color: #fbfbfe; --editor-toolbar-hover-bg-color: #52525e; --editor-toolbar-focus-outline-color: #0df; --alt-text-done-color: #54ffbd; --alt-text-warning-color: #80ebff; } @media screen and (forced-colors: active) { --editor-toolbar-bg-color: ButtonFace; --editor-toolbar-fg-color: ButtonText; --editor-toolbar-border-color: ButtonText; --editor-toolbar-hover-border-color: AccentColor; --editor-toolbar-hover-bg-color: ButtonFace; --editor-toolbar-hover-fg-color: AccentColor; --editor-toolbar-hover-outline: 2px solid var(--editor-toolbar-hover-border-color); --editor-toolbar-focus-outline-color: ButtonBorder; --editor-toolbar-shadow: none; --alt-text-done-color: var(--editor-toolbar-fg-color); --alt-text-warning-color: var(--editor-toolbar-fg-color); --alt-text-hover-done-color: var(--editor-toolbar-hover-fg-color); --alt-text-hover-warning-color: var(--editor-toolbar-hover-fg-color); } display: flex; width: fit-content; height: var(--editor-toolbar-height); flex-direction: column; justify-content: center; align-items: center; cursor: default; pointer-events: auto; box-sizing: content-box; padding: var(--editor-toolbar-padding); position: absolute; inset-inline-end: 0; inset-block-start: calc(100% + var(--editor-toolbar-vert-offset)); border-radius: 6px; background-color: var(--editor-toolbar-bg-color); border: 1px solid var(--editor-toolbar-border-color); box-shadow: var(--editor-toolbar-shadow); &.hidden { display: none; } &:has(:focus-visible) { border-color: transparent; } &:dir(ltr) { transform-origin: 100% 0; } &:dir(rtl) { transform-origin: 0 0; } .buttons { display: flex; justify-content: center; align-items: center; gap: 0; height: 100%; button { padding: 0; } .divider { width: 0; height: calc( 2 * var(--editor-toolbar-padding) + var(--editor-toolbar-height) ); border-left: 1px solid var(--editor-toolbar-border-color); border-right: none; display: inline-block; margin-inline: 2px; } .highlightButton { width: var(--editor-toolbar-height); &::before { content: ""; mask-image: var(--editor-toolbar-highlight-image); mask-repeat: no-repeat; mask-position: center; display: inline-block; background-color: var(--editor-toolbar-fg-color); width: 100%; height: 100%; } &:hover::before { background-color: var(--editor-toolbar-hover-fg-color); } } .delete { width: var(--editor-toolbar-height); &::before { content: ""; mask-image: var(--editor-toolbar-delete-image); mask-repeat: no-repeat; mask-position: center; display: inline-block; background-color: var(--editor-toolbar-fg-color); width: 100%; height: 100%; } &:hover::before { background-color: var(--editor-toolbar-hover-fg-color); } } > * { height: var(--editor-toolbar-height); } > :not(.divider) { border: none; background-color: transparent; cursor: pointer; &:hover { border-radius: 2px; background-color: var(--editor-toolbar-hover-bg-color); color: var(--editor-toolbar-hover-fg-color); outline: var(--editor-toolbar-hover-outline); outline-offset: 1px; &:active { outline: none; } } &:focus-visible { border-radius: 2px; outline: 2px solid var(--editor-toolbar-focus-outline-color); } } .altText { --alt-text-add-image: url(images/altText_add.svg); --alt-text-done-image: url(images/altText_done.svg); display: flex; align-items: center; justify-content: center; width: max-content; padding-inline: 8px; pointer-events: all; font: menu; font-weight: 590; font-size: 12px; color: var(--editor-toolbar-fg-color); &:disabled { pointer-events: none; } &::before { content: ""; mask-image: var(--alt-text-add-image); mask-repeat: no-repeat; mask-position: center; display: inline-block; width: 12px; height: 13px; background-color: var(--editor-toolbar-fg-color); margin-inline-end: 4px; } &:hover::before { background-color: var(--editor-toolbar-hover-fg-color); } &.done::before { mask-image: var(--alt-text-done-image); } &.new { &::before { width: 16px; height: 16px; mask-image: var(--new-alt-text-warning-image); background-color: var(--alt-text-warning-color); mask-size: cover; } &:hover::before { background-color: var(--alt-text-hover-warning-color); } &.done { &::before { mask-image: var(--alt-text-done-image); background-color: var(--alt-text-done-color); } &:hover::before { background-color: var(--alt-text-hover-done-color); } } } .tooltip { display: none; word-wrap: anywhere; &.show { --alt-text-tooltip-bg: #f0f0f4; --alt-text-tooltip-fg: #15141a; --alt-text-tooltip-border: #8f8f9d; --alt-text-tooltip-shadow: 0px 2px 6px 0px rgb(58 57 68 / 0.2); @media (prefers-color-scheme: dark) { --alt-text-tooltip-bg: #1c1b22; --alt-text-tooltip-fg: #fbfbfe; --alt-text-tooltip-shadow: 0px 2px 6px 0px #15141a; } @media screen and (forced-colors: active) { --alt-text-tooltip-bg: Canvas; --alt-text-tooltip-fg: CanvasText; --alt-text-tooltip-border: CanvasText; --alt-text-tooltip-shadow: none; } display: inline-flex; flex-direction: column; align-items: center; justify-content: center; position: absolute; top: calc(100% + 2px); inset-inline-start: 0; padding-block: 2px 3px; padding-inline: 3px; max-width: 300px; width: max-content; height: auto; font-size: 12px; border: 0.5px solid var(--alt-text-tooltip-border); background: var(--alt-text-tooltip-bg); box-shadow: var(--alt-text-tooltip-shadow); color: var(--alt-text-tooltip-fg); pointer-events: none; } } } } } } .annotationEditorLayer .freeTextEditor { padding: calc(var(--freetext-padding) * var(--total-scale-factor)); width: auto; height: auto; touch-action: none; } .annotationEditorLayer .freeTextEditor .internal { background: transparent; border: none; inset: 0; overflow: visible; white-space: nowrap; font: 10px sans-serif; line-height: var(--freetext-line-height); user-select: none; } .annotationEditorLayer .freeTextEditor .overlay { position: absolute; display: none; background: transparent; inset: 0; width: 100%; height: 100%; } .annotationEditorLayer freeTextEditor .overlay.enabled { display: block; } .annotationEditorLayer .freeTextEditor .internal:empty::before { content: attr(default-content); color: gray; } .annotationEditorLayer .freeTextEditor .internal:focus { outline: none; user-select: auto; } .annotationEditorLayer .inkEditor { width: 100%; height: 100%; } .annotationEditorLayer .inkEditor.editing { cursor: inherit; } .annotationEditorLayer .inkEditor .inkEditorCanvas { position: absolute; inset: 0; width: 100%; height: 100%; touch-action: none; } .annotationEditorLayer .stampEditor { width: auto; height: auto; canvas { position: absolute; width: 100%; height: 100%; margin: 0; top: 0; left: 0; } .noAltTextBadge { --no-alt-text-badge-border-color: #f0f0f4; --no-alt-text-badge-bg-color: #cfcfd8; --no-alt-text-badge-fg-color: #5b5b66; @media (prefers-color-scheme: dark) { --no-alt-text-badge-border-color: #52525e; --no-alt-text-badge-bg-color: #fbfbfe; --no-alt-text-badge-fg-color: #15141a; } @media screen and (forced-colors: active) { --no-alt-text-badge-border-color: ButtonText; --no-alt-text-badge-bg-color: ButtonFace; --no-alt-text-badge-fg-color: ButtonText; } position: absolute; inset-inline-end: 5px; inset-block-end: 5px; display: inline-flex; width: 32px; height: 32px; padding: 3px; justify-content: center; align-items: center; pointer-events: none; z-index: 1; border-radius: 2px; border: 1px solid var(--no-alt-text-badge-border-color); background: var(--no-alt-text-badge-bg-color); &::before { content: ""; display: inline-block; width: 16px; height: 16px; mask-image: var(--new-alt-text-warning-image); mask-size: cover; background-color: var(--no-alt-text-badge-fg-color); } } } .annotationEditorLayer { :is(.freeTextEditor, .inkEditor, .stampEditor, .signatureEditor) { & > .resizers { position: absolute; inset: 0; &.hidden { display: none; } & > .resizer { width: var(--resizer-size); height: var(--resizer-size); background: content-box var(--resizer-bg-color); border: var(--focus-outline-around); border-radius: 2px; position: absolute; &.topLeft { top: var(--resizer-shift); left: var(--resizer-shift); } &.topMiddle { top: var(--resizer-shift); left: calc(50% + var(--resizer-shift)); } &.topRight { top: var(--resizer-shift); right: var(--resizer-shift); } &.middleRight { top: calc(50% + var(--resizer-shift)); right: var(--resizer-shift); } &.bottomRight { bottom: var(--resizer-shift); right: var(--resizer-shift); } &.bottomMiddle { bottom: var(--resizer-shift); left: calc(50% + var(--resizer-shift)); } &.bottomLeft { bottom: var(--resizer-shift); left: var(--resizer-shift); } &.middleLeft { top: calc(50% + var(--resizer-shift)); left: var(--resizer-shift); } } } } &[data-main-rotation="0"] :is([data-editor-rotation="0"], [data-editor-rotation="180"]), &[data-main-rotation="90"] :is([data-editor-rotation="270"], [data-editor-rotation="90"]), &[data-main-rotation="180"] :is([data-editor-rotation="180"], [data-editor-rotation="0"]), &[data-main-rotation="270"] :is([data-editor-rotation="90"], [data-editor-rotation="270"]) { & > .resizers > .resizer { &.topLeft, &.bottomRight { cursor: nwse-resize; } &.topMiddle, &.bottomMiddle { cursor: ns-resize; } &.topRight, &.bottomLeft { cursor: nesw-resize; } &.middleRight, &.middleLeft { cursor: ew-resize; } } } &[data-main-rotation="0"] :is([data-editor-rotation="90"], [data-editor-rotation="270"]), &[data-main-rotation="90"] :is([data-editor-rotation="0"], [data-editor-rotation="180"]), &[data-main-rotation="180"] :is([data-editor-rotation="270"], [data-editor-rotation="90"]), &[data-main-rotation="270"] :is([data-editor-rotation="180"], [data-editor-rotation="0"]) { & > .resizers > .resizer { &.topLeft, &.bottomRight { cursor: nesw-resize; } &.topMiddle, &.bottomMiddle { cursor: ew-resize; } &.topRight, &.bottomLeft { cursor: nwse-resize; } &.middleRight, &.middleLeft { cursor: ns-resize; } } } & :is( [data-main-rotation="0"] [data-editor-rotation="90"], [data-main-rotation="90"] [data-editor-rotation="0"], [data-main-rotation="180"] [data-editor-rotation="270"], [data-main-rotation="270"] [data-editor-rotation="180"] ) { .editToolbar { rotate: 270deg; &:dir(ltr) { inset-inline-end: calc(0px - var(--editor-toolbar-vert-offset)); inset-block-start: 0; } &:dir(rtl) { inset-inline-end: calc(100% + var(--editor-toolbar-vert-offset)); inset-block-start: 0; } } } & :is( [data-main-rotation="0"] [data-editor-rotation="180"], [data-main-rotation="90"] [data-editor-rotation="90"], [data-main-rotation="180"] [data-editor-rotation="0"], [data-main-rotation="270"] [data-editor-rotation="270"] ) { .editToolbar { rotate: 180deg; inset-inline-end: 100%; inset-block-start: calc(0pc - var(--editor-toolbar-vert-offset)); } } & :is( [data-main-rotation="0"] [data-editor-rotation="270"], [data-main-rotation="90"] [data-editor-rotation="180"], [data-main-rotation="180"] [data-editor-rotation="90"], [data-main-rotation="270"] [data-editor-rotation="0"] ) { .editToolbar { rotate: 90deg; &:dir(ltr) { inset-inline-end: calc(100% + var(--editor-toolbar-vert-offset)); inset-block-start: 100%; } &:dir(rtl) { inset-inline-start: calc(0px - var(--editor-toolbar-vert-offset)); inset-block-start: 0; } } } } .dialog.altText { &::backdrop { /* This is needed to avoid to darken the image the user want to describe. */ mask: url(#alttext-manager-mask); } /* See alt_text_manager.js */ &.positioned { margin: 0; } & #altTextContainer { width: 300px; height: fit-content; display: inline-flex; flex-direction: column; align-items: flex-start; gap: 16px; & #overallDescription { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; align-self: stretch; & span { align-self: stretch; } & .title { font-size: 13px; font-style: normal; font-weight: 590; } } & #addDescription { display: flex; flex-direction: column; align-items: stretch; gap: 8px; & .descriptionArea { flex: 1; padding-inline: 24px 10px; textarea { width: 100%; min-height: 75px; } } } & #buttons { display: flex; justify-content: flex-end; align-items: flex-start; gap: 8px; align-self: stretch; } } } .dialog.newAltText { --new-alt-text-ai-disclaimer-icon: url(images/altText_disclaimer.svg); --new-alt-text-spinner-icon: url(images/altText_spinner.svg); --preview-image-bg-color: #f0f0f4; --preview-image-border: none; @media (prefers-color-scheme: dark) { --preview-image-bg-color: #2b2a33; } @media screen and (forced-colors: active) { --preview-image-bg-color: ButtonFace; --preview-image-border: 1px solid ButtonText; } width: 80%; max-width: 570px; min-width: 300px; padding: 0; &.noAi { #newAltTextDisclaimer, #newAltTextCreateAutomatically { display: none !important; } } &.aiInstalling { #newAltTextCreateAutomatically { display: none !important; } #newAltTextDownloadModel { display: flex !important; } } &.error { #newAltTextNotNow { display: none !important; } #newAltTextCancel { display: inline-block !important; } } &:not(.error) #newAltTextError { display: none !important; } #newAltTextContainer { display: flex; width: auto; padding: 16px; flex-direction: column; justify-content: flex-end; align-items: flex-start; gap: 12px; flex: 0 1 auto; line-height: normal; #mainContent { display: flex; justify-content: flex-end; align-items: flex-start; gap: 12px; align-self: stretch; flex: 1 1 auto; #descriptionAndSettings { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; flex: 1 0 0; align-self: stretch; } #descriptionInstruction { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; align-self: stretch; flex: 1 1 auto; #newAltTextDescriptionContainer { width: 100%; height: 70px; position: relative; textarea { width: 100%; height: 100%; padding: 8px; &::placeholder { color: var(--text-secondary-color); } } .altTextSpinner { display: none; position: absolute; width: 16px; height: 16px; inset-inline-start: 8px; inset-block-start: 8px; mask-size: cover; background-color: var(--text-secondary-color); pointer-events: none; } &.loading { textarea::placeholder { color: transparent; } .altTextSpinner { display: inline-block; mask-image: var(--new-alt-text-spinner-icon); } } } #newAltTextDescription { font-size: 11px; } #newAltTextDisclaimer { display: flex; flex-direction: row; align-items: flex-start; gap: 4px; font-size: 11px; &::before { content: ""; display: inline-block; width: 17px; height: 16px; mask-image: var(--new-alt-text-ai-disclaimer-icon); mask-size: cover; background-color: var(--text-secondary-color); flex: 1 0 auto; } } } #newAltTextDownloadModel { display: flex; align-items: center; gap: 4px; align-self: stretch; &::before { content: ""; display: inline-block; width: 16px; height: 16px; mask-image: var(--new-alt-text-spinner-icon); mask-size: cover; background-color: var(--text-secondary-color); } } #newAltTextImagePreview { width: 180px; aspect-ratio: 1; display: flex; justify-content: center; align-items: center; flex: 0 0 auto; background-color: var(--preview-image-bg-color); border: var(--preview-image-border); > canvas { max-width: 100%; max-height: 100%; } } } } } .colorPicker { --hover-outline-color: #0250bb; --selected-outline-color: #0060df; --swatch-border-color: #cfcfd8; @media (prefers-color-scheme: dark) { --hover-outline-color: #80ebff; --selected-outline-color: #aaf2ff; --swatch-border-color: #52525e; } @media screen and (forced-colors: active) { --hover-outline-color: Highlight; --selected-outline-color: var(--hover-outline-color); --swatch-border-color: ButtonText; } .swatch { width: 16px; height: 16px; border: 1px solid var(--swatch-border-color); border-radius: 100%; outline-offset: 2px; box-sizing: border-box; forced-color-adjust: none; } button:is(:hover, .selected) > .swatch { border: none; } } .annotationEditorLayer { &[data-main-rotation="0"] { .highlightEditor:not(.free) > .editToolbar { rotate: 0deg; } } &[data-main-rotation="90"] { .highlightEditor:not(.free) > .editToolbar { rotate: 270deg; } } &[data-main-rotation="180"] { .highlightEditor:not(.free) > .editToolbar { rotate: 180deg; } } &[data-main-rotation="270"] { .highlightEditor:not(.free) > .editToolbar { rotate: 90deg; } } .highlightEditor { position: absolute; background: transparent; z-index: 1; cursor: auto; max-width: 100%; max-height: 100%; border: none; outline: none; pointer-events: none; transform-origin: 0 0; &:not(.free) { transform: none; } .internal { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: auto; } &.disabled .internal { pointer-events: none; } &.selectedEditor { .internal { cursor: pointer; } } .editToolbar { --editor-toolbar-colorpicker-arrow-image: url(images/toolbarButton-menuArrow.svg); transform-origin: center !important; .buttons { .colorPicker { position: relative; width: auto; display: flex; justify-content: center; align-items: center; gap: 4px; padding: 4px; &::after { content: ""; mask-image: var(--editor-toolbar-colorpicker-arrow-image); mask-repeat: no-repeat; mask-position: center; display: inline-block; background-color: var(--editor-toolbar-fg-color); width: 12px; height: 12px; } &:hover::after { background-color: var(--editor-toolbar-hover-fg-color); } &:has(.dropdown:not(.hidden)) { background-color: var(--editor-toolbar-hover-bg-color); &::after { scale: -1; } } .dropdown { position: absolute; display: flex; justify-content: center; align-items: center; flex-direction: column; gap: 11px; padding-block: 8px; border-radius: 6px; background-color: var(--editor-toolbar-bg-color); border: 1px solid var(--editor-toolbar-border-color); box-shadow: var(--editor-toolbar-shadow); inset-block-start: calc(100% + 4px); width: calc(100% + 2 * var(--editor-toolbar-padding)); button { width: 100%; height: auto; border: none; cursor: pointer; display: flex; justify-content: center; align-items: center; background: none; &:is(:active, :focus-visible) { outline: none; } > .swatch { outline-offset: 2px; } &[aria-selected="true"] > .swatch { outline: 2px solid var(--selected-outline-color); } &:is(:hover, :active, :focus-visible) > .swatch { outline: 2px solid var(--hover-outline-color); } } } } } } } } .editorParamsToolbar:has(#highlightParamsToolbarContainer) { padding: unset; } #highlightParamsToolbarContainer { gap: 16px; padding-inline: 10px; padding-block-end: 12px; .colorPicker { display: flex; flex-direction: column; gap: 8px; .dropdown { display: flex; justify-content: space-between; align-items: center; flex-direction: row; height: auto; button { width: auto; height: auto; border: none; cursor: pointer; display: flex; justify-content: center; align-items: center; background: none; flex: 0 0 auto; padding: 0; .swatch { width: 24px; height: 24px; } &:is(:active, :focus-visible) { outline: none; } &[aria-selected="true"] > .swatch { outline: 2px solid var(--selected-outline-color); } &:is(:hover, :active, :focus-visible) > .swatch { outline: 2px solid var(--hover-outline-color); } } } } #editorHighlightThickness { display: flex; flex-direction: column; align-items: center; gap: 4px; align-self: stretch; .editorParamsLabel { height: auto; align-self: stretch; } .thicknessPicker { display: flex; justify-content: space-between; align-items: center; align-self: stretch; --example-color: #bfbfc9; @media (prefers-color-scheme: dark) { --example-color: #80808e; } @media screen and (forced-colors: active) { --example-color: CanvasText; } :is(& > .editorParamsSlider[disabled]) { opacity: 0.4; } &::before, &::after { content: ""; width: 8px; aspect-ratio: 1; display: block; border-radius: 100%; background-color: var(--example-color); } &::after { width: 24px; } .editorParamsSlider { width: unset; height: 14px; } } } #editorHighlightVisibility { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; align-self: stretch; .divider { --divider-color: #d7d7db; @media (prefers-color-scheme: dark) { --divider-color: #8f8f9d; } @media screen and (forced-colors: active) { --divider-color: CanvasText; } margin-block: 4px; width: 100%; height: 1px; background-color: var(--divider-color); } .toggler { display: flex; justify-content: space-between; align-items: center; align-self: stretch; } } } #altTextSettingsDialog { padding: 16px; #altTextSettingsContainer { display: flex; width: 573px; flex-direction: column; gap: 16px; .mainContainer { gap: 16px; } .description { color: var(--text-secondary-color); } #aiModelSettings { display: flex; flex-direction: column; gap: 12px; button { width: fit-content; } &.download { #deleteModelButton { display: none; } } &:not(.download) { #downloadModelButton { display: none; } } } #automaticAltText, #altTextEditor { display: flex; flex-direction: column; gap: 8px; } #createModelDescription, #aiModelSettings, #showAltTextDialogDescription { padding-inline-start: 40px; } #automaticSettings { display: flex; flex-direction: column; gap: 16px; } } }