DevTools Sidebar — CSS

Styles for DevTools Sidebar

بۇ قوليازمىنى بىۋاسىتە قاچىلاشقا بولمايدۇ. بۇ باشقا قوليازمىلارنىڭ ئىشلىتىشى ئۈچۈن تەمىنلەنگەن ئامبار بولۇپ، ئىشلىتىش ئۈچۈن مېتا كۆرسەتمىسىگە قىستۇرىدىغان كود: // @require https://update.greasyfork.org/scripts/580258/1839658/DevTools%20Sidebar%20%E2%80%94%20CSS.js

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         DevTools Sidebar — CSS
// @namespace    http://tampermonkey.net/
// @version      7.2.3
// @description  Styles for DevTools Sidebar
// @author       MrNosferatu
// ==/UserScript==

// ─── CSS ─────────────────────────────────────────────────────────────────────
const CSS = `
  @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@300;400;500&display=swap');

  /* Style isolation: reset properties that site stylesheets commonly clobber */
  #dt-tab, #dt-sidebar, #dt-req-overlay, #dt-res-overlay,
  #dt-presets-overlay, #dt-save-preset-overlay,
  #dt-tab *, #dt-sidebar *, #dt-req-overlay *, #dt-res-overlay *,
  #dt-presets-overlay *, #dt-save-preset-overlay * {
    box-sizing: border-box;
    font-family: 'IBM Plex Sans', -apple-system, sans-serif;
    line-height: 1.5;
    letter-spacing: normal;
    word-spacing: normal;
    text-transform: none;
    text-decoration: none;
    text-indent: 0;
    list-style: none;
    -webkit-font-smoothing: antialiased;
  }

  /* Flash-free */
  #dt-sidebar { visibility:hidden; transition:none; }
  #dt-req-overlay,#dt-res-overlay,#dt-presets-overlay,#dt-save-preset-overlay { visibility:hidden; transition:none; opacity:0; pointer-events:none; }
  #dt-sidebar.dt-ready { visibility:visible; transition:transform 0.28s cubic-bezier(.4,0,.2,1); }
  #dt-req-overlay.dt-ready,#dt-res-overlay.dt-ready,#dt-presets-overlay.dt-ready,#dt-save-preset-overlay.dt-ready { visibility:visible; transition:opacity 0.18s ease; }
  #dt-req-overlay.dt-ready #dt-req-modal,#dt-res-overlay.dt-ready #dt-res-modal,#dt-presets-overlay.dt-ready #dt-presets-modal { transition:transform 0.22s cubic-bezier(.34,1.2,.64,1); }
  #dt-req-overlay.visible,#dt-res-overlay.visible,#dt-presets-overlay.visible,#dt-save-preset-overlay.visible { opacity:1; pointer-events:all; }

  :root {
    --bg:#fff; --sf:#f7f7f7; --sf2:#efefef;
    --bd:#e2e2e2; --bd2:#cacaca;
    --tx:#111; --tx2:#444; --mu:#777; --fa:#bbb;
    --ac:#2563eb; --ac-bg:#eff6ff; --ac-bd:#bfdbfe;
    --gn:#16a34a; --gn-bg:#f0fdf4; --gn-bd:#bbf7d0;
    --rd:#dc2626; --rd-bg:#fef2f2; --rd-bd:#fecaca;
    --am:#d97706; --am-bg:#fffbeb; --am-bd:#fde68a;
    --vi:#7c3aed; --vi-bg:#faf5ff; --vi-bd:#e9d5ff;
    --w:360px; --ease:cubic-bezier(.4,0,.2,1);
  }
  /* Sidebar dark mode token set */
  .dt-dark {
    --bg:#1a1b1e; --sf:#222327; --sf2:#2a2b2f;
    --bd:#333540; --bd2:#4a4d5a;
    --tx:#e4e6f0; --tx2:#b0b3c6; --mu:#6b6f82; --fa:#454760;
    --ac:#4f8ef7; --ac-bg:#1a2540; --ac-bd:#2d4a80;
    --gn:#3fb950; --gn-bg:#1a2e1d; --gn-bd:#2d5c32;
    --rd:#f85149; --rd-bg:#2e1a1a; --rd-bd:#5c2d2d;
    --am:#e3b341; --am-bg:#2e2310; --am-bd:#5c4718;
    --vi:#a371f7; --vi-bg:#221a3a; --vi-bd:#4a3070;
  }

  /* Pull tab */
  #dt-tab { position:fixed; top:50%; right:0; transform:translateY(-50%); z-index:2147483645; width:28px; height:96px; background:var(--bg); border:1px solid var(--bd); border-right:none; border-radius:10px 0 0 10px; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:-2px 0 10px rgba(0,0,0,.07); transition:width .18s var(--ease),background .15s,border-color .15s; overflow:hidden; user-select:none; }
  #dt-tab.dt-tab-animate { transition:width .18s var(--ease),background .15s,border-color .15s,left .28s cubic-bezier(.4,0,.2,1),right .28s cubic-bezier(.4,0,.2,1); }
  #dt-tab:hover { width:34px; background:var(--sf); border-color:var(--bd2); }
  #dt-tab.active { border-color:var(--ac-bd); background:var(--ac-bg); }
  #dt-tab-inner { display:flex; flex-direction:column; align-items:center; gap:7px; pointer-events:none; }
  #dt-tab-label { writing-mode:vertical-rl; text-orientation:mixed; font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:500; letter-spacing:.16em; color:var(--mu); text-transform:uppercase; transform:rotate(180deg); transition:color .15s; }
  #dt-tab:hover #dt-tab-label,#dt-tab.active #dt-tab-label { color:var(--ac); }
  #dt-tab-chevron { font-size:11px; color:var(--fa); transition:transform .25s var(--ease),color .15s; line-height:1; }
  #dt-tab.active #dt-tab-chevron { transform:scaleX(-1); color:var(--ac); }

  /* Sidebar */
  #dt-sidebar { position:fixed; top:0; right:0; bottom:0; z-index:2147483644; width:var(--w); transform:translateX(var(--w)); background:var(--bg); display:flex; flex-direction:column; box-shadow:-4px 0 24px rgba(0,0,0,.10),-1px 0 0 var(--bd); overflow:hidden; }
  #dt-sidebar.open { transform:translateX(0); }

  /* Drag resize handle */
  #dt-sb-drag-handle { position:absolute; top:0; bottom:0; left:0; width:5px; cursor:ew-resize; z-index:10; background:transparent; transition:background .15s; }
  #dt-sb-drag-handle:hover,#dt-sb-drag-handle:active { background:var(--ac-bd); }

  /* Side toggle (Left/Right) */
  .dt-side-toggle { display:flex; border:1.5px solid var(--bd); border-radius:7px; overflow:hidden; flex-shrink:0; }
  .dt-side-btn { padding:5px 12px; font-size:11px; font-weight:500; background:transparent; border:none; color:var(--mu); cursor:pointer; transition:all .15s; }
  .dt-side-btn.active { background:var(--ac); color:#fff; }
  .dt-head { padding:18px 18px 14px; border-bottom:1px solid var(--bd); flex-shrink:0; display:flex; align-items:center; gap:11px; }
  .dt-head-icon { width:32px; height:32px; background:var(--ac-bg); border:1px solid var(--ac-bd); border-radius:8px; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:15px; }
  .dt-head-text { flex:1; }
  .dt-head-title { font-size:14px; font-weight:600; color:var(--tx); letter-spacing:-.01em; }
  .dt-head-sub { font-family:'IBM Plex Mono',monospace; font-size:9.5px; color:var(--mu); margin-top:1px; }
  .dt-head-close { width:28px; height:28px; border-radius:7px; background:transparent; border:1px solid var(--bd); color:var(--mu); cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:14px; transition:all .15s; flex-shrink:0; }
  .dt-head-close:hover { background:var(--rd-bg); border-color:var(--rd-bd); color:var(--rd); }
  .dt-nav { display:flex; border-bottom:1px solid var(--bd); background:var(--sf); flex-shrink:0; padding:0 14px; }
  .dt-nav-btn { padding:10px 10px 9px; font-size:12px; font-weight:500; color:var(--mu); cursor:pointer; background:none; border:none; border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .15s,border-color .15s; }
  .dt-nav-btn:hover { color:var(--tx2); }
  .dt-nav-btn.active { color:var(--ac); border-bottom-color:var(--ac); }
  .dt-scroll { flex:1; overflow-y:auto; }
  .dt-scroll::-webkit-scrollbar { width:4px; }
  .dt-scroll::-webkit-scrollbar-thumb { background:var(--bd); border-radius:4px; }
  .dt-panel { display:none; }
  .dt-panel.active { display:block; }
  .dt-section { padding:16px 18px; border-bottom:1px solid var(--bd); }
  .dt-section:last-child { border-bottom:none; }
  .dt-slabel { font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--mu); margin-bottom:13px; }
  .dt-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }

  /* Tooltip */
  .dt-tip { position:relative; display:inline-flex; align-items:center; }
  .dt-tip-icon { width:15px; height:15px; border-radius:50%; border:1.5px solid var(--bd2); color:var(--mu); font-size:9px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; cursor:default; flex-shrink:0; }
  .dt-tip-text { display:none; position:fixed; width:210px; background:var(--sf2); border:1px solid var(--bd); border-radius:7px; padding:8px 10px; font-size:11px; color:var(--tx2); line-height:1.5; z-index:2147483646; box-shadow:0 4px 16px rgba(0,0,0,.13); white-space:normal; pointer-events:none; }
  .dt-tip:hover .dt-tip-text { display:block; }

  /* Appearance mode tabs */
  .dt-appearance-tabs { display:flex; gap:3px; background:var(--sf2); border-radius:8px; padding:3px; margin-bottom:14px; }
  .dt-appearance-tab { flex:1; padding:5px 2px; font-size:11px; font-weight:500; border:none; border-radius:6px; background:transparent; color:var(--mu); cursor:pointer; transition:all .15s; }
  .dt-appearance-tab.active { background:var(--bg); color:var(--tx); box-shadow:0 1px 4px rgba(0,0,0,.10); }

  /* Font select */
  .dt-font-select { width:100%; padding:7px 28px 7px 10px; border:1.5px solid var(--bd); border-radius:7px; background:var(--sf); color:var(--tx); font-size:13px; outline:none; cursor:pointer; appearance:none; -webkit-appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M6 8L1.5 3.5h9z'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 10px center; transition:border-color .15s; box-sizing:border-box; }
  .dt-font-select:focus { border-color:var(--ac); }
  .dt-font-select option { font-size:13px; background:var(--bg); color:var(--tx); }

  /* Slider with steppers */
  .dt-slider-row { display:flex; align-items:center; gap:6px; }
  .dt-slider-step { width:26px; height:26px; border:1.5px solid var(--bd); border-radius:5px; background:var(--sf); color:var(--mu); font-size:16px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:all .15s; padding:0; }
  .dt-slider-step:hover { border-color:var(--ac); color:var(--ac); background:var(--ac-bg); }
  .dt-slider-val-input { width:52px; padding:4px 6px; border:1.5px solid var(--bd); border-radius:5px; background:var(--sf); color:var(--tx); font-size:12px; font-family:'IBM Plex Mono',monospace; text-align:center; outline:none; transition:border-color .15s; }
  .dt-slider-val-input:focus { border-color:var(--ac); }
  .dt-row:last-child { margin-bottom:0; }
  .dt-row-info { flex:1; min-width:0; }
  .dt-row-label { font-size:13px; font-weight:500; color:var(--tx); }
  .dt-row-sub { font-size:11px; color:var(--mu); margin-top:2px; line-height:1.5; }
  .dt-at-hint { transition:color .18s; }
  .dt-at-hint.on { color:var(--gn,#a6e3a1); }
  .dt-toggle { position:relative; width:40px; height:22px; cursor:pointer; flex-shrink:0; }
  .dt-toggle input { opacity:0; width:0; height:0; position:absolute; }
  .dt-toggle-track { position:absolute; inset:0; background:var(--sf2); border:1.5px solid var(--bd); border-radius:11px; transition:all .18s var(--ease); }
  .dt-toggle input:checked ~ .dt-toggle-track { background:var(--ac); border-color:var(--ac); }
  .dt-toggle-thumb { position:absolute; top:3px; left:3px; width:14px; height:14px; background:#fff; border-radius:50%; box-shadow:0 1px 3px rgba(0,0,0,.2); transition:left .18s var(--ease); }
  .dt-toggle input:checked ~ .dt-toggle-track .dt-toggle-thumb { left:20px; }
  .dt-method-grid { display:flex; flex-wrap:wrap; gap:5px; margin-top:2px; }
  .dt-method-check { display:none; }
  .dt-method-pill { padding:3px 10px; border-radius:20px; font-size:10px; font-weight:600; font-family:'IBM Plex Mono',monospace; letter-spacing:.06em; cursor:pointer; border:1.5px solid var(--bd); color:var(--mu); background:var(--sf); transition:all .15s; user-select:none; }
  .dt-method-check:checked + .dt-method-pill { color:#fff; border-color:transparent; }
  .dt-method-check[data-m="GET"]:checked + .dt-method-pill { background:#0891b2; }
  .dt-method-check[data-m="POST"]:checked + .dt-method-pill { background:#16a34a; }
  .dt-method-check[data-m="PUT"]:checked + .dt-method-pill { background:#2563eb; }
  .dt-method-check[data-m="PATCH"]:checked + .dt-method-pill { background:#7c3aed; }
  .dt-method-check[data-m="DELETE"]:checked + .dt-method-pill { background:#dc2626; }
  .dt-chip { font-family:'IBM Plex Mono',monospace; font-size:10px; font-weight:500; letter-spacing:.06em; padding:3px 9px; border-radius:20px; border:1px solid var(--bd); color:var(--mu); background:var(--sf); white-space:nowrap; }
  .dt-chip.on { background:var(--gn-bg); border-color:var(--gn-bd); color:var(--gn); }
  .dt-queue { display:flex; align-items:center; gap:9px; padding:10px 12px; background:var(--sf); border:1px solid var(--bd); border-radius:8px; margin-top:12px; }
  .dt-queue-dot { width:7px; height:7px; border-radius:50%; background:var(--fa); flex-shrink:0; transition:all .2s; }
  .dt-queue-dot.active { background:var(--am); box-shadow:0 0 0 3px var(--am-bg); animation:dt-pulse 1.6s ease-in-out infinite; }
  @keyframes dt-pulse { 0%,100%{opacity:1} 50%{opacity:.35} }
  .dt-queue-text { font-size:12px; color:var(--tx2); }
  .dt-queue-text strong { color:var(--am); }
  .dt-mode-group { display:flex; gap:6px; margin-top:12px; }
  .dt-mode-btn { flex:1; padding:8px; font-size:11.5px; font-weight:500; background:var(--sf); border:1.5px solid var(--bd); border-radius:7px; color:var(--mu); cursor:pointer; transition:all .15s; }
  .dt-mode-btn:hover { border-color:var(--bd2); color:var(--tx2); }
  .dt-mode-btn.active { background:var(--ac-bg); border-color:var(--ac-bd); color:var(--ac); }
  .dt-regex-wrap { max-height:0; overflow:hidden; opacity:0; transition:max-height .22s var(--ease),opacity .18s; }
  .dt-regex-wrap.visible { max-height:80px; opacity:1; margin-top:12px; }
  .dt-flabel { font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; color:var(--mu); margin-bottom:6px; }
  .dt-regex-field { display:flex; align-items:center; background:var(--bg); border:1.5px solid var(--bd); border-radius:7px; padding:0 10px; gap:5px; transition:border-color .15s,box-shadow .15s; }
  .dt-regex-field:focus-within { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }
  .dt-regex-delim { font-family:'IBM Plex Mono',monospace; font-size:14px; font-weight:300; color:var(--fa); flex-shrink:0; }
  .dt-regex-input { flex:1; background:none; border:none; outline:none; font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:var(--tx); padding:8px 0; caret-color:var(--ac); }
  .dt-regex-input::placeholder { color:var(--fa); }
  .dt-regex-dot { width:6px; height:6px; border-radius:50%; background:var(--bd); flex-shrink:0; transition:background .15s; }
  .dt-regex-dot.valid { background:var(--gn); }
  .dt-regex-dot.invalid { background:var(--rd); }
  .dt-persist-note { font-size:11px; color:var(--mu); padding:9px 11px; background:var(--sf); border:1px solid var(--bd); border-radius:7px; margin-top:10px; line-height:1.55; }
  .dt-persist-note.on { background:var(--ac-bg); border-color:var(--ac-bd); color:var(--ac); }
  .dt-about-hero { padding:24px 18px 18px; border-bottom:1px solid var(--bd); text-align:center; }
  .dt-about-icon { width:48px; height:48px; background:var(--ac-bg); border:1px solid var(--ac-bd); border-radius:13px; display:flex; align-items:center; justify-content:center; font-size:22px; margin:0 auto 10px; }
  .dt-about-title { font-size:16px; font-weight:600; color:var(--tx); margin-bottom:3px; }
  .dt-about-version { font-family:'IBM Plex Mono',monospace; font-size:10px; color:var(--mu); }
  .dt-feature-list { padding:14px 18px; }
  .dt-feature-item { display:flex; gap:11px; align-items:flex-start; padding:11px; border:1px solid var(--bd); border-radius:8px; margin-bottom:7px; background:var(--sf); }
  .dt-feature-item:last-child { margin-bottom:0; }
  .dt-feature-ico { font-size:15px; flex-shrink:0; margin-top:1px; }
  .dt-feature-name { font-size:12.5px; font-weight:600; color:var(--tx); margin-bottom:2px; }
  .dt-feature-desc { font-size:11px; color:var(--mu); line-height:1.55; }

  /* ── Sidebar Settings Panel ─────────────────────────────────────────────── */
  .dt-settings-group-label { font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--mu); margin-bottom:10px; }
  /* Theme swatches */
  .dt-theme-grid { display:flex; flex-wrap:wrap; gap:7px; }
  .dt-theme-swatch { cursor:pointer; border-radius:8px; overflow:hidden; border:2px solid transparent; transition:all .15s; flex-shrink:0; }
  .dt-theme-swatch.active { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }
  .dt-swatch-preview { width:60px; height:36px; display:flex; align-items:center; justify-content:center; }
  .dt-swatch-preview-inner { font-size:9px; font-family:'IBM Plex Mono',monospace; opacity:.8; }
  .dt-swatch-name { font-size:9px; font-weight:500; color:var(--tx2); text-align:center; padding:3px 0; background:var(--sf); border-top:1px solid var(--bd); }
  /* Font selector */
  .dt-font-list { display:flex; flex-direction:column; gap:5px; }
  .dt-font-opt { display:flex; align-items:center; gap:10px; padding:7px 10px; border:1px solid var(--bd); border-radius:7px; cursor:pointer; transition:all .15s; background:var(--bg); }
  .dt-font-opt:hover { border-color:var(--bd2); background:var(--sf); }
  .dt-font-opt.active { border-color:var(--ac-bd); background:var(--ac-bg); }
  .dt-font-opt-radio { width:14px; height:14px; border-radius:50%; border:1.5px solid var(--bd); flex-shrink:0; display:flex; align-items:center; justify-content:center; transition:all .15s; }
  .dt-font-opt.active .dt-font-opt-radio { border-color:var(--ac); background:var(--ac); }
  .dt-font-opt.active .dt-font-opt-radio::after { content:''; width:5px; height:5px; background:#fff; border-radius:50%; }
  .dt-font-opt-name { font-size:12px; color:var(--tx); flex:1; }
  .dt-font-opt-preview { font-size:10px; color:var(--mu); }
  /* Font size slider */
  .dt-size-row { display:flex; align-items:center; gap:12px; }
  .dt-size-slider { flex:1; appearance:none; height:4px; border-radius:2px; background:var(--sf2); outline:none; cursor:pointer; }
  .dt-size-slider::-webkit-slider-thumb { appearance:none; width:16px; height:16px; border-radius:50%; background:var(--ac); cursor:pointer; box-shadow:0 1px 4px rgba(37,99,235,.3); }
  .dt-size-val { font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--tx2); min-width:28px; text-align:right; }
  /* Custom colors */
  .dt-custom-colors { display:flex; flex-direction:column; gap:10px; }
  .dt-color-group { flex:1; }
  .dt-color-label { font-size:11px; color:var(--mu); margin-bottom:5px; }
  .dt-color-input-row { display:flex; gap:6px; align-items:center; }
  .dt-color-picker { width:32px; height:32px; border-radius:7px; border:1px solid var(--bd); cursor:pointer; padding:2px; background:var(--sf); }
  .dt-color-hex { flex:1; font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--tx); background:var(--sf); border:1px solid var(--bd); border-radius:6px; padding:6px 9px; outline:none; transition:border-color .15s; }
  .dt-color-hex:focus { border-color:var(--ac); }
  .dt-color-clear { font-size:10px; color:var(--mu); background:transparent; border:1px solid var(--bd); border-radius:5px; padding:4px 7px; cursor:pointer; transition:all .15s; }
  .dt-color-clear:hover { border-color:var(--rd-bd); color:var(--rd); }
  /* Preview box */
  .dt-ed-preview { border-radius:8px; overflow:hidden; margin-top:4px; }
  .dt-ed-preview-inner { padding:12px 14px; font-size:12px; line-height:1.7; white-space:pre; }
  /* Apply button */
  .dt-settings-apply-row { display:flex; justify-content:flex-end; gap:8px; padding-top:4px; }
  .dt-btn-apply { font-size:12px; font-weight:500; padding:8px 16px; border-radius:7px; cursor:pointer; background:var(--ac); border:1px solid var(--ac); color:#fff; transition:all .15s; }
  .dt-btn-apply:hover { background:#1d4ed8; }
  .dt-btn-reset { font-size:12px; font-weight:500; padding:8px 16px; border-radius:7px; cursor:pointer; background:transparent; border:1px solid var(--bd); color:var(--tx2); transition:all .15s; }
  .dt-btn-reset:hover { border-color:var(--bd2); }

  /* Modal overlay */
  .dt-overlay { position:fixed; inset:0; z-index:2147483647; background:rgba(0,0,0,.42); display:flex; align-items:center; justify-content:center; backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); }

  /* Modal — resizable, fixed initial size */
  .dt-modal { position:relative; z-index:1; width:700px; height:620px; min-width:500px; min-height:400px; max-width:98vw; max-height:96vh; background:var(--bg); border:1px solid var(--bd); border-radius:14px; overflow:hidden; display:flex; flex-direction:column; box-shadow:0 20px 60px rgba(0,0,0,.18),0 4px 16px rgba(0,0,0,.08); transform:translateY(10px) scale(.98); resize:both; }
  .dt-overlay.visible .dt-modal { transform:translateY(0) scale(1); }
  .dt-modal-head { padding:16px 18px 14px; border-bottom:1px solid var(--bd); display:flex; align-items:flex-start; gap:12px; flex-shrink:0; background:var(--sf); }
  .dt-modal-icon { width:36px; height:36px; border-radius:9px; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:16px; }
  .dt-modal-icon.req { background:var(--am-bg); border:1px solid var(--am-bd); }
  .dt-modal-icon.res { background:var(--vi-bg); border:1px solid var(--vi-bd); }
  .dt-modal-meta { flex:1; min-width:0; }
  .dt-modal-title { font-size:14px; font-weight:600; color:var(--tx); margin-bottom:3px; letter-spacing:-.01em; }
  .dt-modal-url { font-family:'IBM Plex Mono',monospace; font-size:10px; color:var(--mu); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .dt-method-tag { padding:3px 9px; border-radius:5px; font-family:'IBM Plex Mono',monospace; font-size:9.5px; font-weight:600; letter-spacing:.08em; flex-shrink:0; }
  .dt-method-tag.GET    { background:#ecfeff; color:#0891b2; border:1px solid #a5f3fc; }
  .dt-method-tag.POST   { background:var(--gn-bg); color:var(--gn); border:1px solid var(--gn-bd); }
  .dt-method-tag.PUT    { background:var(--ac-bg); color:var(--ac); border:1px solid var(--ac-bd); }
  .dt-method-tag.PATCH  { background:var(--vi-bg); color:var(--vi); border:1px solid var(--vi-bd); }
  .dt-method-tag.DELETE { background:var(--rd-bg); color:var(--rd); border:1px solid var(--rd-bd); }

  .dt-modal-body { flex:1; overflow-y:auto; overflow-x:hidden; padding:0; display:flex; flex-direction:column; min-height:0; }
  .dt-modal-body::-webkit-scrollbar { width:4px; }
  .dt-modal-body::-webkit-scrollbar-thumb { background:var(--bd); border-radius:4px; }
  .dt-modal-inner { padding:16px 18px; display:flex; flex-direction:column; gap:14px; }
  .dt-payload-section { display:flex; flex-direction:column; min-height:200px; }

  /* Response status banner */
  .dt-res-status { display:flex; align-items:center; gap:8px; padding:8px 12px; border-radius:7px; font-size:12px; font-weight:500; flex-shrink:0; }
  .dt-res-status.ok  { background:var(--gn-bg); border:1px solid var(--gn-bd); color:var(--gn); }
  .dt-res-status.err { background:var(--rd-bg); border:1px solid var(--rd-bd); color:var(--rd); }
  .dt-res-status.oth { background:var(--am-bg); border:1px solid var(--am-bd); color:var(--am); }
  .dt-res-status-code { font-family:'IBM Plex Mono',monospace; font-size:11px; font-weight:600; }
  .dt-res-status-text { font-family:'IBM Plex Mono',monospace; font-size:10px; opacity:.8; }

  /* Response mode tab strip */
  .dt-res-tabs { display:flex; gap:0; margin-bottom:2px; border:1px solid var(--bd); border-radius:8px; overflow:hidden; flex-shrink:0; }
  .dt-res-tab { flex:1; padding:8px 10px; font-size:11px; font-weight:500; color:var(--mu); cursor:pointer; background:var(--sf); border:none; border-right:1px solid var(--bd); transition:all .15s; text-align:center; }
  .dt-res-tab:last-child { border-right:none; }
  .dt-res-tab:hover { color:var(--tx2); background:var(--sf2); }
  .dt-res-tab.active { background:var(--ac-bg); color:var(--ac); }

  /* Editor wrapper */
  .dt-editor-wrap { border:1px solid var(--bd); border-radius:9px; overflow:hidden; display:flex; flex-direction:column; flex:1; min-height:120px; resize:none; min-width:260px; }
  .dt-editor-outer { position:relative; flex:1; min-height:0; display:flex; flex-direction:column; }
  .dt-hl-overlay { position:absolute; top:0; left:0; right:0; bottom:0; pointer-events:none; line-height:1.7; padding:13px 15px; tab-size:2; white-space:pre; overflow:hidden; color:transparent; }
  .dt-hl-overlay mark { border-radius:2px; color:transparent; }
  .dt-editor { flex:1; width:100%; min-height:0; border:none; outline:none; resize:none; line-height:1.7; padding:13px 15px; tab-size:2; white-space:pre; overflow:auto; }
  .dt-editor-bar { display:flex; align-items:center; gap:5px; padding:7px 10px; flex-shrink:0; }
  .dt-editor-btn { font-family:'IBM Plex Mono',monospace; font-size:9.5px; padding:3px 9px; border-radius:4px; cursor:pointer; transition:all .12s; }
  .dt-editor-btn:disabled { opacity:.35; cursor:default; }
  .dt-search-toggle-btn { margin-left:auto; font-family:'IBM Plex Mono',monospace; font-size:9.5px; padding:3px 9px; border-radius:4px; cursor:pointer; transition:all .12s; display:flex; align-items:center; gap:5px; }
  .dt-json-badge { font-family:'IBM Plex Mono',monospace; font-size:9.5px; }

  /* Search bar */
  .dt-search-bar { display:flex; align-items:center; gap:6px; padding:6px 10px; flex-shrink:0; }
  .dt-search-bar.hidden { display:none; }
  .dt-search-wrap { display:flex; align-items:center; flex:1; border-radius:5px; padding:0 8px; gap:5px; transition:border-color .15s; }
  .dt-search-icon { font-size:11px; flex-shrink:0; }
  .dt-search-input { flex:1; background:none; border:none; outline:none; font-family:'IBM Plex Mono',monospace; font-size:11px; padding:5px 0; }
  .dt-search-count { font-family:'IBM Plex Mono',monospace; font-size:10px; white-space:nowrap; flex-shrink:0; min-width:46px; text-align:right; }
  .dt-snav { width:22px; height:22px; border-radius:4px; cursor:pointer; background:transparent; display:flex; align-items:center; justify-content:center; font-size:11px; transition:all .12s; flex-shrink:0; }
  .dt-sclose { width:20px; height:20px; border-radius:4px; cursor:pointer; background:transparent; border:none; font-size:13px; display:flex; align-items:center; justify-content:center; transition:color .12s; flex-shrink:0; }

  /* Headers */
  .dt-headers-section { }
  .dt-headers-toggle { display:flex; align-items:center; gap:7px; cursor:pointer; padding:8px 10px; background:var(--sf); border:1px solid var(--bd); border-radius:8px; transition:border-radius .15s; }
  .dt-headers-toggle.open { border-radius:8px 8px 0 0; }
  .dt-headers-arrow { font-size:10px; color:var(--fa); transition:transform .18s; flex-shrink:0; }
  .dt-headers-toggle.open .dt-headers-arrow { transform:rotate(90deg); }
  .dt-headers-label { font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; color:var(--mu); }
  .dt-headers-count { margin-left:auto; font-family:'IBM Plex Mono',monospace; font-size:9px; color:var(--fa); }
  .dt-headers-body { display:none; border:1px solid var(--bd); border-top:none; border-radius:0 0 8px 8px; background:var(--bg); max-height:200px; overflow-y:auto; }
  .dt-headers-body.open { display:block; }
  .dt-headers-inner { padding:8px; display:flex; flex-direction:column; gap:4px; }
  .dt-header-row { display:flex; gap:10px; align-items:baseline; padding:5px 9px; border:1px solid var(--bd); border-radius:5px; background:var(--sf); }
  .dt-hkey { font-family:'IBM Plex Mono',monospace; font-size:10px; font-weight:500; color:var(--tx2); min-width:130px; flex-shrink:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .dt-hval { font-family:'IBM Plex Mono',monospace; font-size:10px; font-weight:300; color:var(--mu); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; min-width:0; }

  /* GET params */
  .dt-params-section { display:flex; flex-direction:column; min-height:0; }
  .dt-params-list { display:flex; flex-direction:column; gap:6px; margin-bottom:8px; }
  .dt-param-row { display:flex; gap:6px; align-items:center; }
  .dt-param-input { flex:1; background:var(--sf); border:1px solid var(--bd); border-radius:6px; padding:6px 9px; font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--tx); outline:none; transition:border-color .15s; }
  .dt-param-input:focus { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }
  .dt-param-input::placeholder { color:var(--fa); }
  .dt-param-eq { font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--fa); flex-shrink:0; }
  .dt-param-del { width:24px; height:24px; border-radius:5px; cursor:pointer; background:transparent; border:1px solid var(--bd); color:var(--fa); font-size:13px; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:all .12s; }
  .dt-param-del:hover { border-color:var(--rd-bd); color:var(--rd); background:var(--rd-bg); }
  .dt-add-param { font-size:11px; font-weight:500; color:var(--ac); background:var(--ac-bg); border:1px solid var(--ac-bd); border-radius:6px; padding:6px 12px; cursor:pointer; transition:all .15s; width:fit-content; }
  .dt-add-param:hover { background:#dbeafe; }

  /* Response transform — GUI path builder */
  .dt-transform-section { display:flex; flex-direction:column; gap:10px; flex:1; min-height:0; }
  .dt-transform-note { font-size:11px; color:var(--mu); padding:8px 10px; background:var(--vi-bg); border:1px solid var(--vi-bd); border-radius:7px; line-height:1.55; flex-shrink:0; }
  .dt-transform-cols { display:flex; gap:10px; flex:1; min-height:180px; }
  .dt-transform-pane { flex:1; display:flex; flex-direction:column; min-width:0; }
  .dt-transform-pane-label { font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; color:var(--mu); margin-bottom:6px; flex-shrink:0; }
  .dt-tree { flex:1; overflow-y:auto; overflow-x:hidden; background:var(--sf); border:1px solid var(--bd); border-radius:8px; padding:8px; font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--tx2); }
  .dt-tree::-webkit-scrollbar { width:3px; }
  .dt-tree::-webkit-scrollbar-thumb { background:var(--bd); border-radius:3px; }
  .dt-tree-node { display:flex; align-items:center; gap:4px; padding:2px 4px; border-radius:4px; cursor:pointer; white-space:nowrap; transition:background .1s; }
  .dt-tree-node:hover { background:var(--sf2); }
  .dt-tree-node.selected { background:var(--ac-bg); color:var(--ac); }
  .dt-tree-indent { display:inline-block; width:14px; flex-shrink:0; }
  .dt-tree-arrow { font-size:9px; color:var(--fa); flex-shrink:0; width:10px; }
  .dt-tree-key { color:var(--tx); font-weight:500; }
  .dt-tree-type { font-size:9px; color:var(--fa); margin-left:4px; }
  .dt-tree-val { color:var(--mu); margin-left:4px; max-width:100px; overflow:hidden; text-overflow:ellipsis; }
  .dt-path-builder { display:flex; flex-direction:column; gap:8px; flex-shrink:0; }
  .dt-path-display { font-family:'IBM Plex Mono',monospace; font-size:10px; color:var(--vi); background:var(--vi-bg); border:1px solid var(--vi-bd); border-radius:6px; padding:7px 10px; word-break:break-all; min-height:32px; }
  .dt-path-actions { display:flex; gap:6px; flex-wrap:wrap; }
  .dt-path-btn { font-size:11px; font-weight:500; padding:6px 12px; border-radius:6px; cursor:pointer; transition:all .15s; border:1.5px solid; }
  .dt-path-btn-extract { background:var(--ac-bg); border-color:var(--ac-bd); color:var(--ac); }
  .dt-path-btn-extract:hover { background:#dbeafe; }
  .dt-path-btn-wrap { background:var(--gn-bg); border-color:var(--gn-bd); color:var(--gn); }
  .dt-path-btn-wrap:hover { background:#dcfce7; }
  .dt-custom-wrap-input { font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--tx); background:var(--sf); border:1px solid var(--bd); border-radius:6px; padding:6px 9px; outline:none; width:100%; transition:border-color .15s; }
  .dt-custom-wrap-input:focus { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }
  .dt-custom-wrap-input::placeholder { color:var(--fa); }

  /* JS Transform */
  .dt-code-section { display:flex; flex-direction:column; flex:1; min-height:0; gap:8px; }
  .dt-code-note { font-size:11px; color:var(--mu); line-height:1.55; }
  .dt-code-note code { font-family:'IBM Plex Mono',monospace; background:var(--sf); padding:1px 5px; border-radius:3px; font-size:10px; color:var(--vi); }
  .dt-transform-editor { flex:1; width:100%; min-height:80px; border:1px solid var(--bd); border-radius:8px; padding:10px 12px; font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:var(--tx); background:var(--sf); outline:none; resize:none; line-height:1.6; tab-size:2; caret-color:var(--ac); transition:border-color .15s; }
  .dt-transform-editor:focus { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }
  .dt-transform-run-btn { font-size:11.5px; font-weight:500; padding:8px 16px; border-radius:7px; cursor:pointer; background:var(--vi-bg); border:1.5px solid var(--vi-bd); color:var(--vi); transition:all .15s; width:fit-content; flex-shrink:0; }
  .dt-transform-run-btn:hover { background:#ede9fe; }
  .dt-transform-err { font-family:'IBM Plex Mono',monospace; font-size:10px; color:var(--rd); background:var(--rd-bg); border:1px solid var(--rd-bd); border-radius:6px; padding:6px 10px; display:none; }
  .dt-transform-err.show { display:block; }

  /* Footer */
  .dt-modal-foot { padding:12px 18px; border-top:1px solid var(--bd); display:flex; align-items:center; gap:10px; flex-shrink:0; background:var(--sf); }
  .dt-modal-count { font-family:'IBM Plex Mono',monospace; font-size:9.5px; color:var(--mu); white-space:nowrap; }
  .dt-foot-btn { flex:1; padding:9px; font-size:12.5px; font-weight:500; border-radius:8px; cursor:pointer; border:1.5px solid; transition:all .15s; }
  .dt-foot-btn:hover { border-color:var(--bd2); color:var(--tx); }
  .dt-foot-btn-abort { background:var(--bg); border-color:var(--bd); color:var(--tx2); }
  .dt-foot-btn-abort:hover { border-color:var(--rd-bd); color:var(--rd); background:var(--rd-bg); }
  .dt-foot-btn-send { background:var(--ac); border-color:var(--ac); color:#fff; }
  .dt-foot-btn-send:hover { background:#1d4ed8; border-color:#1d4ed8; color:#fff; box-shadow:0 4px 12px rgba(37,99,235,.28); }
  .dt-foot-btn-send.res-send { background:var(--vi); border-color:var(--vi); color:#fff; }
  .dt-foot-btn-send.res-send:hover { background:#6d28d9; border-color:#6d28d9; color:#fff; box-shadow:0 4px 12px rgba(124,58,237,.28); }

  /* Preview */
  .dt-res-preview-section { border-top:1px solid var(--bd); padding-top:12px; margin-top:4px; }
  .dt-preview-container { display:flex; gap:12px; align-items:stretch; }
  .dt-preview-pane { flex:1; border:1px solid var(--bd); border-radius:6px; overflow:hidden; display:flex; flex-direction:column; }
  .dt-preview-label { font-size:11px; font-weight:500; color:var(--mu); background:var(--sf); padding:6px 10px; border-bottom:1px solid var(--bd); flex-shrink:0; }
  .dt-preview-content { flex:1; padding:10px 12px; font-size:11px; overflow:auto; max-height:180px; word-break:break-all; white-space:pre-wrap; }
  .dt-preview-content.dt-editor-themed { background:var(--dt-ed-bg, var(--sf)); color:var(--dt-ed-text, var(--tx)); font-family:var(--dt-ed-font, 'IBM Plex Mono',monospace); font-size:var(--dt-ed-fs, 11px); }
  .dt-preview-arrow { padding:40px 4px; color:var(--mu); font-weight:bold; flex-shrink:0; align-self:center; }

  /* Presets overlay — must sit above res overlay (2147483647) */
  #dt-presets-overlay { z-index:2147483648; }
  .dt-presets-list { display:flex; flex-direction:column; gap:10px; }
  .dt-preset-item { display:flex; justify-content:space-between; align-items:center; padding:12px; background:var(--sf); border:1px solid var(--bd); border-radius:6px; gap:10px; transition:opacity .15s; }
  .dt-preset-disabled { opacity:.45; }
  .dt-preset-toggle { flex-shrink:0; width:34px; height:18px; }
  .dt-preset-toggle .dt-toggle-track { border-radius:9px; }
  .dt-preset-toggle .dt-toggle-thumb { top:2px; left:2px; width:12px; height:12px; }
  .dt-preset-toggle input:checked ~ .dt-toggle-track .dt-toggle-thumb { left:18px; }
  .dt-preset-info { flex:1; }
  .dt-preset-name { font-weight:500; color:var(--tx); font-size:13px; }
  .dt-preset-desc { font-size:11px; color:var(--mu); margin-top:4px; }
  .dt-preset-actions { display:flex; gap:6px; flex-shrink:0; }
  .dt-preset-btn { padding:6px 10px; font-size:11px; border-radius:4px; border:1px solid var(--bd); background:var(--bg); cursor:pointer; color:var(--mu); transition:all .15s; }
  .dt-preset-btn:hover { border-color:var(--ac); color:var(--ac); background:var(--ac-bg); }
  .dt-preset-btn.delete { color:var(--rd); }
  .dt-preset-btn.delete:hover { border-color:var(--rd); background:var(--rd-bg); }

  /* Preset editor panel */
  .dt-preset-name-input { width:100%; padding:8px 10px; border:1px solid var(--bd); border-radius:6px; background:var(--sf); color:var(--tx); font-size:13px; outline:none; box-sizing:border-box; transition:border-color .15s; }
  .dt-preset-name-input:focus { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }
  .dt-pe-patterns-list { display:flex; flex-direction:column; gap:6px; margin-bottom:8px; }
  .dt-pe-pattern-row { display:flex; align-items:center; gap:4px; }
  .dt-pe-pattern-row .dt-regex-input { flex:1; }
  .dt-pe-pattern-dot { width:7px; height:7px; border-radius:50%; background:var(--bd); flex-shrink:0; transition:background .15s; }
  .dt-pe-pattern-dot.valid { background:var(--gn); }
  .dt-pe-pattern-dot.invalid { background:var(--rd); }
  .dt-pe-pattern-remove { width:22px; height:22px; border:1px solid var(--bd); border-radius:4px; background:transparent; cursor:pointer; color:var(--mu); display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:all .15s; padding:0; }
  .dt-pe-pattern-remove:hover { border-color:var(--rd); color:var(--rd); background:var(--rd-bg); }
  .dt-pe-add-pattern { display:inline-flex; align-items:center; gap:5px; padding:5px 10px; border:1px dashed var(--bd); border-radius:5px; background:transparent; color:var(--mu); font-size:11px; cursor:pointer; transition:all .15s; }
  .dt-pe-add-pattern:hover { border-color:var(--ac); color:var(--ac); background:var(--ac-bg); }

  /* Mini save preset overlay */
  .dt-mini-overlay { z-index:2147483650; }
  .dt-mini-modal { background:var(--bg); border:1px solid var(--bd); border-radius:12px; box-shadow:0 20px 60px rgba(0,0,0,.22); width:420px; max-width:95vw; display:flex; flex-direction:column; overflow:hidden; }
  .dt-mini-modal-head { display:flex; align-items:center; gap:8px; padding:14px 16px 10px; font-size:13px; font-weight:600; color:var(--tx); border-bottom:1px solid var(--bd); }
  .dt-mini-modal-body { padding:16px; display:flex; flex-direction:column; gap:10px; }

  /* Revert buttons */
  .dt-revert-btn { display:inline-flex; align-items:center; gap:4px; padding:3px 8px; font-size:11px; color:var(--mu); background:transparent; border:1px solid var(--bd); border-radius:5px; cursor:pointer; transition:all .15s; }
  .dt-revert-btn:hover { color:var(--am); border-color:var(--am-bd); background:var(--am-bg); }
  .dt-hrevert-btn { display:inline-flex; align-items:center; gap:4px; padding:2px 7px; font-size:10px; color:var(--mu); background:transparent; border:1px solid var(--bd); border-radius:4px; cursor:pointer; transition:all .15s; margin-left:auto; }
  .dt-hrevert-btn:hover { color:var(--am); border-color:var(--am-bd); background:var(--am-bg); }

  /* Editable headers */
  .dt-header-row-edit { display:flex; align-items:center; gap:4px; padding:3px 4px; border-radius:4px; }
  .dt-header-row-edit:hover { background:var(--sf); }
  .dt-hkey-input { font-family:'IBM Plex Mono',monospace; font-size:10px; font-weight:500; color:var(--tx2); width:130px; flex-shrink:0; background:transparent; border:1px solid transparent; border-radius:3px; padding:2px 5px; outline:none; transition:border-color .12s; }
  .dt-hval-input { font-family:'IBM Plex Mono',monospace; font-size:10px; color:var(--mu); flex:1; min-width:0; background:transparent; border:1px solid transparent; border-radius:3px; padding:2px 5px; outline:none; transition:border-color .12s; }
  .dt-hkey-input:focus,.dt-hval-input:focus { border-color:var(--ac); background:var(--sf); color:var(--tx); }
  .dt-hrow-del { width:18px; height:18px; border:none; background:transparent; cursor:pointer; color:var(--fa); flex-shrink:0; display:flex; align-items:center; justify-content:center; border-radius:3px; padding:0; transition:all .12s; }
  .dt-hrow-del:hover { color:var(--rd); background:var(--rd-bg); }
  .dt-hadd-btn { display:inline-flex; align-items:center; gap:5px; margin:4px 4px 0; padding:4px 8px; border:1px dashed var(--bd); border-radius:4px; background:transparent; color:var(--mu); font-size:10px; cursor:pointer; transition:all .15s; }
  .dt-hadd-btn:hover { border-color:var(--ac); color:var(--ac); background:var(--ac-bg); }
  .dt-transform-save-btn { padding:8px 12px; font-size:12px; border-radius:6px; border:1px solid var(--vi-bd); background:var(--vi-bg); color:var(--vi); cursor:pointer; transition:all .15s; font-weight:500; }
  .dt-transform-save-btn:hover { border-color:var(--vi); background:var(--vi); color:white; box-shadow:0 2px 8px rgba(124,58,237,.2); }
  .dt-btn-presets { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:10px; background:var(--sf); border:1px solid var(--bd); border-radius:6px; cursor:pointer; color:var(--ac); font-size:12px; font-weight:500; transition:all .15s; width:100%; }
  .dt-btn-presets:hover { border-color:var(--ac-bd); background:var(--ac-bg); }
  /* ── Benchmark ──────────────────────────────────────────────────────────── */
  .dt-bench-method-sel { padding:6px 8px; border:1.5px solid var(--bd); border-radius:6px; background:var(--sf); color:var(--tx); font-size:12px; font-weight:600; font-family:'IBM Plex Mono',monospace; cursor:pointer; outline:none; flex-shrink:0; }
  .dt-bench-url-input { flex:1; padding:6px 10px; border:1.5px solid var(--bd); border-radius:6px; background:var(--sf); color:var(--tx); font-size:12px; outline:none; transition:border-color .15s,box-shadow .15s; min-width:0; }
  .dt-bench-url-input:focus { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }
  .dt-bench-body-ed { width:100%; height:100px; padding:8px 10px; border:1.5px solid var(--bd); border-radius:6px; background:var(--sf); color:var(--tx); font-size:11px; font-family:'IBM Plex Mono',monospace; outline:none; resize:vertical; transition:border-color .15s; box-sizing:border-box; }
  .dt-bench-body-ed:focus { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }

  /* Capture list */
  .dt-bench-capture-list { display:flex; flex-direction:column; gap:5px; max-height:220px; overflow-y:auto; margin-top:8px; }
  .dt-bench-capture-empty { font-size:11px; color:var(--mu); padding:20px 0; text-align:center; line-height:1.6; }
  .dt-bench-capture-item { display:flex; align-items:center; gap:8px; padding:7px 10px; background:var(--sf); border:1.5px solid var(--bd); border-radius:6px; cursor:pointer; transition:all .15s; }
  .dt-bench-capture-item:hover { border-color:var(--ac-bd); background:var(--ac-bg); }
  .dt-bench-capture-item.selected { border-color:var(--ac); background:var(--ac-bg); }
  .dt-bench-capture-method { font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:700; padding:2px 5px; border-radius:3px; color:#fff; flex-shrink:0; }
  .dt-bench-capture-url { font-size:11px; color:var(--tx2); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-family:'IBM Plex Mono',monospace; }
  .dt-bench-capture-status { font-size:10px; color:var(--mu); flex-shrink:0; }

  /* Selected pill */
  .dt-bench-sel-pill { display:flex; align-items:center; gap:8px; padding:8px 10px; background:var(--ac-bg); border:1.5px solid var(--ac-bd); border-radius:8px; }
  .dt-bench-sel-method { font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:700; padding:2px 6px; border-radius:3px; color:#fff; flex-shrink:0; }
  .dt-bench-sel-url { font-size:11px; color:var(--ac); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-family:'IBM Plex Mono',monospace; }
  .dt-bench-clear-sel { font-size:10px; color:var(--mu); background:transparent; border:1px solid var(--bd); border-radius:4px; padding:2px 7px; cursor:pointer; transition:all .15s; }
  .dt-bench-clear-sel:hover { color:var(--rd); border-color:var(--rd-bd); background:var(--rd-bg); }

  /* Config grid */
  .dt-bench-config-grid { display:grid; grid-template-columns:1fr 1fr 1fr auto; gap:10px; align-items:start; margin-bottom:14px; }
  .dt-bench-config-item { display:flex; flex-direction:column; }
  .dt-bench-num-input { padding:6px 8px; border:1.5px solid var(--bd); border-radius:6px; background:var(--sf); color:var(--tx); font-size:13px; font-family:'IBM Plex Mono',monospace; outline:none; width:100%; transition:border-color .15s; box-sizing:border-box; }
  .dt-bench-num-input:focus { border-color:var(--ac); box-shadow:0 0 0 3px var(--ac-bg); }

  /* Run button */
  .dt-bench-run-btn { display:flex; align-items:center; justify-content:center; gap:7px; width:100%; padding:10px; background:var(--ac); border:none; border-radius:8px; color:#fff; font-size:13px; font-weight:600; cursor:pointer; transition:all .15s; }
  .dt-bench-run-btn:hover { background:#1d4ed8; box-shadow:0 4px 12px rgba(37,99,235,.28); }
  .dt-bench-run-btn:disabled { background:var(--fa); cursor:not-allowed; box-shadow:none; }
  .dt-bench-run-btn.running { background:var(--rd); }
  .dt-bench-run-btn.running:hover { background:#b91c1c; }
  .dt-bench-run-btn.pending { background:var(--am); animation:dt-pulse .8s ease-in-out infinite; }
  @keyframes dt-pulse { 0%,100%{opacity:1;} 50%{opacity:.65;} }
  @keyframes dt-spin  { to { transform:rotate(360deg); } }

  /* Greyed-out dependent rows when master toggle is off */
  .dt-row-disabled { opacity:.42; pointer-events:none; user-select:none; transition:opacity .2s; }

  /* Progress */
  .dt-bench-progress { margin-bottom:12px; }
  .dt-bench-progress-bar { height:6px; background:var(--bd); border-radius:3px; overflow:hidden; margin-bottom:6px; position:relative; }
  .dt-bench-progress-fill { height:100%; background:var(--ac); border-radius:3px; width:0%; transition:width .25s ease; }
  .dt-bench-progress-label { font-size:11px; color:var(--mu); font-family:'IBM Plex Mono',monospace; }

  /* Stats grid */
  .dt-bench-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-bottom:12px; }
  .dt-bench-stat { background:var(--sf); border:1px solid var(--bd); border-radius:8px; padding:8px 10px; text-align:center; }
  .dt-bench-stat-val { font-size:16px; font-weight:700; color:var(--tx); font-family:'IBM Plex Mono',monospace; line-height:1.2; }
  .dt-bench-stat-val.good { color:var(--gn); }
  .dt-bench-stat-val.warn { color:var(--am); }
  .dt-bench-stat-val.bad  { color:var(--rd); }
  .dt-bench-stat-lbl { font-size:9px; color:var(--mu); text-transform:uppercase; letter-spacing:.1em; margin-top:3px; }

  /* Sparkline chart */
  .dt-bench-chart { width:100%; display:block; margin-bottom:10px; border-radius:6px; background:var(--sf); }

  /* Per-run list */
  .dt-bench-run-list { max-height:160px; overflow-y:auto; display:flex; flex-direction:column; gap:3px; }
  .dt-bench-run-row { display:flex; align-items:center; gap:8px; padding:4px 8px; border-radius:5px; font-size:11px; font-family:'IBM Plex Mono',monospace; }
  .dt-bench-run-row:nth-child(odd) { background:var(--sf); }
  .dt-bench-run-num { color:var(--mu); width:24px; flex-shrink:0; }
  .dt-bench-run-time { font-weight:600; flex:1; }
  .dt-bench-run-status { font-size:10px; padding:1px 5px; border-radius:3px; flex-shrink:0; }
  .dt-bench-run-status.ok  { background:var(--gn-bg); color:var(--gn); }
  .dt-bench-run-status.err { background:var(--rd-bg); color:var(--rd); }

  /* Copy / abort */
  .dt-bench-copy-btn { font-size:10px; color:var(--mu); background:transparent; border:1px solid var(--bd); border-radius:4px; padding:2px 8px; cursor:pointer; transition:all .15s; }
  .dt-bench-copy-btn:hover { color:var(--ac); border-color:var(--ac-bd); background:var(--ac-bg); }
  .dt-bench-clear-results-btn:hover { color:var(--rd) !important; border-color:var(--rd-bd) !important; background:var(--rd-bg) !important; }

  /* Last result accordion */
  .dt-bench-accordion { border:1.5px solid var(--bd); border-radius:8px; overflow:hidden; }
  .dt-bench-accordion-hd { display:flex; align-items:center; gap:8px; width:100%; padding:8px 10px; background:var(--sf); border:none; cursor:pointer; text-align:left; transition:background .15s; }
  .dt-bench-accordion-hd:hover { background:var(--sf2); }
  .dt-bench-accordion-label { font-size:11px; font-weight:600; color:var(--tx2); flex-shrink:0; }
  .dt-bench-accordion-pill { flex:1; min-width:0; display:flex; align-items:center; overflow:hidden; }
  .dt-bench-accordion-arrow { flex-shrink:0; color:var(--mu); transition:transform .2s; }
  .dt-bench-accordion-body { border-top:1px solid var(--bd); background:var(--bg); }
  .dt-bench-accordion-row { display:flex; gap:10px; padding:7px 10px; border-bottom:1px solid var(--bd); }
  .dt-bench-accordion-row:last-child { border-bottom:none; }
  .dt-bench-accordion-key { font-size:10px; font-weight:600; color:var(--mu); text-transform:uppercase; letter-spacing:.06em; flex-shrink:0; width:52px; padding-top:1px; }
  .dt-bench-accordion-val { font-size:11px; color:var(--tx); font-family:'IBM Plex Mono',monospace; word-break:break-all; flex:1; line-height:1.6; }
`;