docxodus 9.6.0 → 9.7.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.
@@ -7711,23 +7711,38 @@ var DocxodusEditor = (() => {
7711
7711
  };
7712
7712
 
7713
7713
  // src/ribbon-chrome.ts
7714
- var RIBBON_STYLE_VERSION = "5";
7714
+ var RIBBON_STYLE_VERSION = "8";
7715
7715
  var RIBBON_STYLE_ATTR = "data-docxodus-ribbon-styles";
7716
7716
  var RIBBON_CSS = `
7717
7717
  .dxr {
7718
- --dxr-ink: #101418;
7718
+ /* OS-Legal design tokens (github.com/Open-Source-Legal/OS-Legal-Style):
7719
+ deep-teal accent, slate foreground scale, warm neutral surfaces, and
7720
+ "light touch" shadows at 0.03-0.06 opacity \u2014 structure over decoration. */
7721
+ --dxr-ink: #1e293b;
7719
7722
  --dxr-sheet: #ffffff;
7720
- --dxr-chrome: #eef1f6;
7721
- --dxr-chrome-sunk: #e3e8f0;
7722
- --dxr-rule: #d3dae4;
7723
- --dxr-accent: #1f5fd0;
7724
- --dxr-wash: #dde8fb;
7725
- --dxr-muted: #5d6975;
7726
- --dxr-data: #0b6f6a;
7727
- --dxr-danger: #a3341f;
7728
- --dxr-desk: #dfe3ea;
7729
- --dxr-ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
7723
+ --dxr-chrome: #ffffff;
7724
+ --dxr-chrome-sunk: #f8fafc;
7725
+ --dxr-rule: #e2e8f0;
7726
+ --dxr-rule-strong: #cbd5e1;
7727
+ --dxr-accent: #0f766e;
7728
+ --dxr-accent-hover: #0d9488;
7729
+ --dxr-accent-active: #115e59;
7730
+ --dxr-wash: #f0fdfa;
7731
+ --dxr-wash-on: #ccfbf1;
7732
+ --dxr-muted: #475569;
7733
+ --dxr-faint: #94a3b8;
7734
+ --dxr-data: #0f766e;
7735
+ --dxr-danger: #dc2626;
7736
+ --dxr-danger-wash: #fef2f2;
7737
+ --dxr-desk: #f1f5f9;
7738
+ --dxr-ui: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
7739
+ --dxr-serif: Georgia, "Times New Roman", serif;
7730
7740
  --dxr-mono: ui-monospace, SFMono-Regular, "Cascadia Mono", Consolas, monospace;
7741
+ --dxr-shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);
7742
+ --dxr-shadow-md: 0 1px 3px rgba(15, 23, 42, .06), 0 4px 6px rgba(15, 23, 42, .03);
7743
+ --dxr-shadow-lg: 0 4px 6px rgba(15, 23, 42, .05), 0 10px 15px rgba(15, 23, 42, .04);
7744
+ --dxr-shadow-xl: 0 8px 16px rgba(15, 23, 42, .06), 0 20px 25px rgba(15, 23, 42, .05);
7745
+ --dxr-ease: cubic-bezier(.4, 0, .2, 1);
7731
7746
  --dxr-tap: 30px;
7732
7747
 
7733
7748
  position: relative;
@@ -7743,6 +7758,18 @@ var DocxodusEditor = (() => {
7743
7758
  }
7744
7759
  .dxr *, .dxr *::before, .dxr *::after { box-sizing: border-box; }
7745
7760
 
7761
+ /* \u2500\u2500 Card frame \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
7762
+ A drop-in embed carries its OWN boundary instead of hoping the host clips it:
7763
+ rounded corners, a hairline, and the house elevation. overflow: clip keeps
7764
+ the sticky chrome, scrollbars, and the loading overlay inside the curve.
7765
+ Full-bleed hosts mount with data-frame="flush" and stay edge-to-edge. */
7766
+ .dxr[data-frame="card"] {
7767
+ border: 1px solid var(--dxr-rule);
7768
+ border-radius: 14px;
7769
+ box-shadow: var(--dxr-shadow-xl);
7770
+ overflow: clip;
7771
+ }
7772
+
7746
7773
  /* Touch devices get bigger hit targets everywhere the token is used. */
7747
7774
  @media (pointer: coarse) { .dxr { --dxr-tap: 40px; } }
7748
7775
 
@@ -7771,12 +7798,13 @@ var DocxodusEditor = (() => {
7771
7798
  font-weight: 600;
7772
7799
  letter-spacing: -.01em;
7773
7800
  }
7801
+ /* A filled circle, echoing the OS-Legal "Node" motif rather than a diamond. */
7774
7802
  .dxr-brand .dxr-mark {
7775
7803
  flex: 0 0 auto;
7776
7804
  width: 9px;
7777
7805
  height: 9px;
7806
+ border-radius: 50%;
7778
7807
  background: var(--dxr-accent);
7779
- clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
7780
7808
  }
7781
7809
  .dxr-brand .dxr-docname {
7782
7810
  overflow: hidden;
@@ -7808,25 +7836,25 @@ var DocxodusEditor = (() => {
7808
7836
  scrollbar-width: none;
7809
7837
  }
7810
7838
  .dxr-tabs::-webkit-scrollbar { display: none; }
7839
+ /* Line-variant tabs (the house Tabs default): no boxes, no fills \u2014 the selected
7840
+ tab is a 2px accent underline sitting on the panel's own hairline. */
7811
7841
  .dxr-tab {
7812
7842
  flex: 0 0 auto;
7813
- padding: 6px 15px 7px;
7814
- border: 1px solid transparent;
7815
- border-bottom: none;
7816
- border-radius: 5px 5px 0 0;
7843
+ padding: 7px 14px 8px;
7844
+ border: none;
7817
7845
  background: none;
7818
7846
  color: var(--dxr-muted);
7819
7847
  font: inherit;
7820
7848
  font-size: 12.5px;
7849
+ font-weight: 500;
7821
7850
  cursor: pointer;
7851
+ transition: color .15s var(--dxr-ease), box-shadow .15s var(--dxr-ease);
7822
7852
  }
7823
- .dxr-tab:hover { color: var(--dxr-ink); background: #e6ebf3; }
7853
+ .dxr-tab:hover { color: var(--dxr-ink); }
7824
7854
  .dxr-tab[aria-selected="true"] {
7825
7855
  color: var(--dxr-ink);
7826
7856
  font-weight: 600;
7827
- background: var(--dxr-chrome-sunk);
7828
- border-color: var(--dxr-rule);
7829
- box-shadow: inset 0 2px 0 var(--dxr-accent);
7857
+ box-shadow: inset 0 -2px 0 var(--dxr-accent);
7830
7858
  }
7831
7859
  /* Contextual tab \u2014 present only while the caret is inside a table. */
7832
7860
  .dxr-tab[data-contextual] { color: var(--dxr-accent); }
@@ -7856,7 +7884,7 @@ var DocxodusEditor = (() => {
7856
7884
  .dxr-group:last-child { border-right: none; }
7857
7885
  .dxr-group:first-child { padding-left: 0; }
7858
7886
  .dxr-glabel {
7859
- color: var(--dxr-muted);
7887
+ color: var(--dxr-faint);
7860
7888
  font-size: 9.5px;
7861
7889
  font-weight: 600;
7862
7890
  letter-spacing: .11em;
@@ -7865,48 +7893,69 @@ var DocxodusEditor = (() => {
7865
7893
  .dxr-row { display: flex; gap: 3px; align-items: center; }
7866
7894
 
7867
7895
  /* \u2500\u2500 Controls \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
7896
+ /* One button family, house-style: every control is a ghost \u2014 no borders, no
7897
+ fills, no per-button boxes. Hover paints a quiet slate wash; the active
7898
+ (toggled) state paints a teal one. Save alone is the flat primary, so the
7899
+ surface has exactly one accent-colored action. */
7868
7900
  .dxr button, .dxr label.dxr-btn {
7869
7901
  min-height: var(--dxr-tap);
7870
7902
  padding: 5px 9px;
7871
- border: 1px solid transparent;
7872
- border-radius: 4px;
7903
+ border: none;
7904
+ border-radius: 6px;
7873
7905
  background: none;
7874
7906
  color: var(--dxr-ink);
7875
7907
  font: inherit;
7876
7908
  font-size: 13px;
7909
+ font-weight: 500;
7877
7910
  line-height: 1.15;
7878
7911
  cursor: pointer;
7912
+ transition: background-color .15s var(--dxr-ease), color .15s var(--dxr-ease),
7913
+ box-shadow .15s var(--dxr-ease), transform .15s var(--dxr-ease);
7879
7914
  }
7880
7915
  .dxr label.dxr-btn { display: inline-flex; align-items: center; }
7881
- .dxr button:hover, .dxr label.dxr-btn:hover { background: #d6deea; }
7882
- .dxr button:active { background: #c8d3e3; }
7916
+ .dxr button:hover, .dxr label.dxr-btn:hover { background: #f1f5f9; }
7917
+ .dxr button:active { background: #e2e8f0; }
7883
7918
  .dxr button:disabled { opacity: .38; cursor: default; background: none; }
7884
- .dxr button.dxr-on { color: var(--dxr-accent); background: var(--dxr-wash); border-color: #b3ccf2; }
7885
- .dxr-quick button, .dxr-quick label.dxr-btn {
7886
- padding: 4px 10px;
7887
- border-color: var(--dxr-rule);
7888
- background: #f7f9fc;
7889
- font-size: 12.5px;
7919
+ .dxr button.dxr-on { color: var(--dxr-accent); background: var(--dxr-wash-on); }
7920
+ .dxr-quick button, .dxr-quick label.dxr-btn { padding: 4px 10px; font-size: 12.5px; }
7921
+ /* Save \u2014 the house primary: flat accent, sm shadow, the 1px lift on hover. */
7922
+ .dxr-quick button[data-dxr="save"]:not(:disabled) {
7923
+ background: var(--dxr-accent);
7924
+ color: #fff;
7925
+ font-weight: 600;
7926
+ box-shadow: var(--dxr-shadow-sm);
7927
+ }
7928
+ .dxr-quick button[data-dxr="save"]:not(:disabled):hover {
7929
+ background: var(--dxr-accent-hover);
7930
+ box-shadow: var(--dxr-shadow-md);
7931
+ transform: translateY(-1px);
7932
+ }
7933
+ .dxr-quick button[data-dxr="save"]:not(:disabled):active {
7934
+ background: var(--dxr-accent-active);
7935
+ box-shadow: var(--dxr-shadow-sm);
7936
+ transform: translateY(0);
7890
7937
  }
7891
- .dxr-quick button:hover, .dxr-quick label.dxr-btn:hover { background: #fff; border-color: #b9c4d4; }
7892
- .dxr-quick button:disabled:hover { background: #f7f9fc; border-color: var(--dxr-rule); }
7893
- .dxr button.dxr-icon { min-width: var(--dxr-tap); text-align: center; }
7938
+ /* Icon controls sit quieter than text ones until touched (house IconButton). */
7939
+ .dxr button.dxr-icon { min-width: var(--dxr-tap); text-align: center; color: var(--dxr-muted); }
7940
+ .dxr button.dxr-icon:hover:not(:disabled) { color: var(--dxr-ink); }
7941
+ .dxr button.dxr-icon.dxr-on { color: var(--dxr-accent); }
7894
7942
  /* Icons are inline SVG drawn from the same shapes the control acts on (text lines,
7895
7943
  rules), so alignment and indent read at a glance instead of relying on arrow
7896
7944
  glyphs that collide with undo/redo. currentColor keeps them in step with state. */
7897
7945
  .dxr button svg { display: block; margin: 0 auto; fill: currentColor; }
7898
7946
  .dxr button.dxr-wide { display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
7899
- .dxr button.dxr-danger:hover { color: var(--dxr-danger); background: #f6dcd6; }
7947
+ .dxr button.dxr-danger:hover { color: var(--dxr-danger); background: var(--dxr-danger-wash); }
7900
7948
  .dxr select, .dxr input[type="number"], .dxr input[type="text"] {
7901
7949
  min-height: var(--dxr-tap);
7902
7950
  padding: 4px 6px;
7903
7951
  border: 1px solid var(--dxr-rule);
7904
- border-radius: 4px;
7905
- background: #f7f9fc;
7952
+ border-radius: 6px;
7953
+ background: var(--dxr-sheet);
7906
7954
  color: var(--dxr-ink);
7907
7955
  font: inherit;
7908
7956
  font-size: 12.5px;
7909
7957
  }
7958
+ .dxr select:hover, .dxr input:hover { border-color: var(--dxr-rule-strong); }
7910
7959
  .dxr select:focus-visible, .dxr input:focus-visible, .dxr button:focus-visible,
7911
7960
  .dxr .dxr-tab:focus-visible, .dxr label.dxr-btn:focus-within {
7912
7961
  outline: 2px solid var(--dxr-accent);
@@ -7937,7 +7986,7 @@ var DocxodusEditor = (() => {
7937
7986
  height: 25px;
7938
7987
  padding: 0 10px;
7939
7988
  overflow-x: auto;
7940
- background: #f7f9fc;
7989
+ background: #fafafa;
7941
7990
  border-top: 1px solid var(--dxr-rule);
7942
7991
  color: var(--dxr-muted);
7943
7992
  font-family: var(--dxr-mono);
@@ -7956,7 +8005,7 @@ var DocxodusEditor = (() => {
7956
8005
  .dxr-rail .dxr-cell:first-child { padding-left: 0; }
7957
8006
  .dxr-rail .dxr-cell:last-child { border-right: none; }
7958
8007
  .dxr-rail .dxr-k {
7959
- color: #8b96a3;
8008
+ color: var(--dxr-faint);
7960
8009
  font-family: var(--dxr-ui);
7961
8010
  font-size: 9.5px;
7962
8011
  letter-spacing: .1em;
@@ -7964,7 +8013,7 @@ var DocxodusEditor = (() => {
7964
8013
  }
7965
8014
  .dxr-rail .dxr-v { color: var(--dxr-data); }
7966
8015
  .dxr-rail .dxr-v.dxr-flash { animation: dxr-railflash .45s ease-out; }
7967
- @keyframes dxr-railflash { from { background: #b9ecdf; } to { background: transparent; } }
8016
+ @keyframes dxr-railflash { from { background: #ccfbf1; } to { background: transparent; } }
7968
8017
 
7969
8018
  /* \u2500\u2500 Hint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
7970
8019
  .dxr-hint {
@@ -7979,8 +8028,8 @@ var DocxodusEditor = (() => {
7979
8028
  .dxr-hint kbd {
7980
8029
  padding: 0 4px;
7981
8030
  border: 1px solid var(--dxr-rule);
7982
- border-radius: 3px;
7983
- background: #e8ecf3;
8031
+ border-radius: 4px;
8032
+ background: #f1f5f9;
7984
8033
  font-family: var(--dxr-mono);
7985
8034
  font-size: 11px;
7986
8035
  }
@@ -7995,13 +8044,34 @@ var DocxodusEditor = (() => {
7995
8044
  SHOULD win.
7996
8045
  (No backticks in this file's comments: the stylesheet is a template literal.) */
7997
8046
  .dxr-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; -webkit-overflow-scrolling: touch; }
8047
+ /* Soft scroll boundaries: content dissolves at the chrome and at the bottom edge
8048
+ instead of hard-clipping. Sticky gradient veils cost one paint layer each and
8049
+ never intercept input. */
8050
+ .dxr-scroll::before, .dxr-scroll::after {
8051
+ content: "";
8052
+ position: sticky;
8053
+ z-index: 3;
8054
+ display: block;
8055
+ height: 26px;
8056
+ pointer-events: none;
8057
+ }
8058
+ .dxr-scroll::before {
8059
+ top: 0;
8060
+ margin-bottom: -26px;
8061
+ background: linear-gradient(to bottom, var(--dxr-desk), transparent);
8062
+ }
8063
+ .dxr-scroll::after {
8064
+ bottom: 0;
8065
+ margin-top: -26px;
8066
+ background: linear-gradient(to top, var(--dxr-desk), transparent);
8067
+ }
7998
8068
  .dxr[data-chrome] .dxr-surface { margin: 26px auto; padding: 0 16px 96px; }
7999
8069
  .dxr-surface [contenteditable="true"]:focus {
8000
8070
  outline: 2px solid var(--dxr-accent);
8001
8071
  outline-offset: 2px;
8002
8072
  border-radius: 2px;
8003
8073
  }
8004
- @media (hover: hover) { .dxr-surface [contenteditable="true"]:hover { background: #f2f7ff; } }
8074
+ @media (hover: hover) { .dxr-surface [contenteditable="true"]:hover { background: var(--dxr-wash); } }
8005
8075
 
8006
8076
  /* Header/footer bands: stories live in their own OOXML parts outside the body,
8007
8077
  so they dock as their own regions. Styled from the same tokens as the ribbon
@@ -8013,9 +8083,10 @@ var DocxodusEditor = (() => {
8013
8083
  margin: 0 auto 14px;
8014
8084
  padding: 9px 72px 13px;
8015
8085
  border: 1px solid var(--dxr-rule);
8016
- border-left: 2px solid #c2ccd9;
8017
- border-radius: 3px;
8086
+ border-left: 2px solid #5eead4;
8087
+ border-radius: 6px;
8018
8088
  background: var(--dxr-sheet);
8089
+ box-shadow: var(--dxr-shadow-sm);
8019
8090
  }
8020
8091
  .dxr-surface .docx-hf-band + .docx-body-flow { margin-top: 0; }
8021
8092
  .dxr-surface .docx-hf-band[data-hf-band="footer"] { margin: 14px auto 0; }
@@ -8034,8 +8105,8 @@ var DocxodusEditor = (() => {
8034
8105
  .dxr-surface .docx-hf-chrome select, .dxr-surface .docx-hf-chrome input {
8035
8106
  padding: 3px 5px;
8036
8107
  border: 1px solid var(--dxr-rule);
8037
- border-radius: 4px;
8038
- background: #f7f9fc;
8108
+ border-radius: 6px;
8109
+ background: var(--dxr-sheet);
8039
8110
  color: var(--dxr-ink);
8040
8111
  font: inherit;
8041
8112
  font-family: var(--dxr-ui);
@@ -8049,22 +8120,22 @@ var DocxodusEditor = (() => {
8049
8120
  .dxr-surface .docx-hf-warning {
8050
8121
  margin: 0 0 8px -60px;
8051
8122
  padding: 7px 9px;
8052
- border: 1px solid #e8d9a8;
8053
- border-left: 2px solid #c9a227;
8054
- border-radius: 3px;
8055
- background: #fdf6e3;
8056
- color: #6b5310;
8123
+ border: 1px solid #fde68a;
8124
+ border-left: 2px solid #d97706;
8125
+ border-radius: 6px;
8126
+ background: #fffbeb;
8127
+ color: #92400e;
8057
8128
  font-size: 12px;
8058
8129
  line-height: 1.45;
8059
8130
  }
8060
8131
  .dxr-surface .docx-hf-warning button {
8061
8132
  margin-left: 6px;
8062
8133
  padding: 2px 8px;
8063
- border-color: #e8d9a8;
8134
+ border-color: #fde68a;
8064
8135
  background: #fff;
8065
8136
  font-size: 12px;
8066
8137
  }
8067
- .dxr-surface .docx-hf-placeholder { color: #9aa4b1; font-style: italic; }
8138
+ .dxr-surface .docx-hf-placeholder { color: var(--dxr-faint); font-style: italic; }
8068
8139
  .dxr-surface .docx-hf-inherited {
8069
8140
  color: var(--dxr-muted);
8070
8141
  font-style: italic;
@@ -8084,7 +8155,7 @@ var DocxodusEditor = (() => {
8084
8155
  padding: 56px 0;
8085
8156
  border-radius: 3px;
8086
8157
  background: var(--dxr-sheet);
8087
- box-shadow: 0 1px 3px rgba(16, 20, 24, .14), 0 8px 24px rgba(16, 20, 24, .05);
8158
+ box-shadow: 0 1px 3px rgba(15, 23, 42, .08), 0 12px 24px rgba(15, 23, 42, .06);
8088
8159
  }
8089
8160
 
8090
8161
  /* \u2500\u2500 Table size picker \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
@@ -8094,9 +8165,9 @@ var DocxodusEditor = (() => {
8094
8165
  z-index: 30;
8095
8166
  padding: 9px;
8096
8167
  border: 1px solid var(--dxr-rule);
8097
- border-radius: 6px;
8168
+ border-radius: 12px;
8098
8169
  background: #fff;
8099
- box-shadow: 0 4px 16px rgba(16, 20, 24, .18);
8170
+ box-shadow: var(--dxr-shadow-xl);
8100
8171
  }
8101
8172
  .dxr-pop[data-open] { display: block; }
8102
8173
  .dxr-gridcells { display: grid; grid-template-columns: repeat(10, 16px); gap: 2px; }
@@ -8104,11 +8175,11 @@ var DocxodusEditor = (() => {
8104
8175
  width: 16px;
8105
8176
  height: 16px;
8106
8177
  border: 1px solid var(--dxr-rule);
8107
- border-radius: 2px;
8108
- background: #f2f5f9;
8178
+ border-radius: 3px;
8179
+ background: var(--dxr-chrome-sunk);
8109
8180
  cursor: pointer;
8110
8181
  }
8111
- .dxr-gridcells div[data-on] { background: var(--dxr-wash); border-color: var(--dxr-accent); }
8182
+ .dxr-gridcells div[data-on] { background: #ccfbf1; border-color: var(--dxr-accent); }
8112
8183
  .dxr-popfoot {
8113
8184
  display: flex;
8114
8185
  justify-content: space-between;
@@ -8191,11 +8262,11 @@ var DocxodusEditor = (() => {
8191
8262
  display: grid;
8192
8263
  place-items: center;
8193
8264
  padding: 24px;
8194
- color: #f4f9ff;
8265
+ color: #f8fafc;
8195
8266
  background:
8196
- radial-gradient(circle at 20% 20%, rgba(63, 128, 255, .24), transparent 22rem),
8197
- radial-gradient(circle at 82% 80%, rgba(176, 91, 255, .22), transparent 24rem),
8198
- linear-gradient(145deg, #071221 0%, #0b1930 52%, #101426 100%);
8267
+ radial-gradient(circle at 20% 20%, rgba(13, 148, 136, .2), transparent 22rem),
8268
+ radial-gradient(circle at 82% 80%, rgba(45, 212, 191, .1), transparent 24rem),
8269
+ linear-gradient(150deg, #0b1220 0%, #0f172a 55%, #0f2723 100%);
8199
8270
  transition: opacity .55s ease, visibility .55s ease;
8200
8271
  }
8201
8272
  .dxr-loader[hidden] { display: none; }
@@ -8214,14 +8285,14 @@ var DocxodusEditor = (() => {
8214
8285
  .dxr-orbit {
8215
8286
  position: absolute;
8216
8287
  inset: 7%;
8217
- border: 1px solid rgba(115, 204, 255, .22);
8288
+ border: 1px solid rgba(45, 212, 191, .24);
8218
8289
  border-radius: 50%;
8219
8290
  animation: dxr-spin 9s linear infinite;
8220
8291
  }
8221
8292
  .dxr-orbit.dxr-two {
8222
8293
  inset: 20%;
8223
8294
  border-style: dashed;
8224
- border-color: rgba(196, 128, 255, .32);
8295
+ border-color: rgba(94, 234, 212, .3);
8225
8296
  animation-duration: 6s;
8226
8297
  animation-direction: reverse;
8227
8298
  }
@@ -8231,19 +8302,19 @@ var DocxodusEditor = (() => {
8231
8302
  height: 10px;
8232
8303
  border-radius: 50%;
8233
8304
  content: "";
8234
- background: #52e5ff;
8235
- box-shadow: 0 0 18px #52e5ff;
8305
+ background: #2dd4bf;
8306
+ box-shadow: 0 0 18px rgba(45, 212, 191, .8);
8236
8307
  }
8237
8308
  .dxr-orbit::before { top: -5px; left: 50%; }
8238
- .dxr-orbit::after { right: 7%; bottom: 12%; background: #b26cff; box-shadow: 0 0 18px #b26cff; }
8309
+ .dxr-orbit::after { right: 7%; bottom: 12%; background: #5eead4; box-shadow: 0 0 18px rgba(94, 234, 212, .7); }
8239
8310
  .dxr-card {
8240
8311
  position: absolute;
8241
8312
  inset: 24% 28%;
8242
8313
  padding: 20px 15px;
8243
- border: 1px solid rgba(255, 255, 255, .33);
8314
+ border: 1px solid rgba(255, 255, 255, .3);
8244
8315
  border-radius: 14px;
8245
- background: linear-gradient(150deg, rgba(255, 255, 255, .18), rgba(255, 255, 255, .06));
8246
- box-shadow: 0 22px 50px rgba(0, 0, 0, .35), 0 0 45px rgba(71, 150, 255, .13);
8316
+ background: linear-gradient(150deg, rgba(255, 255, 255, .16), rgba(255, 255, 255, .05));
8317
+ box-shadow: 0 22px 50px rgba(0, 0, 0, .35), 0 0 45px rgba(13, 148, 136, .15);
8247
8318
  backdrop-filter: blur(10px);
8248
8319
  animation: dxr-float 3.6s ease-in-out infinite;
8249
8320
  }
@@ -8253,8 +8324,8 @@ var DocxodusEditor = (() => {
8253
8324
  right: -9px;
8254
8325
  padding: 4px 7px;
8255
8326
  border-radius: 6px;
8256
- background: #52e5ff;
8257
- color: #06111d;
8327
+ background: #2dd4bf;
8328
+ color: #042f2e;
8258
8329
  content: "DOCX";
8259
8330
  font-size: 8px;
8260
8331
  font-weight: 900;
@@ -8271,46 +8342,49 @@ var DocxodusEditor = (() => {
8271
8342
  }
8272
8343
  .dxr-card i:nth-child(2) { width: 76%; animation-delay: -.45s; }
8273
8344
  .dxr-card i:nth-child(3) { width: 88%; animation-delay: -.85s; }
8274
- .dxr-card i:nth-child(4) { width: 58%; background: rgba(255, 111, 139, .75); animation-delay: -1.2s; }
8345
+ .dxr-card i:nth-child(4) { width: 58%; background: rgba(248, 113, 113, .75); animation-delay: -1.2s; }
8275
8346
  .dxr-chip {
8276
8347
  position: absolute;
8277
8348
  display: grid;
8278
8349
  width: 34px;
8279
8350
  height: 34px;
8280
8351
  place-items: center;
8281
- border: 1px solid rgba(255, 255, 255, .17);
8352
+ border: 1px solid rgba(255, 255, 255, .16);
8282
8353
  border-radius: 11px;
8283
- background: rgba(12, 28, 49, .88);
8354
+ background: rgba(15, 30, 46, .88);
8284
8355
  box-shadow: 0 12px 30px rgba(0, 0, 0, .28);
8285
8356
  font-size: 11px;
8286
8357
  font-weight: 850;
8287
8358
  }
8288
- .dxr-chip.dxr-b { left: 2%; top: 30%; color: #52e5ff; animation: dxr-chip 3s ease-in-out infinite; }
8289
- .dxr-chip.dxr-r { right: -2%; bottom: 24%; color: #ff8da0; animation: dxr-chip 3s -1.4s ease-in-out infinite; }
8290
- .dxr-chip.dxr-s { left: 20%; bottom: 0; color: #52e0a2; animation: dxr-chip 3s -.7s ease-in-out infinite; }
8291
- .dxr-eyebrow { color: #52e5ff; font-size: 10px; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
8359
+ .dxr-chip.dxr-b { left: 2%; top: 30%; color: #5eead4; animation: dxr-chip 3s ease-in-out infinite; }
8360
+ .dxr-chip.dxr-r { right: -2%; bottom: 24%; color: #fca5a5; animation: dxr-chip 3s -1.4s ease-in-out infinite; }
8361
+ .dxr-chip.dxr-s { left: 20%; bottom: 0; color: #6ee7b7; animation: dxr-chip 3s -.7s ease-in-out infinite; }
8362
+ .dxr-eyebrow { color: #5eead4; font-size: 10px; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
8363
+ /* Georgia headline \u2014 the house pairing of a serif headline over Inter UI copy. */
8292
8364
  .dxr-loader h2 {
8293
8365
  margin: 10px auto 10px;
8294
8366
  max-width: 520px;
8295
- font-size: clamp(23px, 5vw, 40px);
8296
- line-height: 1.05;
8297
- letter-spacing: -.045em;
8367
+ font-family: var(--dxr-serif);
8368
+ font-size: clamp(23px, 5vw, 38px);
8369
+ font-weight: 500;
8370
+ line-height: 1.08;
8371
+ letter-spacing: -.02em;
8298
8372
  }
8299
- .dxr-loader-copy > p { margin: 0 auto; max-width: 46ch; color: #9eb2c9; font-size: 13.5px; line-height: 1.6; }
8373
+ .dxr-loader-copy > p { margin: 0 auto; max-width: 46ch; color: #94a3b8; font-size: 13.5px; line-height: 1.6; }
8300
8374
  .dxr-ad {
8301
8375
  display: flex;
8302
8376
  gap: 12px;
8303
8377
  margin: 20px auto 0;
8304
8378
  max-width: 420px;
8305
8379
  padding: 13px;
8306
- border: 1px solid rgba(126, 160, 200, .16);
8307
- border-radius: 13px;
8380
+ border: 1px solid rgba(148, 163, 184, .16);
8381
+ border-radius: 12px;
8308
8382
  background: rgba(255, 255, 255, .04);
8309
8383
  text-align: left;
8310
8384
  }
8311
- .dxr-ad .dxr-num { color: #b26cff; font: 800 10px/1.4 var(--dxr-mono); }
8385
+ .dxr-ad .dxr-num { color: #2dd4bf; font: 800 10px/1.4 var(--dxr-mono); }
8312
8386
  .dxr-ad strong { display: block; font-size: 12.5px; }
8313
- .dxr-ad .dxr-adcopy { display: block; margin-top: 4px; color: #849bb5; font-size: 11.5px; line-height: 1.45; }
8387
+ .dxr-ad .dxr-adcopy { display: block; margin-top: 4px; color: #8ba0b9; font-size: 11.5px; line-height: 1.45; }
8314
8388
  .dxr-ad[data-swap] { animation: dxr-swap .4s ease; }
8315
8389
  .dxr-track {
8316
8390
  height: 3px;
@@ -8324,8 +8398,8 @@ var DocxodusEditor = (() => {
8324
8398
  width: 12%;
8325
8399
  height: 100%;
8326
8400
  border-radius: inherit;
8327
- background: linear-gradient(90deg, #52e5ff, #5c7cff, #b26cff);
8328
- box-shadow: 0 0 16px rgba(82, 229, 255, .55);
8401
+ background: linear-gradient(90deg, #14b8a6, #2dd4bf, #5eead4);
8402
+ box-shadow: 0 0 16px rgba(45, 212, 191, .5);
8329
8403
  transition: width .65s cubic-bezier(.22, .8, .28, 1);
8330
8404
  }
8331
8405
  .dxr-meta {
@@ -8334,7 +8408,7 @@ var DocxodusEditor = (() => {
8334
8408
  gap: 14px;
8335
8409
  margin: 9px auto 0;
8336
8410
  max-width: 420px;
8337
- color: #647e9c;
8411
+ color: #64748b;
8338
8412
  font: 700 9px/1 var(--dxr-mono);
8339
8413
  letter-spacing: .09em;
8340
8414
  text-transform: uppercase;
@@ -8343,9 +8417,9 @@ var DocxodusEditor = (() => {
8343
8417
  display: none;
8344
8418
  margin-top: 18px;
8345
8419
  padding: 9px 14px;
8346
- border: 1px solid rgba(255, 127, 145, .4);
8420
+ border: 1px solid rgba(248, 113, 113, .4);
8347
8421
  border-radius: 9px;
8348
- background: rgba(255, 127, 145, .12);
8422
+ background: rgba(248, 113, 113, .12);
8349
8423
  color: #fff;
8350
8424
  cursor: pointer;
8351
8425
  }
@@ -8460,8 +8534,8 @@ var DocxodusEditor = (() => {
8460
8534
  )}</button>
8461
8535
  </div>
8462
8536
  <div class="dxr-row">
8463
- <button type="button" data-list="bullet" title="Bullet list">&#8226; List</button>
8464
- <button type="button" data-list="decimal" title="Numbered list">1. List</button>
8537
+ <button type="button" data-list="bullet" title="Bullet list">Bullets</button>
8538
+ <button type="button" data-list="decimal" title="Numbered list">Numbered</button>
8465
8539
  <button type="button" data-pagebreak title="Start this block on a new page">Page break</button>
8466
8540
  </div>
8467
8541
  </div>
@@ -8784,6 +8858,7 @@ var DocxodusEditor = (() => {
8784
8858
  const root = doc.createElement("div");
8785
8859
  root.className = "dxr";
8786
8860
  root.dataset.state = "idle";
8861
+ root.dataset.frame = this.options.frame ?? "flush";
8787
8862
  root.innerHTML = RIBBON_HTML;
8788
8863
  for (const el of Array.from(root.querySelectorAll("[data-dxr]"))) {
8789
8864
  el.id = this.idPrefix + el.dataset.dxr;