pptx-vanilla-viewer 3.17.0 → 3.18.0

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 +1 @@
1
- 'use strict';var chunkE5YBMWZK_cjs=require('./chunk-E5YBMWZK.cjs'),chunkANLE2GSJ_cjs=require('./chunk-ANLE2GSJ.cjs');require('./chunk-B5PFHICE.cjs');Object.defineProperty(exports,"playTransitionOverlay",{enumerable:true,get:function(){return chunkE5YBMWZK_cjs.d}});Object.defineProperty(exports,"CINEMATIC_TRANSITION_KEYFRAMES",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Ph}});Object.defineProperty(exports,"DEFAULT_MORPH_DURATION_MS",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.ld}});Object.defineProperty(exports,"DEFAULT_TRANSITION_DURATION_MS",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.kd}});Object.defineProperty(exports,"EASE",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.nd}});Object.defineProperty(exports,"INSTANT",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.jd}});Object.defineProperty(exports,"P14_TRANSITION_KEYFRAMES",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Lh}});Object.defineProperty(exports,"P14_TRANSITION_KEYFRAMES_2",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Mh}});Object.defineProperty(exports,"P14_TRANSITION_KEYFRAMES_ALL",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Nh}});Object.defineProperty(exports,"RANDOM_ELIGIBLE_TYPES",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.id}});Object.defineProperty(exports,"SLIDE_TRANSITION_KEYFRAMES",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Rh}});Object.defineProperty(exports,"SLIDE_TRANSITION_KEYFRAMES_CSS",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Sh}});Object.defineProperty(exports,"TRANSITION_SPEED_DURATION_MS",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.md}});Object.defineProperty(exports,"WHEEL_SPOKE_COUNTS",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.od}});Object.defineProperty(exports,"getCinematicTransitionAnimations",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Oh}});Object.defineProperty(exports,"getP14TransitionAnimations",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Th}});Object.defineProperty(exports,"getSlideTransitionAnimations",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Uh}});Object.defineProperty(exports,"resolveDirection",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.fd}});Object.defineProperty(exports,"resolveDirection8",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.gd}});Object.defineProperty(exports,"resolveOrientation",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.hd}});Object.defineProperty(exports,"resolveSlideTransition",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Vh}});Object.defineProperty(exports,"resolveTransitionDurationMs",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.Wh}});Object.defineProperty(exports,"resolveWheelSpokeCount",{enumerable:true,get:function(){return chunkANLE2GSJ_cjs.pd}});
1
+ 'use strict';var chunkEMSE4OQH_cjs=require('./chunk-EMSE4OQH.cjs'),chunkD7BK5MWN_cjs=require('./chunk-D7BK5MWN.cjs');require('./chunk-B5PFHICE.cjs');Object.defineProperty(exports,"playTransitionOverlay",{enumerable:true,get:function(){return chunkEMSE4OQH_cjs.d}});Object.defineProperty(exports,"CINEMATIC_TRANSITION_KEYFRAMES",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Ph}});Object.defineProperty(exports,"DEFAULT_MORPH_DURATION_MS",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.nd}});Object.defineProperty(exports,"DEFAULT_TRANSITION_DURATION_MS",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.md}});Object.defineProperty(exports,"EASE",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.pd}});Object.defineProperty(exports,"INSTANT",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.ld}});Object.defineProperty(exports,"P14_TRANSITION_KEYFRAMES",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Lh}});Object.defineProperty(exports,"P14_TRANSITION_KEYFRAMES_2",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Mh}});Object.defineProperty(exports,"P14_TRANSITION_KEYFRAMES_ALL",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Nh}});Object.defineProperty(exports,"RANDOM_ELIGIBLE_TYPES",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.kd}});Object.defineProperty(exports,"SLIDE_TRANSITION_KEYFRAMES",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Rh}});Object.defineProperty(exports,"SLIDE_TRANSITION_KEYFRAMES_CSS",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Sh}});Object.defineProperty(exports,"TRANSITION_SPEED_DURATION_MS",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.od}});Object.defineProperty(exports,"WHEEL_SPOKE_COUNTS",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.qd}});Object.defineProperty(exports,"getCinematicTransitionAnimations",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Oh}});Object.defineProperty(exports,"getP14TransitionAnimations",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Th}});Object.defineProperty(exports,"getSlideTransitionAnimations",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Uh}});Object.defineProperty(exports,"resolveDirection",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.hd}});Object.defineProperty(exports,"resolveDirection8",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.id}});Object.defineProperty(exports,"resolveOrientation",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.jd}});Object.defineProperty(exports,"resolveSlideTransition",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Vh}});Object.defineProperty(exports,"resolveTransitionDurationMs",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.Wh}});Object.defineProperty(exports,"resolveWheelSpokeCount",{enumerable:true,get:function(){return chunkD7BK5MWN_cjs.rd}});
@@ -1,2 +1,2 @@
1
- import { $t as SlideTransitionAnimations, Et as RANDOM_ELIGIBLE_TYPES, Fn as getSlideTransitionAnimations, Gn as resolveDirection8, Ht as SLIDE_TRANSITION_KEYFRAMES, Jn as resolveTransitionDurationMs, Kn as resolveOrientation, M as DEFAULT_TRANSITION_DURATION_MS, Mn as getCinematicTransitionAnimations, Mt as ResolvedDirection8, N as EASE, Nn as getP14TransitionAnimations, Tn as WHEEL_SPOKE_COUNTS, Ut as SLIDE_TRANSITION_KEYFRAMES_CSS, Wn as resolveDirection, Yn as resolveWheelSpokeCount, Z as INSTANT, _t as P14_TRANSITION_KEYFRAMES_ALL, gt as P14_TRANSITION_KEYFRAMES_2, ht as P14_TRANSITION_KEYFRAMES, j as DEFAULT_MORPH_DURATION_MS, jt as ResolvedDirection, n as playTransitionOverlay, nn as TRANSITION_SPEED_DURATION_MS, p as CINEMATIC_TRANSITION_KEYFRAMES, qn as resolveSlideTransition, t as TransitionOverlayParams } from "./transition-overlay-DjUk9Dpn.js";
1
+ import { $t as SlideTransitionAnimations, Et as RANDOM_ELIGIBLE_TYPES, Fn as getSlideTransitionAnimations, Gn as resolveDirection8, Ht as SLIDE_TRANSITION_KEYFRAMES, Jn as resolveTransitionDurationMs, Kn as resolveOrientation, M as DEFAULT_TRANSITION_DURATION_MS, Mn as getCinematicTransitionAnimations, Mt as ResolvedDirection8, N as EASE, Nn as getP14TransitionAnimations, Tn as WHEEL_SPOKE_COUNTS, Ut as SLIDE_TRANSITION_KEYFRAMES_CSS, Wn as resolveDirection, Yn as resolveWheelSpokeCount, Z as INSTANT, _t as P14_TRANSITION_KEYFRAMES_ALL, gt as P14_TRANSITION_KEYFRAMES_2, ht as P14_TRANSITION_KEYFRAMES, j as DEFAULT_MORPH_DURATION_MS, jt as ResolvedDirection, n as playTransitionOverlay, nn as TRANSITION_SPEED_DURATION_MS, p as CINEMATIC_TRANSITION_KEYFRAMES, qn as resolveSlideTransition, t as TransitionOverlayParams } from "./transition-overlay-BBrtzGDc.js";
2
2
  export { CINEMATIC_TRANSITION_KEYFRAMES, DEFAULT_MORPH_DURATION_MS, DEFAULT_TRANSITION_DURATION_MS, EASE, INSTANT, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, RANDOM_ELIGIBLE_TYPES, type ResolvedDirection, type ResolvedDirection8, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, type SlideTransitionAnimations, TRANSITION_SPEED_DURATION_MS, type TransitionOverlayParams, WHEEL_SPOKE_COUNTS, getCinematicTransitionAnimations, getP14TransitionAnimations, getSlideTransitionAnimations, playTransitionOverlay, resolveDirection, resolveDirection8, resolveOrientation, resolveSlideTransition, resolveTransitionDurationMs, resolveWheelSpokeCount };
package/dist/internals.js CHANGED
@@ -1 +1 @@
1
- export{d as playTransitionOverlay}from'./chunk-465U4ONU.js';export{Ph as CINEMATIC_TRANSITION_KEYFRAMES,ld as DEFAULT_MORPH_DURATION_MS,kd as DEFAULT_TRANSITION_DURATION_MS,nd as EASE,jd as INSTANT,Lh as P14_TRANSITION_KEYFRAMES,Mh as P14_TRANSITION_KEYFRAMES_2,Nh as P14_TRANSITION_KEYFRAMES_ALL,id as RANDOM_ELIGIBLE_TYPES,Rh as SLIDE_TRANSITION_KEYFRAMES,Sh as SLIDE_TRANSITION_KEYFRAMES_CSS,md as TRANSITION_SPEED_DURATION_MS,od as WHEEL_SPOKE_COUNTS,Oh as getCinematicTransitionAnimations,Th as getP14TransitionAnimations,Uh as getSlideTransitionAnimations,fd as resolveDirection,gd as resolveDirection8,hd as resolveOrientation,Vh as resolveSlideTransition,Wh as resolveTransitionDurationMs,pd as resolveWheelSpokeCount}from'./chunk-255BQTPS.js';import'./chunk-62D2TNHX.js';
1
+ export{d as playTransitionOverlay}from'./chunk-7OEVL4PF.js';export{Ph as CINEMATIC_TRANSITION_KEYFRAMES,nd as DEFAULT_MORPH_DURATION_MS,md as DEFAULT_TRANSITION_DURATION_MS,pd as EASE,ld as INSTANT,Lh as P14_TRANSITION_KEYFRAMES,Mh as P14_TRANSITION_KEYFRAMES_2,Nh as P14_TRANSITION_KEYFRAMES_ALL,kd as RANDOM_ELIGIBLE_TYPES,Rh as SLIDE_TRANSITION_KEYFRAMES,Sh as SLIDE_TRANSITION_KEYFRAMES_CSS,od as TRANSITION_SPEED_DURATION_MS,qd as WHEEL_SPOKE_COUNTS,Oh as getCinematicTransitionAnimations,Th as getP14TransitionAnimations,Uh as getSlideTransitionAnimations,hd as resolveDirection,id as resolveDirection8,jd as resolveOrientation,Vh as resolveSlideTransition,Wh as resolveTransitionDurationMs,rd as resolveWheelSpokeCount}from'./chunk-4XVBHRN5.js';import'./chunk-62D2TNHX.js';
package/dist/styles.css CHANGED
@@ -121,97 +121,21 @@
121
121
  here; the shell rules live in `parity-dialog-css`. */
122
122
  .pptxv-autosave-recovery .pptxv-parity-dialog { width: min(420px, calc(100vw - 32px)); }
123
123
  .pptxv-autosave-recovery .pptxv-parity-footer { flex-wrap: wrap; }
124
- .pptxv-autosave-recovery .pptxv-parity-footer button:disabled { cursor: not-allowed; opacity: .55; }
125
124
  .pptxv-autosave-recovery-message { margin: 0; overflow-wrap: anywhere; line-height: 1.45; }
126
125
  .pptxv-autosave-recovery-age { margin: 0; color: var(--pptx-muted-foreground); font-size: 11px; }
127
126
 
128
- /* ── PowerPoint-style title bar ─────────────────────────────────────── */
129
- .pptxv-titlebar {
130
- position: relative;
131
- display: flex;
132
- align-items: center;
133
- gap: 4px;
134
- height: 36px;
135
- padding: 0 8px;
136
- border-bottom: 1px solid var(--pptx-border);
137
- background: var(--pptx-card);
138
- color: var(--pptx-card-foreground);
139
- font-size: 11px;
140
- user-select: none;
141
- }
142
- .pptxv-titlebar-logo {
143
- display: inline-grid;
144
- width: 20px;
145
- height: 20px;
146
- place-items: center;
147
- border-radius: 3px;
148
- background: #c43e1c;
149
- color: #fff;
150
- font-size: 10px;
151
- font-weight: 700;
152
- }
153
- .pptxv-titlebar-autosave, .pptxv-titlebar-file { display: inline-flex; align-items: center; gap: 5px; min-width: 0; }
154
- .pptxv-titlebar-autosave-label, .pptxv-titlebar-status { color: var(--pptx-muted-foreground); white-space: nowrap; }
155
- .pptxv-titlebar-switch {
156
- position: relative;
157
- width: 28px;
158
- height: 14px;
159
- padding: 0;
160
- border: 0;
161
- border-radius: 999px;
162
- background: var(--pptx-muted-foreground);
163
- cursor: pointer;
164
- }
165
- .pptxv-titlebar-switch.is-on { background: var(--pptx-primary); }
166
- /* The host passed `autosave: false`: the switch is a policy the user cannot
167
- override, so it reads as unavailable instead of silently doing nothing. */
168
- .pptxv-titlebar-switch.is-disabled { opacity: .45; cursor: not-allowed; }
169
- .pptxv-titlebar-switch-knob { position: absolute; top: 2px; left: 2px; width: 10px; height: 10px; border-radius: 50%; background: #fff; transition: transform 120ms ease; }
170
- /* The knob is parked at its "off" offset, so the travel is the difference
171
- between the two offsets, not the "on" offset itself. */
172
- .pptxv-titlebar-switch.is-on .pptxv-titlebar-switch-knob { transform: translateX(13px); }
173
- .pptxv-titlebar-switch:focus-visible, .pptxv-titlebar-btn:focus-visible { outline: 2px solid var(--pptx-ring); outline-offset: 1px; }
127
+ /* ── PowerPoint-style title bar ───────────────────────────────────────
128
+ The shared pptx-ui-title-bar owns its own layout, metrics and responsive rules;
129
+ only host-owned slotted parts (the AI toggle) are styled here. */
130
+ .pptxv-titlebar, .pptxv-qat-strip { display: block; }
174
131
  .pptxv-titlebar-btn { width: 24px; height: 24px; }
175
132
  .pptxv-titlebar-btn:hover:not(:disabled) { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
176
- .pptxv-titlebar-sep { width: 1px; height: 16px; background: var(--pptx-border); }
177
- .pptxv-titlebar-filename { overflow: hidden; max-width: 180px; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 500; }
178
- .pptxv-titlebar-dot { color: var(--pptx-muted-foreground); }
179
- .pptxv-titlebar-status.is-error { color: #dc2626; }
180
- .pptxv-titlebar-status.is-saving { color: #ca8a04; }
181
- /*
182
- * Flex-based centering (not position:absolute + left:50%): an absolutely
183
- * positioned box centers on the FULL bar width regardless of how much room
184
- * the file name / status text on the left actually uses, so a longer status
185
- * message (e.g. "Saved to this PC") gets visually covered by the search box
186
- * instead of the two ever sharing space. flex:1 here reserves the real
187
- * remaining width between the file group and the bar's end, and centers the
188
- * search box within that.
189
- */
190
- .pptxv-titlebar-search { flex: 1 1 auto; display: flex; justify-content: center; min-width: 20px; }
191
- .pptxv-cmdsearch { position: relative; width: min(320px, 30vw); }
192
- .pptxv-cmdsearch-box { display: flex; align-items: center; gap: 8px; height: 24px; padding: 0 12px; border: 1px solid var(--pptx-border); border-radius: 6px; background: var(--pptx-muted); color: var(--pptx-muted-foreground); }
193
- .pptxv-cmdsearch-box:focus-within { border-color: var(--pptx-ring); }
194
- .pptxv-cmdsearch-box svg { width: 12px; height: 12px; flex: none; }
195
- .pptxv-cmdsearch-input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--pptx-foreground); font: inherit; }
196
- .pptxv-cmdsearch-menu { position: absolute; z-index: 20; top: calc(100% + 4px); right: 0; left: 0; overflow: hidden; border: 1px solid var(--pptx-border); border-radius: 4px; background: var(--pptx-card); box-shadow: 0 8px 20px rgb(0 0 0 / 0.16); }
197
- .pptxv-cmdsearch-item, .pptxv-cmdsearch-empty { display: block; width: 100%; padding: 7px 9px; border: 0; background: transparent; color: var(--pptx-foreground); font: inherit; text-align: left; }
198
- .pptxv-cmdsearch-item { cursor: pointer; }
199
- .pptxv-cmdsearch-item:hover { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
200
- .pptxv-cmdsearch-empty { color: var(--pptx-muted-foreground); }
201
- @media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) { .pptxv-titlebar, .pptxv-qat-row { display: none; } }
133
+ .pptxv-titlebar-btn:focus-visible { outline: 2px solid var(--pptx-ring); outline-offset: 1px; }
134
+ @media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) { .pptxv-qat-row { display: none; } }
202
135
 
203
136
  /* Quick Access Toolbar docked below the Ribbon (Options > Quick Access
204
137
  Toolbar > position); hidden and empty until the strip is moved in. */
205
- .pptxv-qat-row {
206
- display: flex;
207
- align-items: center;
208
- gap: 4px;
209
- min-height: 36px;
210
- padding: 0 8px;
211
- border-bottom: 1px solid var(--pptx-border);
212
- background: var(--pptx-card);
213
- }
214
- .pptxv-qat-row .pptxv-qat { display: flex; align-items: center; gap: 4px; }
138
+ .pptxv-qat-row[hidden] { display: none; }
215
139
 
216
140
  /* Trust Center > Protected View banner: PowerPoint's persistent "this file
217
141
  is read-only until you Enable Editing" bar under the Ribbon. */
@@ -359,19 +283,16 @@
359
283
  }
360
284
  /* React's SectionBlock paints the same 10px p15:sectionPr/@clr dot. */
361
285
  .pptxv-thumb-section-color { display: inline-block; flex: none; width: 10px; height: 10px; border-radius: 50%; }
362
- .pptxv-thumb-section-actions { display: flex; gap: 1px; }
363
- .pptxv-thumb-section-actions button {
364
- width: 18px;
365
- height: 18px;
366
- padding: 0;
367
- border: 0;
286
+ .pptxv-thumb-section-rename {
287
+ min-width: 0;
288
+ flex: 1;
289
+ padding: 0 4px;
290
+ border: 1px solid var(--pptx-primary, #3b82f6);
368
291
  border-radius: 3px;
369
- background: transparent;
370
- color: var(--pptx-muted-foreground);
371
- cursor: pointer;
292
+ background: var(--pptx-card);
293
+ color: var(--pptx-card-foreground);
294
+ font: inherit;
372
295
  }
373
- .pptxv-thumb-section-actions button:hover { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
374
- .pptxv-thumb-section-actions button:disabled { opacity: .35; cursor: default; }
375
296
  .pptxv-thumb-section-slides { display: flex; flex-direction: column; gap: 8px; }
376
297
 
377
298
  /* ── Viewport / stage ────────────────────────────────────────────────── */
@@ -715,15 +636,7 @@
715
636
  .pptxv-notes-chevron { font-size: 0.75rem; }
716
637
  .pptxv-notes-body { padding: 0 10px 10px; }
717
638
  .pptxv-notes-body[hidden] { display: none; }
718
- .pptxv-notes-toolbar { display: flex; align-items: center; gap: 2px; margin: 0 0 6px; }
719
- .pptxv-notes-tool, .pptxv-notes-mode {
720
- min-width: 26px; height: 24px; padding: 0 6px; border: 1px solid var(--pptx-border);
721
- border-radius: 3px; background: var(--pptx-muted); color: var(--pptx-foreground); cursor: pointer;
722
- font-size: 0.75rem; line-height: 1;
723
- }
724
- .pptxv-notes-mode { margin-left: auto; font-size: 0.6875rem; }
725
- .pptxv-notes-tool:hover, .pptxv-notes-mode:hover { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
726
- .pptxv-notes-tool:focus-visible, .pptxv-notes-mode:focus-visible { outline: 2px solid var(--pptx-ring); outline-offset: 1px; }
639
+ .pptxv-notes-toolbar { margin: 0 0 6px; } /* the row itself is the shared pptx-ui-notes-toolbar */
727
640
  .pptxv-notes-rich-editor {
728
641
  box-sizing: border-box; width: 100%; min-height: 76px; max-height: 192px; overflow-y: auto;
729
642
  border: 1px solid var(--pptx-border); border-radius: 4px; background: var(--pptx-muted);
@@ -758,58 +671,7 @@
758
671
  }
759
672
 
760
673
  /* ── Bottom status bar ──────────────────────────────────────────────── */
761
- .pptxv-statusbar {
762
- display: flex;
763
- align-items: center;
764
- gap: 4px;
765
- /* Pinned from the shared metric rather than left to emerge from the padding
766
- + button box, which is how this row ended up 2px shorter than the others. */
767
- min-height: 29px;
768
- padding: 2px 8px;
769
- border-top: 1px solid var(--pptx-border);
770
- background: color-mix(in srgb, var(--pptx-secondary) 50%, transparent);
771
- color: var(--pptx-muted-foreground);
772
- font-size: 10px;
773
- }
774
- .pptxv-statusbar-spacer { flex: 1; }
775
- .pptxv-statusbar-sep { width: 1px; height: 12px; margin: 0 4px; background: var(--pptx-border); opacity: 0.6; }
776
- .pptxv-statusbar-btn {
777
- display: inline-flex;
778
- align-items: center;
779
- justify-content: center;
780
- gap: 4px;
781
- min-width: 24px;
782
- height: 22px;
783
- padding: 2px 4px;
784
- border: none;
785
- border-radius: 3px;
786
- background: transparent;
787
- color: inherit;
788
- font: inherit;
789
- cursor: pointer;
790
- }
791
- .pptxv-statusbar-btn:hover:not(:disabled) { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
792
- .pptxv-statusbar-btn:disabled { opacity: 0.4; cursor: default; }
793
- .pptxv-statusbar-btn.is-active { color: var(--pptx-primary); }
794
- .pptxv-statusbar-btn:focus-visible,
795
- .pptxv-statusbar-zoom:focus-visible { outline: 2px solid var(--pptx-ring); outline-offset: 1px; }
796
- .pptxv-statusbar-btn svg, .pptxv-statusbar-icon svg { width: 12px; height: 12px; display: block; }
797
- .pptxv-statusbar-counter, .pptxv-statusbar-text { white-space: nowrap; }
798
- .pptxv-statusbar-save.is-saving { color: #ca8a04; }
799
- .pptxv-statusbar-save.is-error { color: #dc2626; }
800
- .pptxv-statusbar-zoom {
801
- min-width: 48px;
802
- height: 22px;
803
- padding: 2px 6px;
804
- border: none;
805
- border-radius: 3px;
806
- background: transparent;
807
- color: inherit;
808
- font: inherit;
809
- font-variant-numeric: tabular-nums;
810
- cursor: pointer;
811
- }
812
- .pptxv-statusbar-zoom:hover { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
674
+ /* The row itself is the shared pptx-ui-status-bar; only visibility is host-owned. */
813
675
  .pptxv.pptxv-presenting .pptxv-statusbar { display: none; }
814
676
 
815
677
  @media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) {
@@ -2647,110 +2509,6 @@
2647
2509
  transform: translateX(-50%);
2648
2510
  transition: opacity var(--pptx-pt-fade) ease;
2649
2511
  }
2650
- .pptxv-present-toolbar {
2651
- display: flex;
2652
- align-items: center;
2653
- gap: var(--pptx-pt-gap);
2654
- padding: var(--pptx-pt-pad-y) var(--pptx-pt-pad-x);
2655
- border: 1px solid var(--pptx-pt-border);
2656
- border-radius: var(--pptx-pt-radius);
2657
- background: var(--pptx-pt-bg);
2658
- color: #fff;
2659
- box-shadow: 0 25px 50px -12px rgb(0 0 0 / 45%);
2660
- backdrop-filter: blur(12px);
2661
- }
2662
- /* Two class levels so these beat the base .pptxv-btn box (28x28, theme accent
2663
- hover) without !important; the bar's buttons are 36x36 and always dark. */
2664
- .pptxv-present-toolbar .pptxv-present-btn {
2665
- position: relative;
2666
- width: var(--pptx-pt-button);
2667
- height: var(--pptx-pt-button);
2668
- border-radius: var(--pptx-pt-control-radius);
2669
- background: transparent;
2670
- color: rgb(255 255 255 / 70%);
2671
- transition: color 150ms ease, background-color 150ms ease;
2672
- }
2673
- .pptxv-present-toolbar .pptxv-present-btn svg { width: var(--pptx-pt-icon); height: var(--pptx-pt-icon); }
2674
- .pptxv-present-toolbar .pptxv-present-btn:hover:not(:disabled) { background: rgb(255 255 255 / 10%); color: #fff; }
2675
- .pptxv-present-toolbar .pptxv-present-btn.is-active { background: rgb(255 255 255 / 25%); color: #fff; }
2676
- .pptxv-present-toolbar .pptxv-present-btn:disabled { opacity: 1; background: transparent; color: rgb(255 255 255 / 20%); cursor: not-allowed; }
2677
- .pptxv-present-toolbar .pptxv-present-danger:hover:not(:disabled) { color: #f87171; }
2678
- .pptxv-present-toolbar .pptxv-present-caret {
2679
- width: var(--pptx-pt-caret);
2680
- margin-left: calc(-1 * var(--pptx-pt-caret-overlap));
2681
- border-radius: 0 var(--pptx-pt-control-radius) var(--pptx-pt-control-radius) 0;
2682
- color: rgb(255 255 255 / 50%);
2683
- }
2684
- .pptxv-present-toolbar .pptxv-present-caret svg { width: var(--pptx-pt-caret-icon); height: var(--pptx-pt-caret-icon); }
2685
- .pptxv-present-group { position: relative; display: flex; align-items: center; }
2686
- .pptxv-present-swatch-bar {
2687
- position: absolute;
2688
- bottom: 2px;
2689
- left: 50%;
2690
- width: var(--pptx-pt-swatch-bar-w);
2691
- height: var(--pptx-pt-swatch-bar-h);
2692
- border-radius: 999px;
2693
- transform: translateX(-50%);
2694
- pointer-events: none;
2695
- }
2696
- .pptxv-present-divider {
2697
- flex: none;
2698
- width: var(--pptx-pt-divider-w);
2699
- height: var(--pptx-pt-divider-h);
2700
- margin: 0 var(--pptx-pt-divider-mx);
2701
- background: var(--pptx-pt-divider-color);
2702
- }
2703
- .pptxv-present-counter {
2704
- min-width: var(--pptx-pt-counter-min);
2705
- padding: 0 6px;
2706
- color: rgb(255 255 255 / 80%);
2707
- font: var(--pptx-pt-font-size) / var(--pptx-pt-line-height) ui-monospace, monospace;
2708
- font-variant-numeric: tabular-nums;
2709
- text-align: center;
2710
- user-select: none;
2711
- }
2712
- .pptxv-present-timer {
2713
- display: flex;
2714
- align-items: center;
2715
- gap: var(--pptx-pt-timer-gap);
2716
- padding: 0 4px;
2717
- color: rgb(255 255 255 / 60%);
2718
- font: var(--pptx-pt-font-size) / var(--pptx-pt-line-height) ui-monospace, monospace;
2719
- font-variant-numeric: tabular-nums;
2720
- user-select: none;
2721
- }
2722
- .pptxv-present-timer svg { width: var(--pptx-pt-timer-icon); height: var(--pptx-pt-timer-icon); flex: none; }
2723
- .pptxv-present-palette {
2724
- position: absolute;
2725
- /* Shrink-to-fit against the 64px tool+caret pair squeezes the four 36px
2726
- columns into 50px and makes the swatches overlap, so the popover must size
2727
- to its own content. */
2728
- width: max-content;
2729
- bottom: 100%;
2730
- left: 50%;
2731
- display: grid;
2732
- grid-template-columns: repeat(var(--pptx-pt-palette-cols), auto);
2733
- gap: var(--pptx-pt-palette-gap);
2734
- margin-bottom: 8px;
2735
- padding: var(--pptx-pt-palette-pad);
2736
- border: 1px solid rgb(255 255 255 / 20%);
2737
- border-radius: 8px;
2738
- background: #262626;
2739
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / 40%);
2740
- transform: translateX(-50%);
2741
- }
2742
- .pptxv-present-palette[hidden] { display: none; }
2743
- .pptxv-present-swatch {
2744
- width: var(--pptx-pt-swatch);
2745
- height: var(--pptx-pt-swatch);
2746
- padding: 0;
2747
- border: 2px solid rgb(255 255 255 / 20%);
2748
- border-radius: 50%;
2749
- cursor: pointer;
2750
- transition: transform 150ms ease;
2751
- }
2752
- .pptxv-present-swatch:hover { transform: scale(1.1); }
2753
- .pptxv-present-swatch.is-selected { border-color: #fff; }
2754
2512
 
2755
2513
 
2756
2514
  /* The show toolbar stands down while the console is up: the console carries its
@@ -2767,49 +2525,8 @@
2767
2525
  color: var(--pptx-foreground);
2768
2526
  font-family: inherit;
2769
2527
  }
2770
- .pptxv-presenter-strip {
2771
- display: flex;
2772
- flex-wrap: wrap;
2773
- align-items: center;
2774
- gap: var(--pptx-pv-strip-gap);
2775
- padding: var(--pptx-pv-strip-pad-y) var(--pptx-pv-strip-pad-x);
2776
- border-bottom: 1px solid var(--pptx-border);
2777
- background: var(--pptx-card);
2778
- }
2779
- .pptxv-presenter-strip-btn {
2780
- display: inline-flex;
2781
- align-items: center;
2782
- justify-content: center;
2783
- gap: 6px;
2784
- min-width: var(--pptx-pv-control);
2785
- height: var(--pptx-pv-control);
2786
- padding: 0 8px;
2787
- border: 0;
2788
- border-radius: var(--pptx-pv-control-radius);
2789
- background: var(--pptx-secondary);
2790
- color: var(--pptx-foreground);
2791
- font-size: 12px;
2792
- cursor: pointer;
2793
- transition: background-color .15s ease;
2794
- }
2795
- .pptxv-presenter-strip-btn:hover { background: var(--pptx-accent); }
2796
- .pptxv-presenter-strip-btn.is-active {
2797
- background: var(--pptx-primary);
2798
- color: var(--pptx-primary-foreground);
2799
- }
2800
- .pptxv-presenter-strip-icon { display: inline-flex; }
2801
- .pptxv-presenter-strip-icon svg {
2802
- width: var(--pptx-pv-control-icon);
2803
- height: var(--pptx-pv-control-icon);
2804
- }
2805
- .pptxv-presenter-strip-icon:empty { display: none; }
2806
- .pptxv-presenter-strip-divider {
2807
- width: var(--pptx-pv-divider-w);
2808
- height: var(--pptx-pv-divider-h);
2809
- margin: 0 var(--pptx-pv-divider-mx);
2810
- background: var(--pptx-border);
2811
- }
2812
- .pptxv-presenter-strip-spacer { flex: 1; }
2528
+ /* The control strip is the shared pptx-ui-presenter-console; it styles itself. */
2529
+ .pptxv-presenter-strip { flex: none; }
2813
2530
 
2814
2531
  .pptxv-presenter-body { display: flex; flex: 1; min-height: 0; }
2815
2532
  .pptxv-presenter-main {
@@ -2999,13 +2716,11 @@
2999
2716
  .pptxv-mobile-toolbar, .pptxv-mobile-actions { display: none; }
3000
2717
  @media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) {
3001
2718
  .pptxv-ribbon { display: none; }
3002
- .pptxv-mobile-toolbar { position: relative; z-index: 20; display: flex; flex: none; align-items: center; gap: 4px; min-height: 52px; padding: max(env(safe-area-inset-top), 0px) 8px 4px; border-bottom: 1px solid var(--pptx-border); background: color-mix(in srgb, var(--pptx-muted) 55%, var(--pptx-card)); }
2719
+ .pptxv-mobile-toolbar { display: block; flex: none; }
3003
2720
  .pptxv-mobile-toolbar-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--pptx-foreground); touch-action: manipulation; }
3004
2721
  .pptxv-mobile-toolbar-btn:hover:not(:disabled) { background: var(--pptx-accent); }
3005
2722
  .pptxv-mobile-toolbar-btn:disabled { opacity: .4; }
3006
2723
  .pptxv-mobile-toolbar-btn svg { width: 20px; height: 20px; }
3007
- .pptxv-mobile-toolbar-spacer { flex: 1; }
3008
- .pptxv-mobile-present { color: var(--pptx-primary); }
3009
2724
  .pptxv-mobile-toolbar-collaboration { display: flex; }
3010
2725
  .pptxv-mobile-toolbar-collaboration[hidden], .pptxv-mobile-toolbar-collaboration:empty { display: none; }
3011
2726
  .pptxv-mobile-toolbar-ai { display: flex; }
@@ -3013,10 +2728,7 @@
3013
2728
  .pptxv-mobile-toolbar-ai .pptxv-ai-toggle.is-active { color: var(--pptx-primary); background: transparent; }
3014
2729
  .pptxv-mobile-share { min-width: 44px; background: var(--pptx-primary); color: var(--pptx-primary-foreground); }
3015
2730
  .pptxv-mobile-actions { display: contents; }
3016
- .pptxv-mobile-actions > nav { position: relative; z-index: 50; display: flex; flex: none; min-height: 56px; padding-bottom: env(safe-area-inset-bottom); border-top: 1px solid var(--pptx-border); background: var(--pptx-card); }
3017
- .pptxv-mobile-actions > nav button { position: relative; display: flex; flex: 1; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-width: 44px; border: 0; background: transparent; color: var(--pptx-muted-foreground); font-size: 10px; touch-action: manipulation; }
3018
- .pptxv-mobile-actions > nav button svg { width: 20px; height: 20px; }
3019
- .pptxv-mobile-actions > nav button[aria-pressed='true'] { color: var(--pptx-primary); }
2731
+ .pptxv-mobile-actions > pptx-ui-mobile-bar { position: relative; z-index: 50; flex: none; }
3020
2732
  .pptxv-mobile-sheet-host { position: absolute; z-index: 48; inset: 0 0 56px; display: flex; align-items: end; }
3021
2733
  .pptxv-mobile-sheet-host[hidden] { display: none; }
3022
2734
  .pptxv-mobile-sheet-backdrop { position: absolute; inset: 0; width: 100%; border: 0; background: rgb(0 0 0 / 40%); }
@@ -3043,7 +2755,7 @@
3043
2755
  .pptxv-mobile-slide-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
3044
2756
  .pptxv-mobile-sheet .pptxv-inspector { display: flex; width: 100%; max-height: 55dvh; border: 0; }
3045
2757
  .pptxv.pptxv-presenting .pptxv-mobile-toolbar,
3046
- .pptxv.pptxv-presenting .pptxv-mobile-actions > nav,
2758
+ .pptxv.pptxv-presenting .pptxv-mobile-actions > pptx-ui-mobile-bar,
3047
2759
  .pptxv.pptxv-presenting .pptxv-mobile-sheet-host { display: none; }
3048
2760
  }
3049
2761
 
@@ -3228,7 +2940,7 @@ label.pptxv-options-row { cursor: pointer; }
3228
2940
  .pptxv-options-row select, .pptxv-options-row input[type='text'], .pptxv-options-row input[type='number'] { max-width: 55%; padding: 5px 7px; border: 1px solid var(--pptx-border); border-radius: 4px; background: var(--pptx-muted); color: inherit; font: inherit; font-size: 12px; }
3229
2941
  .pptxv-options-row input[type='number'] { width: 72px; text-align: right; }
3230
2942
  .pptxv-options-row input[type='text'] { width: 180px; }
3231
- .pptxv-options-row input[type='checkbox'] { flex: none; width: 15px; height: 15px; accent-color: var(--pptx-primary); }
2943
+ .pptxv-options-row pptx-ui-checkbox { flex: none; }
3232
2944
  .pptxv-options-unit { color: var(--pptx-muted-foreground); font-size: 11px; }
3233
2945
  .pptxv-options-number { display: inline-flex; align-items: center; gap: 6px; }
3234
2946
  .pptxv-options-action { padding: 6px 11px; border: 1px solid var(--pptx-border); border-radius: 4px; background: var(--pptx-muted); color: inherit; font: inherit; font-size: 12px; cursor: pointer; }
@@ -3264,17 +2976,8 @@ label.pptxv-options-row { cursor: pointer; }
3264
2976
  .pptxv-options-addins-detail p { margin: 0 0 4px; font-size: 11px; }
3265
2977
  .pptxv-options-addins-detail p:last-child { margin: 0; color: var(--pptx-muted-foreground); font-family: ui-monospace, monospace; font-size: 10px; }
3266
2978
 
3267
- /* ── Title-bar Quick Access strip ── */
3268
- .pptxv-qat { display: inline-flex; align-items: center; gap: 2px; }
3269
- .pptxv-qat[hidden] { display: none; }
3270
- .pptxv-qat .pptxv-btn-label { padding-left: 4px; font-size: 11px; white-space: nowrap; }
3271
- .pptxv-qat .pptxv-btn-pill { width: auto; padding: 0 6px; }
3272
-
3273
- /* ── End of slide show (black slide) + in-show context menu ── */
2979
+ /* ── End of slide show (black slide) ── */
3274
2980
  .pptxv-endshow { position: absolute; inset: 0; z-index: 60; display: grid; place-items: center; border: 0; background: #000; color: #e5e7eb; font-size: 13px; cursor: pointer; }
3275
- .pptxv-showmenu { position: absolute; z-index: 65; display: flex; flex-direction: column; min-width: 160px; padding: 4px; border: 1px solid var(--pptx-border); border-radius: 6px; background: var(--pptx-card); color: var(--pptx-card-foreground); box-shadow: 0 10px 28px rgb(0 0 0 / .35); }
3276
- .pptxv-showmenu button { padding: 7px 10px; border: 0; border-radius: 4px; background: transparent; color: inherit; font: inherit; font-size: 12px; text-align: left; cursor: pointer; }
3277
- .pptxv-showmenu button:hover { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
3278
2981
 
3279
2982
  /* ── Option-driven viewer root classes ── */
3280
2983
  .pptxv.pptxv-reduced-motion *, .pptxv.pptxv-reduced-motion *::before, .pptxv.pptxv-reduced-motion *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
@@ -4513,36 +4216,6 @@ svg[data-pptx-motion-path-overlay] [data-pptx-motion-path-handle] { pointer-even
4513
4216
  border-color 0.5s ease;
4514
4217
  }
4515
4218
 
4516
- /* ── Click-to-ask context menu ────────────────────────────────────────── */
4517
- .pptxv-ai-menu {
4518
- position: fixed;
4519
- z-index: 60;
4520
- min-width: 180px;
4521
- padding: 4px;
4522
- border: 1px solid var(--pptx-border);
4523
- border-radius: 8px;
4524
- background: var(--pptx-popover, var(--pptx-card));
4525
- color: var(--pptx-popover-foreground, var(--pptx-card-foreground));
4526
- box-shadow: 0 8px 24px rgb(0 0 0 / 0.24);
4527
- }
4528
- .pptxv-ai-menu-item {
4529
- display: flex;
4530
- align-items: center;
4531
- gap: 8px;
4532
- width: 100%;
4533
- padding: 7px 10px;
4534
- border: none;
4535
- border-radius: 6px;
4536
- background: transparent;
4537
- color: inherit;
4538
- font: inherit;
4539
- font-size: 0.8125rem;
4540
- text-align: left;
4541
- cursor: pointer;
4542
- }
4543
- .pptxv-ai-menu-item svg { width: 14px; height: 14px; color: var(--pptx-primary); }
4544
- .pptxv-ai-menu-item:hover { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
4545
-
4546
4219
  /* ── Settings-dialog AI export section ────────────────────────────────── */
4547
4220
  .pptxv-ai-settings { display: flex; flex-direction: column; gap: 12px; }
4548
4221
  .pptxv-ai-settings-intro {
@@ -4766,88 +4439,6 @@ svg[data-pptx-motion-path-overlay] [data-pptx-motion-path-handle] { pointer-even
4766
4439
  .pptxv-export-progress-actions button:hover { background: var(--pptx-accent, #33334d); }
4767
4440
 
4768
4441
 
4769
- .pptxv-readonly-banner {
4770
- display: flex;
4771
- align-items: center;
4772
- gap: 8px;
4773
- padding: 6px 16px;
4774
- background: #fef3c7;
4775
- color: #78350f;
4776
- border-bottom: 1px solid #fcd34d;
4777
- font-size: 13px;
4778
- }
4779
- .pptxv-readonly-banner svg { width: 16px; height: 16px; flex: none; }
4780
- .pptxv-readonly-banner-text { flex: 1 1 auto; }
4781
- .pptxv-readonly-banner-edit {
4782
- flex: none;
4783
- padding: 3px 10px;
4784
- border: 1px solid #b45309;
4785
- border-radius: 4px;
4786
- background: #fff;
4787
- color: #78350f;
4788
- font: inherit;
4789
- font-weight: 600;
4790
- cursor: pointer;
4791
- }
4792
- .pptxv-readonly-banner-edit:hover { background: #fde68a; }
4793
- .pptxv-readonly-banner-dismiss {
4794
- flex: none;
4795
- display: flex;
4796
- align-items: center;
4797
- justify-content: center;
4798
- width: 22px;
4799
- height: 22px;
4800
- padding: 0;
4801
- border: none;
4802
- background: transparent;
4803
- color: inherit;
4804
- cursor: pointer;
4805
- border-radius: 4px;
4806
- }
4807
- .pptxv-readonly-banner-dismiss:hover { background: rgba(120, 53, 15, 0.12); }
4808
- .pptxv-readonly-banner-dismiss svg { width: 14px; height: 14px; }
4809
- .pptxv-readonly-banner-password-form {
4810
- display: flex;
4811
- flex: none;
4812
- align-items: center;
4813
- gap: 8px;
4814
- }
4815
- .pptxv-readonly-banner-password-input {
4816
- padding: 3px 8px;
4817
- border: 1px solid #b45309;
4818
- border-radius: 4px;
4819
- background: #fff;
4820
- color: #78350f;
4821
- font: inherit;
4822
- }
4823
- .pptxv-readonly-banner-unlock {
4824
- flex: none;
4825
- padding: 3px 10px;
4826
- border: 1px solid #b45309;
4827
- border-radius: 4px;
4828
- background: #fff;
4829
- color: #78350f;
4830
- font: inherit;
4831
- font-weight: 600;
4832
- cursor: pointer;
4833
- }
4834
- .pptxv-readonly-banner-unlock:hover { background: #fde68a; }
4835
- .pptxv-readonly-banner-password-cancel {
4836
- flex: none;
4837
- padding: 3px 8px;
4838
- border: none;
4839
- background: transparent;
4840
- color: inherit;
4841
- font: inherit;
4842
- cursor: pointer;
4843
- border-radius: 4px;
4844
- }
4845
- .pptxv-readonly-banner-password-cancel:hover { background: rgba(120, 53, 15, 0.12); }
4846
- .pptxv-readonly-banner-password-error {
4847
- flex: none;
4848
- color: #991b1b;
4849
- font-size: 12px;
4850
- }
4851
4442
  .pptxv-sr-only {
4852
4443
  position: absolute;
4853
4444
  width: 1px;
@@ -4860,74 +4451,6 @@ svg[data-pptx-motion-path-overlay] [data-pptx-motion-path-handle] { pointer-even
4860
4451
  border: 0;
4861
4452
  }
4862
4453
 
4863
- .pptxv-compat-toasts {
4864
- /* Position, size, stacking order and pointer-events come from
4865
- `compatToastStackStyleAttr()` (render/chrome-metrics), set as an inline
4866
- style on the element so every binding anchors the stack to the same
4867
- bottom inset above the status bar (see `ui/compat-toasts.ts`). */
4868
- align-items: flex-end;
4869
- max-width: min(340px, calc(100% - 24px));
4870
- }
4871
- .pptxv-compat-toasts-list {
4872
- display: flex;
4873
- flex-direction: column;
4874
- gap: 6px;
4875
- max-height: 60vh;
4876
- overflow-y: auto;
4877
- width: 100%;
4878
- }
4879
- .pptxv-compat-toast {
4880
- display: flex;
4881
- align-items: flex-start;
4882
- gap: 8px;
4883
- padding: 8px 10px;
4884
- border-radius: 6px;
4885
- border: 1px solid var(--pptx-border);
4886
- background: var(--pptx-card);
4887
- color: var(--pptx-card-foreground);
4888
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
4889
- font-size: 12px;
4890
- pointer-events: auto;
4891
- }
4892
- .pptxv-compat-toast[data-severity='warning'] { border-color: #f59e0b; }
4893
- .pptxv-compat-toast svg { width: 14px; height: 14px; flex: none; margin-top: 2px; }
4894
- .pptxv-compat-toast-body { flex: 1 1 auto; min-width: 0; }
4895
- .pptxv-compat-toast-title { display: block; font-size: 11px; }
4896
- .pptxv-compat-toast-message { display: block; word-break: break-word; }
4897
- .pptxv-compat-toast-dismiss {
4898
- flex: none;
4899
- display: flex;
4900
- align-items: center;
4901
- justify-content: center;
4902
- width: 18px;
4903
- height: 18px;
4904
- padding: 0;
4905
- border: none;
4906
- background: transparent;
4907
- color: inherit;
4908
- cursor: pointer;
4909
- border-radius: 4px;
4910
- }
4911
- .pptxv-compat-toast-dismiss:hover { background: var(--pptx-accent); }
4912
- .pptxv-compat-toast-dismiss svg { width: 12px; height: 12px; margin: 0; }
4913
- .pptxv-compat-toasts-overflow {
4914
- font-size: 11px;
4915
- color: var(--pptx-muted-foreground);
4916
- pointer-events: none;
4917
- }
4918
- .pptxv-compat-toasts-dismiss-all {
4919
- pointer-events: auto;
4920
- align-self: flex-end;
4921
- padding: 3px 8px;
4922
- border: 1px solid var(--pptx-border);
4923
- border-radius: 4px;
4924
- background: var(--pptx-card);
4925
- color: var(--pptx-card-foreground);
4926
- font-size: 11px;
4927
- cursor: pointer;
4928
- }
4929
- .pptxv-compat-toasts-dismiss-all:hover { background: var(--pptx-accent); }
4930
-
4931
4454
  .pptxv-run-program-notices {
4932
4455
  /* Position, size, stacking order and pointer-events come from
4933
4456
  `compatToastStackStyleAttr()` (render/chrome-metrics), same anchor as