📦 Out of Context リポジトリ

リポジトリ / emssr / independent_common_compiler

r2
r2 emssr1
/* Common scope notebook の見た目。
r2 emssr2
   色は VS Code の既定テーマの値をそのまま使う。
r2 emssr3
   地と枠は Light Modern / Dark Modern、音節の色は light_plus / dark_plus の
r2 emssr4
   token color を当てる。ここで色を新しく作らない。 */
r2 emssr5
r2 emssr6
:root {
r2 emssr7
  --bg:     #ffffff;   /* editor.background */
r2 emssr8
  --panel:  #f8f8f8;   /* sideBar.background */
r2 emssr9
  --ink:    #3b3b3b;   /* editor.foreground */
r2 emssr10
  --label:  #616161;   /* descriptionForeground */
r2 emssr11
  --axis:   #8c8c8c;   /* editorLineNumber.foreground */
r2 emssr12
  --ring:   #cecece;   /* input.border */
r2 emssr13
  --rule:   #e5e5e5;   /* panel.border */
r2 emssr14
  --sel:    #e8e8e8;   /* list.activeSelectionBackground */
r2 emssr15
  --mark:   #005fb8;   /* focusBorder。強調はこの一色 */
r2 emssr16
r2 emssr17
  /* token color(light_plus) */
r2 emssr18
  --tok-num:   #098658;   /* constant.numeric */
r2 emssr19
  --tok-key:   #0000ff;   /* keyword */
r2 emssr20
  --tok-ctrl:  #af00db;   /* keyword.control */
r2 emssr21
  --tok-var:   #001080;   /* variable */
r2 emssr22
  --tok-type:  #267f99;   /* entity.name.type */
r2 emssr23
  --tok-func:  #795e26;   /* entity.name.function */
r2 emssr24
  --tok-str:   #a31515;   /* string */
r2 emssr25
  --tok-cmt:   #008000;   /* comment */
r2 emssr26
  --tok-bad:   #cd3131;   /* invalid */
r2 emssr27
r2 emssr28
  /* 生成元の層を token color へ当てる */
r2 emssr29
  --dyad:   var(--tok-num);
r2 emssr30
  --bit:    var(--tok-ctrl);
r2 emssr31
  --store:  var(--tok-var);
r2 emssr32
  --omega:  var(--tok-key);
r2 emssr33
  --judge:  var(--tok-type);
r2 emssr34
  --region: var(--tok-type);
r2 emssr35
  --report: var(--tok-func);
r2 emssr36
  --frame:  var(--axis);
r2 emssr37
  --letter: var(--tok-str);
r2 emssr38
r2 emssr39
  /* 図の四本 */
r2 emssr40
  --acc:  var(--tok-str);    /* 境界とカット */
r2 emssr41
  --sub:  var(--tok-cmt);    /* 閉包と副次の線 */
r2 emssr42
  --warn: var(--tok-bad);    /* 出口境界と失敗 */
r2 emssr43
r2 emssr44
  --tu: #098658;
r2 emssr45
  --te: #cd3131;
r2 emssr46
r2 emssr47
  --mono: "Cascadia Mono", "Consolas", "SFMono-Regular", "Menlo", monospace;
r2 emssr48
  --ui: "Segoe UI", "Yu Gothic UI", "Hiragino Kaku Gothic ProN", system-ui, sans-serif;
r2 emssr49
}
r2 emssr50
r2 emssr51
@media (prefers-color-scheme: dark) {
r2 emssr52
  :root:not([data-theme="light"]) {
r2 emssr53
    --bg:     #1f1f1f;
r2 emssr54
    --panel:  #181818;
r2 emssr55
    --ink:    #cccccc;
r2 emssr56
    --label:  #9d9d9d;
r2 emssr57
    --axis:   #6e7681;
r2 emssr58
    --ring:   #3c3c3c;
r2 emssr59
    --rule:   #2b2b2b;
r2 emssr60
    --sel:    #04395e;
r2 emssr61
    --mark:   #0078d4;
r2 emssr62
r2 emssr63
    --tok-num:   #b5cea8;
r2 emssr64
    --tok-key:   #569cd6;
r2 emssr65
    --tok-ctrl:  #c586c0;
r2 emssr66
    --tok-var:   #9cdcfe;
r2 emssr67
    --tok-type:  #4ec9b0;
r2 emssr68
    --tok-func:  #dcdcaa;
r2 emssr69
    --tok-str:   #ce9178;
r2 emssr70
    --tok-cmt:   #6a9955;
r2 emssr71
    --tok-bad:   #f44747;
r2 emssr72
r2 emssr73
    --tu: #b5cea8;
r2 emssr74
    --te: #f44747;
r2 emssr75
  }
r2 emssr76
}
r2 emssr77
r2 emssr78
* { box-sizing: border-box; }
r2 emssr79
[hidden] { display: none !important; }   /* display を上書きした要素にも効かせる */
r2 emssr80
r2 emssr81
html, body {
r2 emssr82
  margin: 0; height: 100%;
r2 emssr83
  background: var(--bg); color: var(--ink);
r2 emssr84
  font-family: var(--ui); font-size: 13px; line-height: 1.65;
r2 emssr85
}
r2 emssr86
r2 emssr87
button, input, select, textarea { font-family: inherit; }
r2 emssr88
r2 emssr89
/* ===== ヘッダ ===== */
r2 emssr90
r2 emssr91
#bar {
r2 emssr92
  display: flex; align-items: center; gap: 10px;
r2 emssr93
  height: 34px; padding: 0 12px;
r2 emssr94
  border-bottom: 1px solid var(--rule);
r2 emssr95
  background: var(--panel);
r2 emssr96
  font-size: 12px;
r2 emssr97
}
r2 emssr98
#bar .brand { font-weight: 650; letter-spacing: .01em; }
r2 emssr99
#bar .sp { flex: 0 0 4px; }
r2 emssr100
#bar .right { margin-left: auto; color: var(--label); display: flex; align-items: center; gap: 8px; }
r2 emssr101
#bar .right a { color: var(--mark); text-decoration: none; }
r2 emssr102
#bar .right a:hover { text-decoration: underline; }
r2 emssr103
#pick {
r2 emssr104
  font: inherit; background: var(--bg); color: var(--ink);
r2 emssr105
  border: 1px solid var(--ring); padding: 2px 6px; max-width: 320px;
r2 emssr106
}
r2 emssr107
r2 emssr108
.tag { padding: 1px 8px; border: 1px solid var(--ring); font-size: 11px; color: var(--label); }
r2 emssr109
.tag.ok  { color: var(--tu); border-color: var(--tu); }
r2 emssr110
.tag.bad { color: var(--te); border-color: var(--te); }
r2 emssr111
r2 emssr112
/* ===== 三分割 ===== */
r2 emssr113
r2 emssr114
#full {
r2 emssr115
  display: grid;
r2 emssr116
  grid-template-columns: 208px minmax(380px, 1fr) minmax(430px, 1.15fr);
r2 emssr117
  height: calc(100% - 34px);
r2 emssr118
}
r2 emssr119
body[data-mode="solo"] #full { display: none; }
r2 emssr120
body[data-mode="solo"] #bar .right .windows { display: none; }
r2 emssr121
r2 emssr122
#toc { border-right: 1px solid var(--rule); overflow: auto; padding: 10px 0 20px; background: var(--panel); }
r2 emssr123
#toc a {
r2 emssr124
  display: block; padding: 4px 12px; color: var(--label);
r2 emssr125
  text-decoration: none; font-size: 12px; border-left: 2px solid transparent;
r2 emssr126
}
r2 emssr127
#toc a:hover { background: var(--sel); }
r2 emssr128
#toc a.on { color: var(--ink); border-left-color: var(--mark); background: var(--sel); }
r2 emssr129
#toc a.add { color: var(--mark); margin-top: 8px; }
r2 emssr130
#toc .head { padding: 8px 12px 4px; color: var(--axis); font-size: 10.5px; letter-spacing: .08em; }
r2 emssr131
r2 emssr132
#sheet { overflow: auto; padding: 14px 24px 110px; }
r2 emssr133
r2 emssr134
/* ===== 道具立て ===== */
r2 emssr135
r2 emssr136
.toolbar {
r2 emssr137
  display: flex; gap: 6px; flex-wrap: wrap; align-items: center;
r2 emssr138
  padding: 0 0 12px; border-bottom: 1px solid var(--rule); margin-bottom: 14px;
r2 emssr139
}
r2 emssr140
.toolbar button, .tools button, .adder button, .cell .bar button, .leaf > header button {
r2 emssr141
  font: inherit; font-size: 11px; padding: 3px 11px; cursor: pointer;
r2 emssr142
  border: 1px solid var(--ring); background: var(--bg); color: var(--ink);
r2 emssr143
}
r2 emssr144
.toolbar button:hover, .tools button:hover, .adder button:hover,
r2 emssr145
.cell .bar button:hover { border-color: var(--mark); color: var(--mark); }
r2 emssr146
r2 emssr147
/* ===== 表題と説明 ===== */
r2 emssr148
r2 emssr149
#intro .title {
r2 emssr150
  display: block; width: 100%; font-size: 19px; font-weight: 650;
r2 emssr151
  border: 0; border-bottom: 1px solid transparent; background: none; color: var(--ink);
r2 emssr152
  padding: 2px 0; margin: 0 0 6px; outline: 0;
r2 emssr153
}
r2 emssr154
#intro .title:hover, #intro .title:focus { border-bottom-color: var(--ring); }
r2 emssr155
#intro .lead { color: var(--label); margin: 0 0 12px; cursor: text; min-height: 1.2em; }
r2 emssr156
#intro .lead:hover { background: var(--panel); }
r2 emssr157
.leadedit, .noteedit, .settings textarea {
r2 emssr158
  display: block; width: 100%; font-family: var(--mono); font-size: 12px;
r2 emssr159
  border: 1px solid var(--ring); background: var(--bg); color: var(--ink);
r2 emssr160
  padding: 6px 8px; outline: 0; resize: vertical;
r2 emssr161
}
r2 emssr162
.leadedit { margin: 0 0 12px; min-height: 90px; }
r2 emssr163
r2 emssr164
code { font-family: var(--mono); background: var(--panel); padding: 0 3px;  }
r2 emssr165
r2 emssr166
/* ===== セル ===== */
r2 emssr167
r2 emssr168
.cell { border: 1px solid var(--rule); background: var(--panel); }
r2 emssr169
.cell.note { border: 0; border-left: 2px solid var(--ring); background: none; padding-left: 12px; }
r2 emssr170
.cell > .note { padding: 9px 12px; color: var(--label); cursor: text; }
r2 emssr171
.cell > .note:hover { background: var(--bg); }
r2 emssr172
.cell.note > .note { padding: 4px 0 6px; }
r2 emssr173
.cell > .note b { color: var(--ink); font-weight: 650; }
r2 emssr174
.cell > .note p { margin: 0 0 7px; }
r2 emssr175
.cell > .note p:last-child { margin: 0; }
r2 emssr176
.cell > .note h3, #intro .lead h3 {
r2 emssr177
  font-size: 14px; font-weight: 650; color: var(--ink);
r2 emssr178
  margin: 14px 0 6px; padding-bottom: 3px; border-bottom: 1px solid var(--rule);
r2 emssr179
}
r2 emssr180
.cell > .note h3:first-child { margin-top: 2px; }
r2 emssr181
.cell > .note h4, #intro .lead h4 { font-size: 12.5px; font-weight: 650; color: var(--ink); margin: 10px 0 4px; }
r2 emssr182
.cell .noteedit { margin: 6px 10px; width: calc(100% - 20px); }
r2 emssr183
r2 emssr184
.cell .row { display: flex; align-items: stretch; }
r2 emssr185
.cell .gut {
r2 emssr186
  flex: 0 0 48px; padding: 7px 8px; text-align: right;
r2 emssr187
  color: var(--axis); font-family: var(--mono); font-size: 11px;
r2 emssr188
  border-right: 1px solid var(--rule);
r2 emssr189
}
r2 emssr190
.cell textarea.src {
r2 emssr191
  flex: 1; min-width: 0; font-family: var(--mono); font-size: 13px; line-height: 1.75;
r2 emssr192
  border: 0; outline: 0; resize: vertical; padding: 6px 10px;
r2 emssr193
  background: var(--bg); color: var(--ink); min-height: 2.8em;
r2 emssr194
}
r2 emssr195
.cell textarea.src.over { outline: 2px solid var(--mark); outline-offset: -2px; }
r2 emssr196
.cell .bar {
r2 emssr197
  display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
r2 emssr198
  padding: 5px 10px 5px 56px; border-top: 1px solid var(--rule);
r2 emssr199
  font-size: 11px; color: var(--axis);
r2 emssr200
}
r2 emssr201
.cell .bar .hint { color: var(--axis); }
r2 emssr202
.tools { display: flex; gap: 4px; margin-left: auto; }
r2 emssr203
.cell.note .tools { padding: 0 0 6px; }
r2 emssr204
.cell .out { padding: 8px 10px 11px 56px; font-family: var(--mono); font-size: 12px; }
r2 emssr205
.cell .out:empty { display: none; }
r2 emssr206
.cell .out .err { color: var(--te); white-space: pre-wrap; }
r2 emssr207
.cell .out .expected { color: var(--tok-ctrl); white-space: pre-wrap; }
r2 emssr208
.cell .out .val { font-size: 15px; color: var(--ink); }
r2 emssr209
.cell .out .dim { color: var(--axis); }
r2 emssr210
r2 emssr211
.adder { display: flex; gap: 6px; padding: 5px 0 9px; opacity: .35; transition: opacity .12s; }
r2 emssr212
.adder:hover { opacity: 1; }
r2 emssr213
r2 emssr214
/* ===== 設定 ===== */
r2 emssr215
r2 emssr216
.settings { margin: 0; border-top: 1px solid var(--rule); }
r2 emssr217
.cell .settings { padding: 0 10px 8px 56px; }
r2 emssr218
#intro .settings { border: 0; margin: 0 0 16px; }
r2 emssr219
.settings > summary {
r2 emssr220
  cursor: pointer; font-size: 11px; color: var(--axis); padding: 5px 0;
r2 emssr221
  list-style: none;
r2 emssr222
}
r2 emssr223
.settings > summary::before { content: '▸ '; }
r2 emssr224
.settings[open] > summary::before { content: '▾ '; }
r2 emssr225
.fields { display: flex; gap: 12px; flex-wrap: wrap; padding: 2px 0 6px; }
r2 emssr226
.field { display: flex; align-items: center; gap: 5px; font-size: 11px; color: var(--label); }
r2 emssr227
.field input {
r2 emssr228
  font-family: var(--mono); font-size: 11.5px; padding: 2px 5px;
r2 emssr229
  border: 1px solid var(--ring); background: var(--bg); color: var(--ink);
r2 emssr230
}
r2 emssr231
r2 emssr232
.formula {
r2 emssr233
  font-family: var(--mono); font-size: 12px; color: var(--label);
r2 emssr234
  border-left: 2px solid var(--ring); padding: 2px 0 2px 10px; margin: 8px 0 10px;
r2 emssr235
  white-space: pre-wrap; overflow-x: auto;
r2 emssr236
}
r2 emssr237
r2 emssr238
table { border-collapse: collapse; font-size: 11.5px; margin: 6px 0 10px; }
r2 emssr239
th, td { border: 1px solid var(--rule); padding: 1px 7px; text-align: right; }
r2 emssr240
th { color: var(--label); font-weight: 500; background: var(--panel); }
r2 emssr241
td.l, th.l { text-align: left; }
r2 emssr242
r2 emssr243
/* ===== scope のパネル ===== */
r2 emssr244
r2 emssr245
#scopewrap { border-left: 1px solid var(--rule); display: flex; flex-direction: column; min-width: 0; }
r2 emssr246
r2 emssr247
#palette {
r2 emssr248
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
r2 emssr249
  padding: 5px 8px; border-bottom: 1px solid var(--rule); background: var(--panel);
r2 emssr250
}
r2 emssr251
#palette .hint { color: var(--axis); font-size: 10.5px; margin-right: 2px; }
r2 emssr252
.tab {
r2 emssr253
  font-size: 11px; padding: 2px 9px; cursor: grab;
r2 emssr254
  border: 1px solid var(--ring); background: var(--bg); color: var(--ink);
r2 emssr255
  user-select: none;
r2 emssr256
}
r2 emssr257
.tab:active { cursor: grabbing; }
r2 emssr258
r2 emssr259
#grid, #soloScope { flex: 1; min-height: 0; min-width: 0; display: flex; overflow: auto; }
r2 emssr260
.solobody { flex: 1; overflow: auto; padding: 12px 16px 30px; min-width: 0; }
r2 emssr261
r2 emssr262
.node { display: flex; min-width: 0; min-height: 0; flex: 1 1 0; }
r2 emssr263
.node.row { flex-direction: row; }
r2 emssr264
.node.col { flex-direction: column; }
r2 emssr265
.gap { flex: 0 0 5px; background: var(--rule); cursor: col-resize; }
r2 emssr266
.node.col > .gap { cursor: row-resize; }
r2 emssr267
r2 emssr268
.leaf {
r2 emssr269
  display: flex; flex-direction: column; min-width: 210px; min-height: 120px;
r2 emssr270
  border: 1px solid transparent; position: relative; background: var(--bg);
r2 emssr271
}
r2 emssr272
.leaf > header {
r2 emssr273
  display: flex; align-items: center; gap: 3px; padding: 3px 6px;
r2 emssr274
  border-bottom: 1px solid var(--rule); background: var(--panel);
r2 emssr275
  font-size: 11px; color: var(--label); cursor: grab;
r2 emssr276
}
r2 emssr277
.leaf > header select.name {
r2 emssr278
  font: inherit; font-size: 11px; font-weight: 600; color: var(--ink);
r2 emssr279
  border: 1px solid transparent; background: none; padding: 1px 2px;
r2 emssr280
}
r2 emssr281
.leaf > header select.name:hover { border-color: var(--ring); }
r2 emssr282
.leaf > header .sp { margin-left: auto; }
r2 emssr283
.leaf > header button {
r2 emssr284
  font-size: 11px; line-height: 1.2; padding: 1px 5px;
r2 emssr285
  border-color: transparent; color: var(--axis);
r2 emssr286
}
r2 emssr287
.leaf > header button:hover { border-color: var(--ring); color: var(--ink); }
r2 emssr288
.leaf > header button:disabled { opacity: .3; cursor: default; }
r2 emssr289
.leaf > .body { flex: 1; overflow: auto; padding: 11px 13px 26px; min-width: 0; }
r2 emssr290
r2 emssr291
.dropmark {
r2 emssr292
  position: absolute; background: rgba(29, 78, 216, .16);
r2 emssr293
  border: 1px solid var(--mark); pointer-events: none; z-index: 5;
r2 emssr294
}
r2 emssr295
r2 emssr296
/* ===== scope の中身 ===== */
r2 emssr297
r2 emssr298
.scopebox { margin: 0 0 18px; }
r2 emssr299
.scopebox h2 { font-size: 12px; margin: 0 0 3px; font-weight: 650; letter-spacing: .03em; }
r2 emssr300
.scopebox svg, .leaf svg, .solobody svg { display: block; max-width: 100%; height: auto; }
r2 emssr301
.scopebox table { font-family: var(--mono); }
r2 emssr302
.empty { color: var(--axis); }
r2 emssr303
r2 emssr304
svg text { font-family: var(--mono); fill: var(--label); }
r2 emssr305
svg .lab { fill: var(--ink); }
r2 emssr306
svg .wire { stroke: var(--axis); stroke-width: 1; fill: none; }
r2 emssr307
svg .edge { stroke: var(--ring); stroke-width: 1; fill: none; }
r2 emssr308
svg .box { fill: var(--bg); stroke: var(--axis); stroke-width: 1; }
r2 emssr309
svg .axis { stroke: var(--axis); stroke-width: 1; }
r2 emssr310
svg .grid { stroke: var(--ring); stroke-width: .7; }
r2 emssr311
r2 emssr312
/* ===== 単独ウィンドウ ===== */
r2 emssr313
r2 emssr314
body[data-mode="solo"] #solo { display: flex; flex-direction: column; height: calc(100% - 34px); }
r2 emssr315
#soloHead {
r2 emssr316
  padding: 6px 14px; border-bottom: 1px solid var(--rule);
r2 emssr317
  background: var(--panel); font-size: 11.5px; color: var(--label);
r2 emssr318
}
r2 emssr319
r2 emssr320
/* ===== 起動 ===== */
r2 emssr321
r2 emssr322
#boot { position: fixed; inset: 0; background: var(--bg); display: flex;
r2 emssr323
        align-items: center; justify-content: center; z-index: 40; }
r2 emssr324
#boot.done { display: none; }
r2 emssr325
.bootbox { width: 460px; }
r2 emssr326
.bootbox h1 { font-size: 16px; margin: 0 0 6px; font-weight: 650; }
r2 emssr327
.bootbox p { color: var(--label); margin: 0 0 12px; }
r2 emssr328
#bootlog { font-family: var(--mono); font-size: 11.5px; color: var(--axis);
r2 emssr329
           margin: 0; padding-left: 18px; }
r2 emssr330
#bootlog li.ok { color: var(--label); }
r2 emssr331
#bootlog li.bad { color: var(--te); }
r2 emssr332
r2 emssr333
/* ===== 説明セルの Markdown =====
r2 emssr334
   見出しから表まで、紙の技術文書の組み方に寄せる。 */
r2 emssr335
r2 emssr336
.md > :first-child { margin-top: 0; }
r2 emssr337
.md > :last-child { margin-bottom: 0; }
r2 emssr338
.md p { margin: 0 0 8px; }
r2 emssr339
.md h1, .md h2, .md h3, .md h4, .md h5, .md h6 {
r2 emssr340
  color: var(--ink); font-weight: 650; line-height: 1.4;
r2 emssr341
  margin: 16px 0 6px;
r2 emssr342
}
r2 emssr343
.md h1 { font-size: 17px; padding-bottom: 4px; border-bottom: 1px solid var(--rule); }
r2 emssr344
.md h2 { font-size: 15px; padding-bottom: 3px; border-bottom: 1px solid var(--rule); }
r2 emssr345
.md h3 { font-size: 13.5px; }
r2 emssr346
.md h4, .md h5, .md h6 { font-size: 12.5px; }
r2 emssr347
.md ul, .md ol { margin: 0 0 8px; padding-left: 1.5em; }
r2 emssr348
.md li { margin: 1px 0; }
r2 emssr349
.md li > p { margin: 0 0 4px; }
r2 emssr350
.md blockquote {
r2 emssr351
  margin: 8px 0; padding: 2px 0 2px 12px;
r2 emssr352
  border-left: 3px solid var(--ring); color: var(--label);
r2 emssr353
}
r2 emssr354
.md hr { border: 0; border-top: 1px solid var(--rule); margin: 14px 0; }
r2 emssr355
.md a { color: var(--mark); }
r2 emssr356
.md code {
r2 emssr357
  font-family: var(--mono); font-size: 92%;
r2 emssr358
  background: var(--panel); border: 1px solid var(--rule); padding: 0 3px;
r2 emssr359
}
r2 emssr360
.md pre {
r2 emssr361
  margin: 8px 0; padding: 8px 10px; overflow-x: auto;
r2 emssr362
  background: var(--panel); border: 1px solid var(--rule);
r2 emssr363
}
r2 emssr364
.md pre code { background: none; border: 0; padding: 0; font-size: 12px; line-height: 1.55; }
r2 emssr365
.md table { border-collapse: collapse; margin: 8px 0; font-size: 12px; }
r2 emssr366
.md th, .md td { border: 1px solid var(--rule); padding: 3px 9px; text-align: left; }
r2 emssr367
.md th { background: var(--panel); font-weight: 600; color: var(--label); }
r2 emssr368
.md img, .md video, .md audio, .md svg { display: block; max-width: 100%; margin: 8px 0; }
r2 emssr369
.md figure { margin: 10px 0; }
r2 emssr370
.md figcaption { font-size: 11.5px; color: var(--axis); margin-top: 3px; }
r2 emssr371
.md kbd {
r2 emssr372
  font-family: var(--mono); font-size: 91%; padding: 0 4px;
r2 emssr373
  border: 1px solid var(--ring); border-bottom-width: 2px;
r2 emssr374
}
r2 emssr375
.md details { margin: 8px 0; }
r2 emssr376
.md details > summary { cursor: pointer; color: var(--label); }
r2 emssr377
.md sup, .md sub { font-size: 78%; }
r2 emssr378
r2 emssr379
/* 数式。行の中と別行で字送りを変える */
r2 emssr380
.md .katex { font-size: 1.04em; }
r2 emssr381
.md .katex-display { margin: 10px 0; overflow-x: auto; overflow-y: hidden; padding: 2px 0; }
r2 emssr382
r2 emssr383
/* 書きながら見る欄 */
r2 emssr384
.livepreview {
r2 emssr385
  margin: 4px 0 10px; padding: 8px 10px;
r2 emssr386
  border: 1px dashed var(--ring); background: var(--panel);
r2 emssr387
  color: var(--label); max-height: 44vh; overflow: auto;
r2 emssr388
}
r2 emssr389
.cell .livepreview { margin: 4px 10px 10px; }
r2 emssr390
textarea.over { outline: 2px solid var(--mark); outline-offset: -2px; }