/* Strategy code editor (code_editor_ui.js, CODE_EDITOR.md). Grove tokens only: one lime accent, muted tones. */
.ce{--ce-lh:20px;--ce-font:'Martian Mono',ui-monospace,'Cascadia Code',Consolas,monospace;display:flex;flex-direction:column;gap:10px;min-width:0}
.ce-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.ce-meta{margin-left:auto;font-size:12px;color:var(--ui-muted)}
.ce-panel{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;padding:10px 12px;border:1px solid var(--ui-card-line);border-radius:var(--ui-radius-md);background:var(--ui-card)}
.ce .ce-field{display:inline-flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ui-muted);min-width:160px}
.ce .ce-field-grow{flex:1 1 320px}
.ce .ce-field select,.ce .ce-field input{margin:0;min-width:0}
.ce-proposal-summary{flex:1 1 320px;margin:0;color:var(--ui-ink);font-size:13px;max-width:none}
.ce-find{display:flex;align-items:center;gap:6px;align-self:flex-end;padding:6px 8px;border:1px solid var(--ui-card-line);border-radius:var(--ui-radius-md);background:var(--ui-card)}
.ce .ce-find input{width:220px;min-height:30px;margin:0}
.ce-find-count{min-width:72px;font-size:12px;color:var(--ui-muted);text-align:right}

.ce-scroller{display:flex;align-items:flex-start;position:relative;min-height:260px;max-height:min(70vh,900px);overflow:auto;border:1px solid var(--ui-card-line);border-radius:var(--ui-radius-md);background:var(--ui-field)}
.ce-gutter{position:sticky;left:0;z-index:4;flex:none;min-width:52px;padding:10px 0;background:var(--ui-field);border-right:1px solid var(--ui-card-line);user-select:none}
.ce-num{display:block;height:var(--ce-lh);padding:0 10px 0 8px;font:12px/var(--ce-lh) var(--ce-font);color:var(--ui-muted);text-align:right;font-variant-numeric:tabular-nums}
.ce-num-error{color:var(--ui-danger);font-weight:700;cursor:pointer;box-shadow:inset 3px 0 0 var(--ui-danger)}
.ce-num-warning,.ce-num-existing{color:var(--ui-warn);cursor:pointer;box-shadow:inset 3px 0 0 var(--ui-warn)}
.ce-code-wrap{position:relative;flex:1 0 auto;min-width:0}
.ce .ce-layer{display:block;box-sizing:border-box;margin:0;padding:10px 14px;border:0;border-radius:0;font:13px/var(--ce-lh) var(--ce-font);letter-spacing:0;tab-size:4;white-space:pre;overflow-wrap:normal;word-break:normal;background:transparent;max-width:none;min-height:0;box-shadow:none}
.ce .ce-code{position:relative;z-index:1;color:var(--ui-ink);pointer-events:none;min-width:100%}
.ce .ce-marks{position:absolute;inset:0;z-index:0;color:transparent;pointer-events:none;overflow:hidden}
.ce .ce-input{position:absolute;inset:0;z-index:2;width:100%;height:100%;resize:none;overflow:hidden;color:transparent;caret-color:var(--ui-accent);outline:none}
.ce .ce-input:focus{outline:none;box-shadow:none;border:0}
.ce .ce-input::selection{background:color-mix(in srgb,var(--ui-accent) 28%,transparent);color:transparent}
.ce-scroller:focus-within{border-color:color-mix(in srgb,var(--ui-accent) 55%,transparent)}
.ce-line{display:block;height:var(--ce-lh)}
.ce-line-error{background:color-mix(in srgb,var(--ui-danger) 14%,transparent)}
.ce-line-warning,.ce-line-existing{background:color-mix(in srgb,var(--ui-warn) 11%,transparent)}
.ce-inline-msg{font-family:var(--ui-font,inherit);font-size:12px;font-style:italic;color:var(--ui-muted)}
.ce-line-error .ce-inline-msg{color:var(--ui-danger)}
.ce-line-warning .ce-inline-msg,.ce-line-existing .ce-inline-msg{color:var(--ui-warn)}
.ce-hit{background:color-mix(in srgb,var(--ui-accent) 22%,transparent);color:transparent;border-radius:2px}
.ce-hit-current{background:color-mix(in srgb,var(--ui-accent) 50%,transparent)}

/* Python tokens */
.ce-k{color:var(--ui-accent)}
.ce-f{color:var(--ui-ink);font-weight:700}
.ce-s{color:color-mix(in srgb,var(--ui-accent) 42%,var(--ui-ink))}
.ce-n,.ce-c{color:color-mix(in srgb,var(--ui-accent) 25%,var(--ui-muted))}
.ce-b{color:color-mix(in srgb,var(--ui-ink) 70%,var(--ui-accent))}
.ce-m{color:var(--ui-muted);font-style:italic}
.ce-d{color:var(--ui-muted)}

/* Side-by-side diff */
.ce-diff{max-height:min(70vh,900px);overflow:auto;border:1px solid var(--ui-card-line);border-radius:var(--ui-radius-md);background:var(--ui-field)}
.ce .ce-diff-table{width:100%;border-collapse:collapse;table-layout:fixed;font:12.5px/var(--ce-lh) var(--ce-font)}
.ce .ce-diff-table th{position:sticky;top:0;z-index:1;padding:8px 10px;text-align:left;font:600 12px/1.4 var(--ui-font,inherit);color:var(--ui-muted);background:var(--ui-card);border-bottom:1px solid var(--ui-card-line)}
.ce .ce-diff-table td{padding:0 10px;border:0;vertical-align:top}
.ce .ce-diff-num{width:52px;text-align:right;color:var(--ui-muted);user-select:none;font-variant-numeric:tabular-nums}
.ce .ce-diff-text{white-space:pre;overflow:hidden;text-overflow:ellipsis;color:var(--ui-ink)}
.ce .ce-diff-a-del,.ce .ce-diff-a-change{background:color-mix(in srgb,var(--ui-danger) 16%,transparent)}
.ce .ce-diff-b-add,.ce .ce-diff-b-change{background:color-mix(in srgb,var(--ui-accent) 15%,transparent)}
.ce .ce-diff-fold td{padding:3px 10px;text-align:center;font:12px/1.6 var(--ui-font,inherit);color:var(--ui-muted);background:var(--ui-card)}
.ce tbody tr.ce-diff-row:hover{background:transparent}

/* The one result line */
.ce .ce-result{margin:0;min-height:22px;font-size:13px;color:var(--ui-muted);max-width:none}
.ce .ce-result-ok{color:var(--ui-ink)}
.ce .ce-result-warn{color:var(--ui-warn)}
.ce .ce-result-error{color:var(--ui-danger)}
.ce .ce-link{display:inline;margin-left:6px;padding:0;min-height:0;border:0;background:none;color:var(--ui-accent);font:inherit;font-weight:600;text-decoration:underline;cursor:pointer}

@media (max-width:720px){
  .ce-meta{margin-left:0;width:100%}
  .ce .ce-find input{width:140px}
  .ce-scroller{max-height:60vh}
}
