ultisuite-client/styles/richtext-editor.css
R3D347HR4Y 82ca9a27db
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
feat(drive): refactor document and drawing editors with new metadata handling
- Replaced suite page metadata with drive-specific metadata for document and drawing editors.
- Introduced new `driveEditorPageMetadata` function to manage titles and favicons based on editor type.
- Updated layout components for document and drawing editors to utilize the new metadata structure.
- Enhanced document title handling in various editor components to reflect the current editing context.
- Added new SVG icons for UltiDocs, UltiSheets, UltiSlides, and UltiDraw to improve visual consistency across editors.
- Improved print styles and layout handling for better document rendering in print and PDF formats.
2026-06-15 15:51:09 +02:00

1629 lines
37 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* TipTap collaboration carets (remote users) */
.collaboration-carets__caret {
border-left: 2px solid currentColor;
margin-left: -1px;
margin-right: -1px;
pointer-events: none;
position: relative;
word-break: normal;
}
.collaboration-carets__label {
border-radius: 4px 4px 4px 0;
color: #fff;
font-size: 11px;
font-weight: 600;
left: -1px;
line-height: 1.2;
padding: 2px 6px;
position: absolute;
top: -1.4em;
user-select: none;
white-space: nowrap;
}
.ultidrive-richtext-editor .ProseMirror-selectednode {
outline: 2px solid hsl(var(--primary) / 0.35);
}
.ultidrive-richtext-editor .tableWrapper,
.ultidrive-richtext-region-editor .tableWrapper {
overflow-x: auto;
margin: 0.75rem 0;
}
.ultidrive-richtext-editor table.docs-table,
.ultidrive-richtext-region-editor table.docs-table,
.ultidrive-richtext-editor table,
.ultidrive-richtext-region-editor table {
border-collapse: collapse;
/* Fixed layout: resize-handle widget on hover must not reflow columns. */
table-layout: fixed;
width: 100% !important;
max-width: 100%;
}
.ultidrive-richtext-editor table.docs-table td,
.ultidrive-richtext-editor table.docs-table th,
.ultidrive-richtext-region-editor table.docs-table td,
.ultidrive-richtext-region-editor table.docs-table th,
.ultidrive-richtext-editor table td,
.ultidrive-richtext-editor table th,
.ultidrive-richtext-region-editor table td,
.ultidrive-richtext-region-editor table th {
border: 1px solid #dadce0;
min-width: 48px;
padding: 6px 8px;
position: relative;
vertical-align: top;
box-sizing: border-box;
}
.ultidrive-richtext-editor table.docs-table th,
.ultidrive-richtext-region-editor table.docs-table th,
.ultidrive-richtext-editor table th,
.ultidrive-richtext-region-editor table th {
background-color: #f8f9fa;
font-weight: 600;
}
.ultidrive-richtext-editor table td.selectedCell,
.ultidrive-richtext-editor table th.selectedCell,
.ultidrive-richtext-region-editor table td.selectedCell,
.ultidrive-richtext-region-editor table th.selectedCell {
background-color: #e8f0fe !important;
}
.ultidrive-richtext-editor .column-resize-handle,
.ultidrive-richtext-region-editor .column-resize-handle {
background-color: #1a73e8;
bottom: 0;
pointer-events: none;
position: absolute;
right: -2px;
top: 0;
width: 4px;
z-index: 2;
}
.ultidrive-richtext-editor.resize-cursor,
.ultidrive-richtext-region-editor.resize-cursor,
.ultidrive-richtext-editor .resize-cursor,
.ultidrive-richtext-region-editor .resize-cursor {
cursor: col-resize;
}
html.dark .ultidrive-richtext-editor table.docs-table td,
html.dark .ultidrive-richtext-editor table.docs-table th,
html.dark .ultidrive-richtext-region-editor table.docs-table td,
html.dark .ultidrive-richtext-region-editor table.docs-table th,
html.dark .ultidrive-richtext-editor table td,
html.dark .ultidrive-richtext-editor table th,
html.dark .ultidrive-richtext-region-editor table td,
html.dark .ultidrive-richtext-region-editor table th {
border-color: #5f6368;
}
html.dark .ultidrive-richtext-editor table.docs-table th,
html.dark .ultidrive-richtext-region-editor table.docs-table th,
html.dark .ultidrive-richtext-editor table th,
html.dark .ultidrive-richtext-region-editor table th {
background-color: #3c4043;
}
.ultidrive-richtext-editor img {
max-width: 100%;
height: auto;
}
.ultidrive-richtext-editor .ProseMirror {
position: relative;
}
.ultidrive-richtext-editor .docs-graphic-host {
line-height: 0;
}
.ultidrive-richtext-editor .docs-graphic-host--inline {
display: inline;
}
.ultidrive-richtext-editor .docs-graphic {
position: relative;
box-sizing: border-box;
user-select: none;
}
.ultidrive-richtext-editor .docs-graphic--behind {
z-index: 0;
}
.ultidrive-richtext-editor .docs-graphic--front {
z-index: 20;
}
.ultidrive-richtext-editor .docs-graphic__content {
border-radius: 2px;
overflow: hidden;
}
.ultidrive-richtext-editor .docs-graphic__content--cropping,
#docs-page-graphic-layer-behind .docs-graphic__content--cropping,
#docs-page-graphic-layer-front .docs-graphic__content--cropping {
overflow: visible;
}
/* Editor-wide img { height:auto } breaks object-fit inside graphic frames. */
.ultidrive-richtext-editor .docs-graphic__content > .docs-graphic__image,
#docs-page-graphic-layer-behind .docs-graphic__content > .docs-graphic__image,
#docs-page-graphic-layer-front .docs-graphic__content > .docs-graphic__image {
display: block;
max-width: none;
width: 100%;
height: 100%;
}
.ultidrive-richtext-editor .docs-graphic-outline {
position: absolute;
inset: 0;
border: 1px solid #1a73e8;
border-radius: 0;
pointer-events: none;
}
.ultidrive-richtext-editor .docs-graphic-handle {
touch-action: none;
width: 8px;
height: 8px;
margin: -4px;
border-radius: 0;
background: #1a73e8;
box-shadow: none;
}
.ultidrive-richtext-editor .docs-graphic--selected .docs-graphic__content {
outline: none;
}
.ultidrive-richtext-editor .ProseMirror-selectednode .docs-graphic-outline {
border-color: #1a73e8;
}
.ultidrive-richtext-editor .docs-graphic--interacting {
user-select: none;
}
.ultidrive-richtext-editor .docs-graphic--cropping {
cursor: crosshair;
overflow: visible;
}
.ultidrive-richtext-editor .docs-graphic-host:has(.docs-graphic--cropping) {
overflow: visible;
}
.ultidrive-richtext-editor .docs-graphic-crop-image-layer .docs-graphic__image {
display: block;
max-width: none;
width: 100%;
height: 100%;
}
.ultidrive-richtext-editor .docs-graphic-rotate-handle {
touch-action: none;
}
/* Crop UI: dashed region, L-shaped corners, bars on edges (Google Docs style) */
.docs-crop-region {
border: 1px dashed rgba(255, 255, 255, 0.95);
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.45);
}
.docs-crop-handle {
touch-action: none;
}
.docs-crop-handle--corner {
width: 16px;
height: 16px;
}
.docs-crop-handle--corner::before {
content: "";
position: absolute;
inset: 0;
border: 0 solid #202124;
filter: drop-shadow(0 0 1px rgba(255, 255, 255, 0.9));
}
.docs-crop-handle--nw {
left: -3px;
top: -3px;
}
.docs-crop-handle--nw::before {
border-top-width: 4px;
border-left-width: 4px;
}
.docs-crop-handle--ne {
right: -3px;
top: -3px;
}
.docs-crop-handle--ne::before {
border-top-width: 4px;
border-right-width: 4px;
}
.docs-crop-handle--se {
right: -3px;
bottom: -3px;
}
.docs-crop-handle--se::before {
border-bottom-width: 4px;
border-right-width: 4px;
}
.docs-crop-handle--sw {
left: -3px;
bottom: -3px;
}
.docs-crop-handle--sw::before {
border-bottom-width: 4px;
border-left-width: 4px;
}
.docs-crop-handle--edge::before {
content: "";
position: absolute;
inset: 0;
background: #202124;
filter: drop-shadow(0 0 1px rgba(255, 255, 255, 0.9));
}
.docs-crop-handle--n,
.docs-crop-handle--s {
width: 18px;
height: 4px;
left: 50%;
transform: translateX(-50%);
}
.docs-crop-handle--n {
top: -2px;
}
.docs-crop-handle--s {
bottom: -2px;
}
.docs-crop-handle--e,
.docs-crop-handle--w {
width: 4px;
height: 18px;
top: 50%;
transform: translateY(-50%);
}
.docs-crop-handle--e {
right: -2px;
}
.docs-crop-handle--w {
left: -2px;
}
.ultidrive-richtext-editor .docs-graphic-host--page-layer {
display: block;
line-height: 0;
}
.ultidrive-richtext-editor .docs-graphic--page-layer {
pointer-events: auto;
}
#docs-page-graphic-layer-behind .docs-graphic--page-layer,
#docs-page-graphic-layer-front .docs-graphic--page-layer {
pointer-events: auto;
}
#docs-page-graphic-layer-behind .docs-graphic-host--page-layer,
#docs-page-graphic-layer-front .docs-graphic-host--page-layer {
position: static;
}
#docs-page-graphic-layer-behind .docs-graphic--behind:not(.docs-graphic--selected) {
pointer-events: auto;
}
/* Portaled page-layer graphics sit outside .ultidrive-richtext-editor — mirror chrome styles here. */
#docs-page-graphic-layer-behind .docs-graphic,
#docs-page-graphic-layer-front .docs-graphic {
position: relative;
box-sizing: border-box;
overflow: visible;
user-select: none;
}
#docs-page-graphic-layer-behind .docs-graphic--cropping,
#docs-page-graphic-layer-front .docs-graphic--cropping {
overflow: visible;
}
#docs-page-graphic-layer-behind .docs-graphic-crop-image-layer .docs-graphic__image,
#docs-page-graphic-layer-front .docs-graphic-crop-image-layer .docs-graphic__image {
display: block;
max-width: none;
width: 100%;
height: 100%;
}
#docs-page-graphic-layer-behind .docs-graphic-outline,
#docs-page-graphic-layer-front .docs-graphic-outline {
position: absolute;
inset: 0;
border: 1px solid #1a73e8;
border-radius: 0;
pointer-events: none;
}
#docs-page-graphic-layer-behind .docs-graphic-handle,
#docs-page-graphic-layer-front .docs-graphic-handle {
touch-action: none;
width: 8px;
height: 8px;
margin: -4px;
border-radius: 0;
background: #1a73e8;
box-shadow: none;
}
#docs-page-graphic-layer-behind .docs-graphic-rotate-handle,
#docs-page-graphic-layer-front .docs-graphic-rotate-handle {
touch-action: none;
}
.docs-graphic--selection-chrome {
background: transparent;
box-shadow: none;
overflow: visible;
}
.docs-graphic-drag-surface {
touch-action: none;
}
/* While dragging a page-layer graphic, prose must not steal pointer events. */
[data-docs-page-stack][data-graphic-dragging] .ultidrive-docs-editor-surface .ProseMirror {
pointer-events: none;
user-select: none;
}
.docs-graphic-snap-guide {
position: absolute;
pointer-events: none;
z-index: 1;
background: #f439a0;
opacity: 0.95;
}
.docs-graphic-snap-guide--vertical {
width: 1px;
transform: translateX(-0.5px);
}
.docs-graphic-snap-guide--horizontal {
height: 1px;
transform: translateY(-0.5px);
}
.dark .docs-graphic-snap-guide {
background: #ff7ac1;
}
.docs-graphic--selection-chrome .docs-graphic__content {
display: none;
}
/* Graphic options sidebar */
.docs-graphic-options-sidebar__scroll {
scrollbar-gutter: stable;
}
.docs-graphic-options-number-input {
appearance: textfield;
-moz-appearance: textfield;
}
.docs-graphic-options-number-input::-webkit-outer-spin-button,
.docs-graphic-options-number-input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.docs-graphic-option-card {
transition: border-color 0.15s ease, background-color 0.15s ease;
}
.docs-graphic-layout-preview {
pointer-events: none;
}
.ultidrive-richtext-editor .docs-page-region {
user-select: none;
}
.docs-hf-band {
color: #3c4043;
/* Below the front graphic layer (18) so fixed graphics stay selectable. */
z-index: 17;
}
.docs-hf-band--editing {
z-index: 26 !important;
background-color: var(--docs-hf-page-color, #fff);
}
.docs-hf-hit-area {
/* Below the front graphic layer (18) so fixed graphics stay selectable. */
z-index: 17;
}
.docs-hf-editing-backdrop {
z-index: 24;
}
.docs-hf-separator {
z-index: 24;
}
.docs-hf-lateral-border {
z-index: 25;
}
.docs-hf-chrome {
z-index: 27;
}
.docs-hf-band--editing.docs-hf-band--header .docs-region-editor-root {
flex: 1;
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.docs-hf-band--editing.docs-hf-band--footer .docs-region-editor-root {
flex: 1;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.docs-hf-band--header {
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.docs-hf-band--footer {
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.docs-hf-band--editing .docs-region-editor-root,
.docs-hf-band--editing .docs-region-editor,
.docs-hf-band--editing .ultidrive-richtext-region-editor {
height: auto !important;
min-height: 0 !important;
max-height: none !important;
background: transparent;
}
.docs-hf-band--editing .ultidrive-richtext-region-editor .ProseMirror {
height: auto !important;
max-height: none !important;
background: transparent;
}
.docs-hf-band .docs-region-editor-root,
.docs-hf-band .docs-region-editor-root--grow,
.docs-hf-band .docs-region-editor--grow {
height: auto;
margin: 0;
padding: 0;
}
.docs-hf-band .docs-region-editor-root .ultidrive-richtext-region-editor,
.docs-hf-band .docs-region-editor-root .ultidrive-richtext-region-editor .ProseMirror {
height: auto;
max-height: none;
overflow: visible;
}
.docs-hf-band:not(.docs-hf-band--editing) .docs-region-editor-root .ultidrive-richtext-region-editor .ProseMirror {
overflow: hidden;
}
.docs-hf-band .ultidrive-richtext-region-editor {
display: block;
margin: 0;
padding: 0;
}
.docs-hf-band .ultidrive-richtext-region-editor .ProseMirror {
min-height: 0;
padding: 0;
margin: 0;
font-size: inherit;
line-height: 1.5;
}
.docs-hf-band .ultidrive-richtext-region-editor.prose :where(p, h1, h2, h3, h4):first-child {
margin-top: 0;
}
.docs-hf-band .ultidrive-richtext-region-editor.prose :where(p, h1, h2, h3, h4):last-child {
margin-bottom: 0;
}
.docs-hf-band--footer .docs-region-editor-root {
flex-shrink: 0;
}
.docs-hf-chrome__bar {
box-shadow: none;
}
.docs-hf-chrome__label {
font-size: 13px;
font-weight: 500;
color: #3c4043;
line-height: 1.2;
}
.docs-hf-chrome__checkbox-label {
font-size: 13px;
color: #3c4043;
line-height: 1.2;
user-select: none;
}
.ultidrive-docs-editor-surface {
box-sizing: border-box;
position: relative;
z-index: 16;
transition: padding 60ms ease-out;
}
.ultidrive-docs-editor-surface--paginated {
overflow: visible;
}
.ultidrive-docs-editor-surface--paginated .ProseMirror {
min-height: var(--docs-prose-min-height);
max-height: var(--docs-prose-min-height);
overflow: visible;
}
.docs-hf-chrome__checkbox {
width: 14px;
height: 14px;
min-width: 14px;
min-height: 14px;
border-radius: 2px;
border: 2px solid #5f6368;
background: #fff;
box-shadow: none;
}
.docs-hf-chrome__checkbox[data-state="checked"] {
background: #1a73e8;
border-color: #1a73e8;
color: #fff;
}
.docs-hf-chrome__checkbox[data-state="checked"] svg {
width: 10px;
height: 10px;
stroke-width: 3;
}
.docs-hf-chrome__options {
font-size: 13px;
font-weight: 500;
color: #1a73e8;
}
.docs-hf-chrome__options:hover {
color: #174ea6;
background-color: rgba(26, 115, 232, 0.08) !important;
}
html.dark .docs-hf-chrome__options {
color: #8ab4f8;
}
html.dark .docs-hf-chrome__options:hover {
color: #aecbfa;
background-color: rgba(138, 180, 248, 0.16) !important;
}
.docs-hf-band .ultidrive-richtext-region-editor .ProseMirror p {
margin: 0;
}
.ultidrive-docs-editor-surface--dimmed {
pointer-events: auto;
}
.ultidrive-docs-editor-surface--dimmed .ProseMirror {
opacity: 0.45;
pointer-events: none;
}
.docs-page-flow-spacer {
width: 100%;
flex-shrink: 0;
pointer-events: none;
user-select: none;
}
.ultidrive-docs-editor-surface .ProseMirror .docs-page-flow-spacer {
display: block;
margin: 0;
padding: 0;
border: 0;
}
.ultidrive-richtext-editor td,
.ultidrive-richtext-editor th {
border: 1px solid hsl(var(--border));
min-width: 80px;
padding: 6px 8px;
vertical-align: top;
}
/* Google Docsstyle menubar & menus */
.docs-menu-trigger {
height: auto;
padding: 2px 8px;
font-size: 13px;
font-weight: 400;
color: #3c4043;
background: transparent;
border: none;
border-radius: 4px;
box-shadow: none;
}
/* Flush menubar trigger + dropdown (Google Docs style) */
.docs-menubar [data-slot="menubar-trigger"][data-state="open"],
.docs-menu-trigger[data-state="open"] {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
position: relative;
z-index: 51;
}
[data-docs-menu-surface][data-slot="menubar-content"] {
border-top-left-radius: 0 !important;
}
/* Submenu opens to the right — square top-left corner flush with trigger */
[data-docs-menu-surface][data-slot="menubar-sub-content"][data-side="right"],
.docs-menu-sub-content[data-slot="menubar-sub-content"][data-side="right"] {
border-top-left-radius: 0 !important;
}
/* Submenu opens to the left (nested flyouts) — square top-right corner flush with trigger */
[data-docs-menu-surface][data-slot="menubar-sub-content"][data-side="left"],
.docs-menu-sub-content[data-slot="menubar-sub-content"][data-side="left"] {
border-top-right-radius: 0 !important;
}
/* Sub-trigger: square edge on the side where the flyout attaches (default: right) */
[data-docs-menu-surface] [data-slot="menubar-sub-trigger"][data-state="open"],
[data-docs-menu-surface] .docs-menu-item[data-state="open"] {
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
[data-docs-menu-surface]
[data-slot="menubar-sub"]:has(> [data-slot="menubar-sub-content"][data-side="left"])
> [data-slot="menubar-sub-trigger"][data-state="open"],
[data-docs-menu-surface]
[data-slot="menubar-sub"]:has(> [data-slot="menubar-sub-content"][data-side="left"])
> .docs-menu-item[data-state="open"] {
border-top-right-radius: revert !important;
border-bottom-right-radius: revert !important;
border-top-left-radius: 0 !important;
border-bottom-left-radius: 0 !important;
}
.docs-menubar [data-slot="menubar-trigger"]:hover,
.docs-menu-trigger:hover,
.docs-menubar [data-slot="menubar-trigger"][data-state="open"],
.docs-menu-trigger[data-state="open"],
.docs-menubar [data-slot="menubar-trigger"][data-highlighted],
.docs-menu-trigger[data-highlighted] {
background-color: #e8eaed !important;
color: #3c4043 !important;
}
html.dark .docs-menubar [data-slot="menubar-trigger"],
html.dark .docs-menu-trigger {
color: #e8eaed;
}
html.dark .docs-menubar [data-slot="menubar-trigger"]:hover,
html.dark .docs-menu-trigger:hover,
html.dark .docs-menubar [data-slot="menubar-trigger"][data-state="open"],
html.dark .docs-menu-trigger[data-state="open"],
html.dark .docs-menubar [data-slot="menubar-trigger"][data-highlighted],
html.dark .docs-menu-trigger[data-highlighted] {
background-color: #3c4043 !important;
color: #e8eaed !important;
}
.docs-toolbar-btn:hover:not(:disabled) {
background: #d3e3fd;
}
.dark .docs-toolbar-btn:hover:not(:disabled) {
background: #444746;
}
.docs-toolbar-btn--active {
background: #d3e3fd;
}
.dark .docs-toolbar-btn--active {
background: #444746;
}
.docs-menubar {
margin-left: -3px;
}
/* Align title first letter with "Fichier" (menubar -3px, title field px-2). */
.docs-chrome-title-row {
margin-left: -5px;
}
.docs-menubar [data-slot="menubar-menu"]:first-child .docs-menu-trigger {
padding-left: 0;
margin-left: 0;
}
.docs-menu-content {
min-width: 280px;
overflow: visible;
}
[data-docs-menu-surface] {
background-color: #fff;
color: #3c4043;
border-color: #dadce0;
}
[data-docs-menu-surface] [data-slot="menubar-item"]:focus,
[data-docs-menu-surface] [data-slot="menubar-item"][data-highlighted],
[data-docs-menu-surface] [data-slot="menubar-sub-trigger"]:focus,
[data-docs-menu-surface] [data-slot="menubar-sub-trigger"][data-highlighted],
[data-docs-menu-surface] [data-slot="menubar-sub-trigger"][data-state="open"],
[data-docs-menu-surface] .docs-menu-item:focus,
[data-docs-menu-surface] .docs-menu-item[data-highlighted],
[data-docs-menu-surface] .docs-menu-item[data-state="open"] {
background-color: #e8eaed !important;
color: #3c4043 !important;
}
html.dark [data-docs-menu-surface] {
background-color: #35363a !important;
color: #e8eaed !important;
border-color: #3c4043 !important;
}
html.dark [data-docs-menu-surface] [data-slot="menubar-item"]:focus,
html.dark [data-docs-menu-surface] [data-slot="menubar-item"][data-highlighted],
html.dark [data-docs-menu-surface] [data-slot="menubar-sub-trigger"]:focus,
html.dark [data-docs-menu-surface] [data-slot="menubar-sub-trigger"][data-highlighted],
html.dark [data-docs-menu-surface] [data-slot="menubar-sub-trigger"][data-state="open"],
html.dark [data-docs-menu-surface] .docs-menu-item:focus,
html.dark [data-docs-menu-surface] .docs-menu-item[data-highlighted],
html.dark [data-docs-menu-surface] .docs-menu-item[data-state="open"] {
background-color: #3c4043 !important;
color: #e8eaed !important;
}
html.dark [data-docs-menu-surface] [data-slot="menubar-separator"] {
background-color: #3c4043 !important;
}
.docs-menu-item {
gap: 10px;
}
.docs-toolbar-ruler-row {
z-index: 15;
overflow: visible;
}
.docs-rulers-left-rail {
z-index: 15;
}
.docs-ruler-drag-handle:hover svg path,
.docs-ruler-drag-handle:active svg path {
fill: #174ea6;
}
html.dark .docs-ruler-drag-handle:hover svg path,
html.dark .docs-ruler-drag-handle:active svg path {
fill: #8ab4f8;
}
.docs-ruler-margin-tooltip {
background-color: #3c4043;
border: 1px solid #5f6368;
white-space: nowrap;
}
html.dark .docs-ruler-margin-tooltip {
background-color: #e8eaed;
color: #202124;
border-color: #9aa0a6;
}
.docs-toolbar-shell .docs-toolbar + .docs-toolbar-ruler-row {
margin-top: 0;
}
.docs-editor-workspace .ultidrive-docs-canvas {
background-color: #f9fbfd;
height: 100%;
min-height: 0;
}
html.dark .docs-editor-workspace .ultidrive-docs-canvas {
background-color: #202124;
}
.docs-menu-sub-content {
z-index: 60;
}
[data-slot="menubar-sub-content"][data-state="closed"] {
pointer-events: none;
}
.docs-menu-item-icon {
display: inline-flex;
width: 20px;
shrink: 0;
align-items: center;
justify-content: center;
color: #3c4043;
}
html.dark .docs-menu-item-icon {
color: #e8eaed;
}
.docs-menu-mode-item {
min-height: 52px;
}
.docs-menu-checkbox-item {
padding-left: 2rem;
}
.docs-menu-shortcut-sequence {
font-variant-numeric: tabular-nums;
letter-spacing: 0.02em;
white-space: nowrap;
}
.docs-menu-badge {
background-color: #1a73e8;
}
html.dark .docs-menu-badge {
background-color: #8ab4f8;
color: #202124;
}
.ultidrive-docs-editor-surface--compact {
background: #fff;
box-shadow: none;
}
.docs-show-non-printable .ultidrive-richtext-editor p::after,
.docs-show-non-printable .ProseMirror p::after {
content: "¶";
color: #bdc1c6;
font-size: 10px;
margin-left: 2px;
pointer-events: none;
user-select: none;
}
.docs-show-non-printable .ultidrive-richtext-editor p:empty::before,
.docs-show-non-printable .ProseMirror p:empty::before {
content: "¶";
color: #bdc1c6;
font-size: 10px;
pointer-events: none;
user-select: none;
}
.docs-editor-mode-suggest .ultidrive-richtext-editor,
.docs-editor-mode-suggest .ProseMirror {
caret-color: #1967d2;
}
.docs-editor-mode-view .ultidrive-richtext-editor,
.docs-editor-mode-view .ProseMirror {
cursor: default;
}
.docs-toolbar-shell {
padding: 0;
padding-inline: 8px 16px;
min-width: 0;
max-width: 100%;
box-sizing: border-box;
}
.docs-toolbar-shell--collapsed {
padding-top: 8px;
}
.docs-toolbar-shell > .docs-toolbar {
padding-inline: 12px;
margin-bottom: 8px;
}
.docs-toolbar {
flex-wrap: nowrap;
min-width: 0;
max-width: 100%;
color: #202124;
background: #edf2fa;
border-radius: 9999px;
}
.dark .docs-toolbar {
color: #e8eaed;
background: #2d2e30;
}
.docs-toolbar .docs-toolbar-btn {
color: inherit;
}
.docs-toolbar-select {
font-size: 13px;
color: inherit;
background: transparent !important;
box-shadow: none !important;
}
.docs-toolbar [data-slot="select-trigger"].docs-toolbar-select:hover,
.docs-toolbar [data-slot="select-trigger"].docs-toolbar-select:focus-visible,
.docs-toolbar [data-slot="select-trigger"].docs-toolbar-select[data-state="open"],
.dark .docs-toolbar [data-slot="select-trigger"].docs-toolbar-select:hover,
.dark .docs-toolbar [data-slot="select-trigger"].docs-toolbar-select:focus-visible,
.dark .docs-toolbar [data-slot="select-trigger"].docs-toolbar-select[data-state="open"] {
background: transparent !important;
box-shadow: none !important;
}
.docs-toolbar-select [data-slot="select-value"] {
color: inherit;
}
.dark .docs-toolbar [data-slot="select-trigger"].docs-toolbar-select {
color: #e8eaed;
}
.dark .docs-toolbar [data-slot="select-trigger"].docs-toolbar-select [data-slot="select-value"] {
color: #e8eaed;
}
.dark .docs-toolbar [data-slot="select-trigger"].docs-toolbar-select svg {
color: #e8eaed;
opacity: 0.75;
}
.docs-toolbar-select--placeholder {
opacity: 0.55;
}
.dark .docs-toolbar-select--placeholder {
opacity: 1;
color: #e8eaed;
}
.dark .docs-toolbar-select--placeholder [data-slot="select-value"] {
color: #e8eaed;
}
.docs-toolbar-icon {
color: #3c4043;
}
.dark .docs-toolbar-icon {
color: #e8eaed;
}
.docs-toolbar-sep {
display: inline-block;
align-self: center;
flex-shrink: 0;
width: 0;
height: 18px;
margin-inline: 4px;
border-left: 1px solid #dadce0;
background: none;
}
.dark .docs-toolbar .docs-toolbar-sep {
border-left-color: #80868b;
background: none;
}
.docs-toolbar-select--size {
justify-content: center;
gap: 0 !important;
width: 26px;
min-width: 26px;
height: 22px;
min-height: 22px;
padding: 0 1px !important;
font-size: 12px;
line-height: 1;
border: 1px solid #dadce0 !important;
border-radius: 3px;
}
.docs-toolbar-font-size {
gap: 3px;
}
.docs-toolbar-btn--size-step {
width: 20px;
height: 20px;
min-width: 20px;
padding: 0 !important;
}
.dark .docs-toolbar .docs-toolbar-select--size {
border-color: #9aa0a6 !important;
}
.docs-toolbar-select--size:hover,
.docs-toolbar-select--size:focus-visible,
.docs-toolbar-select--size[data-state="open"] {
border-color: #bdc1c6 !important;
}
.dark .docs-toolbar .docs-toolbar-select--size:hover,
.dark .docs-toolbar .docs-toolbar-select--size:focus-visible,
.dark .docs-toolbar .docs-toolbar-select--size[data-state="open"] {
border-color: #bdc1c6 !important;
}
.docs-toolbar-select--size [data-slot="select-value"] {
flex: 1;
justify-content: center;
text-align: center;
padding: 0;
line-height: 1;
}
.docs-toolbar-select--size svg {
display: none;
}
/* Dropdown previews — text style & font family */
.docs-toolbar-select-content--style {
min-width: 220px;
}
.docs-toolbar-select-content--font {
min-width: 196px;
}
.docs-toolbar-style-item {
align-items: center;
min-height: auto;
padding-top: 0.375rem;
padding-bottom: 0.375rem;
}
.docs-toolbar-style-preview {
display: block;
line-height: 1.25;
color: inherit;
}
.docs-toolbar-style-preview--paragraph {
font-size: 0.875rem;
font-weight: 400;
}
.docs-toolbar-style-preview--heading1 {
font-size: 1.75rem;
font-weight: 400;
line-height: 1.15;
}
.docs-toolbar-style-preview--heading2 {
font-size: 1.375rem;
font-weight: 400;
line-height: 1.2;
}
.docs-toolbar-style-preview--heading3 {
font-size: 1.125rem;
font-weight: 400;
}
.docs-toolbar-style-preview--heading4 {
font-size: 1rem;
font-weight: 600;
}
.docs-toolbar-font-preview {
display: block;
font-size: 0.875rem;
line-height: 1.25;
color: inherit;
}
.docs-toolbar-color-glyph {
position: relative;
display: inline-flex;
width: 18px;
height: 18px;
flex-shrink: 0;
align-items: flex-start;
justify-content: center;
}
.docs-toolbar-color-glyph__icon {
width: 18px;
height: 18px;
transform: translateY(-1px);
clip-path: inset(0 0 5px 0);
}
.docs-toolbar-color-glyph--highlight .docs-toolbar-color-glyph__icon {
clip-path: inset(0 0 3px 0);
}
.docs-toolbar-color-glyph__swatch {
position: absolute;
bottom: 0;
left: 50%;
width: 16px;
height: 3px;
transform: translateX(-50%);
border-radius: 1px;
}
.ultidrive-docs-editor-surface .ProseMirror {
display: flow-root;
min-height: var(--docs-prose-min-height, 600px);
}
.ultidrive-richtext-editor.prose {
--tw-prose-body: #000000;
--tw-prose-headings: #000000;
--tw-prose-bold: #000000;
--tw-prose-counters: #5f6368;
--tw-prose-bullets: #5f6368;
color: #000000;
}
.ultidrive-docs-canvas {
scrollbar-width: auto;
}
.dark .ultidrive-docs-canvas {
scrollbar-color: #5f6368 #202124;
}
.dark .ultidrive-docs-canvas::-webkit-scrollbar {
width: 12px;
height: 12px;
}
.dark .ultidrive-docs-canvas::-webkit-scrollbar-track {
background: #202124;
}
.dark .ultidrive-docs-canvas::-webkit-scrollbar-thumb {
background-color: #5f6368;
border: 3px solid #202124;
border-radius: 8px;
}
.dark .ultidrive-docs-canvas::-webkit-scrollbar-thumb:hover {
background-color: #80868b;
}
.dark .ultidrive-docs-canvas::-webkit-scrollbar-corner {
background: #202124;
}
.ultidrive-docs-page {
border: 1px solid #dadce0;
}
.ultidrive-docs-page--imported-border {
border: none;
}
.ultidrive-docs-page .ultidrive-richtext-editor {
min-height: 100%;
color: #000000;
}
.ultidrive-richtext-editor .ProseMirror {
position: relative;
color: #000000;
caret-color: #000000;
}
.ultidrive-richtext-editor .ProseMirror p.is-editor-empty:first-child::before {
color: #80868b;
}
.ultidrive-richtext-editor .docs-paragraph-spacing--page-break-before {
break-before: page;
page-break-before: always;
}
.ultidrive-richtext-editor p {
margin-top: 0;
margin-bottom: 0.75em;
}
.ultidrive-richtext-editor h1 {
font-size: 1.75rem;
font-weight: 400;
margin-bottom: 0.5em;
}
.ultidrive-richtext-editor h2 {
font-size: 1.375rem;
font-weight: 400;
margin-bottom: 0.5em;
}
.ultidrive-richtext-editor h3 {
font-size: 1.125rem;
font-weight: 400;
margin-bottom: 0.5em;
}
.ultidrive-richtext-editor h4 {
font-size: 1rem;
font-weight: 600;
margin-bottom: 0.5em;
}
/* ── Lists (bullets, numbering, checklists) ── */
.ultidrive-richtext-editor .ProseMirror ul,
.ultidrive-richtext-editor .ProseMirror ol {
margin: 0 0 0.75em;
padding-left: 1.5em;
}
.ultidrive-richtext-editor .ProseMirror li {
margin: 0.15em 0;
}
.ultidrive-richtext-editor ul.docs-bullet-list--disc {
list-style-type: disc;
}
.ultidrive-richtext-editor ul.docs-bullet-list--circle {
list-style-type: circle;
}
.ultidrive-richtext-editor ul.docs-bullet-list--square {
list-style-type: square;
}
.ultidrive-richtext-editor ul.docs-bullet-list--arrow,
.ultidrive-richtext-editor ul.docs-bullet-list--check,
.ultidrive-richtext-editor ul.docs-bullet-list--dash {
list-style: none;
}
.ultidrive-richtext-editor ul.docs-bullet-list--arrow > li::marker,
.ultidrive-richtext-editor ul.docs-bullet-list--check > li::marker,
.ultidrive-richtext-editor ul.docs-bullet-list--dash > li::marker {
content: "";
}
.ultidrive-richtext-editor ul.docs-bullet-list--arrow > li {
list-style: none;
}
.ultidrive-richtext-editor ul.docs-bullet-list--arrow > li::before {
content: "➤";
display: inline-block;
width: 1.1em;
margin-left: -1.1em;
}
.ultidrive-richtext-editor ul.docs-bullet-list--check > li::before {
content: "✓";
display: inline-block;
width: 1.1em;
margin-left: -1.1em;
}
.ultidrive-richtext-editor ul.docs-bullet-list--dash > li::before {
content: "";
display: inline-block;
width: 1.1em;
margin-left: -1.1em;
}
.ultidrive-richtext-editor ol.docs-ordered-list--decimal-paren,
.ultidrive-richtext-editor ol.docs-ordered-list--zero-padded,
.ultidrive-richtext-editor ol.docs-ordered-list--outline {
list-style: none;
counter-reset: docs-ol-l1;
}
.ultidrive-richtext-editor ol.docs-ordered-list--decimal-paren > li,
.ultidrive-richtext-editor ol.docs-ordered-list--zero-padded > li,
.ultidrive-richtext-editor ol.docs-ordered-list--outline > li {
counter-increment: docs-ol-l1;
position: relative;
}
.ultidrive-richtext-editor ol.docs-ordered-list--decimal-paren > li::before {
content: counter(docs-ol-l1) ") ";
position: absolute;
margin-left: -1.75em;
}
.ultidrive-richtext-editor ol.docs-ordered-list--zero-padded > li::before {
content: counter(docs-ol-l1, decimal-leading-zero) ". ";
position: absolute;
margin-left: -2em;
}
.ultidrive-richtext-editor ol.docs-ordered-list--outline {
counter-reset: docs-ol-l1;
}
.ultidrive-richtext-editor ol.docs-ordered-list--outline > li::before {
content: counter(docs-ol-l1) ". ";
position: absolute;
margin-left: -1.75em;
}
.ultidrive-richtext-editor ol.docs-ordered-list--outline ol {
counter-reset: docs-ol-l2;
list-style: none;
}
.ultidrive-richtext-editor ol.docs-ordered-list--outline ol > li {
counter-increment: docs-ol-l2;
}
.ultidrive-richtext-editor ol.docs-ordered-list--outline ol > li::before {
content: counter(docs-ol-l1) "." counter(docs-ol-l2) ". ";
margin-left: -2.5em;
}
.ultidrive-richtext-editor ol.docs-ordered-list--outline ol ol {
counter-reset: docs-ol-l3;
list-style: none;
}
.ultidrive-richtext-editor ol.docs-ordered-list--outline ol ol > li {
counter-increment: docs-ol-l3;
}
.ultidrive-richtext-editor ol.docs-ordered-list--outline ol ol > li::before {
content: counter(docs-ol-l1) "." counter(docs-ol-l2) "." counter(docs-ol-l3) ". ";
margin-left: -3.25em;
}
.ultidrive-richtext-editor ul[data-type="taskList"] {
list-style: none;
padding-left: 0;
}
.ultidrive-richtext-editor li[data-type="taskItem"] {
display: flex;
align-items: flex-start;
gap: 0.5rem;
list-style: none;
}
.ultidrive-richtext-editor li[data-type="taskItem"] > label {
flex: 0 0 auto;
margin-top: 0.15rem;
user-select: none;
}
.ultidrive-richtext-editor li[data-type="taskItem"] > label input {
accent-color: #1a73e8;
width: 14px;
height: 14px;
}
.ultidrive-richtext-editor li[data-type="taskItem"] > div {
flex: 1 1 auto;
min-width: 0;
}
.ultidrive-richtext-editor ul.docs-task-list--strikethrough li[data-type="taskItem"][data-checked="true"] > div {
text-decoration: line-through;
color: #5f6368;
}
.ultidrive-richtext-editor ul.docs-task-list--strikethrough li[data-type="taskItem"][data-checked="true"] > div p {
margin-bottom: 0;
}
/* ── UltiDocs loading splash ── */
.docs-loading-splash {
position: relative;
display: flex;
min-height: 100dvh;
width: 100%;
align-items: center;
justify-content: center;
overflow: hidden;
padding: clamp(1rem, 3vw, 2rem);
background:
radial-gradient(circle at 18% 20%, color-mix(in srgb, #1a73e8 28%, transparent) 0%, transparent 46%),
radial-gradient(circle at 80% 15%, color-mix(in srgb, #34a853 22%, transparent) 0%, transparent 40%),
radial-gradient(circle at 50% 100%, color-mix(in srgb, #4285f4 16%, transparent) 0%, transparent 55%),
var(--app-canvas);
}
.docs-loading-splash__aurora {
position: absolute;
inset: -30%;
pointer-events: none;
background: conic-gradient(from 145deg, #1a73e8, #34a853, #4285f4, #1a73e8);
opacity: 0.1;
filter: blur(clamp(56px, 8vw, 120px));
animation: splash-aurora-drift 7.5s ease-in-out infinite alternate;
}
.docs-loading-splash__grain {
position: absolute;
inset: -20%;
pointer-events: none;
opacity: 0.06;
background-image: radial-gradient(rgb(255 255 255 / 55%) 0.75px, transparent 0.75px);
background-size: 3px 3px;
animation: splash-grain-pan 8s linear infinite alternate;
}
.docs-loading-splash__content {
position: relative;
width: min(86vw, 420px);
display: grid;
gap: clamp(0.65rem, 1.5vw, 1rem);
place-items: center;
border: 1px solid color-mix(in srgb, var(--mail-border) 55%, transparent);
border-radius: clamp(1rem, 2.8vw, 1.5rem);
background: color-mix(in srgb, var(--mail-surface) 87%, transparent);
box-shadow:
0 20px 45px rgb(0 0 0 / 14%),
inset 0 1px 0 rgb(255 255 255 / 45%);
padding: clamp(1.25rem, 4.6vw, 2.2rem);
backdrop-filter: blur(12px) saturate(135%);
animation: splash-card-breathe 2.6s ease-in-out infinite;
}
.docs-loading-splash__content::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
padding: 1px;
background: linear-gradient(
125deg,
color-mix(in srgb, #1a73e8 58%, transparent),
color-mix(in srgb, #34a853 45%, transparent),
color-mix(in srgb, #4285f4 42%, transparent)
);
-webkit-mask:
linear-gradient(#000 0 0) content-box,
linear-gradient(#000 0 0);
mask:
linear-gradient(#000 0 0) content-box,
linear-gradient(#000 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
opacity: 0.75;
}
.docs-loading-splash__pill {
font-size: 0.66rem;
letter-spacing: 0.16em;
font-weight: 700;
line-height: 1;
padding: 0.4rem 0.62rem;
border-radius: 999px;
border: 1px solid color-mix(in srgb, var(--mail-border) 74%, transparent);
background: color-mix(in srgb, var(--mail-surface) 84%, transparent);
color: color-mix(in srgb, var(--mail-text) 92%, white 8%);
}
.docs-loading-splash--overlay {
position: absolute;
inset: 0;
z-index: 50;
min-height: 0;
}
.docs-loading-splash__mark {
transform-origin: center center;
animation: splash-logo-spin 0.72s linear infinite;
}
.docs-loading-splash__title {
margin: 0;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: center;
font-size: clamp(0.95rem, 2vw, 1.05rem);
font-weight: 500;
line-height: 1.3;
color: color-mix(in srgb, var(--mail-text) 94%, transparent);
}
.docs-loading-splash__subtitle {
margin: 0;
text-align: center;
font-size: clamp(0.76rem, 1.6vw, 0.86rem);
line-height: 1.3;
color: color-mix(in srgb, var(--mail-text-muted) 92%, transparent);
}
.docs-loading-splash__loader {
width: min(58vw, 230px);
height: 4px;
border-radius: 999px;
background: color-mix(in srgb, var(--mail-border) 68%, transparent);
overflow: hidden;
}
.docs-loading-splash__loader > span {
display: block;
width: 58%;
height: 100%;
border-radius: inherit;
background: linear-gradient(90deg, #1a73e8, #34a853, #1a73e8);
animation: splash-loader-progress 1.05s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
.docs-loading-splash__aurora,
.docs-loading-splash__grain,
.docs-loading-splash__content,
.docs-loading-splash__mark,
.docs-loading-splash__loader > span {
animation: none !important;
}
}