@mikedown/core 0.3.0 → 0.4.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.
package/dist/styles.css CHANGED
@@ -913,7 +913,7 @@
913
913
  :is(.mikedown-root, .mikedown-portal) #editor h3 { font-size: 1.25em; }
914
914
  :is(.mikedown-root, .mikedown-portal) #editor h4 { font-size: 1.1em; }
915
915
  :is(.mikedown-root, .mikedown-portal) #editor h5 { font-size: 1em; }
916
- :is(.mikedown-root, .mikedown-portal) #editor h6 { font-size: 0.9em; opacity: 0.8; }
916
+ :is(.mikedown-root, .mikedown-portal) #editor h6 { font-size: 0.9em; }
917
917
 
918
918
  :is(.mikedown-root, .mikedown-portal) #editor p {
919
919
  margin-bottom: 1em;
@@ -1025,6 +1025,35 @@
1025
1025
  opacity: 0.7;
1026
1026
  }
1027
1027
 
1028
+ /* Inline AI suggestion: inherits the text it continues, only dimmer. A widget
1029
+ decoration, never part of the document. No box of its own, so showing it
1030
+ moves nothing but what wraps after it. */
1031
+ :is(.mikedown-root, .mikedown-portal) .ProseMirror .mikedown-ghost {
1032
+ display: inline;
1033
+ opacity: 0.55;
1034
+ pointer-events: none;
1035
+ -webkit-user-select: none;
1036
+ user-select: none;
1037
+ animation: mikedown-ghost-in 120ms ease-out both;
1038
+ }
1039
+
1040
+ @keyframes mikedown-ghost-in {
1041
+ from { opacity: 0; }
1042
+ to { opacity: 0.55; }
1043
+ }
1044
+
1045
+ @media (prefers-reduced-motion: reduce) {
1046
+ :is(.mikedown-root, .mikedown-portal) .ProseMirror .mikedown-ghost {
1047
+ animation: none;
1048
+ }
1049
+ }
1050
+
1051
+ @media print {
1052
+ :is(.mikedown-root, .mikedown-portal) .ProseMirror .mikedown-ghost {
1053
+ display: none;
1054
+ }
1055
+ }
1056
+
1028
1057
  /* ─── Headings ────────────────────────────────────────────────────────────── */
1029
1058
 
1030
1059
  :is(.mikedown-root, .mikedown-portal) .ProseMirror h1 {
@@ -1072,10 +1101,7 @@
1072
1101
  }
1073
1102
 
1074
1103
  :is(.mikedown-root, .mikedown-portal) .ProseMirror h6 {
1075
- opacity: 0.75;
1076
- text-transform: uppercase;
1077
1104
  font-size: 0.85em;
1078
- letter-spacing: 0.05em;
1079
1105
  }
1080
1106
 
1081
1107
  /* ─── Lists ───────────────────────────────────────────────────────────────── */
@@ -6709,6 +6735,12 @@ body.td-dragging :is(.mikedown-root, .mikedown-portal) .td-add {
6709
6735
  :is(.mikedown-root, .mikedown-portal) .ai-feature-tasks > .settings-desc { font-size: 11.5px; }
6710
6736
  :is(.mikedown-root, .mikedown-portal) .ai-feature-task { justify-content: space-between; gap: 10px; }
6711
6737
 
6738
+ /* Inline suggestions' options under its switch: the same quiet fold. */
6739
+ :is(.mikedown-root, .mikedown-portal) .settings-group > .settings-row.ai-ghost-options-box { padding: 0 0 8px; gap: 2px; border-top: none; }
6740
+ :is(.mikedown-root, .mikedown-portal) .settings-row.ai-ghost-options-box[hidden] { display: none; }
6741
+ :is(.mikedown-root, .mikedown-portal) .ai-ghost-options-toggle { justify-self: start; }
6742
+ :is(.mikedown-root, .mikedown-portal) .ai-ghost-options { margin-top: 2px; }
6743
+
6712
6744
  /* The master switch carries the tab: a touch more presence. */
6713
6745
  :is(.mikedown-root, .mikedown-portal) .ai-master .settings-label { font-size: 13.5px; }
6714
6746
 
@@ -7763,6 +7795,913 @@ body.td-dragging :is(.mikedown-root, .mikedown-portal) .td-add {
7763
7795
  color: var(--settings-muted, var(--mikedown-text-muted));
7764
7796
  }
7765
7797
 
7798
+ /* ── AI Activity panel (ai-activity-panel.ts) ─────────────────────────────────
7799
+ In the AI Engines page's shell. A request list crossed with an output pane:
7800
+ proportional type for labels, monospace for anything raw, no chrome beyond
7801
+ the hairlines the page already has. */
7802
+
7803
+ :is(.mikedown-root, .mikedown-portal) .ai-activity:focus { outline: none; }
7804
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-header-actions {
7805
+ justify-self: end;
7806
+ display: flex;
7807
+ align-items: center;
7808
+ gap: 6px;
7809
+ min-width: 0;
7810
+ }
7811
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-action {
7812
+ padding: 3px 10px;
7813
+ background: var(--mikedown-button-bg, transparent);
7814
+ color: var(--mikedown-button-text, var(--settings-fg));
7815
+ }
7816
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-action:hover { background: var(--mikedown-button-hover, var(--settings-hover-bg)); }
7817
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-action:disabled,
7818
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-action:disabled:hover {
7819
+ background: var(--mikedown-button-bg, transparent);
7820
+ opacity: 0.5;
7821
+ cursor: default;
7822
+ }
7823
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-inline-status {
7824
+ overflow: hidden;
7825
+ font-size: 12px;
7826
+ color: var(--settings-muted);
7827
+ text-overflow: ellipsis;
7828
+ white-space: nowrap;
7829
+ }
7830
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-inline-status[data-level="ok"] { color: var(--ai-ok); }
7831
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-inline-status[data-level="error"] { color: var(--ai-error); }
7832
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-banner {
7833
+ margin: 0;
7834
+ padding: 7px 16px;
7835
+ border-bottom: 1px solid var(--mikedown-divider, var(--settings-divider));
7836
+ font-size: 12px;
7837
+ line-height: 1.45;
7838
+ color: var(--settings-muted);
7839
+ flex-shrink: 0;
7840
+ }
7841
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-body {
7842
+ flex: 1;
7843
+ display: flex;
7844
+ min-height: 0;
7845
+ }
7846
+
7847
+ /* The list: dense enough to scan, like a network panel. */
7848
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-master {
7849
+ width: clamp(320px, 38%, 420px);
7850
+ flex-shrink: 0;
7851
+ display: flex;
7852
+ flex-direction: column;
7853
+ min-height: 0;
7854
+ border-right: 1px solid var(--mikedown-divider, var(--settings-divider));
7855
+ background: var(--mikedown-surface-toolbar, transparent);
7856
+ }
7857
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-list-head {
7858
+ display: flex;
7859
+ align-items: baseline;
7860
+ justify-content: space-between;
7861
+ gap: 8px;
7862
+ padding: 12px 16px 6px;
7863
+ flex-shrink: 0;
7864
+ }
7865
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-list-label {
7866
+ font-size: 11px;
7867
+ font-weight: 600;
7868
+ letter-spacing: 0.04em;
7869
+ text-transform: uppercase;
7870
+ color: var(--settings-muted);
7871
+ }
7872
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-list-count {
7873
+ font-size: 11px;
7874
+ font-variant-numeric: tabular-nums;
7875
+ color: var(--settings-muted);
7876
+ }
7877
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-list {
7878
+ flex: 1;
7879
+ min-height: 0;
7880
+ display: flex;
7881
+ flex-direction: column;
7882
+ gap: 1px;
7883
+ padding: 0 8px 10px;
7884
+ overflow-y: auto;
7885
+ /* The panel keeps the scroll position itself when a row lands on top. */
7886
+ overflow-anchor: none;
7887
+ }
7888
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row {
7889
+ display: grid;
7890
+ grid-template-columns: 14px minmax(0, 1fr) auto;
7891
+ align-items: center;
7892
+ gap: 2px 6px;
7893
+ flex-shrink: 0;
7894
+ padding: 6px 8px;
7895
+ border-radius: var(--mikedown-radius-sm, 4px);
7896
+ color: var(--settings-fg);
7897
+ cursor: pointer;
7898
+ transition: background-color 120ms var(--ai-ease);
7899
+ }
7900
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row:hover { background: var(--ai-row-hover); }
7901
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row[aria-selected="true"] {
7902
+ background: var(--settings-active-bg);
7903
+ color: var(--settings-active-fg);
7904
+ outline: 1px solid var(--mikedown-contrast-border, transparent);
7905
+ outline-offset: -1px;
7906
+ }
7907
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row:focus:not(:focus-visible) { outline: none; }
7908
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row:focus-visible {
7909
+ outline: 1px solid var(--settings-focus);
7910
+ outline-offset: -1px;
7911
+ }
7912
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row > .ai-activity-dot { justify-self: center; }
7913
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-head,
7914
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-sub {
7915
+ display: flex;
7916
+ align-items: center;
7917
+ gap: 6px;
7918
+ min-width: 0;
7919
+ }
7920
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-sub { grid-column: 2; }
7921
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-feature {
7922
+ min-width: 0;
7923
+ overflow: hidden;
7924
+ font-size: 12.5px;
7925
+ font-weight: 500;
7926
+ text-overflow: ellipsis;
7927
+ white-space: nowrap;
7928
+ }
7929
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-status {
7930
+ flex-shrink: 0;
7931
+ font-size: 11px;
7932
+ white-space: nowrap;
7933
+ }
7934
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row[data-status="error"] .ai-activity-row-status { color: var(--ai-error); }
7935
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row[data-status="fallback"] .ai-activity-row-status { color: var(--ai-warn); }
7936
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row[data-status="streaming"] .ai-activity-row-status { color: var(--ai-info); }
7937
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row[data-status="cancelled"] .ai-activity-row-status { color: var(--settings-muted); }
7938
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-when,
7939
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-tokens {
7940
+ justify-self: end;
7941
+ font-family: var(--mikedown-font-mono, ui-monospace, monospace);
7942
+ font-size: 11px;
7943
+ font-variant-numeric: tabular-nums;
7944
+ color: var(--settings-muted);
7945
+ white-space: nowrap;
7946
+ }
7947
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-when {
7948
+ display: flex;
7949
+ gap: 10px;
7950
+ }
7951
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-engine {
7952
+ min-width: 0;
7953
+ overflow: hidden;
7954
+ font-size: 11.5px;
7955
+ color: var(--settings-muted);
7956
+ text-overflow: ellipsis;
7957
+ white-space: nowrap;
7958
+ }
7959
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-locality { display: inline-flex; flex-shrink: 0; }
7960
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row-locality:empty { display: none; }
7961
+ /* On the selected fill, everything follows its text color (a theme's fill can be saturated). */
7962
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row[aria-selected="true"] :is(.ai-activity-row-status, .ai-activity-row-when, .ai-activity-row-tokens, .ai-activity-row-engine) {
7963
+ color: inherit;
7964
+ opacity: 0.78;
7965
+ }
7966
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row[aria-selected="true"] .ai-pill {
7967
+ color: inherit;
7968
+ background: color-mix(in srgb, currentColor 14%, transparent);
7969
+ }
7970
+
7971
+ /* The status dot. Shape as well as color: cancelled is a hollow ring. */
7972
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-dot {
7973
+ display: inline-block;
7974
+ width: 8px;
7975
+ height: 8px;
7976
+ flex-shrink: 0;
7977
+ box-sizing: border-box;
7978
+ border: 1.5px solid var(--settings-muted);
7979
+ border-radius: 50%;
7980
+ background: transparent;
7981
+ }
7982
+ :is(.mikedown-root, .mikedown-portal) [data-status="ok"] > .ai-activity-dot { background: var(--ai-ok); border-color: var(--ai-ok); }
7983
+ :is(.mikedown-root, .mikedown-portal) [data-status="error"] > .ai-activity-dot { background: var(--ai-error); border-color: var(--ai-error); }
7984
+ :is(.mikedown-root, .mikedown-portal) [data-status="fallback"] > .ai-activity-dot { background: var(--ai-warn); border-color: var(--ai-warn); }
7985
+ :is(.mikedown-root, .mikedown-portal) [data-status="streaming"] > .ai-activity-dot {
7986
+ background: var(--ai-info);
7987
+ border-color: var(--ai-info);
7988
+ animation: ai-pulse 1s ease-in-out infinite;
7989
+ }
7990
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row[aria-selected="true"] > .ai-activity-dot {
7991
+ box-shadow: 0 0 0 1px color-mix(in srgb, currentColor 35%, transparent);
7992
+ }
7993
+
7994
+ /* The request: one readable column that can hold long raw text. */
7995
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-detail {
7996
+ flex: 1;
7997
+ min-width: 0;
7998
+ overflow-y: auto;
7999
+ }
8000
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-detail:focus:not(:focus-visible) { outline: none; }
8001
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-detail:focus-visible {
8002
+ outline: 1px solid var(--settings-focus);
8003
+ outline-offset: -1px;
8004
+ }
8005
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-detail-inner {
8006
+ box-sizing: border-box;
8007
+ display: flex;
8008
+ flex-direction: column;
8009
+ gap: 16px;
8010
+ max-width: 920px;
8011
+ margin: 0 auto;
8012
+ padding: 18px 24px 40px;
8013
+ }
8014
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-detail-head {
8015
+ display: flex;
8016
+ flex-direction: column;
8017
+ gap: 5px;
8018
+ }
8019
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-detail-title-row {
8020
+ display: flex;
8021
+ flex-wrap: wrap;
8022
+ align-items: center;
8023
+ gap: 6px 10px;
8024
+ }
8025
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-detail-title {
8026
+ margin: 0;
8027
+ font-size: 14px;
8028
+ font-weight: 600;
8029
+ color: var(--settings-fg);
8030
+ }
8031
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-status {
8032
+ display: inline-flex;
8033
+ align-items: center;
8034
+ gap: 5px;
8035
+ font-size: 12px;
8036
+ color: var(--settings-muted);
8037
+ }
8038
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-status[data-status="error"] { color: var(--ai-error); }
8039
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-detail-actions {
8040
+ display: flex;
8041
+ align-items: center;
8042
+ gap: 6px;
8043
+ min-width: 0;
8044
+ margin-left: auto;
8045
+ }
8046
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-route {
8047
+ display: flex;
8048
+ flex-wrap: wrap;
8049
+ align-items: center;
8050
+ gap: 2px 8px;
8051
+ font-size: 12.5px;
8052
+ color: var(--settings-fg);
8053
+ }
8054
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-route-model {
8055
+ font-family: var(--mikedown-font-mono, ui-monospace, monospace);
8056
+ font-size: 12px;
8057
+ color: var(--settings-muted);
8058
+ overflow-wrap: anywhere;
8059
+ }
8060
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-thinking {
8061
+ font-size: 12px;
8062
+ color: var(--settings-muted);
8063
+ }
8064
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-notes {
8065
+ display: flex;
8066
+ flex-direction: column;
8067
+ gap: 6px;
8068
+ }
8069
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-notes:empty { display: none; }
8070
+
8071
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-section {
8072
+ display: flex;
8073
+ flex-direction: column;
8074
+ gap: 8px;
8075
+ }
8076
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-section-head {
8077
+ display: flex;
8078
+ align-items: center;
8079
+ gap: 8px;
8080
+ min-width: 0;
8081
+ }
8082
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-section-toggle {
8083
+ align-self: auto;
8084
+ flex-shrink: 0;
8085
+ font-weight: 600;
8086
+ color: var(--settings-fg);
8087
+ }
8088
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-section-summary {
8089
+ overflow: hidden;
8090
+ font-size: 11.5px;
8091
+ font-variant-numeric: tabular-nums;
8092
+ color: var(--settings-muted);
8093
+ text-overflow: ellipsis;
8094
+ white-space: nowrap;
8095
+ }
8096
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-section-body {
8097
+ display: flex;
8098
+ flex-direction: column;
8099
+ gap: 8px;
8100
+ }
8101
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-section-body[hidden],
8102
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-block[hidden] { display: none; }
8103
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-block {
8104
+ overflow: hidden;
8105
+ border: 1px solid var(--mikedown-divider, var(--settings-divider));
8106
+ border-radius: var(--mikedown-radius-sm, 4px);
8107
+ background: var(--mikedown-code-bg, transparent);
8108
+ }
8109
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-block-caption {
8110
+ display: flex;
8111
+ align-items: baseline;
8112
+ justify-content: space-between;
8113
+ gap: 8px;
8114
+ padding: 4px 10px;
8115
+ border-bottom: 1px solid var(--mikedown-divider, var(--settings-divider));
8116
+ }
8117
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-message-role {
8118
+ font-size: 10.5px;
8119
+ font-weight: 600;
8120
+ letter-spacing: 0.04em;
8121
+ text-transform: uppercase;
8122
+ color: var(--settings-muted);
8123
+ }
8124
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-block-size {
8125
+ font-size: 11px;
8126
+ font-variant-numeric: tabular-nums;
8127
+ color: var(--settings-muted);
8128
+ }
8129
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-text {
8130
+ margin: 0;
8131
+ padding: 8px 10px;
8132
+ background: none;
8133
+ font-family: var(--mikedown-font-mono, ui-monospace, monospace);
8134
+ font-size: 12px;
8135
+ line-height: 1.5;
8136
+ color: var(--mikedown-text, var(--settings-fg));
8137
+ tab-size: 4;
8138
+ white-space: pre-wrap;
8139
+ overflow-wrap: anywhere;
8140
+ user-select: text;
8141
+ }
8142
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-meta {
8143
+ display: grid;
8144
+ grid-template-columns: max-content minmax(0, 1fr);
8145
+ gap: 2px 14px;
8146
+ margin: 0;
8147
+ font-size: 12px;
8148
+ line-height: 1.5;
8149
+ }
8150
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-meta dt { color: var(--settings-muted); }
8151
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-meta dd {
8152
+ margin: 0;
8153
+ min-width: 0;
8154
+ font-variant-numeric: tabular-nums;
8155
+ color: var(--settings-fg);
8156
+ overflow-wrap: anywhere;
8157
+ }
8158
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-meta dd.is-raw {
8159
+ font-family: var(--mikedown-font-mono, ui-monospace, monospace);
8160
+ font-size: 11.5px;
8161
+ }
8162
+
8163
+ /* Nothing recorded: the list and detail give way to one quiet message. */
8164
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-empty {
8165
+ flex: 1;
8166
+ display: flex;
8167
+ flex-direction: column;
8168
+ align-items: center;
8169
+ justify-content: center;
8170
+ gap: 6px;
8171
+ min-height: 0;
8172
+ padding: 32px 24px 96px;
8173
+ text-align: center;
8174
+ }
8175
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-empty-title {
8176
+ font-size: 14px;
8177
+ font-weight: 600;
8178
+ color: var(--settings-fg);
8179
+ }
8180
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-empty-text {
8181
+ max-width: 460px;
8182
+ margin: 0;
8183
+ font-size: 12.5px;
8184
+ line-height: 1.5;
8185
+ color: var(--settings-muted);
8186
+ }
8187
+
8188
+ /* One column: the list or the request, as on the AI Engines page. */
8189
+ :is(.mikedown-root, .mikedown-portal) .ai-activity.is-narrow .ai-activity-master {
8190
+ width: auto;
8191
+ flex: 1;
8192
+ border-right: none;
8193
+ }
8194
+ :is(.mikedown-root, .mikedown-portal) .ai-activity.is-narrow[data-view="list"] .ai-activity-detail,
8195
+ :is(.mikedown-root, .mikedown-portal) .ai-activity.is-narrow[data-view="detail"] .ai-activity-master { display: none; }
8196
+ :is(.mikedown-root, .mikedown-portal) .ai-activity.is-narrow .ai-activity-detail-inner { padding: 14px 16px 32px; }
8197
+ :is(.mikedown-root, .mikedown-portal) .ai-activity.is-narrow .ai-page-header { padding: 8px 10px; }
8198
+
8199
+ /* The AI tab's "Open" beside the AI Activity switch. */
8200
+ :is(.mikedown-root, .mikedown-portal) .settings-row--inline.ai-activity-setting { grid-template-columns: minmax(0, 1fr) auto auto; }
8201
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-open { margin: 0; flex-shrink: 0; }
8202
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-open[hidden] { display: none; }
8203
+
8204
+ @media (prefers-reduced-motion: reduce) {
8205
+ :is(.mikedown-root, .mikedown-portal) [data-status="streaming"] > .ai-activity-dot { animation: none; }
8206
+ :is(.mikedown-root, .mikedown-portal) .ai-activity-row { transition: none; }
8207
+ }
8208
+
8209
+ /* ── Documentation bases (ai-docs-page.ts) ───────────────────────────────── */
8210
+
8211
+ :is(.mikedown-root, .mikedown-portal) .ai-docs,
8212
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-list-view,
8213
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form {
8214
+ display: flex;
8215
+ flex-direction: column;
8216
+ gap: 10px;
8217
+ }
8218
+ :is(.mikedown-root, .mikedown-portal) .ai-docs { gap: 14px; }
8219
+ :is(.mikedown-root, .mikedown-portal) .ai-docs > [hidden] { display: none; }
8220
+ :is(.mikedown-root, .mikedown-portal) .ai-page-detail[data-kind="bases"] .ai-detail-head { flex-direction: row; align-items: center; gap: 14px; }
8221
+
8222
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-bar,
8223
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form-actions,
8224
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form-adders,
8225
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form-path {
8226
+ display: flex;
8227
+ align-items: center;
8228
+ gap: 8px;
8229
+ flex-wrap: wrap;
8230
+ }
8231
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-status {
8232
+ flex: 1;
8233
+ min-width: 0;
8234
+ font-size: 12px;
8235
+ color: var(--settings-muted);
8236
+ }
8237
+
8238
+ /* One base: a row of the settings group, flat, with its folders under the name. */
8239
+ :is(.mikedown-root, .mikedown-portal) .settings-group > .settings-row.ai-docs-base { gap: 6px; }
8240
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-base-head {
8241
+ display: flex;
8242
+ align-items: center;
8243
+ justify-content: space-between;
8244
+ gap: 12px;
8245
+ min-width: 0;
8246
+ }
8247
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-base-title {
8248
+ display: flex;
8249
+ align-items: center;
8250
+ gap: 8px;
8251
+ flex-wrap: wrap;
8252
+ min-width: 0;
8253
+ }
8254
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-base-name {
8255
+ min-width: 0;
8256
+ font-size: 13px;
8257
+ font-weight: 600;
8258
+ color: var(--settings-fg);
8259
+ overflow-wrap: anywhere;
8260
+ }
8261
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-base-actions {
8262
+ display: flex;
8263
+ align-items: center;
8264
+ gap: 6px;
8265
+ flex-shrink: 0;
8266
+ }
8267
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-base.is-disabled .ai-docs-base-title,
8268
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-base.is-disabled .ai-docs-roots { opacity: 0.55; }
8269
+
8270
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-roots,
8271
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form-roots {
8272
+ display: flex;
8273
+ flex-direction: column;
8274
+ gap: 6px;
8275
+ min-width: 0;
8276
+ margin: 0;
8277
+ padding: 0;
8278
+ list-style: none;
8279
+ }
8280
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form-roots:empty { display: none; }
8281
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-root {
8282
+ display: flex;
8283
+ flex-direction: column;
8284
+ gap: 3px;
8285
+ min-width: 0;
8286
+ }
8287
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form-root {
8288
+ display: flex;
8289
+ align-items: center;
8290
+ justify-content: space-between;
8291
+ gap: 8px;
8292
+ min-width: 0;
8293
+ }
8294
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-path {
8295
+ min-width: 0;
8296
+ color: var(--settings-muted);
8297
+ overflow: hidden;
8298
+ text-overflow: ellipsis;
8299
+ white-space: nowrap;
8300
+ }
8301
+
8302
+ /* Health: small quiet tags, as under a setting in VS Code. Only a warning takes colour. */
8303
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-chips {
8304
+ display: flex;
8305
+ flex-wrap: wrap;
8306
+ gap: 4px;
8307
+ min-width: 0;
8308
+ }
8309
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-chip {
8310
+ display: inline-flex;
8311
+ align-items: center;
8312
+ gap: 3px;
8313
+ max-width: 100%;
8314
+ padding: 0 6px;
8315
+ min-height: 17px;
8316
+ border: 1px solid transparent;
8317
+ border-radius: var(--mikedown-radius-sm, 4px);
8318
+ background: var(--ai-row-hover);
8319
+ font-size: 11px;
8320
+ line-height: 15px;
8321
+ color: var(--settings-muted);
8322
+ overflow-wrap: anywhere;
8323
+ }
8324
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-chip svg { flex-shrink: 0; width: 11px; height: 11px; }
8325
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-chip--warn {
8326
+ background: color-mix(in srgb, var(--ai-warn) 10%, transparent);
8327
+ color: var(--ai-warn);
8328
+ }
8329
+
8330
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form .settings-input:not(.ai-docs-number) { min-width: 0; }
8331
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form .settings-row--inline > .settings-input { width: 260px; max-width: 100%; }
8332
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form-path .settings-input { flex: 1; width: auto; min-width: 160px; }
8333
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-form-error:empty { display: none; }
8334
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-number { width: 72px; }
8335
+ :is(.mikedown-root, .mikedown-portal) .ai-docs-select.settings-input { width: auto; }
8336
+
8337
+ :is(.mikedown-root, .mikedown-portal) .ai-page-detail .ai-docs-base .ai-confirm { margin: 2px 0 0; }
8338
+
8339
+ :is(.mikedown-root, .mikedown-portal) .ai-page.is-narrow .ai-docs-base-head { flex-wrap: wrap; }
8340
+ :is(.mikedown-root, .mikedown-portal) .ai-page.is-narrow .ai-docs-path { white-space: normal; overflow-wrap: anywhere; }
8341
+ :is(.mikedown-root, .mikedown-portal) .ai-page.is-narrow .ai-docs-form .settings-row--inline { grid-template-columns: minmax(0, 1fr); }
8342
+ :is(.mikedown-root, .mikedown-portal) .ai-page.is-narrow .ai-docs-form .settings-row--inline > .settings-input { width: 100%; justify-self: stretch; }
8343
+ :is(.mikedown-root, .mikedown-portal) .ai-page.is-narrow .ai-docs-form .settings-row--inline > .ai-switch { justify-self: start; }
8344
+
8345
+ /* ── The chat panel (ai-chat-panel.ts): docked inside the editor ─────────── */
8346
+
8347
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-dock {
8348
+ --settings-fg: var(--mikedown-text, #d4d4d4);
8349
+ --settings-muted: var(--mikedown-text-muted, rgba(128, 128, 128, 0.9));
8350
+ --settings-divider: var(--mikedown-border, rgba(128, 128, 128, 0.2));
8351
+ --settings-focus: var(--mikedown-focus-ring, #007fd4);
8352
+ --ai-ok: var(--mikedown-success, #2e7d32);
8353
+ --ai-error: var(--mikedown-danger, #c62828);
8354
+ --ai-warn: var(--mikedown-warning, #b26a00);
8355
+ --ai-ease: cubic-bezier(0.2, 0, 0, 1);
8356
+ --ai-chat-quiet: var(--mikedown-hover, rgba(128, 128, 128, 0.1));
8357
+ position: absolute;
8358
+ top: 40px;
8359
+ right: 0;
8360
+ bottom: 0;
8361
+ left: 0;
8362
+ z-index: 95;
8363
+ display: flex;
8364
+ background: var(--mikedown-surface, #1e1e1e);
8365
+ color: var(--settings-fg);
8366
+ font-family: var(--mikedown-font-ui, system-ui, -apple-system, sans-serif);
8367
+ font-size: 13px;
8368
+ line-height: 1.5;
8369
+ }
8370
+ .mikedown-root.mikedown-no-toolbar .ai-chat-dock { top: 0; }
8371
+ .mikedown-root.ai-chat-docked .ai-chat-dock {
8372
+ left: auto;
8373
+ width: var(--mikedown-ai-chat-width, 380px);
8374
+ border-left: 1px solid var(--mikedown-divider, var(--settings-divider));
8375
+ }
8376
+ .mikedown-root.ai-chat-docked .mikedown-editor-container,
8377
+ .mikedown-root.ai-chat-docked .mikedown-source-container {
8378
+ right: var(--mikedown-ai-chat-width, 380px);
8379
+ }
8380
+ /* A sidebar on the right sits beside the panel, not under it. */
8381
+ .mikedown-root.ai-chat-docked.mikedown-outline-right .mikedown-outline-sidebar {
8382
+ right: var(--mikedown-ai-chat-width, 380px);
8383
+ }
8384
+ .mikedown-root.ai-chat-docked.mikedown-outline-open.mikedown-outline-right .mikedown-editor-container {
8385
+ right: calc(var(--mikedown-ai-chat-width, 380px) + var(--mikedown-outline-width, 200px));
8386
+ }
8387
+ .mikedown-root.ai-chat-docked.mikedown-outline-right .mikedown-outline-toggle {
8388
+ right: calc(var(--mikedown-ai-chat-width, 380px) + 8px);
8389
+ }
8390
+ .mikedown-root.ai-chat-docked .mikedown-find-replace-bar {
8391
+ right: calc(var(--mikedown-ai-chat-width, 380px) + 20px);
8392
+ }
8393
+ @media print {
8394
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-dock { display: none; }
8395
+ }
8396
+
8397
+ :is(.mikedown-root, .mikedown-portal) .ai-chat {
8398
+ flex: 1;
8399
+ display: flex;
8400
+ flex-direction: column;
8401
+ min-width: 0;
8402
+ min-height: 0;
8403
+ }
8404
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-spacer { flex: 1; }
8405
+
8406
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-header {
8407
+ display: flex;
8408
+ align-items: center;
8409
+ gap: 6px;
8410
+ min-height: 36px;
8411
+ padding: 4px 6px 4px 14px;
8412
+ flex-shrink: 0;
8413
+ }
8414
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-title {
8415
+ margin: 0;
8416
+ font-size: 13px;
8417
+ font-weight: 600;
8418
+ color: var(--settings-fg);
8419
+ }
8420
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-icon {
8421
+ display: inline-flex;
8422
+ align-items: center;
8423
+ justify-content: center;
8424
+ width: 26px;
8425
+ height: 26px;
8426
+ padding: 0;
8427
+ border: 0;
8428
+ border-radius: var(--mikedown-radius-sm, 4px);
8429
+ background: none;
8430
+ color: var(--settings-muted);
8431
+ cursor: pointer;
8432
+ }
8433
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-icon:hover { background: var(--ai-chat-quiet); color: var(--settings-fg); }
8434
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-icon[hidden] { display: none; }
8435
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-status {
8436
+ font-size: 11.5px;
8437
+ color: var(--settings-muted);
8438
+ overflow-wrap: anywhere;
8439
+ }
8440
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-status[data-level="error"] { color: var(--ai-error); }
8441
+
8442
+ /* The conversation. */
8443
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-log {
8444
+ flex: 1;
8445
+ min-height: 0;
8446
+ overflow-y: auto;
8447
+ padding: 6px 14px 14px;
8448
+ outline: none;
8449
+ }
8450
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-empty {
8451
+ margin-top: 18vh;
8452
+ padding: 0 16px;
8453
+ text-align: center;
8454
+ color: var(--settings-muted);
8455
+ }
8456
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-empty[hidden] { display: none; }
8457
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-empty-title { font-weight: 600; color: var(--settings-fg); }
8458
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-empty-text { margin: 4px 0 0; font-size: 12px; }
8459
+
8460
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-turn {
8461
+ display: flex;
8462
+ flex-direction: column;
8463
+ gap: 10px;
8464
+ margin-top: 16px;
8465
+ }
8466
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-turn:first-of-type { margin-top: 6px; }
8467
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-question {
8468
+ align-self: flex-end;
8469
+ max-width: 88%;
8470
+ padding: 6px 11px;
8471
+ border-radius: 12px;
8472
+ background: var(--mikedown-active, var(--ai-chat-quiet));
8473
+ white-space: pre-wrap;
8474
+ overflow-wrap: anywhere;
8475
+ }
8476
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-reply {
8477
+ display: flex;
8478
+ flex-direction: column;
8479
+ gap: 6px;
8480
+ min-width: 0;
8481
+ }
8482
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-answer {
8483
+ white-space: pre-wrap;
8484
+ overflow-wrap: anywhere;
8485
+ }
8486
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-answer.is-cancelled { color: var(--settings-muted); }
8487
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-turn--arrived .ai-chat-reply {
8488
+ animation: ai-chat-arrive 200ms var(--ai-ease);
8489
+ }
8490
+ @keyframes ai-chat-arrive {
8491
+ from { opacity: 0.35; transform: translateY(3px); }
8492
+ to { opacity: 1; transform: none; }
8493
+ }
8494
+
8495
+ /* A citation: its number and `file › heading`. The full path is in the hover title. */
8496
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-chip {
8497
+ display: inline-flex;
8498
+ align-items: baseline;
8499
+ gap: 4px;
8500
+ max-width: min(100%, 26em);
8501
+ margin: 0 1px;
8502
+ padding: 0 7px 0 3px;
8503
+ border: 1px solid var(--mikedown-divider, var(--settings-divider));
8504
+ border-radius: 999px;
8505
+ background: none;
8506
+ color: var(--mikedown-link, var(--settings-fg));
8507
+ font: inherit;
8508
+ font-size: 11.5px;
8509
+ line-height: 1.55;
8510
+ white-space: nowrap;
8511
+ vertical-align: baseline;
8512
+ transition: background-color 120ms ease-out;
8513
+ }
8514
+ :is(.mikedown-root, .mikedown-portal) button.ai-chat-chip { cursor: pointer; }
8515
+ :is(.mikedown-root, .mikedown-portal) button.ai-chat-chip:hover { background: var(--ai-chat-quiet); }
8516
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-chip-n {
8517
+ min-width: 1.35em;
8518
+ border-radius: 999px;
8519
+ background: var(--ai-chat-quiet);
8520
+ color: var(--settings-muted);
8521
+ font-variant-numeric: tabular-nums;
8522
+ text-align: center;
8523
+ }
8524
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-chip-label {
8525
+ overflow: hidden;
8526
+ text-overflow: ellipsis;
8527
+ }
8528
+
8529
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-notes { display: flex; flex-direction: column; gap: 1px; }
8530
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-note {
8531
+ font-size: 11.5px;
8532
+ color: var(--settings-muted);
8533
+ }
8534
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-actions {
8535
+ display: flex;
8536
+ flex-wrap: wrap;
8537
+ align-items: center;
8538
+ gap: 2px 4px;
8539
+ margin-left: -6px;
8540
+ }
8541
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-action,
8542
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-link {
8543
+ padding: 2px 6px;
8544
+ border: 0;
8545
+ border-radius: var(--mikedown-radius-sm, 4px);
8546
+ background: none;
8547
+ color: var(--settings-muted);
8548
+ font: inherit;
8549
+ font-size: 12px;
8550
+ cursor: pointer;
8551
+ }
8552
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-action:hover,
8553
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-link:hover { background: var(--ai-chat-quiet); color: var(--settings-fg); }
8554
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-link { color: var(--mikedown-link, var(--settings-muted)); }
8555
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-route {
8556
+ display: inline-flex;
8557
+ align-items: center;
8558
+ gap: 4px;
8559
+ max-width: 40%;
8560
+ padding-right: 2px;
8561
+ font-size: 11px;
8562
+ color: var(--settings-muted);
8563
+ }
8564
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-route-icon { display: inline-flex; flex-shrink: 0; }
8565
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-route-name {
8566
+ overflow: hidden;
8567
+ white-space: nowrap;
8568
+ text-overflow: ellipsis;
8569
+ }
8570
+
8571
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-progress {
8572
+ display: flex;
8573
+ align-items: center;
8574
+ gap: 7px;
8575
+ font-size: 12px;
8576
+ color: var(--settings-muted);
8577
+ }
8578
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-dot {
8579
+ width: 6px;
8580
+ height: 6px;
8581
+ flex-shrink: 0;
8582
+ border-radius: 50%;
8583
+ background: currentColor;
8584
+ animation: ai-chat-pulse 1.2s ease-in-out infinite;
8585
+ }
8586
+ @keyframes ai-chat-pulse {
8587
+ 50% { opacity: 0.25; }
8588
+ }
8589
+
8590
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-notice {
8591
+ display: flex;
8592
+ flex-direction: column;
8593
+ gap: 4px;
8594
+ padding: 8px 10px;
8595
+ border-radius: 8px;
8596
+ background: var(--ai-chat-quiet);
8597
+ }
8598
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-notice-title { font-weight: 600; overflow-wrap: anywhere; }
8599
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-notice .ai-chat-actions { margin: 2px 0 0 -6px; }
8600
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-notice .ai-chat-action { color: var(--mikedown-link, var(--settings-fg)); }
8601
+
8602
+ /* The composer. */
8603
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-composer {
8604
+ display: flex;
8605
+ flex-direction: column;
8606
+ gap: 6px;
8607
+ padding: 8px 12px 12px;
8608
+ flex-shrink: 0;
8609
+ }
8610
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-off[hidden],
8611
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-scope[hidden],
8612
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-bases[hidden] { display: none; }
8613
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-scope {
8614
+ display: inline-flex;
8615
+ align-self: flex-start;
8616
+ padding: 2px;
8617
+ border-radius: 7px;
8618
+ background: var(--ai-chat-quiet);
8619
+ }
8620
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-seg { position: relative; display: inline-flex; cursor: pointer; }
8621
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-seg input {
8622
+ position: absolute;
8623
+ inset: 0;
8624
+ margin: 0;
8625
+ opacity: 0;
8626
+ cursor: inherit;
8627
+ }
8628
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-seg span {
8629
+ padding: 1px 9px;
8630
+ border-radius: 5px;
8631
+ font-size: 12px;
8632
+ color: var(--settings-muted);
8633
+ transition: background-color 120ms ease-out, color 120ms ease-out;
8634
+ }
8635
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-seg input:checked + span {
8636
+ background: var(--mikedown-surface, #1e1e1e);
8637
+ color: var(--settings-fg);
8638
+ box-shadow: 0 0 0 1px var(--mikedown-divider, var(--settings-divider));
8639
+ }
8640
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-seg input:focus-visible + span {
8641
+ outline: 1px solid var(--settings-focus);
8642
+ outline-offset: 1px;
8643
+ }
8644
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-seg input:disabled + span { opacity: 0.6; }
8645
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-bases {
8646
+ padding-left: 2px;
8647
+ font-size: 11.5px;
8648
+ color: var(--settings-muted);
8649
+ overflow: hidden;
8650
+ white-space: nowrap;
8651
+ text-overflow: ellipsis;
8652
+ }
8653
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-bases .ai-chat-link { padding: 0 2px; font-size: inherit; }
8654
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-box {
8655
+ display: flex;
8656
+ align-items: flex-end;
8657
+ gap: 4px;
8658
+ padding: 5px 5px 5px 10px;
8659
+ border: 1px solid var(--mikedown-input-border, var(--settings-divider));
8660
+ border-radius: 10px;
8661
+ background: var(--mikedown-input-bg, transparent);
8662
+ transition: border-color 120ms ease-out;
8663
+ }
8664
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-box:focus-within { border-color: var(--settings-focus); }
8665
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-input {
8666
+ flex: 1;
8667
+ min-width: 0;
8668
+ max-height: 136px;
8669
+ padding: 3px 0;
8670
+ border: 0;
8671
+ outline: none;
8672
+ resize: none;
8673
+ background: none;
8674
+ color: var(--settings-fg);
8675
+ font: inherit;
8676
+ }
8677
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-input::placeholder { color: var(--settings-muted); }
8678
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-send {
8679
+ display: inline-flex;
8680
+ align-items: center;
8681
+ justify-content: center;
8682
+ width: 26px;
8683
+ height: 26px;
8684
+ flex-shrink: 0;
8685
+ padding: 0;
8686
+ border: 0;
8687
+ border-radius: 7px;
8688
+ background: var(--mikedown-selected-bg, #0e639c);
8689
+ color: var(--mikedown-selected-text, #ffffff);
8690
+ cursor: pointer;
8691
+ }
8692
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-send[hidden] { display: none; }
8693
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-send:disabled { background: var(--ai-chat-quiet); color: var(--settings-muted); cursor: default; }
8694
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-send--cancel { background: var(--ai-chat-quiet); color: var(--settings-fg); }
8695
+ :is(.mikedown-root, .mikedown-portal) :is(.ai-chat-icon, .ai-chat-send, .ai-chat-action, .ai-chat-link, .ai-chat-chip):focus-visible,
8696
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-log:focus-visible {
8697
+ outline: 1px solid var(--settings-focus);
8698
+ outline-offset: -1px;
8699
+ }
8700
+ @media (prefers-reduced-motion: reduce) {
8701
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-turn--arrived .ai-chat-reply,
8702
+ :is(.mikedown-root, .mikedown-portal) .ai-chat-dot { animation: none; }
8703
+ }
8704
+
7766
8705
  /* ═══ ai-rewrite.css ═══ */
7767
8706
  /* MikeDown — selection rewrite (ai-rewrite.ts): the target highlight and
7768
8707
  * the preview popover. Overlays live in the portal and