ooxml-ui 0.29.0 → 0.29.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,14 @@
1
1
  import { installOfficeUiTheme } from './chunk-7QLJS57B.js';
2
- import { registerControls } from './chunk-G4ZGQYBH.js';
2
+ import { registerControls } from './chunk-4VKD3COE.js';
3
3
  import { registerIcon, getIcon } from './chunk-HZ422LTR.js';
4
- import { initialsOf, definePresence } from './chunk-V6W5DKJ6.js';
4
+ import { initialsOf, definePresence } from './chunk-4TSBX6J3.js';
5
5
  import { definer, OfficeElement, controlStyles } from './chunk-ZWBP2WTC.js';
6
6
  import { html, nothing, LitElement, unsafeCSS, svg } from 'lit';
7
7
  import { repeat } from 'lit/directives/repeat.js';
8
8
  import { live } from 'lit/directives/live.js';
9
9
  import { parseServerConfig, createTeamsClient } from 'ooxml-core/teams';
10
10
 
11
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/reset.css?raw
11
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/reset.css?raw
12
12
  var reset_default = ":host {\n box-sizing: border-box;\n font: var(--office-font-size) var(--office-font);\n color: var(--office-foreground);\n}\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\nbutton {\n font: inherit;\n color: inherit;\n cursor: pointer;\n}\nbutton:focus-visible,\ntextarea:focus-visible,\ninput:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\nsvg.icon {\n width: 1.25em;\n height: 1.25em;\n flex: none;\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n";
13
13
 
14
14
  // src/teams/base.ts
@@ -70,7 +70,7 @@ function icon(name) {
70
70
  </svg>`;
71
71
  }
72
72
 
73
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/app-rail.css?raw
73
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/app-rail.css?raw
74
74
  var app_rail_default = ":host {\n display: block;\n width: 5em;\n background: var(--office-teams-rail);\n border-inline-end: var(--office-border-width) solid var(--office-teams-divider);\n}\nul {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--office-space-1);\n margin: 0;\n padding: var(--office-space-2) 0;\n list-style: none;\n}\nbutton {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--office-space-0);\n width: 4.4em;\n padding: var(--office-space-2) 0;\n border: 0;\n border-radius: var(--office-radius-md);\n background: transparent;\n color: var(--office-teams-text-subtle);\n}\nbutton:hover {\n background: var(--office-selected);\n}\nbutton[aria-current='page'] {\n color: var(--office-teams-brand);\n font-weight: var(--office-font-weight-bold);\n}\nbutton[aria-current='page']::before {\n content: '';\n position: absolute;\n inset-inline-start: calc(-1 * var(--office-space-1));\n inset-block: 20%;\n width: var(--office-space-1);\n border-radius: var(--office-radius-full);\n background: var(--office-teams-brand);\n}\n.glyph {\n position: relative;\n display: grid;\n place-items: center;\n font-size: 1.3em;\n}\n.label {\n font-size: var(--office-font-size-2xs);\n}\n.badge {\n position: absolute;\n inset-block-start: -0.4em;\n inset-inline-end: -0.9em;\n min-width: 1.5em;\n padding: 0 var(--office-space-1);\n border-radius: var(--office-radius-full);\n background: var(--office-teams-brand);\n color: var(--office-teams-brand-foreground);\n font-size: var(--office-font-size-3xs);\n line-height: 1.6;\n text-align: center;\n}\n";
75
75
 
76
76
  // src/teams/app-rail.ts
@@ -117,7 +117,7 @@ var OfficeUiAppRail = class extends TeamsElement {
117
117
  };
118
118
  var defineAppRail = definer("office-ui-app-rail", () => OfficeUiAppRail);
119
119
 
120
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/avatar.css?raw
120
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/avatar.css?raw
121
121
  var avatar_default = ":host {\n --_size: 2.3em;\n position: relative;\n display: inline-block;\n width: var(--_size);\n height: var(--_size);\n flex: none;\n}\n:host([size='sm']) {\n --_size: 1.7em;\n}\n:host([size='lg']) {\n --_size: 3em;\n}\n:host([size='xl']) {\n --_size: 6em;\n}\n\n.face {\n display: grid;\n place-items: center;\n width: 100%;\n height: 100%;\n border-radius: var(--office-radius-full);\n color: var(--office-call-foreground);\n font-size: calc(var(--_size) * 0.38);\n font-weight: var(--office-font-weight-bold);\n user-select: none;\n}\n\n.presence {\n position: absolute;\n inset-inline-end: 0;\n inset-block-end: 0;\n width: 32%;\n height: 32%;\n min-width: 0.5em;\n min-height: 0.5em;\n border-radius: var(--office-radius-full);\n border: var(--office-border-width-thick) solid var(--office-background);\n background: var(--office-presence-offline);\n}\n.presence[data-presence='available'] {\n background: var(--office-presence-available);\n}\n.presence[data-presence='busy'] {\n background: var(--office-presence-busy);\n}\n.presence[data-presence='away'] {\n background: var(--office-presence-away);\n}\n";
122
122
 
123
123
  // src/teams/avatar.ts
@@ -165,7 +165,7 @@ var OfficeUiAvatar = class extends TeamsElement {
165
165
  };
166
166
  var defineAvatar = definer("office-ui-avatar", () => OfficeUiAvatar);
167
167
 
168
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/call-controls.css?raw
168
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/call-controls.css?raw
169
169
  var call_controls_default = ":host {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--office-space-4);\n padding: var(--office-space-2) var(--office-space-4);\n background: var(--office-call-background);\n color: var(--office-call-foreground);\n}\n.info {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n min-width: 0;\n color: var(--office-call-muted-foreground);\n}\n.heading {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\ntime {\n font-variant-numeric: tabular-nums;\n}\n.actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--office-space-1-5);\n}\nbutton {\n display: inline-flex;\n align-items: center;\n gap: var(--office-space-2);\n height: 2.6em;\n padding: 0 var(--office-space-3);\n border: 0;\n border-radius: var(--office-radius-md);\n background: transparent;\n color: inherit;\n font-size: var(--office-font-size-sm);\n}\nbutton:hover:not(:disabled) {\n background: var(--office-call-control-hover);\n}\nbutton[aria-pressed='true'] {\n background: var(--office-call-control);\n color: var(--office-call-foreground);\n box-shadow: inset 0 calc(-1 * var(--office-border-width-thick)) 0 var(--office-teams-brand);\n}\nbutton[data-off='true'] {\n color: var(--office-call-danger);\n}\nbutton:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.leave {\n background: var(--office-call-danger);\n color: var(--office-call-foreground);\n}\n.leave:hover:not(:disabled) {\n background: var(--office-call-danger-hover);\n}\n@media (max-width: 767px) {\n .text {\n display: none;\n }\n .info {\n display: none;\n }\n}\n";
170
170
 
171
171
  // src/teams/call-controls.ts
@@ -257,7 +257,7 @@ var OfficeUiCallControls = class extends TeamsElement {
257
257
  };
258
258
  var defineCallControls = definer("office-ui-call-controls", () => OfficeUiCallControls);
259
259
 
260
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/call-grid.css?raw
260
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/call-grid.css?raw
261
261
  var call_grid_default = ":host {\n display: block;\n min-height: 0;\n background: var(--office-call-background);\n color: var(--office-call-foreground);\n}\n.empty {\n display: grid;\n place-items: center;\n height: 100%;\n margin: 0;\n color: var(--office-call-muted-foreground);\n}\n.grid {\n display: grid;\n gap: var(--office-space-2);\n height: 100%;\n padding: var(--office-space-2);\n grid-template-columns: repeat(var(--cols, 1), minmax(0, 1fr));\n grid-auto-rows: minmax(0, 1fr);\n}\n.grid[data-spotlight='true'] {\n grid-template-columns: minmax(0, 4fr) minmax(0, 1fr);\n grid-template-rows: repeat(var(--rows, 1), minmax(0, 1fr));\n}\n.grid[data-spotlight='true'] .tile[data-main='true'] {\n grid-row: 1 / span var(--rows, 1);\n}\n\n.tile {\n position: relative;\n display: grid;\n place-items: center;\n min-height: 6em;\n overflow: hidden;\n border-radius: var(--office-radius-lg);\n background: var(--office-call-tile);\n}\nvideo {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n background: var(--office-call-background);\n}\n.tile[data-screen='true'] video {\n object-fit: contain;\n}\n.tile[data-self='true'] video {\n transform: scaleX(-1);\n}\n.tile[data-self='true'][data-screen='true'] video {\n transform: none;\n}\n\n.name {\n position: absolute;\n inset-inline-start: var(--office-space-2);\n inset-block-end: var(--office-space-2);\n display: flex;\n align-items: center;\n gap: var(--office-space-1-5);\n max-width: calc(100% - 2 * var(--office-space-2));\n padding: var(--office-space-0) var(--office-space-2);\n border-radius: var(--office-radius-md);\n background: var(--office-call-scrim);\n font-size: var(--office-font-size-sm);\n}\n.name span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.muted {\n display: grid;\n color: var(--office-call-danger);\n}\n.hand {\n position: absolute;\n inset-block-start: var(--office-space-2);\n inset-inline-end: var(--office-space-2);\n font-size: 1.5em;\n}\n.status {\n position: absolute;\n inset-block-start: var(--office-space-2);\n inset-inline-start: var(--office-space-2);\n padding: 0 var(--office-space-2);\n border-radius: var(--office-radius-md);\n background: var(--office-call-scrim);\n font-size: var(--office-font-size-xs);\n}\n";
262
262
 
263
263
  // src/teams/call-grid.ts
@@ -323,7 +323,7 @@ var OfficeUiCallGrid = class extends TeamsElement {
323
323
  };
324
324
  var defineCallGrid = definer("office-ui-call-grid", () => OfficeUiCallGrid);
325
325
 
326
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/channel-list.css?raw
326
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/channel-list.css?raw
327
327
  var channel_list_default = ":host {\n display: block;\n overflow: auto;\n}\n.team {\n display: flex;\n align-items: center;\n padding: var(--office-space-1) var(--office-space-2) var(--office-space-1) var(--office-space-1);\n}\n.toggle {\n display: flex;\n flex: 1;\n align-items: center;\n gap: var(--office-space-1);\n min-width: 0;\n padding: var(--office-space-2);\n border: 0;\n border-radius: var(--office-radius);\n background: transparent;\n font-weight: var(--office-font-weight-bold);\n text-align: start;\n}\n.toggle:hover,\n.add:hover {\n background: var(--office-selected);\n}\n.chevron {\n display: grid;\n transition: transform var(--office-duration-fast);\n}\n.chevron[data-open='true'] {\n transform: rotate(90deg);\n}\n.name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.add {\n display: grid;\n place-items: center;\n width: 2em;\n height: 2em;\n border: 0;\n border-radius: var(--office-radius);\n background: transparent;\n color: var(--office-teams-text-subtle);\n}\nul {\n margin: 0;\n padding: 0 var(--office-space-2);\n list-style: none;\n}\nul[hidden] {\n display: none;\n}\n.row {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--office-space-2);\n width: 100%;\n padding: var(--office-space-2) var(--office-space-3) var(--office-space-2) var(--office-space-5);\n border: 0;\n border-radius: var(--office-radius);\n background: transparent;\n color: var(--office-teams-text-subtle);\n text-align: start;\n}\n.row:hover {\n background: var(--office-selected);\n}\n.row[aria-current='true'] {\n background: var(--office-teams-brand-subtle);\n color: var(--office-foreground);\n font-weight: var(--office-font-weight-bold);\n}\n.row[aria-current='true']::before {\n content: '';\n position: absolute;\n inset-inline-start: 0;\n inset-block: 20%;\n width: var(--office-space-1);\n border-radius: var(--office-radius-full);\n background: var(--office-teams-brand);\n}\n.row[data-unread='true'] {\n color: var(--office-foreground);\n font-weight: var(--office-font-weight-bold);\n}\n.title {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.live {\n display: grid;\n color: var(--office-call-live);\n}\n.count {\n min-width: 1.6em;\n padding: 0 var(--office-space-1);\n border-radius: var(--office-radius-full);\n background: var(--office-teams-brand);\n color: var(--office-teams-brand-foreground);\n font-size: var(--office-font-size-xs);\n line-height: 1.6;\n text-align: center;\n}\n";
328
328
 
329
329
  // src/teams/channel-list.ts
@@ -389,7 +389,7 @@ var OfficeUiChannelList = class extends TeamsElement {
389
389
  };
390
390
  var defineChannelList = definer("office-ui-channel-list", () => OfficeUiChannelList);
391
391
 
392
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/chat-composer.css?raw
392
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/chat-composer.css?raw
393
393
  var chat_composer_default = ":host {\n display: block;\n padding: 0 var(--office-space-5) var(--office-space-4);\n}\n.typing {\n min-height: 1.4em;\n color: var(--office-teams-text-subtle);\n font-size: var(--office-font-size-xs);\n}\n.box {\n position: relative;\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-block-end: var(--office-border-width-thick) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n background: var(--office-field-background);\n}\n.box:focus-within {\n border-block-end-color: var(--office-teams-brand);\n}\n.banner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--office-space-1) var(--office-space-3);\n border-bottom: var(--office-border-width) solid var(--office-teams-divider);\n background: var(--office-teams-panel);\n font-size: var(--office-font-size-sm);\n}\ntextarea {\n display: block;\n width: 100%;\n min-height: 3.2em;\n max-height: 12em;\n padding: var(--office-space-3);\n border: 0;\n outline: 0;\n resize: none;\n background: transparent;\n color: inherit;\n font: inherit;\n field-sizing: content;\n}\n.bar {\n display: flex;\n align-items: center;\n gap: var(--office-space-1);\n padding: 0 var(--office-space-2) var(--office-space-2);\n}\n.spacer {\n flex: 1;\n}\n.bar button,\n.banner button,\n.pending button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--office-space-1);\n min-width: 2.2em;\n height: 2.2em;\n border: 0;\n border-radius: var(--office-radius);\n background: transparent;\n color: var(--office-teams-text-subtle);\n}\n.bar button:hover:not(:disabled),\n.banner button:hover {\n background: var(--office-selected);\n color: var(--office-foreground);\n}\n.bar button:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.bar .send:not(:disabled) {\n color: var(--office-teams-brand);\n}\n.pending {\n display: flex;\n flex-wrap: wrap;\n gap: var(--office-space-1);\n margin: 0;\n padding: 0 var(--office-space-3);\n list-style: none;\n}\n.pending button {\n padding: 0 var(--office-space-2);\n border: var(--office-border-width) solid var(--office-teams-divider);\n background: var(--office-teams-panel);\n font-size: var(--office-font-size-sm);\n color: var(--office-foreground);\n}\n.emoji {\n position: relative;\n}\n.picker {\n position: absolute;\n inset-block-end: calc(100% + var(--office-space-1));\n inset-inline-start: 0;\n z-index: 2;\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: var(--office-space-0);\n padding: var(--office-space-2);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n box-shadow: var(--office-shadow-teams);\n}\n.picker button {\n font-size: 1.3em;\n}\n";
394
394
 
395
395
  // src/teams/chat-composer.ts
@@ -576,7 +576,7 @@ var OfficeUiChatComposer = class extends TeamsElement {
576
576
  };
577
577
  var defineChatComposer = definer("office-ui-chat-composer", () => OfficeUiChatComposer);
578
578
 
579
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/chat-list.css?raw
579
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/chat-list.css?raw
580
580
  var chat_list_default = ":host {\n display: block;\n min-height: 0;\n overflow: auto;\n padding: var(--office-space-2) var(--office-space-5);\n}\n.empty {\n margin: var(--office-space-6) 0;\n color: var(--office-teams-text-subtle);\n text-align: center;\n}\n\n.day {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n margin: var(--office-space-4) 0 var(--office-space-2);\n color: var(--office-teams-text-subtle);\n font-size: var(--office-font-size-xs);\n}\n.day::before,\n.day::after {\n content: '';\n flex: 1;\n height: var(--office-border-width);\n background: var(--office-teams-divider);\n}\n\n.msg {\n position: relative;\n display: grid;\n grid-template-columns: 2.3em minmax(0, 1fr);\n column-gap: var(--office-space-3);\n padding: var(--office-space-0) 0;\n}\n.msg[data-grouped='false'] {\n margin-top: var(--office-space-3);\n}\n.gutter {\n padding-top: var(--office-space-1);\n}\nheader {\n display: flex;\n align-items: baseline;\n gap: var(--office-space-2);\n margin-bottom: var(--office-space-0);\n}\n.author {\n font-weight: var(--office-font-weight-bold);\n}\ntime,\n.edited,\n.file-size {\n color: var(--office-teams-text-subtle);\n font-size: var(--office-font-size-xs);\n}\n\n.bubble {\n display: inline-block;\n max-width: min(100%, 44em);\n padding: var(--office-space-2) var(--office-space-3);\n border-radius: var(--office-radius-md);\n background: var(--office-teams-bubble);\n line-height: var(--office-line-height);\n overflow-wrap: anywhere;\n}\n.text {\n white-space: pre-wrap;\n}\n.msg[data-own='true'] .bubble {\n background: var(--office-teams-bubble-own);\n}\n.deleted {\n color: var(--office-teams-text-subtle);\n font-style: italic;\n}\nblockquote {\n margin: 0 0 var(--office-space-1);\n padding-inline-start: var(--office-space-2);\n border-inline-start: var(--office-border-width-thick) solid var(--office-teams-brand);\n color: var(--office-teams-text-subtle);\n font-size: var(--office-font-size-sm);\n white-space: normal;\n}\nblockquote strong {\n display: block;\n color: var(--office-foreground);\n}\n\n.files {\n display: flex;\n flex-wrap: wrap;\n gap: var(--office-space-2);\n margin-top: var(--office-space-2);\n white-space: normal;\n}\n.file {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n min-width: 14em;\n padding: var(--office-space-2) var(--office-space-3);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n background: var(--office-background);\n text-align: start;\n}\n.file:hover {\n border-color: var(--office-teams-brand);\n}\n.badge {\n display: grid;\n place-items: center;\n width: 2.2em;\n height: 2.2em;\n border-radius: var(--office-radius);\n background: var(--office-file-other);\n color: var(--office-call-foreground);\n font-weight: var(--office-font-weight-bold);\n}\n.badge[data-kind='docx'] {\n background: var(--office-file-docx);\n}\n.badge[data-kind='xlsx'] {\n background: var(--office-file-xlsx);\n}\n.badge[data-kind='pptx'] {\n background: var(--office-file-pptx);\n}\n.badge[data-kind='vsdx'] {\n background: var(--office-file-vsdx);\n}\n.meta {\n display: grid;\n}\n\n.reactions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--office-space-1);\n margin-top: var(--office-space-1);\n}\n.pill {\n display: inline-flex;\n gap: var(--office-space-1);\n padding: 0 var(--office-space-2);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-full);\n background: var(--office-background);\n font-size: var(--office-font-size-sm);\n}\n.pill[aria-pressed='true'] {\n border-color: var(--office-teams-brand);\n background: var(--office-teams-brand-subtle);\n}\n\n.toolbar {\n position: absolute;\n inset-block-start: calc(-1 * var(--office-space-3));\n inset-inline-end: 0;\n display: none;\n gap: var(--office-space-0);\n padding: var(--office-space-0);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n box-shadow: var(--office-shadow-teams);\n}\n.msg:hover .toolbar,\n.msg:focus-within .toolbar {\n display: flex;\n}\n.toolbar button {\n display: grid;\n place-items: center;\n min-width: 2em;\n height: 2em;\n border: 0;\n border-radius: var(--office-radius-sm);\n background: transparent;\n}\n.toolbar button:hover {\n background: var(--office-selected);\n}\n";
581
581
 
582
582
  // src/teams/chat-list.ts
@@ -730,7 +730,7 @@ var OfficeUiChatList = class extends TeamsElement {
730
730
  };
731
731
  var defineChatList = definer("office-ui-chat-list", () => OfficeUiChatList);
732
732
 
733
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/prejoin.css?raw
733
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/prejoin.css?raw
734
734
  var prejoin_default = ":host {\n display: grid;\n place-items: center;\n padding: var(--office-space-5);\n background: var(--office-teams-panel);\n}\n.card {\n display: grid;\n grid-template-columns: minmax(0, 3fr) minmax(16em, 2fr);\n width: min(60em, 100%);\n overflow: hidden;\n border-radius: var(--office-radius-lg);\n background: var(--office-background);\n box-shadow: var(--office-shadow-teams);\n}\n.stage {\n position: relative;\n display: grid;\n place-content: center;\n justify-items: center;\n gap: var(--office-space-3);\n min-height: 18em;\n background: var(--office-call-background);\n color: var(--office-call-muted-foreground);\n}\n.stage video {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n transform: scaleX(-1);\n}\n.panel {\n display: flex;\n flex-direction: column;\n gap: var(--office-space-3);\n padding: var(--office-space-5);\n}\nh2 {\n margin: 0;\n font-size: var(--office-font-size-lg);\n}\n.for {\n margin: 0;\n color: var(--office-teams-text-subtle);\n}\n.switch {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--office-space-3);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n cursor: pointer;\n}\n.what {\n display: inline-flex;\n align-items: center;\n gap: var(--office-space-2);\n}\n.switch input {\n position: absolute;\n inset: 0;\n margin: 0;\n opacity: 0;\n cursor: pointer;\n}\n.track {\n position: relative;\n width: 2.6em;\n height: 1.4em;\n border-radius: var(--office-radius-full);\n background: var(--office-border);\n transition: background var(--office-duration-fast);\n}\n.track::after {\n content: '';\n position: absolute;\n inset-block-start: 0.2em;\n inset-inline-start: 0.2em;\n width: 1em;\n height: 1em;\n border-radius: 50%;\n background: var(--office-background);\n transition: transform var(--office-duration-fast);\n}\n.switch input:checked ~ .track {\n background: var(--office-teams-brand);\n}\n.switch input:checked ~ .track::after {\n transform: translateX(1.2em);\n}\n.switch:has(input:focus-visible) {\n outline: var(--office-focus-width) solid var(--office-ring);\n}\n.actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--office-space-2);\n margin-top: auto;\n}\n.actions button {\n padding: var(--office-space-2) var(--office-space-5);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n background: var(--office-background);\n font-weight: var(--office-font-weight-bold);\n}\n.actions .join {\n border-color: transparent;\n background: var(--office-teams-brand);\n color: var(--office-teams-brand-foreground);\n}\n.actions .join:hover:not(:disabled) {\n background: var(--office-teams-brand-hover);\n}\n.actions button:disabled {\n opacity: 0.6;\n cursor: wait;\n}\n@media (max-width: 767px) {\n .card {\n grid-template-columns: 1fr;\n }\n}\n";
735
735
 
736
736
  // src/teams/prejoin.ts
@@ -847,7 +847,7 @@ var TeamsController = class {
847
847
  }
848
848
  };
849
849
 
850
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/app/teams-settings.css?raw
850
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/app/teams-settings.css?raw
851
851
  var teams_settings_default = ":host {\n font: var(--office-font-size) var(--office-font);\n color: var(--office-foreground);\n}\ndialog {\n width: min(36em, 94vw);\n padding: 0;\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-lg);\n background: var(--office-popover);\n color: inherit;\n box-shadow: var(--office-shadow-teams);\n}\ndialog::backdrop {\n background: var(--office-overlay);\n}\nform {\n display: grid;\n gap: var(--office-space-3);\n padding: var(--office-space-5);\n}\nh2 {\n margin: 0;\n font-size: var(--office-font-size-lg);\n}\nlabel {\n display: grid;\n gap: var(--office-space-1);\n font-weight: var(--office-font-weight-bold);\n}\nsmall {\n color: var(--office-teams-text-subtle);\n font-weight: normal;\n}\ninput,\ntextarea,\nselect {\n padding: var(--office-space-2);\n border: var(--office-border-width) solid var(--office-field-border);\n border-radius: var(--office-radius);\n background: var(--office-field-background);\n color: inherit;\n font: inherit;\n}\ntextarea {\n min-height: 5.5em;\n font-family: ui-monospace, monospace;\n font-size: 0.9em;\n}\n.issues {\n margin: 0;\n padding-inline-start: 1.2em;\n color: var(--office-danger);\n font-size: var(--office-font-size-sm);\n}\n.actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--office-space-2);\n}\nbutton {\n padding: var(--office-space-2) var(--office-space-4);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n background: var(--office-background);\n color: inherit;\n font: inherit;\n cursor: pointer;\n}\nbutton.primary {\n border-color: transparent;\n background: var(--office-teams-brand);\n color: var(--office-teams-brand-foreground);\n}\nbutton.primary:hover {\n background: var(--office-teams-brand-hover);\n}\n:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n";
852
852
 
853
853
  // src/teams/app/teams-settings.ts
@@ -990,7 +990,7 @@ function loadConfig() {
990
990
  }
991
991
  var saveConfig = (config) => safeStorage.setItem("teams:config", JSON.stringify(config));
992
992
 
993
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/teams/app/teams-app.css?raw
993
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/teams/app/teams-app.css?raw
994
994
  var teams_app_default = '/* <teams-app>: the shell. Colours, spacing and radii come from the ooxml-ui tokens, so a host\n retheme or dark mode reaches the whole app. The elements inside bring their own styles. */\n:host {\n display: block;\n height: 100%;\n min-height: 28em;\n font: var(--office-font-size) var(--office-font);\n color: var(--office-foreground);\n background: var(--office-background);\n}\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\nbutton {\n font: inherit;\n color: inherit;\n cursor: pointer;\n}\n:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n\n.shell {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n height: 100%;\n}\n\n/* ---- top bar ---------------------------------------------------------------------------- */\n.topbar {\n display: grid;\n grid-template-columns: 16em minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--office-space-4);\n padding: var(--office-space-2) var(--office-space-4);\n background: var(--office-teams-rail);\n border-bottom: var(--office-border-width) solid var(--office-teams-divider);\n}\n.brand {\n display: flex;\n align-items: center;\n gap: var(--office-space-2);\n font-size: var(--office-font-size-lg);\n font-weight: var(--office-font-weight-bold);\n}\n.logo {\n display: inline-grid;\n place-items: center;\n width: 1.8em;\n height: 1.8em;\n border-radius: var(--office-radius-md);\n background: var(--office-teams-brand);\n color: var(--office-teams-brand-foreground);\n font-size: 0.85em;\n}\n.search {\n position: relative;\n justify-self: center;\n width: min(34em, 100%);\n}\n.search input {\n width: 100%;\n padding: var(--office-space-2) var(--office-space-4);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-full);\n background: var(--office-background);\n color: inherit;\n font: inherit;\n}\n.results {\n position: absolute;\n inset-inline: 0;\n inset-block-start: calc(100% + var(--office-space-1));\n z-index: 5;\n max-height: 22em;\n margin: 0;\n padding: var(--office-space-1);\n overflow: auto;\n list-style: none;\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n box-shadow: var(--office-shadow-teams);\n}\n.results button {\n display: grid;\n width: 100%;\n padding: var(--office-space-2) var(--office-space-3);\n border: 0;\n border-radius: var(--office-radius);\n background: transparent;\n text-align: start;\n}\n.results button:hover {\n background: var(--office-selected);\n}\n.results .in,\n.results .none {\n color: var(--office-teams-text-subtle);\n font-size: var(--office-font-size-sm);\n}\n.results .none {\n padding: var(--office-space-3);\n}\n.snippet {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.me {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n}\n.me select {\n padding: var(--office-space-1) var(--office-space-2);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius);\n background: var(--office-background);\n color: inherit;\n font: inherit;\n}\n.link {\n border: 0;\n background: transparent;\n text-decoration: underline;\n color: var(--office-teams-brand);\n}\n.conn {\n width: 0.7em;\n height: 0.7em;\n border-radius: 50%;\n background: var(--office-presence-offline);\n}\n.conn[data-status="connected"] { background: var(--office-presence-available); }\n.conn[data-status="connecting"] { background: var(--office-presence-away); }\n.conn[data-status="error"] { background: var(--office-presence-busy); }\n\n/* ---- body ------------------------------------------------------------------------------- */\n.body {\n display: grid;\n grid-template-columns: auto 19em minmax(0, 1fr);\n min-height: 0;\n}\n.side {\n min-height: 0;\n overflow: auto;\n background: var(--office-teams-panel);\n border-inline-end: var(--office-border-width) solid var(--office-teams-divider);\n}\n.side h2 {\n margin: 0;\n padding: var(--office-space-3) var(--office-space-4);\n font-size: var(--office-font-size-lg);\n}\n.main {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n}\n.main office-ui-chat-list,\n.main office-ui-prejoin {\n flex: 1;\n}\n\nul.plain {\n margin: 0;\n padding: 0 var(--office-space-3);\n list-style: none;\n}\nul.plain li {\n display: flex;\n align-items: center;\n gap: var(--office-space-2);\n padding: var(--office-space-2) var(--office-space-2);\n}\nul.plain li > :first-child:not(office-ui-avatar) {\n flex: 1;\n}\n.hint {\n padding: 0 var(--office-space-4);\n color: var(--office-teams-text-subtle);\n}\n.join {\n padding: var(--office-space-1) var(--office-space-3);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n background: var(--office-background);\n}\n.join.live {\n border-color: transparent;\n background: var(--office-call-live);\n color: var(--office-call-foreground);\n}\n\n/* ---- conversation ----------------------------------------------------------------------- */\n.channel-head {\n display: flex;\n align-items: center;\n gap: var(--office-space-4);\n padding: var(--office-space-2) var(--office-space-5);\n border-bottom: var(--office-border-width) solid var(--office-teams-divider);\n}\n.channel-head h1 {\n margin: 0;\n font-size: var(--office-font-size-lg);\n white-space: nowrap;\n}\n.hash {\n color: var(--office-teams-text-subtle);\n}\n.tabs {\n display: flex;\n gap: var(--office-space-1);\n}\n.tabs button {\n padding: var(--office-space-2) var(--office-space-3);\n border: 0;\n border-bottom: var(--office-border-width-thick) solid transparent;\n background: transparent;\n}\n.tabs button[aria-selected="true"] {\n border-bottom-color: var(--office-teams-brand);\n font-weight: var(--office-font-weight-bold);\n}\n.topic {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n color: var(--office-teams-text-subtle);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.people {\n display: flex;\n align-items: center;\n gap: var(--office-space-0);\n}\n.more {\n margin-inline-start: var(--office-space-1);\n color: var(--office-teams-text-subtle);\n font-size: var(--office-font-size-sm);\n}\n.meet {\n padding: var(--office-space-2) var(--office-space-4);\n border: 0;\n border-radius: var(--office-radius-md);\n background: var(--office-teams-brand);\n color: var(--office-teams-brand-foreground);\n font-weight: var(--office-font-weight-bold);\n}\n.meet:hover:not(:disabled) {\n background: var(--office-teams-brand-hover);\n}\n.meet:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.callbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--office-space-2) var(--office-space-5);\n background: var(--office-call-live);\n color: var(--office-call-foreground);\n}\n.callbar button {\n padding: 0 var(--office-space-3);\n border: var(--office-border-width) solid currentColor;\n border-radius: var(--office-radius);\n background: transparent;\n}\n\n/* ---- files ------------------------------------------------------------------------------ */\n.files {\n display: grid;\n flex: 1;\n align-content: start;\n gap: var(--office-space-2);\n margin: 0;\n padding: var(--office-space-4) var(--office-space-5);\n overflow: auto;\n list-style: none;\n}\n.files li {\n display: flex;\n align-items: center;\n gap: var(--office-space-3);\n padding: var(--office-space-2) var(--office-space-3);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius-md);\n}\n.files .none {\n justify-content: center;\n border: 0;\n color: var(--office-teams-text-subtle);\n}\n.files .meta {\n display: grid;\n flex: 1;\n min-width: 0;\n}\n.files small {\n color: var(--office-teams-text-subtle);\n}\n.files button {\n padding: var(--office-space-1) var(--office-space-3);\n border: var(--office-border-width) solid var(--office-teams-divider);\n border-radius: var(--office-radius);\n background: var(--office-teams-panel);\n}\n.badge {\n display: grid;\n place-items: center;\n width: 2.2em;\n height: 2.2em;\n border-radius: var(--office-radius);\n background: var(--office-file-other);\n color: var(--office-call-foreground);\n font-weight: var(--office-font-weight-bold);\n}\n.badge[data-kind="docx"] { background: var(--office-file-docx); }\n.badge[data-kind="xlsx"] { background: var(--office-file-xlsx); }\n.badge[data-kind="pptx"] { background: var(--office-file-pptx); }\n.badge[data-kind="vsdx"] { background: var(--office-file-vsdx); }\n\n/* ---- meeting ---------------------------------------------------------------------------- */\n.meeting {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n height: 100%;\n background: var(--office-call-background);\n}\n.stage {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n min-height: 0;\n}\n.panel {\n display: flex;\n flex-direction: column;\n width: 22em;\n min-height: 0;\n background: var(--office-background);\n border-inline-start: var(--office-border-width) solid var(--office-teams-divider);\n}\n.panel office-ui-chat-list {\n flex: 1;\n padding-inline: var(--office-space-3);\n}\n.panel office-ui-chat-composer {\n padding-inline: var(--office-space-3);\n}\n.people-panel h2 {\n margin: 0;\n padding: var(--office-space-3) var(--office-space-4);\n font-size: var(--office-font-size-lg);\n}\n\n/* ---- welcome and toast ------------------------------------------------------------------ */\n.welcome {\n display: grid;\n place-items: center;\n height: 100%;\n background: var(--office-teams-panel);\n}\n.welcome form {\n display: grid;\n justify-items: center;\n gap: var(--office-space-3);\n width: min(24em, 90%);\n padding: var(--office-space-6);\n border-radius: var(--office-radius-lg);\n background: var(--office-background);\n box-shadow: var(--office-shadow-teams);\n}\n.welcome h1 {\n margin: 0;\n font-size: var(--office-font-size-xl);\n}\n.welcome p {\n margin: 0;\n color: var(--office-teams-text-subtle);\n}\n.welcome input {\n width: 100%;\n padding: var(--office-space-3);\n border: var(--office-border-width) solid var(--office-field-border);\n border-radius: var(--office-radius);\n background: var(--office-field-background);\n color: inherit;\n font: inherit;\n}\n.welcome button {\n width: 100%;\n padding: var(--office-space-3);\n border: 0;\n border-radius: var(--office-radius-md);\n background: var(--office-teams-brand);\n color: var(--office-teams-brand-foreground);\n font-weight: var(--office-font-weight-bold);\n}\n.toast {\n position: fixed;\n inset-block-end: var(--office-space-4);\n inset-inline-start: 50%;\n z-index: 10;\n transform: translateX(-50%);\n padding: var(--office-space-2) var(--office-space-4);\n border-radius: var(--office-radius-md);\n background: var(--office-call-background);\n color: var(--office-call-foreground);\n}\n\n@media (max-width: 900px) {\n .body {\n grid-template-columns: auto minmax(0, 1fr);\n }\n .side {\n display: none;\n }\n .topbar {\n grid-template-columns: auto minmax(0, 1fr) auto;\n }\n}\n';
995
995
 
996
996
  // src/teams/app/teams-app.ts
@@ -1,8 +1,8 @@
1
- import { defineSmartArt } from './chunk-4VQ6S7QJ.js';
2
- import { TEAMS_TAGS, registerTeams } from './chunk-AJ2J734X.js';
1
+ import { defineSmartArt } from './chunk-C66U34OA.js';
2
+ import { TEAMS_TAGS, registerTeams } from './chunk-NEDNYLXX.js';
3
3
  import { installOfficeUiTheme } from './chunk-7QLJS57B.js';
4
- import { registerControls } from './chunk-G4ZGQYBH.js';
5
- import { definePresence } from './chunk-V6W5DKJ6.js';
4
+ import { registerControls } from './chunk-4VKD3COE.js';
5
+ import { definePresence } from './chunk-4TSBX6J3.js';
6
6
 
7
7
  // src/index.ts
8
8
  var OFFICE_UI_TAGS = [
package/dist/controls.js CHANGED
@@ -1,5 +1,5 @@
1
- export { CONTROL_DEFINERS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, nextEnabledIndex, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-G4ZGQYBH.js';
1
+ export { CONTROL_DEFINERS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, nextEnabledIndex, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-4VKD3COE.js';
2
2
  import './chunk-HZ422LTR.js';
3
- import './chunk-V6W5DKJ6.js';
3
+ import './chunk-4TSBX6J3.js';
4
4
  import './chunk-ZWBP2WTC.js';
5
5
  import './chunk-7Q7ZS2CC.js';
package/dist/docx.js CHANGED
@@ -1,8 +1,8 @@
1
- import { defineSmartArt } from './chunk-4VQ6S7QJ.js';
1
+ import { defineSmartArt } from './chunk-C66U34OA.js';
2
2
  import { shadcnBridge } from './chunk-7QLJS57B.js';
3
- import { createRibbonOverflow, defineRibbon, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, runKeyTips, assignKeyTips } from './chunk-G4ZGQYBH.js';
3
+ import { createRibbonOverflow, defineRibbon, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, runKeyTips, assignKeyTips } from './chunk-4VKD3COE.js';
4
4
  import { registerIcon } from './chunk-HZ422LTR.js';
5
- import './chunk-V6W5DKJ6.js';
5
+ import './chunk-4TSBX6J3.js';
6
6
  import './chunk-ZWBP2WTC.js';
7
7
  import './chunk-7Q7ZS2CC.js';
8
8
  import { createDocument, saveDocx, sectionLayoutJson, sectionsOf, pageSizeOf, columnPreset, applyPageSetup, withSection, sectionsFromLayout, computeListLabels, numberNotesInOrder, tocEntries, tableOfFiguresInstruction, findTableOfContents, ensureListDefinition, resolveNumberingLevel, equalColumnDraft, readColumnDraft, PAGE_SIZE_OPTIONS, PAGE_SIZES, readPageSetup, resolveTableStyleFormatting, resolveParagraphFormatting, displayListLabel, setTitlePage, setLineNumbering, setVerticalAlign, setPageNumbering, ST_NumberFormat, unequalColumnPreset, setColumns, setOrientation, setPageSize, setMargins, paragraphTwipsFromAttrs, lineSpacingLabel, formatNoteNumber, plainText, tocHyperlinks, DEFAULT_TOC_INSTRUCTION, tocBookmarks, buildTableOfContents, tocCaptionLabel, twips as twips$1, signedTwips, formatListNumber, columnTextWidth, validColumnDraft, validatePageSetup, presetOf, LIGATURE_VALUES, isLigatures, resolveRunFormatting, resolveThemeColorReference, lineSpacingValue, transformCase, DEFAULT_TABLE_BORDERS, parseLineSpacingValue, twipsAttr, twipsFromPixels, headingLevel, isValidLanguageTag, WORD, isHeadingListKind, fieldName, dateFieldResult, lineSpacingOptions, changeColumnWidth, changeColumnGap, createListDefinition, linkStylesToList, headingListLevels, documentStats } from 'ooxml-core/docx';
@@ -17076,58 +17076,58 @@ var EditorCore = class {
17076
17076
  }
17077
17077
  };
17078
17078
 
17079
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/aliases.css?raw
17079
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/aliases.css?raw
17080
17080
  var aliases_default = "/* Chrome aliases: the pre-token custom property names, now derived from --dve-* tokens. */\n:host {\n --word: var(--dve-primary);\n --word-strong: color-mix(in srgb, var(--dve-primary) 70%, #000);\n --word-soft: color-mix(in srgb, var(--dve-primary) 12%, transparent);\n --blue: var(--word);\n --accent-soft: var(--word-soft);\n --ink: var(--dve-foreground);\n --muted: var(--dve-muted-foreground);\n --line: var(--dve-border);\n --canvas: var(--dve-muted);\n --surface: var(--dve-card);\n --chrome: var(--dve-background);\n}\n";
17081
17081
 
17082
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/base.css?raw
17082
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/base.css?raw
17083
17083
  var base_default = ":host {\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n color: var(--ink);\n font:\n 13px/1.35 'Segoe UI',\n Arial,\n sans-serif;\n}\n.dve-frame {\n display: flex;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n min-width: 0;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid var(--line);\n background: var(--surface);\n box-shadow: 0 2px 8px #20212420;\n}\n/* Keyboard focus ring for every interactive part of the chrome. */\n:focus-visible {\n outline: 2px solid var(--dve-ring);\n outline-offset: 1px;\n}\n.dve-paper .ProseMirror:focus-visible {\n outline: none;\n}\n/* Only the chrome follows the theme; document pages stay white like Word's. */\n.dve-paper,\n.dve-print-page {\n color-scheme: light;\n}\n";
17084
17084
 
17085
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/ribbon.css?raw
17085
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon.css?raw
17086
17086
  var ribbon_default = ".dve-ribbon {\n display: flex;\n flex: none;\n min-width: 0;\n flex-direction: column;\n background: var(--surface);\n border-bottom: 1px solid var(--line);\n}\n/* The tab row is drawn by the shared office-ui-ribbon; these colour and size it. */\n.dve-ribbon {\n --office-ribbon-tab-height: 39px;\n --office-ribbon-contextual: #0f7b6c;\n --office-tab-indicator-width: 3px;\n}\n/* Word's File tab is text, not a filled button. */\n.dve-ribbon::part(file) {\n background: none;\n color: var(--word);\n font-weight: 600;\n}\n.dve-ribbon::part(file):hover {\n background: var(--word-soft);\n}\n.dve-ribbon::part(head) {\n padding: 0 14px;\n}\n.ribbon-panel {\n flex: none;\n box-sizing: border-box;\n min-width: 0;\n /* One height for every tab, as in Word, so switching tabs never moves the document. */\n height: 104px;\n display: flex;\n flex-wrap: nowrap;\n align-items: stretch;\n gap: 4px;\n padding: 6px 10px 4px;\n overflow-x: auto;\n overflow-y: hidden;\n overscroll-behavior-x: contain;\n scrollbar-width: thin;\n}\n.ribbon-panel[hidden] {\n display: none;\n}\n.ribbon-group {\n display: flex;\n flex: 0 0 auto;\n flex-wrap: wrap;\n align-content: flex-start;\n align-items: center;\n min-width: 0;\n max-width: 330px;\n gap: 4px 2px;\n padding: 2px 10px 18px 2px;\n border-right: 1px solid var(--line);\n}\n.ribbon-row {\n display: flex;\n flex: 0 0 100%;\n flex-wrap: nowrap;\n align-items: center;\n gap: 2px;\n}\n.ribbon-group:last-child {\n border: 0;\n}\n.ribbon-group::after {\n position: absolute;\n right: 0;\n bottom: 2px;\n left: 0;\n color: var(--muted);\n font-size: 10px;\n line-height: 1.1;\n text-align: center;\n content: attr(data-caption);\n}\n.ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Clipboard'] {\n width: auto;\n max-width: none;\n flex-wrap: nowrap;\n}\n.ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Clipboard'] button.ribbon-large {\n width: 56px;\n}\n.ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Font'] {\n width: 338px;\n}\n.ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Paragraph'] {\n /* The list-level and indent commands need room before the Sort and paragraph-mark buttons. */\n width: 288px;\n max-width: none;\n}\n.ribbon-group[data-label='Paragraph'] .ribbon-small {\n width: 24px;\n min-width: 24px;\n}\n.ribbon-group[data-label='Paragraph'] .ribbon-menu-compact {\n width: 36px;\n flex: none;\n}\n.ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Styles'] select {\n width: 100%;\n max-width: 100%;\n}\n.dve-ribbon[data-editor-locale='de']\n .ribbon-panel[data-panel='Home']\n .ribbon-group[data-label='Font'] {\n width: 362px;\n max-width: none;\n}\n.dve-ribbon[data-editor-locale='fr']\n .ribbon-panel[data-panel='Home']\n .ribbon-group[data-label='Editing'],\n.dve-ribbon[data-editor-locale='de']\n .ribbon-panel[data-panel='Home']\n .ribbon-group[data-label='Editing'] {\n width: 176px;\n}\n.ribbon-group[data-label='Language'] {\n flex: 0 0 100%;\n}\n.ribbon-panel[data-panel='Review'] .ribbon-group[data-label='Tracking'],\n.ribbon-panel[data-panel='Review'] .ribbon-group[data-label='Changes'],\n.ribbon-panel[data-panel='Review'] .ribbon-group[data-label='Comments'] {\n flex: 0 0 auto;\n}\n.ribbon-group button {\n min-width: 32px;\n flex: none;\n height: 31px;\n border: 1px solid transparent;\n border-radius: 4px;\n background: transparent;\n color: var(--ink);\n font:\n 500 14px 'Segoe UI',\n Arial,\n sans-serif;\n cursor: pointer;\n padding: 0 4px;\n /* A label wider than its slot ends in an ellipsis (the title tooltip has the full text). */\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ribbon-row > button,\n.ribbon-row > select {\n flex: 0 1 auto;\n min-width: 0;\n}\n.ribbon-row > button {\n min-width: 32px;\n}\n.ribbon-group button:hover:not(:disabled) {\n background: var(--accent-soft);\n border-color: var(--line);\n}\n.ribbon-group button[aria-pressed='true'] {\n background: var(--accent-soft);\n color: var(--blue);\n}\n.ribbon-group .tool-bold {\n font-weight: 800;\n}\n.ribbon-group .tool-italic {\n font-style: italic;\n}\n.ribbon-group .tool-underline {\n text-decoration: underline;\n}\n.ribbon-group select {\n flex: none;\n max-width: 150px;\n height: 30px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n padding: 0 7px;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n /* Long localized labels end in an ellipsis; the full text is the title tooltip. */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ribbon-group select option {\n background: var(--surface);\n color: var(--ink);\n}\n.ribbon-group select.font-family-select {\n width: 120px;\n}\n.ribbon-group select.font-size-select {\n width: 52px;\n}\n.ribbon-group[data-label='Font'] .ribbon-row button {\n min-width: 28px;\n padding-inline: 0;\n}\n/* Split-button carets stay narrow so the pair reads as one control. */\n.ribbon-group[data-label='Font'] .ribbon-row .ribbon-split .ribbon-caret {\n min-width: 14px;\n}\n.ribbon-group select.spacing-select {\n width: 150px;\n}\n.ribbon-group select.line-spacing-select {\n width: 112px;\n}\n.dve-body {\n display: flex;\n flex: 1;\n min-height: 0;\n min-width: 0;\n}\n.dve-canvas {\n flex: 1;\n min-height: 0;\n min-width: 0;\n max-height: none;\n overflow: auto;\n padding: 30px clamp(16px, 5vw, 70px) 60px;\n background: var(--canvas);\n overscroll-behavior: contain;\n}\n";
17087
17087
 
17088
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/ribbon-buttons.css?raw
17088
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon-buttons.css?raw
17089
17089
  var ribbon_buttons_default = "/* Word-style icon commands: small icon buttons, large stacked buttons and split colour buttons. */\n.ribbon-group button.ribbon-small {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n min-width: 28px;\n height: 28px;\n padding: 0;\n}\n.ribbon-group button.ribbon-large {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: 3px;\n width: 62px;\n height: 66px;\n padding: 4px 2px;\n font-size: 11px;\n line-height: 1.15;\n white-space: normal;\n text-align: center;\n}\n.ribbon-large > span {\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ribbon-stack {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.ribbon-split {\n display: inline-flex;\n align-items: center;\n}\n.ribbon-group .ribbon-split button.ribbon-color {\n position: relative;\n width: 28px;\n min-width: 28px;\n border-radius: 4px 0 0 4px;\n}\n.ribbon-color::after {\n position: absolute;\n right: 6px;\n bottom: 3px;\n left: 6px;\n height: 3px;\n background: var(--bar, transparent);\n outline: 1px solid var(--line);\n content: '';\n}\n.ribbon-group .ribbon-split .ribbon-caret {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n min-width: 14px;\n height: 28px;\n padding: 0;\n border-radius: 0 4px 4px 0;\n}\n.ribbon-popover {\n position: fixed;\n z-index: 1000;\n display: grid;\n grid-template-columns: repeat(6, 22px);\n gap: 4px;\n padding: 8px;\n border: 1px solid var(--line);\n border-radius: 6px;\n background: var(--surface);\n box-shadow: 0 6px 20px rgb(0 0 0 / 0.18);\n}\n.ribbon-popover .swatch {\n width: 22px;\n height: 22px;\n padding: 0;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--swatch);\n cursor: pointer;\n}\n.ribbon-popover .swatch:hover,\n.ribbon-popover .swatch:focus-visible {\n outline: 2px solid var(--blue);\n outline-offset: 1px;\n}\n.ribbon-popover .swatch-none {\n background: linear-gradient(135deg, transparent 46%, #c00000 46% 54%, transparent 54%);\n}\n.ribbon-group button.ribbon-inline {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n height: 28px;\n padding: 0 8px 0 6px;\n font-size: 12px;\n}\n.ribbon-group button.ribbon-large {\n min-height: 66px;\n overflow: hidden;\n}\n.ribbon-group:has(.ribbon-large) {\n max-width: none;\n flex-wrap: wrap;\n}\n/* A row of stacked dropdown commands (Layout > Page Setup) stays on one line at the panel height. */\n.ribbon-group:has(> .ribbon-menu:not(.ribbon-menu-compact)) {\n max-width: none;\n flex-wrap: nowrap;\n}\n.ribbon-group button.ribbon-inline {\n font-weight: 400;\n}\n.ribbon-group button.ribbon-large {\n width: 70px;\n}\n.ribbon-panel[data-panel='Table'] .ribbon-group button.ribbon-large {\n width: 80px;\n}\n\n/* Word-style dropdown command: the native select is transparent and covers the whole control. */\n.ribbon-menu {\n box-sizing: border-box;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 3px;\n width: 70px;\n height: 66px;\n padding: 4px 2px;\n border: 1px solid transparent;\n border-radius: 4px;\n color: var(--ink);\n font-size: 11px;\n line-height: 1.15;\n text-align: center;\n}\n.ribbon-menu:hover {\n border-color: var(--line);\n background: var(--accent-soft);\n}\n.ribbon-menu:focus-within {\n outline: 2px solid var(--blue);\n outline-offset: -1px;\n}\n.ribbon-menu > span {\n max-width: 100%;\n}\n.ribbon-menu > .ribbon-icon:last-of-type {\n margin-top: -2px;\n}\n.ribbon-menu-compact {\n flex-direction: row;\n width: 44px;\n height: 28px;\n padding: 0 4px;\n justify-content: center;\n gap: 2px;\n}\n.ribbon-menu-compact > .ribbon-icon:last-of-type {\n margin-top: 0;\n}\n.ribbon-group .ribbon-menu select.ribbon-menu-input {\n position: absolute;\n inset: 0;\n width: 100%;\n max-width: none;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n border: 0;\n}\n.ribbon-menu[data-dve-hidden] {\n display: none;\n}\n.ribbon-stack .ribbon-small,\n.ribbon-stack .ribbon-inline {\n height: 22px;\n}\n.ribbon-stack .ribbon-inline {\n justify-content: flex-start;\n}\n.ribbon-panel[data-panel='Header & Footer'] .ribbon-stack button.ribbon-inline {\n height: 22px;\n}\n.ribbon-panel[data-panel='Header & Footer'] button.ribbon-large {\n width: 112px;\n}\n.ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Editing'] {\n width: auto;\n min-width: 110px;\n}\n.dve-painting,\n.dve-painting * {\n cursor: copy;\n}\n";
17090
17090
 
17091
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/ribbon-gallery.css?raw
17091
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon-gallery.css?raw
17092
17092
  var ribbon_gallery_default = "/* Styles gallery: a scrolling strip of tiles with a preview of each style. */\n.ribbon-gallery {\n display: flex;\n gap: 3px;\n width: 216px;\n height: 66px;\n padding: 2px;\n overflow-x: auto;\n overflow-y: hidden;\n scroll-snap-type: x proximity;\n scrollbar-width: none;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n}\n.ribbon-group .ribbon-gallery .style-tile {\n flex: 0 0 78px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 58px;\n min-width: 0;\n padding: 3px 2px;\n border: 1px solid transparent;\n scroll-snap-align: start;\n}\n.style-sample {\n max-width: 100%;\n overflow: hidden;\n line-height: 1.1;\n white-space: nowrap;\n}\n.style-name {\n max-width: 100%;\n overflow: hidden;\n color: var(--muted);\n font-size: 10px;\n text-overflow: ellipsis;\n}\n.ribbon-group .ribbon-gallery .style-tile[aria-pressed='true'] {\n border-color: var(--blue);\n}\n.ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Styles'] {\n width: 270px;\n max-width: none;\n flex-wrap: nowrap;\n}\n.ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Styles'] .ribbon-stack {\n gap: 2px;\n}\n\n.ribbon-group[data-label='Section breaks'] {\n width: 210px;\n}\n.ribbon-group[data-label='Page numbers'] {\n width: 400px;\n}\n\n/* Language: labelled controls flow in short columns instead of one tall stack. */\n.ribbon-group[data-label='Language'] {\n flex: 0 0 auto;\n flex-direction: column;\n flex-wrap: wrap;\n align-content: flex-start;\n max-height: 86px;\n max-width: none;\n column-gap: 12px;\n overflow: hidden;\n}\n";
17093
17093
 
17094
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/ribbon-widgets.css?raw
17094
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon-widgets.css?raw
17095
17095
  var ribbon_widgets_default = ".dve-keytip {\n position: absolute;\n bottom: -2px;\n left: 50%;\n z-index: 70;\n transform: translateX(-50%);\n min-width: 16px;\n padding: 1px 4px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: #1f1f1f;\n color: #fff;\n font:\n 600 11px/14px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: center;\n pointer-events: none;\n}\n\n.ribbon-popover.dve-word-count {\n grid-template-columns: auto auto;\n gap: 4px 24px;\n padding: 10px 14px;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.dve-word-count strong {\n text-align: right;\n}\n\n.ribbon-spinner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 170px;\n font-size: 12px;\n white-space: nowrap;\n}\n.ribbon-panel[data-panel='Header & Footer'] .ribbon-group[data-label='Position'] {\n max-width: none;\n}\n.ribbon-panel[data-panel='Header & Footer'] .ribbon-group[data-label='Position'] .ribbon-spinner {\n width: auto;\n min-width: 280px;\n}\n.ribbon-panel[data-panel='Header & Footer'] .ribbon-spinner input {\n flex: none;\n}\n.ribbon-group .ribbon-spinner input {\n width: 64px;\n height: 24px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n}\n\n/* Editable combo boxes (font family and size). */\n.ribbon-combo {\n display: inline-flex;\n align-items: stretch;\n height: 26px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n}\n.ribbon-combo:focus-within {\n border-color: var(--blue);\n outline: 1px solid var(--blue);\n}\n.ribbon-combo.font-family-combo {\n width: 132px;\n}\n.ribbon-combo.font-size-combo {\n width: 58px;\n}\n.ribbon-combo input {\n flex: 1;\n min-width: 0;\n padding: 0 6px;\n border: 0;\n background: transparent;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n outline: none;\n}\n.ribbon-group .ribbon-combo .ribbon-combo-caret {\n width: 18px;\n min-width: 18px;\n height: 100%;\n border-radius: 0;\n}\n.ribbon-popover.ribbon-list {\n display: flex;\n flex-direction: column;\n gap: 0;\n min-width: 160px;\n max-height: 280px;\n overflow-y: auto;\n padding: 4px 0;\n}\n.ribbon-list button[role='option'] {\n padding: 4px 12px;\n border: 0;\n background: none;\n color: var(--ink);\n font:\n 14px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n cursor: pointer;\n}\n.ribbon-list button[role='option']:hover,\n.ribbon-list button[role='option']:focus-visible {\n background: var(--accent-soft);\n outline: none;\n}\n.ribbon-list button[aria-selected='true'] {\n color: var(--blue);\n font-weight: 600;\n}\n\n.ribbon-combo[data-dve-hidden] {\n display: none;\n}\n\n/* Tiles preview a style on paper, so a style's own colours stay legible in dark themes too. */\n.ribbon-group .ribbon-gallery .style-tile {\n background: #fff;\n color: #1f1f1f;\n}\n.ribbon-group .ribbon-gallery .style-tile:hover:not(:disabled) {\n background: #f3f7fc;\n border-color: #a8c4e6;\n}\n.ribbon-group .ribbon-gallery .style-tile[aria-pressed='true'] {\n border-color: var(--blue);\n background: #e8f0fa;\n}\n.ribbon-gallery .style-name {\n color: #555;\n}\n.ribbon-group .ribbon-gallery .style-tile:disabled {\n opacity: 0.6;\n}\n\n/* Disabled controls look disabled, and keyboard focus is always visible. */\n.ribbon-group button:disabled,\n.ribbon-group select:disabled,\n.ribbon-group input:disabled {\n opacity: 0.4;\n cursor: default;\n}\n.ribbon-menu:has(select:disabled),\n.ribbon-combo:has(input:disabled),\n.ribbon-spinner:has(input:disabled),\n.ribbon-split:has(button:disabled) {\n opacity: 0.4;\n}\n.ribbon-menu:has(select:disabled):hover {\n border-color: transparent;\n background: none;\n}\n.ribbon-group button:focus-visible {\n outline: 2px solid var(--blue);\n outline-offset: -2px;\n}\n.ribbon-menu:has(select:disabled) select,\n.ribbon-split:has(button:disabled) button:disabled {\n opacity: 1;\n}\n\n/* Dialog launcher: the small corner button of a group, as in Word. */\n.ribbon-group {\n position: relative;\n}\n.ribbon-group .ribbon-launcher {\n position: absolute;\n right: 2px;\n bottom: 0;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n min-width: 14px;\n height: 14px;\n padding: 0;\n color: var(--muted);\n}\n.ribbon-group .ribbon-launcher:hover:not(:disabled) {\n color: var(--ink);\n}\n";
17096
17096
 
17097
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/ribbon-styles-group.css?raw
17097
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon-styles-group.css?raw
17098
17098
  var ribbon_styles_group_default = "/* Styles group: gallery, previous/next/more strip, expanded gallery and pane. */\n.style-strip {\n display: flex;\n flex-direction: column;\n gap: 1px;\n width: 16px;\n}\n.ribbon-group .style-strip .style-strip-button {\n flex: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n min-width: 16px;\n height: 16px;\n min-height: 0;\n padding: 0;\n border-radius: 2px;\n}\n.ribbon-popover.styles-popover {\n display: block;\n max-height: min(70vh, 520px);\n max-width: 420px;\n overflow-y: auto;\n padding: 8px;\n}\n.styles-section-title {\n margin: 4px 2px 6px;\n color: var(--muted);\n font:\n 600 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.styles-grid {\n display: grid;\n grid-template-columns: repeat(4, 88px);\n gap: 4px;\n}\n.styles-popover .style-tile,\n.dve-styles-pane .style-tile {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 50px;\n padding: 4px 2px;\n border: 1px solid #d5d8dc;\n background: #fff;\n color: #1f1f1f;\n cursor: pointer;\n}\n.styles-popover .style-tile[aria-pressed='true'],\n.dve-styles-pane .style-tile[aria-pressed='true'] {\n border-color: var(--blue);\n background: #e8f0fa;\n}\n.styles-popover .style-tile:hover:not(:disabled),\n.dve-styles-pane .style-tile:hover:not(:disabled) {\n border-color: #a8c4e6;\n background: #f3f7fc;\n}\n.styles-commands {\n display: grid;\n gap: 2px;\n margin-top: 8px;\n padding-top: 6px;\n border-top: 1px solid var(--line);\n}\n.styles-command {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 8px;\n border: 0;\n border-radius: 3px;\n background: none;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n cursor: pointer;\n}\n.styles-command:hover:not(:disabled) {\n background: var(--accent-soft);\n}\n.styles-command:disabled {\n opacity: 0.4;\n cursor: default;\n}\n.dve-styles-pane {\n flex: none;\n width: 260px;\n min-height: 0;\n overflow-y: auto;\n padding: 10px 12px;\n border-left: 1px solid var(--line);\n background: var(--surface);\n color: var(--ink);\n}\n.dve-styles-pane[hidden] {\n display: none;\n}\n.dve-styles-pane-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.dve-styles-pane h2 {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n}\n.dve-styles-pane h3 {\n margin: 14px 0 6px;\n color: var(--muted);\n font:\n 600 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.dve-styles-pane-header button {\n border: 0;\n background: none;\n color: var(--muted);\n font-size: 18px;\n cursor: pointer;\n}\n.dve-styles-pane-list {\n display: grid;\n gap: 4px;\n}\n.dve-styles-pane .style-tile {\n flex-direction: row;\n justify-content: space-between;\n height: 34px;\n padding: 2px 10px;\n}\n.dve-styles-pane .style-name {\n color: #555;\n}\n";
17099
17099
 
17100
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/ribbon-popups.css?raw
17100
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon-popups.css?raw
17101
17101
  var ribbon_popups_default = "/* Editing: a row-height command with a caret menu, and the Go To panel. */\n.ribbon-split-inline {\n display: flex;\n align-items: center;\n height: 22px;\n}\n.ribbon-group .ribbon-split-inline .ribbon-inline {\n flex: 1;\n width: auto;\n}\n.ribbon-menu.ribbon-menu-caret {\n flex: none;\n width: 18px;\n height: 22px;\n padding: 0;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: 0;\n}\n.ribbon-menu.ribbon-menu-caret > .ribbon-icon:last-of-type {\n margin-top: 0;\n}\n.ribbon-popover.go-to-panel {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: 8px;\n width: 280px;\n padding: 10px;\n}\n.go-to-panel label {\n display: grid;\n gap: 4px;\n color: var(--muted);\n font:\n 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.go-to-panel select {\n height: 28px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n}\n.go-to-list {\n display: flex;\n flex-direction: column;\n max-height: 220px;\n overflow-y: auto;\n}\n.go-to-list button {\n overflow: hidden;\n padding: 5px 8px;\n border: 0;\n background: none;\n color: var(--ink);\n font:\n 13px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n text-overflow: ellipsis;\n cursor: pointer;\n}\n.go-to-list button:hover,\n.go-to-list button:focus-visible {\n background: var(--accent-soft);\n}\n.go-to-list p {\n margin: 6px 8px;\n color: var(--muted);\n font-size: 12px;\n}\n\n/* Insert > Table size picker. */\n.ribbon-popover.table-picker {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: 8px;\n width: 206px;\n padding: 10px;\n}\n.table-picker-caption {\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.table-picker-grid {\n display: grid;\n grid-template-columns: repeat(10, 18px);\n gap: 2px;\n outline: none;\n}\n.table-picker-grid:focus-visible {\n outline: 2px solid var(--blue);\n outline-offset: 2px;\n}\n.table-picker-grid [role='gridcell'] {\n width: 18px;\n height: 18px;\n border: 1px solid var(--line);\n background: var(--surface);\n cursor: pointer;\n}\n.table-picker-grid [role='gridcell'].active {\n border-color: var(--blue);\n background: color-mix(in srgb, var(--blue) 22%, transparent);\n}\n.table-picker-custom {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n padding-top: 6px;\n border-top: 1px solid var(--line);\n}\n.table-picker-custom label {\n display: grid;\n gap: 2px;\n color: var(--muted);\n font:\n 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.table-picker-custom input {\n height: 24px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n}\n.table-picker-insert {\n grid-column: 1 / -1;\n height: 26px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n cursor: pointer;\n}\n.table-picker-insert:hover {\n background: var(--accent-soft);\n}\n\n/* Colour picker: Theme Colors (ten columns over five variants), Standard Colors, More Colors. */\n.ribbon-popover.color-grid {\n display: block;\n width: 236px;\n padding: 8px 10px;\n}\n.color-grid-title {\n margin: 6px 0 4px;\n color: var(--muted);\n font:\n 600 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.color-grid-cells {\n display: grid;\n grid-template-columns: repeat(10, 20px);\n gap: 2px 3px;\n}\n.color-grid .swatch {\n width: 20px;\n height: 20px;\n}\n.color-grid-command {\n display: block;\n width: 100%;\n margin: 2px 0;\n padding: 5px 6px;\n border: 0;\n border-radius: 3px;\n background: none;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n cursor: pointer;\n}\n.color-grid-command:hover,\n.color-grid-command:focus-visible {\n background: var(--accent-soft);\n}\n.color-grid-input {\n position: absolute;\n width: 0;\n height: 0;\n padding: 0;\n border: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n/* Layout galleries: page thumbnails with a name and detail, for Margins, Size, Orientation, Columns. */\n.ribbon-menu-gallery select.ribbon-menu-input {\n pointer-events: none;\n}\n.ribbon-popover.ribbon-gallery-menu {\n display: flex;\n flex-direction: column;\n gap: 0;\n min-width: 220px;\n max-height: min(70vh, 460px);\n overflow-y: auto;\n padding: 4px;\n}\n.ribbon-gallery-menu button {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n border: 1px solid transparent;\n border-radius: 3px;\n background: none;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n cursor: pointer;\n}\n.ribbon-gallery-menu button:hover,\n.ribbon-gallery-menu button:focus-visible {\n border-color: var(--line);\n background: var(--accent-soft);\n outline: none;\n}\n.ribbon-gallery-menu button[aria-checked='true'] {\n border-color: var(--blue);\n}\n.gallery-words {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.gallery-name {\n font-weight: 600;\n}\n.gallery-detail {\n color: var(--muted);\n font-size: 11px;\n}\n.gallery-thumb {\n flex: none;\n}\n.gallery-thumb .thumb-page {\n fill: #fff;\n stroke: #8a8886;\n stroke-width: 0.8;\n}\n.gallery-thumb .thumb-line {\n stroke: #a19f9d;\n stroke-width: 1.2;\n}\n\n/* Collapsed groups: a narrow ribbon folds its rightmost groups into one dropdown button each. */\n.ribbon-overflow-button {\n display: none !important;\n}\n.ribbon-group[data-collapsed] {\n width: auto !important;\n min-width: 0;\n max-width: none;\n flex-wrap: nowrap;\n}\n.ribbon-group[data-collapsed] > :not(.ribbon-overflow-button) {\n display: none !important;\n}\n.ribbon-group[data-collapsed] > .ribbon-overflow-button {\n display: flex !important;\n}\n.ribbon-group button.ribbon-overflow-button[aria-expanded='true'] {\n border-color: var(--line);\n background: var(--accent-soft);\n}\n.ribbon-popover.ribbon-overflow-panel {\n display: block;\n padding: 6px 8px 2px;\n}\n.ribbon-overflow-panel .ribbon-group {\n height: 84px;\n max-width: none;\n padding-right: 2px;\n border: 0;\n}\n.ribbon-group[data-collapsed]::after {\n display: none;\n}\n/* The Language group's tall stack of fields reads as one column inside its dropdown. */\n.ribbon-overflow-panel .ribbon-group.multilingual-controls {\n width: 300px !important;\n height: auto;\n max-height: min(70vh, 420px);\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: stretch;\n padding-bottom: 20px;\n overflow-y: auto;\n}\n.gallery-thumb .thumb-edge-on {\n stroke: var(--ink);\n stroke-width: 1.6;\n}\n.gallery-thumb .thumb-edge-off {\n stroke: var(--muted);\n stroke-width: 1;\n stroke-dasharray: 1.5 1.5;\n}\n.gallery-thumb .thumb-line-dark {\n stroke: var(--ink);\n}\n.gallery-thumb .thumb-arrow {\n fill: none;\n stroke: var(--blue);\n stroke-width: 1.2;\n}\n.ribbon-gallery-menu .gallery-command {\n margin-top: 4px;\n padding-top: 8px;\n border-top: 1px solid var(--line);\n border-radius: 0;\n}\n";
17102
17102
 
17103
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/ribbon-polish.css?raw
17103
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon-polish.css?raw
17104
17104
  var ribbon_polish_default = "/* Ribbon polish: distinct pressed state and Word's accent hues on command icons. Loaded last. */\n:host {\n --ribbon-accent-blue: #2b7cd3;\n --ribbon-accent-green: #2f9e5f;\n --ribbon-accent-red: #d13438;\n --ribbon-accent-orange: #d9822b;\n}\n@media (prefers-color-scheme: dark) {\n :host(:not([theme='light'])) {\n --ribbon-accent-blue: #5ea5f0;\n --ribbon-accent-green: #5cc98a;\n --ribbon-accent-red: #f07a7d;\n --ribbon-accent-orange: #f0a35e;\n }\n}\n:host([theme='dark']) {\n --ribbon-accent-blue: #5ea5f0;\n --ribbon-accent-green: #5cc98a;\n --ribbon-accent-red: #f07a7d;\n --ribbon-accent-orange: #f0a35e;\n}\n\n/* Pressed reads darker than hover, and pressing a control gives immediate feedback. */\n.ribbon-group button[aria-pressed='true'] {\n border-color: color-mix(in srgb, var(--blue) 45%, transparent);\n background: color-mix(in srgb, var(--blue) 20%, transparent);\n}\n.ribbon-group button[aria-pressed='true']:hover:not(:disabled) {\n background: color-mix(in srgb, var(--blue) 30%, transparent);\n}\n.ribbon-group button:active:not(:disabled),\n.ribbon-menu:active:not(:has(select:disabled)) {\n background: color-mix(in srgb, var(--blue) 28%, transparent);\n}\n\n/* Accent hues (buttons only; a disabled control keeps its 0.4 opacity). */\n.ribbon-icon[data-icon='table'],\n.ribbon-icon[data-icon='find'],\n.ribbon-icon[data-icon='replace'],\n.ribbon-icon[data-icon='link'],\n.ribbon-icon[data-icon='crossReference'],\n.ribbon-icon[data-icon='toc'],\n.ribbon-icon[data-icon='updateTable'],\n.ribbon-icon[data-icon='header'],\n.ribbon-icon[data-icon='footer'],\n.ribbon-icon[data-icon='pageNumber'],\n.ribbon-icon[data-icon='pageNumberIcon'],\n.ribbon-icon[data-icon='margins'],\n.ribbon-icon[data-icon='orientation'],\n.ribbon-icon[data-icon='pageSize'],\n.ribbon-icon[data-icon='columns'],\n.ribbon-icon[data-icon='select'],\n.ribbon-icon[data-icon='paste'],\n.ribbon-icon[data-icon='borders'],\n.ribbon-icon[data-icon='rowAbove'],\n.ribbon-icon[data-icon='rowBelow'],\n.ribbon-icon[data-icon='columnLeft'],\n.ribbon-icon[data-icon='columnRight'] {\n color: var(--ribbon-accent-blue);\n}\n.ribbon-icon[data-icon='picture'],\n.ribbon-icon[data-icon='formatPicture'],\n.ribbon-icon[data-icon='formatPainter'],\n.ribbon-icon[data-icon='accept'],\n.ribbon-icon[data-icon='acceptAll'],\n.ribbon-icon[data-icon='spelling'],\n.ribbon-icon[data-icon='readAloud'] {\n color: var(--ribbon-accent-green);\n}\n.ribbon-icon[data-icon='reject'],\n.ribbon-icon[data-icon='rejectAll'],\n.ribbon-icon[data-icon='deleteRow'],\n.ribbon-icon[data-icon='deleteColumn'],\n.ribbon-icon[data-icon='deleteTable'],\n.ribbon-icon[data-icon='deleteComment'],\n.ribbon-icon[data-icon='clear'] {\n color: var(--ribbon-accent-red);\n}\n.ribbon-icon[data-icon='comment'],\n.ribbon-icon[data-icon='comments'],\n.ribbon-icon[data-icon='bookmark'],\n.ribbon-icon[data-icon='caption'],\n.ribbon-icon[data-icon='footnote'],\n.ribbon-icon[data-icon='endnote'],\n.ribbon-icon[data-icon='coverPage'] {\n color: var(--ribbon-accent-orange);\n}\n\n/* Icons never shrink to make room for a two-line caption, so every large icon is the same size. */\n.ribbon-menu > .ribbon-icon,\n.ribbon-large > .ribbon-icon {\n flex: none;\n}\n\n/* A two-line caption plus the caret must still fit the dropdown command's box. */\n.ribbon-menu:not(.ribbon-menu-compact):not(.ribbon-menu-caret) {\n gap: 1px;\n height: 72px;\n line-height: 1.1;\n}\n.ribbon-menu:not(.ribbon-menu-compact):not(.ribbon-menu-caret) > .ribbon-icon:last-of-type {\n margin-top: -3px;\n}\n";
17105
17105
 
17106
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/document.css?raw
17106
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/document.css?raw
17107
17107
  var document_default = ".dve-revision-insert {\n color: var(--dve-revision-color, inherit);\n text-decoration: underline;\n text-decoration-color: var(--dve-revision-color, currentColor);\n}\n.dve-revision-delete {\n color: var(--dve-revision-color, inherit);\n text-decoration: line-through;\n text-decoration-color: var(--dve-revision-color, currentColor);\n}\n/* Moved text, like Word: green, double underline at the destination, double strike at the source. */\n.dve-revision-move {\n --dve-revision-color: #2e7d32;\n text-decoration-style: double;\n}\n.dve-revision-hidden {\n display: none;\n}\n.dve-comment-range {\n background: rgba(255, 212, 0, 0.28);\n}\n.dve-paper {\n box-sizing: border-box;\n position: relative;\n flex: none;\n margin: 0 auto;\n background: var(--dve-page-color, #fff);\n color: #202124;\n box-shadow:\n 0 1px 3px #20212430,\n 0 4px 12px #20212420;\n outline: none;\n /* Single spacing and no paragraph gap unless the document's styles set them, as in Word. */\n font:\n 11pt/1.2 Calibri,\n Carlito,\n Arial,\n sans-serif;\n zoom: var(--dve-zoom, 1);\n}\n.dve-paper p {\n min-height: 1.2em;\n margin: 0;\n white-space: pre-wrap;\n}\n.dve-paper p:last-child {\n margin-bottom: 0;\n}\n/* The caret marks focus in the document, as in Word; no ring around the editable area. */\n.dve-paper .ProseMirror:focus,\n.dve-paper .ProseMirror:focus-visible {\n outline: none;\n}\n.dve-paper:focus {\n box-shadow:\n 0 1px 3px #20212430,\n 0 4px 12px #20212420,\n 0 0 0 1px var(--blue);\n}\n/* Columns follow the table's grid and cell widths (equal when it has none), as Word lays them out;\n tables add no space around themselves. */\n.dve-paper table {\n width: 100%;\n table-layout: fixed;\n border-collapse: collapse;\n margin: 0;\n}\n.dve-paper td {\n min-width: 44px;\n border: var(--dve-cell-border, 1px dashed #c8c6c4);\n vertical-align: top;\n}\n.dve-paper td p {\n margin: 0;\n}\n.dve-paper p[data-list-label]::before {\n content: attr(data-list-label);\n white-space: pre;\n user-select: none;\n}\n.dve-paper p[data-list-marker]:not([data-list-marker=''])::before {\n content: attr(data-list-marker);\n position: absolute;\n left: var(--dve-marker-left);\n text-indent: 0;\n font-family: var(--dve-marker-family);\n font-size: var(--dve-marker-size);\n font-weight: var(--dve-marker-weight);\n font-style: var(--dve-marker-style);\n color: var(--dve-marker-color);\n}\n.multilingual-controls {\n flex: 1 1 100%;\n align-items: flex-start;\n gap: 9px 14px;\n}\n.multilingual-language-control {\n display: grid;\n grid-template-columns: minmax(145px, 180px);\n gap: 4px;\n color: var(--muted);\n font-size: 11px;\n}\n.multilingual-language-control select,\n.multilingual-language-control input {\n box-sizing: border-box;\n width: 180px;\n}\n.multilingual-language-control input {\n height: 26px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n padding: 0 7px;\n color: var(--ink);\n font:\n 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.multilingual-note {\n align-self: end;\n max-width: 240px;\n color: var(--muted);\n font-size: 11px;\n}\n@media (max-width: 650px) {\n .ribbon-panel {\n min-height: 96px;\n padding: 6px;\n gap: 4px;\n }\n .ribbon-group {\n padding-right: 7px;\n }\n .ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Font'] {\n width: 340px;\n }\n .ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Paragraph'] {\n width: 280px;\n }\n .ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Editing'] {\n width: auto;\n }\n .ribbon-group button {\n min-width: 34px;\n min-height: 34px;\n }\n .ribbon-group select {\n max-width: min(150px, 42vw);\n }\n .dve-canvas {\n padding: 18px 8px 38px;\n align-items: flex-start;\n }\n .ribbon-group select.font-family-select {\n width: 120px;\n max-width: 38vw;\n }\n .ribbon-group select.font-size-select {\n width: 56px;\n }\n .ribbon-group select.spacing-select {\n width: min(128px, 36vw);\n }\n .ribbon-group select.line-spacing-select {\n width: min(112px, 32vw);\n }\n}\n.dve-break-marker {\n display: block;\n margin: 0.4em 0;\n padding: 2px 0;\n border-top: 1px dashed var(--muted);\n border-bottom: 1px dashed var(--muted);\n color: var(--muted);\n font-size: 10px;\n text-align: center;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n user-select: none;\n}\n.dve-note-reference {\n color: var(--blue);\n cursor: default;\n}\n.dve-header,\n.dve-footer {\n box-sizing: border-box;\n width: 816px;\n max-width: 100%;\n margin: 0 auto;\n padding: 10px clamp(16px, 5vw, 70px);\n background: var(--surface);\n color: var(--muted);\n font:\n 10pt/1.35 Calibri,\n Arial,\n sans-serif;\n}\n.dve-header {\n border-bottom: 1px dashed var(--line);\n}\n.dve-footer {\n border-top: 1px dashed var(--line);\n}\n.dve-header-footer-label {\n margin-bottom: 2px;\n color: var(--muted);\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n.dve-notes-container {\n box-sizing: border-box;\n width: 816px;\n max-width: 100%;\n margin: 12px auto 0;\n}\n.dve-notes {\n box-sizing: border-box;\n padding: 10px clamp(16px, 5vw, 70px);\n background: var(--surface);\n border-top: 1px solid var(--line);\n font:\n 10pt/1.35 Calibri,\n Arial,\n sans-serif;\n}\n.dve-notes-heading {\n margin: 0 0 6px;\n color: var(--ink);\n font-size: 12px;\n}\n.dve-note-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.dve-note-list li {\n display: flex;\n gap: 4px;\n align-items: baseline;\n margin-bottom: 4px;\n}\n.dve-note-marker {\n flex: none;\n color: var(--muted);\n}\n@media (prefers-reduced-motion: reduce) {\n * {\n scroll-behavior: auto !important;\n }\n}\n\n/* Print Layout: a read-only, paginated render kept beside the continuous\n editing surface (see print-layout.ts / print-layout-view.ts). */\n";
17108
17108
 
17109
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/print.css?raw
17109
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/print.css?raw
17110
17110
  var print_default = ".dve-print-pages {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 24px;\n margin: 0 auto;\n zoom: var(--dve-zoom, 1);\n}\n.dve-print-pages[hidden] {\n display: none;\n}\n.dve-print-page {\n position: relative;\n flex: none;\n background: var(--dve-page-color, #fff);\n color: #202124;\n box-shadow:\n 0 1px 3px #20212430,\n 0 4px 12px #20212420;\n overflow: hidden;\n}\n.dve-print-column {\n position: absolute;\n z-index: 1;\n}\n/* Floating pictures sit in front of text unless anchored behind it (wp:anchor/@behindDoc). */\n.dve-print-float {\n z-index: 2;\n}\n.dve-print-float-behind {\n z-index: 0;\n}\n.dve-print-picture-missing {\n box-sizing: border-box;\n border: 1px dashed #8a8886;\n background: #f3f2f1;\n}\n.dve-print-block {\n position: absolute;\n left: 0;\n width: 100%;\n}\n.dve-print-line {\n position: absolute;\n left: 0;\n width: 100%;\n font:\n 11pt/1.2 Calibri,\n Arial,\n sans-serif;\n cursor: text;\n}\n.dve-print-line span {\n position: absolute;\n top: 0;\n}\n.dve-print-row {\n position: absolute;\n left: 0;\n width: 100%;\n}\n/* Cells sit at their grid positions; borders come from the document (Word prints no gridlines). */\n.dve-print-cell {\n position: absolute;\n top: 0;\n box-sizing: border-box;\n}\n.dve-print-cell-content {\n position: absolute;\n bottom: 0;\n}\n@media print {\n .dve-ribbon,\n .dve-status,\n .multilingual-controls {\n display: none !important;\n }\n .dve-canvas {\n overflow: visible !important;\n padding: 0 !important;\n }\n .dve-paper {\n display: none !important;\n }\n .dve-print-pages {\n gap: 0 !important;\n zoom: 1 !important;\n }\n .dve-print-page {\n /* Like Word, page colours are not printed unless asked for. */\n background: #fff !important;\n box-shadow: none !important;\n break-after: page;\n }\n}\n.dve-print-header,\n.dve-print-footer {\n position: absolute;\n color: var(--ink);\n font-size: 11pt;\n pointer-events: none;\n}\n.dve-print-header p,\n.dve-print-footer p {\n margin: 0;\n}\n.dve-print-header table,\n.dve-print-footer table {\n width: 100%;\n border-collapse: collapse;\n}\n\n/* Complex field begin/code/separate/end markers: kept in the document, never shown. */\n.dve-field-marker {\n display: inline;\n font-size: 0;\n}\n\n/* TOC entries link to hidden _Toc bookmarks; Word draws them in the entry's style, not as links. */\na.dve-link[data-anchor^='_Toc'] {\n color: inherit;\n text-decoration: none;\n}\n\n/* Tabs sized to Word's tab stops by tab-stops-view.ts; leaders fill the tab's width. */\n.dve-tab {\n display: inline-block;\n overflow: hidden;\n white-space: pre;\n vertical-align: baseline;\n text-indent: 0;\n}\n.dve-tab-leader-dot,\n.dve-tab-leader-middleDot {\n background-image: radial-gradient(circle, currentColor 0.8px, transparent 1.1px);\n background-size: 4px 4px;\n background-repeat: repeat-x;\n background-position: right 0 bottom 0.25em;\n}\n.dve-tab-leader-hyphen {\n background-image: linear-gradient(to right, currentColor 50%, transparent 50%);\n background-size: 6px 1px;\n background-repeat: repeat-x;\n background-position: right 0 bottom 0.4em;\n}\n.dve-tab-leader-underscore,\n.dve-tab-leader-heavy {\n border-bottom: 1px solid currentColor;\n}\n.dve-tab-leader-heavy {\n border-bottom-width: 2px;\n}\n\n/* Footnotes above the bottom margin; the separator is Word's 2-inch rule. */\n.dve-print-footnotes {\n position: absolute;\n z-index: 1;\n}\n.dve-print-footnote-separator {\n position: absolute;\n top: -7px;\n left: 0;\n width: 192px;\n border-top: 1px solid currentColor;\n}\n.dve-print-footnote {\n position: absolute;\n left: 0;\n width: 100%;\n}\n\n[data-print-view] .dve-notes-container {\n display: none;\n}\n\n/* Word draws superscript and subscript at about two thirds size without growing the line. */\n.dve-paper sup,\n.dve-paper sub {\n font-size: 0.65em;\n line-height: 0;\n}\n/* Exact-height rows clip content that does not fit, as Word does. */\n.dve-print-cell {\n overflow: hidden;\n}\n.dve-print-paragraph-frame {\n position: absolute;\n top: 0;\n box-sizing: border-box;\n}\n\n/* View > Multiple Pages: Print Layout's sheets sit side by side and wrap, instead of one column. */\n.dve-canvas[data-multipage] .dve-print-pages {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: center;\n}\n\n/* Layout > Line Numbers: numbers in the left margin, one per printed line. */\n.dve-print-line-number {\n position: absolute;\n width: 40px;\n text-align: right;\n font:\n 10px 'Segoe UI',\n Arial,\n sans-serif;\n color: #444;\n pointer-events: none;\n}\n";
17111
17111
 
17112
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/chrome-titlebar.css?raw
17112
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/chrome-titlebar.css?raw
17113
17113
  var chrome_titlebar_default = ".dve-frame {\n position: relative;\n border: 0;\n box-shadow: none;\n}\n.dve-icon {\n flex: none;\n}\n.dve-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 6px;\n border: 0;\n border-radius: 4px;\n background: none;\n color: inherit;\n cursor: pointer;\n}\n.dve-icon-button:hover:not(:disabled),\n.dve-icon-button[aria-pressed='true'] {\n background: var(--word-soft);\n}\n.dve-icon-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n/* Title bar: drawn by the shared office-ui-title-bar; these colour it and style the account slot. */\n.dve-titlebar {\n flex: none;\n --office-title-bar-height: 40px;\n --office-title-bar-background: var(--chrome);\n --office-title-bar-border: var(--line);\n --office-title-bar-mark-background: var(--word);\n --office-title-bar-mark-foreground: var(--dve-primary-foreground);\n}\n.dve-title-actions {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n.dve-mode-select {\n height: 28px;\n margin-left: 4px;\n padding: 0 6px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n}\n";
17114
17114
 
17115
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/backstage.css?raw
17115
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/backstage.css?raw
17116
17116
  var backstage_default = "/* Backstage: the shared office-ui-backstage draws the frame; these colour it and style the pages. */\n.dve-backstage {\n --office-backstage-nav-width: 220px;\n --office-backstage-nav-background: var(--word);\n --office-backstage-nav-foreground: var(--dve-primary-foreground);\n --office-backstage-item-hover: var(--word-strong);\n z-index: 40;\n background: var(--surface);\n}\n.dve-backstage-content {\n overflow: auto;\n padding: 28px 40px;\n color: var(--ink);\n}\n.dve-backstage-content h2 {\n margin: 0 0 20px;\n font-size: 30px;\n font-weight: 300;\n}\n.dve-backstage-content h3 {\n margin: 24px 0 10px;\n font-size: 15px;\n font-weight: 600;\n}\n.dve-backstage-facts {\n display: grid;\n grid-template-columns: max-content minmax(0, 1fr);\n gap: 6px 24px;\n margin: 0;\n}\n.dve-backstage-facts dt {\n color: var(--muted);\n}\n.dve-backstage-facts dd {\n margin: 0;\n overflow-wrap: anywhere;\n}\n.dve-compatibility-notes {\n display: grid;\n gap: 8px;\n max-width: 760px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.dve-compatibility-notes li {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n border: 1px solid var(--line);\n border-radius: 6px;\n line-height: 1.45;\n}\n.dve-compatibility-notes .dve-icon {\n margin-top: 2px;\n color: #b7791f;\n}\n.dve-backstage-tile {\n display: inline-flex;\n flex-direction: column;\n gap: 8px;\n padding: 8px;\n border: 1px solid transparent;\n border-radius: 6px;\n background: none;\n color: var(--ink);\n font: inherit;\n cursor: pointer;\n}\n.dve-backstage-tile:hover {\n border-color: var(--line);\n background: var(--word-soft);\n}\n.dve-backstage-tile-preview {\n width: 150px;\n height: 190px;\n border: 1px solid var(--line);\n background: #fff;\n box-shadow: 0 1px 3px #0002;\n}\n.dve-backstage-primary {\n padding: 8px 18px;\n border: 0;\n border-radius: 4px;\n background: var(--word);\n color: var(--dve-primary-foreground);\n font: inherit;\n cursor: pointer;\n}\n.dve-backstage-muted {\n color: var(--muted);\n}\n\n.dve-backstage-title {\n margin: 0 0 4px;\n font-size: 26px;\n font-weight: 400;\n overflow-wrap: anywhere;\n}\n.dve-backstage-columns {\n display: grid;\n grid-template-columns: minmax(0, 1fr) 300px;\n gap: 40px;\n align-items: start;\n}\n.dve-backstage-properties {\n padding: 4px 0 0 24px;\n border-left: 1px solid var(--line);\n}\n.dve-backstage-properties h3 {\n margin-top: 0;\n}\n.dve-backstage-card {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n max-width: 760px;\n margin-bottom: 12px;\n padding: 14px 18px;\n border: 1px solid var(--line);\n border-radius: 6px;\n}\n.dve-backstage-card h3 {\n margin: 0 0 4px;\n}\n.dve-backstage-card p {\n margin: 0;\n}\n.dve-backstage-field {\n display: grid;\n gap: 4px;\n max-width: 420px;\n margin-bottom: 14px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-backstage-field input,\n.dve-backstage-field select {\n height: 32px;\n padding: 0 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font:\n 14px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.dve-backstage-home-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin: 24px 0;\n}\n.dve-backstage-toggle {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.dve-backstage-toggle input {\n width: 18px;\n height: 18px;\n}\n@media (max-width: 760px) {\n .dve-backstage-content {\n padding: 20px;\n }\n .dve-backstage-card {\n align-items: stretch;\n flex-direction: column;\n }\n .dve-backstage-columns {\n grid-template-columns: minmax(0, 1fr);\n }\n .dve-backstage-properties {\n padding-left: 0;\n border-left: 0;\n }\n}\n\n/* Customize Ribbon: one block per tab, one fieldset per group, a checkbox per command. */\n.dve-customize-tab h3 {\n margin: 18px 0 6px;\n}\n.dve-customize-group {\n margin: 0 0 8px;\n padding: 6px 10px 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n}\n.dve-customize-group legend {\n padding: 0 4px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-customize-row {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 180px;\n padding: 2px 8px 2px 0;\n font-size: 13px;\n}\n";
17117
17117
 
17118
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/status-dialogs.css?raw
17118
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/status-dialogs.css?raw
17119
17119
  var status_dialogs_default = "/* Status bar: drawn by the shared office-ui-status-bar; this only places it in the frame. */\n.dve-status {\n display: block;\n flex: none;\n min-width: 0;\n border-top: 1px solid var(--line);\n}\n\n@media (max-width: 760px) {\n .dve-backstage-content {\n padding: 20px;\n }\n}\n\n/* Dialogs: the shared office-ui-dialog draws the modal frame; these style the fields inside it. */\n.dve-dialog {\n --office-dialog-width: min(440px, calc(100vw - 32px));\n}\n/* The fields are the dialog's light-DOM children, laid out in the shared body. */\n.dve-dialog > :not([slot]) + :not([slot]) {\n margin-top: 10px;\n}\n.dve-dialog label {\n display: grid;\n gap: 4px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-dialog input,\n.dve-dialog select {\n height: 30px;\n padding: 0 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n}\n.dve-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n.dve-dialog-actions button {\n min-height: 30px;\n padding: 0 14px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n cursor: pointer;\n}\n.dve-dialog-actions .dve-dialog-primary {\n border-color: var(--word);\n background: var(--word);\n color: var(--dve-primary-foreground);\n}\n";
17120
17120
 
17121
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/chrome-document.css?raw
17121
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/chrome-document.css?raw
17122
17122
  var chrome_document_default = "/* Links, pictures and hidden text in the document */\n.dve-equation {\n display: inline-block;\n vertical-align: middle;\n max-width: 100%;\n font-family: 'Cambria Math', math, serif;\n}\n.dve-equation-display {\n display: block;\n margin: 0.5em 0;\n text-align: center;\n}\n.dve-equation-unavailable {\n color: var(--muted);\n font-size: 0.85em;\n}\n.dve-paper a.dve-link {\n color: var(--word);\n text-decoration: underline;\n cursor: text;\n}\n.dve-paper img.dve-image {\n max-width: 100%;\n height: auto;\n vertical-align: bottom;\n}\n.dve-paper .dve-image-placeholder {\n display: inline-grid;\n place-items: center;\n border: 1px dashed var(--line);\n background: var(--canvas);\n color: var(--muted);\n font-size: 11px;\n}\n.dve-paper .dve-image-placeholder:has(.dve-textbox-line) {\n place-items: start;\n align-content: start;\n overflow: hidden;\n padding: 4px 6px;\n box-sizing: border-box;\n text-align: left;\n border-style: solid;\n}\n.dve-paper .dve-textbox-line {\n display: block;\n color: var(--text, #1f1f1f);\n font-size: 12px;\n}\n.dve-paper:not([data-show-hidden]) .dve-hidden-text {\n display: none;\n}\n.dve-paper[data-show-hidden] .dve-hidden-text {\n opacity: 0.55;\n text-decoration: underline dotted;\n}\n\n/* Pictures: selection outline and proportional resize handle */\n.dve-paper .dve-picture {\n position: relative;\n display: inline-block;\n max-width: 100%;\n line-height: 0;\n}\n.dve-paper .dve-picture-selected {\n outline: 2px solid var(--word);\n outline-offset: 1px;\n}\n.dve-picture-handle {\n position: absolute;\n right: -5px;\n bottom: -5px;\n display: none;\n width: 10px;\n height: 10px;\n border: 1px solid var(--word);\n background: #fff;\n cursor: nwse-resize;\n}\n.dve-picture-selected .dve-picture-handle {\n display: block;\n}\n.dve-dialog textarea {\n min-height: 60px;\n padding: 6px 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n resize: vertical;\n}\n.dve-dialog-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n}\n.dve-dialog .dve-dialog-check {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--ink);\n}\n\n/* Header/footer editing (double-click a header or footer) */\n.dve-header-footer-slot[data-slot] {\n cursor: text;\n}\n.dve-header-footer-editing {\n outline: 1px dashed var(--word);\n outline-offset: 4px;\n}\n.dve-header-footer-editor .ProseMirror {\n outline: none;\n white-space: pre-wrap;\n}\n.dve-header-footer-editor .ProseMirror p {\n margin: 0;\n}\n\n/* Section break marks after the paragraph that ends a section */\n.dve-paper .dve-section-end::after {\n display: block;\n margin: 6px 0;\n border-top: 1px dotted var(--muted);\n border-bottom: 1px dotted var(--muted);\n color: var(--muted);\n content: attr(data-section-break);\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n user-select: none;\n}\n\n/* Floating pictures: an approximation of Word's text wrapping */\n.dve-paper .dve-float-left,\n.dve-header-footer-body .dve-float-left {\n float: left;\n margin: 2px 12px 6px 0;\n}\n.dve-paper .dve-float-right,\n.dve-header-footer-body .dve-float-right {\n float: right;\n margin: 2px 0 6px 12px;\n}\n.dve-paper .dve-float-block {\n display: block;\n width: fit-content;\n margin: 6px 0;\n}\n.dve-paper .dve-float-block-center {\n margin-right: auto;\n margin-left: auto;\n}\n.dve-paper .dve-float-block-right {\n margin-left: auto;\n}\n.dve-paper[data-show-marks] .ProseMirror p::after,\n.dve-paper[data-show-marks] .ProseMirror h1::after,\n.dve-paper[data-show-marks] .ProseMirror h2::after,\n.dve-paper[data-show-marks] .ProseMirror h3::after {\n color: var(--blue);\n content: '\\00b6';\n opacity: 0.7;\n pointer-events: none;\n}\n\n/* Font and Paragraph dialogs */\n.dve-format-dialog {\n --office-dialog-width: min(520px, calc(100vw - 32px));\n}\n.dve-format-dialog .dve-dialog-fieldset {\n display: grid;\n gap: 8px;\n margin: 0;\n padding: 8px 10px 10px;\n border: 1px solid var(--line);\n border-radius: 6px;\n}\n.dve-format-dialog legend {\n padding: 0 4px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-format-dialog .dve-dialog-cols {\n grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr));\n}\n.dve-format-dialog input[type='color'] {\n padding: 2px;\n}\n.dve-format-dialog .dve-dialog-fieldset > .dve-dialog-check {\n display: flex;\n}\n.dve-font-dialog .dve-dialog-fieldset:nth-of-type(1) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.dve-font-dialog .dve-font-tab-panel[hidden] {\n display: none;\n}\n.dve-font-tab-panel {\n display: grid;\n gap: 10px;\n}\n.dve-font-dialog .dve-font-tab-panel .dve-dialog-fieldset:has(.dve-dialog-cols) {\n grid-template-columns: 1fr;\n}\n.dve-font-tabs {\n display: flex;\n gap: 2px;\n border-bottom: 1px solid var(--line);\n}\n.dve-font-tabs button {\n background: transparent;\n border: 0;\n border-radius: 0;\n padding: 7px 14px;\n}\n.dve-font-tabs button[aria-selected='true'] {\n color: var(--word);\n border-bottom: 2px solid var(--word);\n font-weight: 600;\n}\n.dve-format-preview {\n display: grid;\n min-height: 54px;\n place-items: center;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: #fff;\n color: #000;\n overflow: hidden;\n}\n.dve-dialog input[type='checkbox'] {\n width: 16px;\n height: 16px;\n padding: 0;\n margin: 0;\n accent-color: var(--word);\n}\n.dve-format-dialog .dve-dialog-fieldset:has(> .dve-dialog-check):not(:has(> .dve-dialog-cols)) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 6px 12px;\n}\n.dve-format-dialog\n .dve-dialog-fieldset:has(> .dve-dialog-check):not(:has(> .dve-dialog-cols))\n legend {\n grid-column: 1 / -1;\n}\n\n/* View > Gridlines: a quarter-inch alignment grid over the page. */\n.dve-paper[data-show-gridlines] {\n background-image:\n linear-gradient(to right, #8ab4f855 1px, transparent 1px),\n linear-gradient(to bottom, #8ab4f855 1px, transparent 1px);\n background-size: 24px 24px;\n}\n\n.dve-dialog-message {\n min-height: 1.2em;\n margin: 0;\n color: #b3261e;\n font-size: 12px;\n}\n\n/* View > Ruler: inch ticks from the left margin, shaded margins and indent markers. */\n.dve-canvas > .dve-ruler {\n position: sticky;\n top: -30px;\n z-index: 6;\n flex: none;\n box-sizing: border-box;\n height: 22px;\n margin: -30px auto 8px;\n zoom: var(--dve-zoom, 1);\n border: 1px solid var(--line);\n background:\n linear-gradient(to right, #6b6f75 1px, transparent 1px) var(--dve-ruler-origin, 0) 100% / 96px\n 11px repeat-x,\n linear-gradient(to right, #6b6f75 1px, transparent 1px) var(--dve-ruler-origin, 0) 100% / 48px\n 8px repeat-x,\n linear-gradient(to right, #9aa0a6 1px, transparent 1px) var(--dve-ruler-origin, 0) 100% / 12px\n 5px repeat-x,\n #fff;\n color: #4a4d52;\n font:\n 9px 'Segoe UI',\n Arial,\n sans-serif;\n pointer-events: none;\n}\n.dve-ruler-margin-left,\n.dve-ruler-margin-right {\n position: absolute;\n top: 0;\n bottom: 0;\n background: #dfe3e8;\n}\n.dve-ruler-margin-left {\n left: 0;\n}\n.dve-ruler-margin-right {\n right: 0;\n}\n.dve-ruler-labels span {\n position: absolute;\n top: 1px;\n transform: translateX(-50%);\n}\n.dve-ruler-marker {\n pointer-events: auto;\n cursor: ew-resize;\n touch-action: none;\n position: absolute;\n width: 0;\n height: 0;\n margin-left: -4px;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dve-ruler-marker::after {\n content: '';\n position: absolute;\n inset: -6px -6px -6px -6px;\n margin-left: -4px;\n}\n.dve-ruler-marker-first-line {\n top: 1px;\n border-top: 6px solid #2b579a;\n}\n.dve-ruler-marker-left,\n.dve-ruler-marker-right {\n bottom: 1px;\n border-bottom: 6px solid #2b579a;\n}\n";
17123
17123
 
17124
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/page-navigator.css?raw
17124
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/page-navigator.css?raw
17125
17125
  var page_navigator_default = "/* Page thumbnail rail and ribbon customisation */\n[data-dve-hidden] {\n display: none !important;\n}\n.dve-pages-rail {\n display: flex;\n flex: none;\n flex-direction: column;\n box-sizing: border-box;\n width: 156px;\n min-height: 0;\n border-right: 1px solid var(--line);\n background: var(--surface);\n color: var(--ink);\n}\n.dve-pages-rail[hidden] {\n display: none;\n}\n.dve-pages-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 8px;\n border-bottom: 1px solid var(--line);\n font-size: 11px;\n font-weight: 600;\n}\n.dve-pages-close {\n border: 0;\n border-radius: 4px;\n background: none;\n color: var(--muted);\n font-size: 16px;\n line-height: 1;\n cursor: pointer;\n}\n.dve-pages-close:hover {\n background: var(--word-soft);\n}\n.dve-pages-message {\n margin: 0;\n padding: 12px 10px;\n color: var(--muted);\n font-size: 11px;\n line-height: 1.4;\n}\n.dve-pages-message[hidden],\n.dve-pages-list[hidden] {\n display: none;\n}\n.dve-pages-list {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 10px 0 16px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n}\n.dve-page-thumb {\n display: flex;\n flex: none;\n flex-direction: column;\n align-items: center;\n gap: 3px;\n padding: 4px;\n border: 2px solid transparent;\n border-radius: 4px;\n cursor: pointer;\n}\n.dve-page-thumb:hover {\n background: var(--word-soft);\n}\n.dve-page-thumb[aria-selected='true'] {\n border-color: var(--word);\n background: var(--word-soft);\n}\n.dve-page-thumb-sheet {\n position: relative;\n overflow: hidden;\n background: #fff;\n box-shadow: 0 1px 3px #20212440;\n pointer-events: none;\n}\n.dve-page-thumb-sheet .dve-print-page {\n position: absolute;\n top: 0;\n left: 0;\n box-shadow: none;\n}\n.dve-page-thumb-number {\n color: var(--muted);\n font-size: 11px;\n}\n.dve-page-thumb[aria-selected='true'] .dve-page-thumb-number {\n color: var(--ink);\n font-weight: 600;\n}\n@media print {\n .dve-pages-rail {\n display: none !important;\n }\n}\n";
17126
17126
 
17127
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/keyboard-menu.css?raw
17127
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/keyboard-menu.css?raw
17128
17128
  var keyboard_menu_default = "/* Keyboard shortcut help. The context menu is the shared office-ui-context-menu element. */\n.dve-shortcut-help {\n max-height: calc(100% - 180px);\n overflow: auto;\n width: min(560px, calc(100% - 32px));\n}\n.dve-shortcut-help .dve-shortcut-note {\n margin: 0;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-shortcut-help table {\n width: 100%;\n border-collapse: collapse;\n}\n.dve-shortcut-help th,\n.dve-shortcut-help td {\n padding: 5px 8px;\n border-bottom: 1px solid var(--dve-border);\n text-align: left;\n vertical-align: top;\n}\n.dve-shortcut-help th {\n color: var(--muted);\n font-size: 12px;\n font-weight: 600;\n}\n.dve-shortcut-help kbd {\n padding: 1px 6px;\n border: 1px solid var(--dve-border);\n border-radius: 4px;\n background: var(--surface);\n font:\n 12px/1.4 ui-monospace,\n 'SFMono-Regular',\n Consolas,\n monospace;\n white-space: nowrap;\n}\n.dve-canvas:focus-visible {\n outline-offset: -2px;\n}\n\n/* Command-level KeyTips sit on the control itself, fixed to the viewport. */\n.dve-keytip-command {\n position: fixed;\n bottom: auto;\n}\n.dve-keytip[hidden] {\n display: none;\n}\n";
17129
17129
 
17130
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/docx/styles/smartart.css?raw
17130
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/smartart.css?raw
17131
17131
  var smartart_default = "/* SmartArt: a read-only display of the diagram's saved drawing */\n.dve-smartart {\n position: relative;\n max-width: 100%;\n box-sizing: border-box;\n vertical-align: bottom;\n line-height: normal;\n}\n.dve-smartart:not(.dve-float-left):not(.dve-float-right):not(.dve-float-block) {\n display: inline-block;\n}\n.dve-smartart:focus-visible {\n outline: 2px solid var(--word);\n outline-offset: 2px;\n}\n.dve-smartart-selected {\n outline: 2px solid var(--word);\n outline-offset: 1px;\n}\n.dve-smartart-drawing {\n display: block;\n width: 100%;\n height: 100%;\n}\n.dve-smartart-box {\n overflow: auto;\n border: 1px dashed var(--line);\n background: var(--canvas);\n color: var(--text, #1f1f1f);\n font-size: 12px;\n}\n.dve-smartart-placeholder {\n display: block;\n padding: 6px 8px;\n}\n.dve-smartart-heading {\n display: block;\n color: var(--muted);\n font-size: 11px;\n}\n.dve-smartart-placeholder ul,\n.dve-smartart-notes ul {\n margin: 4px 0 0;\n padding-left: 18px;\n}\n.dve-smartart-info {\n position: absolute;\n top: 2px;\n right: 2px;\n display: none;\n width: 20px;\n height: 20px;\n padding: 0;\n border: 1px solid var(--line);\n border-radius: 50%;\n background: var(--surface, #fff);\n color: var(--muted);\n font: italic 700 12px/1 serif;\n cursor: pointer;\n}\n.dve-smartart:hover .dve-smartart-info,\n.dve-smartart:focus-within .dve-smartart-info,\n.dve-smartart-selected .dve-smartart-info,\n.dve-smartart-info[aria-expanded='true'] {\n display: block;\n}\n.dve-smartart-notes {\n position: absolute;\n z-index: 3;\n top: 26px;\n right: 2px;\n width: max-content;\n max-width: min(320px, 90%);\n padding: 6px 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface, #fff);\n color: var(--text, #1f1f1f);\n font-size: 11px;\n text-align: left;\n box-shadow: 0 2px 8px rgb(0 0 0 / 0.18);\n}\n.dve-smartart-notes[hidden] {\n display: none;\n}\n";
17132
17132
 
17133
17133
  // src/docx/styles/index.ts
@@ -20557,7 +20557,10 @@ function attachEditorInteractions(core, frame) {
20557
20557
  if (region === "document") return toDocument();
20558
20558
  const root = regionElement(region);
20559
20559
  if (region === "ribbon" && root) return root.focusTab();
20560
- (root?.querySelector("button:not([hidden])") ?? root)?.focus();
20560
+ const buttons = [
20561
+ ...(root?.shadowRoot ?? root)?.querySelectorAll("button:not([hidden])") ?? []
20562
+ ];
20563
+ (buttons.find((button3) => button3.getClientRects().length > 0) ?? root)?.focus();
20561
20564
  };
20562
20565
  const layers = [
20563
20566
  { element: void 0, isOpen: () => menu.isOpen, close: () => menu.close(), selfHandled: true },
@@ -67,7 +67,8 @@ export declare class OfficeUiSelect extends OfficeElement {
67
67
  active: number;
68
68
  choices: SelectChoice[];
69
69
  opened: boolean;
70
- static get observedAttributes(): string[];
70
+ /** Attributes the trigger renders from: a change repaints it (a relabel on a language switch). */
71
+ static watched: string[];
71
72
  private readonly internals;
72
73
  private readonly observer;
73
74
  private readonly menuId;
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- export { OFFICE_UI_TAGS, registerOfficeUi } from './chunk-A56QI2OA.js';
2
- export { OfficeUiSmartArt, defineSmartArt, renderDiagramDrawing } from './chunk-4VQ6S7QJ.js';
3
- export { EMOJI, OfficeUiAppRail, OfficeUiAvatar, OfficeUiCallControls, OfficeUiCallGrid, OfficeUiChannelList, OfficeUiChatComposer, OfficeUiChatList, OfficeUiPrejoin, QUICK_REACTIONS, TEAMS_TAGS, TeamsApp, TeamsController, TeamsElement, TeamsSettings, applyTeamsProps, colorFor, createTeams, dayLabel, defineAppRail, defineAvatar, defineCallControls, defineCallGrid, defineChannelList, defineChatComposer, defineChatList, definePrejoin, defineTeamsApp, defineTeamsSettings, formatElapsed, formatSize, formatTime, icon, listenTeamsEvents, loadConfig, loadIdentity, parseIceLines, registerTeams, safeStorage, saveConfig, saveIdentity, withStyles } from './chunk-AJ2J734X.js';
1
+ export { OFFICE_UI_TAGS, registerOfficeUi } from './chunk-QHY7U7KK.js';
2
+ export { OfficeUiSmartArt, defineSmartArt, renderDiagramDrawing } from './chunk-C66U34OA.js';
3
+ export { EMOJI, OfficeUiAppRail, OfficeUiAvatar, OfficeUiCallControls, OfficeUiCallGrid, OfficeUiChannelList, OfficeUiChatComposer, OfficeUiChatList, OfficeUiPrejoin, QUICK_REACTIONS, TEAMS_TAGS, TeamsApp, TeamsController, TeamsElement, TeamsSettings, applyTeamsProps, colorFor, createTeams, dayLabel, defineAppRail, defineAvatar, defineCallControls, defineCallGrid, defineChannelList, defineChatComposer, defineChatList, definePrejoin, defineTeamsApp, defineTeamsSettings, formatElapsed, formatSize, formatTime, icon, listenTeamsEvents, loadConfig, loadIdentity, parseIceLines, registerTeams, safeStorage, saveConfig, saveIdentity, withStyles } from './chunk-NEDNYLXX.js';
4
4
  export { THEME_CSS, THEME_STYLE_ID, installOfficeUiTheme, shadcnBridge, themeBridge } from './chunk-7QLJS57B.js';
5
- export { CONTROL_DEFINERS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, glyph, nextEnabledIndex, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-G4ZGQYBH.js';
5
+ export { CONTROL_DEFINERS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, glyph, nextEnabledIndex, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-4VKD3COE.js';
6
6
  export { createIconSvg, getIcon, listIcons, paintIcon, registerIcon } from './chunk-HZ422LTR.js';
7
- export { OfficeUiPresence, definePresence, initialsOf, participantsFromAwareness } from './chunk-V6W5DKJ6.js';
7
+ export { OfficeUiPresence, definePresence, initialsOf, participantsFromAwareness } from './chunk-4TSBX6J3.js';
8
8
  export { CONTRACT_REVISION, OfficeElement, controlStyles, flag, readFlag, triState, valueOn, withTokens } from './chunk-ZWBP2WTC.js';
9
9
  export { COMPACT, FOCUS_RING, OFFICE_TOKENS, TOUCH, tok } from './chunk-7Q7ZS2CC.js';
package/dist/presence.js CHANGED
@@ -1,3 +1,3 @@
1
- export { OfficeUiPresence, definePresence, initialsOf, participantsFromAwareness } from './chunk-V6W5DKJ6.js';
1
+ export { OfficeUiPresence, definePresence, initialsOf, participantsFromAwareness } from './chunk-4TSBX6J3.js';
2
2
  import './chunk-ZWBP2WTC.js';
3
3
  import './chunk-7Q7ZS2CC.js';
package/dist/smartart.js CHANGED
@@ -1,3 +1,3 @@
1
- export { OfficeUiSmartArt, defineSmartArt, renderDiagramDrawing } from './chunk-4VQ6S7QJ.js';
1
+ export { OfficeUiSmartArt, defineSmartArt, renderDiagramDrawing } from './chunk-C66U34OA.js';
2
2
  import './chunk-ZWBP2WTC.js';
3
3
  import './chunk-7Q7ZS2CC.js';
package/dist/teams.js CHANGED
@@ -1,7 +1,7 @@
1
- export { EMOJI, OfficeUiAppRail, OfficeUiAvatar, OfficeUiCallControls, OfficeUiCallGrid, OfficeUiChannelList, OfficeUiChatComposer, OfficeUiChatList, OfficeUiPrejoin, QUICK_REACTIONS, TEAMS_TAGS, TeamsApp, TeamsController, TeamsElement, TeamsSettings, applyTeamsProps, colorFor, createTeams, dayLabel, defineAppRail, defineAvatar, defineCallControls, defineCallGrid, defineChannelList, defineChatComposer, defineChatList, definePrejoin, defineTeamsApp, defineTeamsSettings, formatElapsed, formatSize, formatTime, icon, listenTeamsEvents, loadConfig, loadIdentity, parseIceLines, registerTeams, safeStorage, saveConfig, saveIdentity, withStyles } from './chunk-AJ2J734X.js';
1
+ export { EMOJI, OfficeUiAppRail, OfficeUiAvatar, OfficeUiCallControls, OfficeUiCallGrid, OfficeUiChannelList, OfficeUiChatComposer, OfficeUiChatList, OfficeUiPrejoin, QUICK_REACTIONS, TEAMS_TAGS, TeamsApp, TeamsController, TeamsElement, TeamsSettings, applyTeamsProps, colorFor, createTeams, dayLabel, defineAppRail, defineAvatar, defineCallControls, defineCallGrid, defineChannelList, defineChatComposer, defineChatList, definePrejoin, defineTeamsApp, defineTeamsSettings, formatElapsed, formatSize, formatTime, icon, listenTeamsEvents, loadConfig, loadIdentity, parseIceLines, registerTeams, safeStorage, saveConfig, saveIdentity, withStyles } from './chunk-NEDNYLXX.js';
2
2
  import './chunk-7QLJS57B.js';
3
- import './chunk-G4ZGQYBH.js';
3
+ import './chunk-4VKD3COE.js';
4
4
  import './chunk-HZ422LTR.js';
5
- import './chunk-V6W5DKJ6.js';
5
+ import './chunk-4TSBX6J3.js';
6
6
  import './chunk-ZWBP2WTC.js';
7
7
  import './chunk-7Q7ZS2CC.js';
package/dist/visio.js CHANGED
@@ -1,6 +1,6 @@
1
- import { attachKeyTips, registerControls, readOfficeProfile, sanitizeOfficeProfile, writeOfficeProfile } from './chunk-G4ZGQYBH.js';
1
+ import { attachKeyTips, registerControls, readOfficeProfile, sanitizeOfficeProfile, writeOfficeProfile } from './chunk-4VKD3COE.js';
2
2
  import { getIcon, registerIcon } from './chunk-HZ422LTR.js';
3
- import { definePresence } from './chunk-V6W5DKJ6.js';
3
+ import { definePresence } from './chunk-4TSBX6J3.js';
4
4
  import './chunk-ZWBP2WTC.js';
5
5
  import './chunk-7Q7ZS2CC.js';
6
6
  import { FOREIGN_VECTOR_SCENE_LIMITS, EMPTY_TEXT_SEARCH, EMPTY_EDIT_STATE, assertViewableDocument, indexDocumentText, searchDocumentText, validateSearchQuery, MAX_INPUT_BYTES, DocumentHistory, snapshotEdits, ForeignVectorBudget, compatibilityNotes, compatibilityText, inspectForeignVectorResource, copySnapshotScene, editErrorMessage, eventKeys, propertyKeys, TEXT_SEARCH_LIMITS, isEditCancellation, textSearchStatus } from 'ooxml-core/visio/ui';
@@ -1025,16 +1025,16 @@ summary::marker { color:var(--_vv-muted); font-size:10px; }
1025
1025
  @media(prefers-reduced-motion:reduce) { * { scroll-behavior:auto !important; } }
1026
1026
  `;
1027
1027
 
1028
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/visio/styles/backstage.css?raw
1028
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/visio/styles/backstage.css?raw
1029
1029
  var backstage_default = "/* Visio's File tab and backstage. */\n:host {\n position: relative;\n}\n/* The shared office-ui-backstage draws the File column; these style Visio's page content. */\n.backstage {\n --office-accent: var(--_vv-accent);\n --office-accent-foreground: var(--vv-accent-ink, #fff);\n}\n.backstage-page h1 {\n margin: 0 0 24px;\n font-size: 34px;\n font-weight: 300;\n}\n.backstage-page h2 {\n margin: 20px 0 8px;\n font-size: 16px;\n font-weight: 600;\n}\n.backstage-file {\n margin-top: 0 !important;\n font-size: 20px !important;\n font-weight: 400 !important;\n overflow-wrap: anywhere;\n}\n.backstage-facts {\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 8px 24px;\n max-width: 520px;\n margin: 0;\n font-size: 13px;\n}\n.backstage-facts dt {\n color: var(--_vv-muted);\n}\n.backstage-facts dd {\n margin: 0;\n overflow-wrap: anywhere;\n}\n.backstage-action {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n width: min(420px, 100%);\n min-height: 64px;\n margin: 0 0 10px;\n padding: 10px 16px;\n text-align: left;\n background: var(--_vv-surface);\n}\n.backstage-action strong {\n font-size: 14px;\n font-weight: 600;\n}\n.backstage-action span,\n.backstage-muted,\n.backstage-note-count {\n color: var(--_vv-muted);\n font-size: 12px;\n}\n.backstage-templates {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n.backstage-templates .backstage-action,\n.backstage-templates ::slotted(*) {\n width: 200px;\n min-height: 120px;\n}\n/* Account: the shared profile editor, then Visio's product information. */\n.backstage-page office-ui-account {\n max-width: 560px;\n}\n.backstage-product {\n margin-top: 24px;\n}\n/* Share with people: a live session between windows of this browser. */\n.share-panel {\n max-width: 560px;\n margin-bottom: 16px;\n}\n.share-panel h2 {\n margin-top: 0 !important;\n}\n.share-field {\n display: grid;\n gap: 4px;\n max-width: 320px;\n margin: 12px 0;\n font-size: 13px;\n}\n.share-room {\n min-height: 30px;\n padding: 2px 8px;\n border: 1px solid var(--_vv-border);\n border-radius: 3px;\n background: var(--_vv-surface);\n color: inherit;\n font: inherit;\n}\n.share-buttons button {\n min-height: 32px;\n padding: 0 16px;\n}\n.share-buttons button[hidden] {\n display: none;\n}\n.share-status {\n min-height: 20px;\n font-size: 13px;\n}\n";
1030
1030
 
1031
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/visio/styles/canvas.css?raw
1031
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/visio/styles/canvas.css?raw
1032
1032
  var canvas_default = "/*\n * Drawing canvas focus. SVG outlines are drawn in drawing units (inches here), so a browser\n * focus ring on a shape becomes a page-sized blob. Shapes show focus with a dashed accent\n * stroke instead, only for keyboard focus; selection keeps its solid accent stroke.\n */\n.paper [data-shape-id]:focus,\n.paper [data-shape-id]:focus-visible {\n outline: none;\n}\n.paper [data-shape-id]:focus-visible > [data-geometry] {\n stroke: var(--vv-focus, var(--_vv-accent)) !important;\n stroke-width: 0.04 !important;\n stroke-dasharray: 0.08 0.05;\n}\n";
1033
1033
 
1034
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/visio/styles/ribbon.css?raw
1034
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/visio/styles/ribbon.css?raw
1035
1035
  var ribbon_default = "/*\n * Microsoft Visio ribbon layout on the shared ooxml-ui controls. Viewer theme tokens feed the\n * shared --office-* tokens, so host themes still apply. Loaded after the legacy styles.ts.\n */\n:host {\n --office-foreground: var(--_vv-ink);\n --office-muted-foreground: var(--_vv-muted);\n --office-background: var(--_vv-surface);\n --office-surface: var(--_vv-accent-soft);\n --office-border: var(--_vv-border);\n --office-accent: var(--_vv-accent);\n --office-accent-foreground: var(--vv-accent-ink, #fff);\n --office-ring: var(--vv-focus, var(--_vv-accent));\n --office-font: 'Segoe UI', Arial, sans-serif;\n}\n\n/* Tab row: Quick Access Toolbar, then Visio's tabs. */\n.ribbon-head {\n display: flex;\n align-items: stretch;\n min-width: 0;\n border-bottom: 1px solid var(--_vv-border);\n}\n.qat {\n display: flex;\n align-items: center;\n gap: 0;\n padding: 0 6px;\n border-right: 1px solid var(--_vv-border);\n}\n.qat office-ui-button {\n --office-target-size: 30px;\n}\n.ribbon-head .ribbon-tabs {\n flex: 0 1 auto;\n min-width: 0;\n height: 36px;\n border-bottom: 0;\n overflow-x: auto;\n scrollbar-width: none;\n}\n.ribbon-head .ribbon-tabs button {\n flex: none;\n min-height: 35px;\n padding: 6px 12px;\n font-size: 13px;\n}\n\n/* Panels: groups of large commands and three-row stacks, as dense as Visio's. */\n.ribbon-content {\n min-height: 96px;\n padding: 2px 2px 0;\n}\n.ribbon-row {\n display: flex;\n flex-wrap: nowrap;\n align-items: stretch;\n gap: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n.ribbon-row office-ui-ribbon-group,\n.tools-content office-ui-ribbon-group {\n min-width: 0;\n}\noffice-ui-ribbon-group office-ui-button,\noffice-ui-ribbon-group office-ui-menu-button {\n --office-target-size: 24px;\n}\noffice-ui-ribbon-group [data-size='large'] {\n --office-target-size: 30px;\n}\noffice-ui-button[variant='stacked']::part(button) {\n min-width: 48px;\n min-height: 66px;\n padding: 2px 6px;\n font-size: 12px;\n}\noffice-ui-menu-button[variant='stacked']::part(button) {\n min-width: 48px;\n min-height: 50px;\n font-size: 12px;\n}\noffice-ui-ribbon-group [data-size='small']::part(button) {\n justify-content: flex-start;\n font-size: 12px;\n}\noffice-ui-ribbon-stack:not([orientation]) {\n justify-content: flex-start;\n padding-top: 2px;\n}\noffice-ui-ribbon-stack:not([orientation]) > * {\n min-height: 24px;\n}\noffice-ui-ribbon-group > office-ui-ribbon-stack > office-ui-ribbon-stack[orientation] {\n min-height: 32px;\n}\noffice-ui-select[data-combo] {\n --office-target-size: 24px;\n}\noffice-ui-menu-button[data-active]::part(button) {\n background: var(--_vv-accent-soft);\n box-shadow: inset 0 0 0 1px var(--_vv-accent);\n}\n[data-unsupported] {\n cursor: not-allowed;\n}\n.ribbon-check {\n display: flex;\n align-items: center;\n gap: 6px;\n min-height: 24px;\n padding: 0 6px;\n font-size: 12px;\n white-space: nowrap;\n cursor: pointer;\n}\n.ribbon-check[data-unsupported] {\n color: var(--_vv-muted);\n opacity: 0.6;\n}\n.ribbon-hint {\n display: none;\n}\n\n/* Drawing window with optional rulers. */\n.canvas-area {\n display: grid;\n flex: 1;\n min-width: 0;\n min-height: 0;\n grid-template-columns: 0 1fr;\n grid-template-rows: 0 1fr;\n}\n.canvas-area[data-ruler='true'] {\n grid-template-columns: 18px 1fr;\n grid-template-rows: 18px 1fr;\n}\n.canvas-area > .viewport {\n grid-column: 2;\n grid-row: 2;\n}\n.ruler,\n.ruler-corner {\n display: none;\n background: var(--_vv-surface);\n}\n.canvas-area[data-ruler='true'] > .ruler,\n.canvas-area[data-ruler='true'] > .ruler-corner {\n display: block;\n}\n.ruler-corner {\n grid-column: 1;\n grid-row: 1;\n border-right: 1px solid var(--_vv-border);\n border-bottom: 1px solid var(--_vv-border);\n}\n/* The shared office-ui-ruler draws ticks, labels and its own edge. */\n.ruler-h {\n grid-column: 2;\n grid-row: 1;\n}\n.ruler-v {\n grid-column: 1;\n grid-row: 2;\n}\n\n.page-bar {\n display: flex;\n flex: none;\n align-items: stretch;\n min-width: 0;\n border-top: 1px solid var(--_vv-border);\n background: var(--_vv-secondary);\n}\n.page-bar office-ui-menu-button {\n --office-target-size: 28px;\n flex: none;\n padding: 0 2px;\n}\n.page-tabs {\n flex: 1;\n min-width: 0;\n border-top: 0;\n}\noffice-ui-status-bar.status {\n gap: 16px;\n min-height: 29px;\n padding: 0 8px 0 12px;\n font-size: 11px;\n background: var(--_vv-surface);\n color: var(--_vv-muted);\n}\noffice-ui-status-item[value=''] {\n display: none;\n}\noffice-ui-status-item[data-page-status] {\n color: var(--_vv-ink);\n}\n.status-message {\n flex: 1;\n min-width: 0;\n}\n.viewport[data-tool='rectangle'],\n.viewport[data-tool='rectangle'] .paper [data-shape-id] {\n cursor: crosshair;\n}\n.viewport[data-tool='rectangle'] {\n touch-action: none;\n}\n.draw-preview {\n fill: var(--_vv-accent-soft);\n stroke: var(--_vv-accent);\n stroke-width: 1.5px;\n stroke-dasharray: 4 3;\n pointer-events: none;\n}\n.viewport[data-grid='true'] .paper {\n --_vv-grid-minor: rgb(0 0 0 / 7%);\n --_vv-grid-major: rgb(0 0 0 / 16%);\n background-image:\n linear-gradient(to right, var(--_vv-grid-major) 1px, transparent 1px),\n linear-gradient(to top, var(--_vv-grid-major) 1px, transparent 1px),\n linear-gradient(to right, var(--_vv-grid-minor) 1px, transparent 1px),\n linear-gradient(to top, var(--_vv-grid-minor) 1px, transparent 1px);\n background-size:\n var(--vv-inch, 96px) var(--vv-inch, 96px),\n var(--vv-inch, 96px) var(--vv-inch, 96px),\n calc(var(--vv-inch, 96px) / 4) calc(var(--vv-inch, 96px) / 4),\n calc(var(--vv-inch, 96px) / 4) calc(var(--vv-inch, 96px) / 4);\n background-position: left bottom;\n}\n:host(:fullscreen) {\n width: 100vw;\n height: 100vh;\n}\n\n@media (max-width: 760px) {\n .ribbon-row {\n flex: 1;\n min-width: 0;\n }\n .qat office-ui-button {\n --office-target-size: 44px;\n }\n .ribbon-tools .tools-content office-ui-ribbon-group {\n width: 100%;\n }\n office-ui-status-bar.status {\n gap: 4px;\n min-height: 48px;\n }\n office-ui-status-bar .notes-strip,\n office-ui-status-bar .status-message,\n office-ui-status-item[data-shape-status],\n office-ui-status-item[data-page-status] {\n display: none;\n }\n .zoom-controls {\n flex: 1;\n min-width: 0;\n --office-zoom-slider-width: 0;\n }\n}\n\n/* Visio's Tell me box sits right after the tabs. */\n.tell-me {\n flex: 0 1 280px;\n min-width: 140px;\n margin: 0 8px;\n --office-target-size: 28px;\n}\n.presentation-mode {\n --office-target-size: 24px;\n}\n@media (max-width: 760px) {\n .tell-me {\n display: none;\n }\n}\n";
1036
1036
 
1037
- // raw-css:/home/runner/work/ooxml/ooxml/packages/ui/src/visio/styles/shapes.css?raw
1037
+ // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/visio/styles/shapes.css?raw
1038
1038
  var shapes_default = "/* Visio's Shapes window: stencil views, More/Quick Shapes rows and a two-column master grid. */\n.shapes-pane {\n display: flex;\n flex: 0 0 232px;\n flex-direction: column;\n width: 232px;\n min-width: 0;\n overflow: hidden;\n border-right: 1px solid var(--_vv-border);\n background: var(--_vv-secondary);\n}\n.shapes-pane .pane-heading {\n height: 42px;\n font-size: 18px;\n font-weight: 400;\n color: var(--_vv-accent);\n}\n.pane-collapse {\n min-height: 28px;\n width: 28px;\n padding: 0;\n border-color: transparent;\n background: transparent;\n font-size: 18px;\n line-height: 1;\n}\n.shapes-views {\n display: flex;\n gap: 14px;\n padding: 4px 12px 0;\n border-bottom: 1px solid var(--_vv-border);\n}\n.shapes-views button {\n position: relative;\n min-height: 28px;\n padding: 2px 0 6px;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--_vv-muted);\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n}\n.shapes-views button[aria-selected='true'] {\n color: var(--_vv-ink);\n}\n.shapes-views button[aria-selected='true']::after {\n content: '';\n position: absolute;\n inset: auto 0 -1px;\n height: 2px;\n background: var(--_vv-accent);\n}\n#shapes-stencils,\n#shapes-search {\n flex: 1;\n min-height: 0;\n overflow: auto;\n padding: 4px 0 8px;\n}\n.shapes-row {\n display: flex;\n align-items: center;\n width: 100%;\n min-height: 30px;\n padding: 0 12px;\n border: 0;\n border-radius: 0;\n background: transparent;\n font-size: 12px;\n text-align: left;\n}\n.shapes-row::after {\n content: '\u203A';\n margin-left: auto;\n font-size: 15px;\n}\n.stencil-title {\n margin: 2px 0;\n padding: 6px 12px;\n border-left: 3px solid var(--_vv-accent);\n background: var(--_vv-accent-soft);\n font-size: 12px;\n font-weight: 600;\n}\n.masters {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2px;\n margin: 0;\n padding: 4px 6px;\n list-style: none;\n}\n.masters li[hidden] {\n display: none;\n}\n.master {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n min-height: 40px;\n padding: 4px 6px;\n border-color: transparent;\n background: transparent;\n font-size: 11px;\n line-height: 1.2;\n text-align: left;\n cursor: grab;\n}\n.master svg {\n flex: none;\n width: 28px;\n height: 28px;\n fill: var(--_vv-surface);\n stroke: var(--_vv-accent);\n stroke-width: 1.2;\n stroke-linejoin: round;\n}\n.master[data-unsupported] {\n cursor: not-allowed;\n opacity: 0.45;\n}\n.master[data-unsupported]:hover {\n border-color: transparent;\n background: transparent;\n}\n.shapes-search-field {\n display: block;\n width: calc(100% - 24px);\n margin: 6px 12px;\n}\n.shapes-empty {\n margin: 8px 12px;\n color: var(--_vv-muted);\n font-size: 12px;\n}\n@media (max-width: 760px) {\n .shapes-pane {\n position: absolute;\n inset: 0 auto 0 0;\n z-index: 3;\n width: min(260px, 100%);\n box-shadow: 8px 0 24px #0002;\n }\n .master {\n min-height: 44px;\n }\n}\n.shapes-strip {\n display: flex;\n flex: 0 0 28px;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n width: 28px;\n min-width: 28px;\n padding: 8px 0;\n border: 0;\n border-right: 1px solid var(--_vv-border);\n border-radius: 0;\n background: var(--_vv-secondary);\n color: var(--_vv-accent);\n font-size: 16px;\n}\n.shapes-strip[hidden] {\n display: none;\n}\n.shapes-strip-label {\n writing-mode: vertical-rl;\n color: var(--_vv-ink);\n font-size: 12px;\n}\n/* Visio's floating Pan & Zoom window. */\n.pan-zoom {\n position: absolute;\n right: 16px;\n bottom: 16px;\n z-index: 5;\n width: 240px;\n border: 1px solid var(--_vv-border);\n background: var(--_vv-surface);\n box-shadow: 0 6px 20px rgb(0 0 0 / 18%);\n}\n.pan-zoom[hidden] {\n display: none;\n}\n.pan-zoom-heading {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 2px 4px 2px 10px;\n border-bottom: 1px solid var(--_vv-border);\n font-size: 12px;\n font-weight: 600;\n}\n.pan-zoom-close {\n min-height: 24px;\n width: 24px;\n padding: 0;\n border-color: transparent;\n background: transparent;\n}\n.pan-zoom-view {\n display: grid;\n place-items: center;\n height: 180px;\n padding: 8px;\n background: var(--_vv-bg);\n cursor: crosshair;\n touch-action: none;\n}\n.pan-zoom-view svg {\n max-width: 100%;\n max-height: 100%;\n background: #fff;\n box-shadow: 0 1px 3px rgb(0 0 0 / 20%);\n}\n.pan-zoom-frame {\n fill: rgb(220 38 38 / 8%);\n stroke: #dc2626;\n stroke-width: 2px;\n}\n";
1039
1039
 
1040
1040
  // src/visio/styles/index.ts