/* ═══════════════════════════════════════════════════════════════════════
   tokens.css —— 全站唯一设计令牌源（DIRECTIVE-04 U0 · 律 13）
   规则：① 本文件是全站唯一允许定义自定义属性的地方（critical.css 内联副本除外，
            构建期断言逐字节比对本块在 5 个出口的一致性）；
         ② 页面级 CSS 只允许 var(--*) 引用：裸色值 / 裸字号 / 裸间距 = 0 处；
         ③ 字阶 6 级（禁止 <12px 与半像素）；间距 8pt 网格 7 级；圆角三级制；
         ④ 语义分层：结构（bg/card/line）· 文字（ink 系）· 语义色（accent/ok/warn/err）
            · HTTP 方法色（docs 保留）· 扩展强调（图表/徽章，统一自 member/radar 旧值）；
         ⑤ --ink3 仅限装饰/占位/禁用态，不得承载正文（亮色下对比度 <4.5:1，U4-5 裁定）；
            --ink2 亮暗两态均 ≥4.5:1（#6e6e73 on #f5f5f7 ≈ 4.6；#98989d on #000 ≈ 5.5）。
   ═══════════════════════════════════════════════════════════════════════ */
:root{
  /* ── 结构 ── */
  --bg:#f5f5f7; --bg2:#ffffff;
  --card:#ffffff; --card2:rgba(0,0,0,.03);
  --glass:rgba(255,255,255,.72); --glass2:rgba(255,255,255,.55);
  --line:rgba(0,0,0,.09); --line2:rgba(0,0,0,.16);
  /* ── 文字 ── */
  --ink:#1d1d1f; --ink2:#6e6e73; --ink3:#86868b; /* ink3=装饰/禁用专用（见头注⑤） */
  /* ── 语义色 ── */
  --accent:#0071e3; --accent2:#5e5ce6;
  --ok:#34c759; --warn:#ff9f0a; --err:#ff3b30;
  /* 文本安全色（P54 · U4-5）：语义色直接作文字在亮色下不足 4.5:1 —— 文字一律用 *-ink；
     基础色仅用于边框/背景/图形（装饰通道）。亮色 #1a7f37≈4.9 / #b25000≈4.9 / #d70015≈4.9 on #f5f5f7 */
  --ok-ink:#166b2e; --warn-ink:#a34a00; --err-ink:#c00013; --accent-ink:#0060cc; --accent2-ink:#4b49c9;
  /* ── HTTP 方法色（docs 保留，归入语义层）── */
  --get:#34c759; --post:#0a84ff; --put:#ff9f0a; --del:#ff3b30;
  /* ── 扩展强调（图表/徽章；统一自 member/radar 旧值，全站点同名同值）── */
  --blue:#0a84ff; --cyan:#32ade6; --purple:#bf5af2; --gold:#ffd60a; --orange:#ff9f0a;
  --on-accent:#ffffff; --scrim:rgba(0,0,0,.35); --shade-base:#000000; --shade-inv:#ffffff;
  /* 渐变/徽章扩展层（统一自 member 旧一次性色值；G5 重设计时可直接换这五个 token） */
  --grad-a:#4f46e5; --grad-b:#7c3aed; --grad-c:#ec4899; --grad-d:#0e7490; --gold-deep:#d97706;
  /* ── 字阶（U1：6 级，禁 <12px 与半像素）+ 行高配套 ── */
  --fs-xs:12px;  /* 辅助/时间戳/徽章 */
  --fs-sm:14px;  /* 表格正文/表单/次级 */
  --fs-md:17px;  /* 正文/卡片内容（Apple 基准） */
  --fs-lg:21px;  /* 区块标题 */
  --fs-xl:26px;  /* 页面标题 */
  --fs-2xl:32px; /* 数据大字（配额水位/KPI） */
  --lh-tight:1.2; --lh:1.35; --lh-loose:1.5;
  /* ── 间距（U2：8pt 网格 7 级；卡片内边距 --s5、卡片间距 --s4、区块间距 --s6）── */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px;
  /* ── 圆角（采纳 radar 三级制；--r 为历史别名 = --r-md）── */
  --r-sm:9px; --r-md:16px; --r-lg:20px; --r:16px;
  /* ── 字体 / 阴影 ── */
  --sans:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","PingFang SC","Microsoft YaHei",sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
  --shadow:0 8px 32px rgba(0,0,0,.08);
  --shadow-sm:0 6px 20px rgba(0,0,0,.08);

  /* ── 流体展示字号（P54 收纳 docs 英雄区 clamp；仅供展示级大标题，正文严禁使用）── */
  --fs-fluid-sm:clamp(var(--fs-sm), 2.2vw, var(--fs-lg));
  --fs-fluid-lg:clamp(var(--fs-xl), 3.4vw, var(--fs-2xl));
  --fs-fluid-hero:clamp(40px, 6.4vw, 64px);
  /* ── SERP 预览仿真色（设置中心/docs 的 Google 搜索结果模拟卡专用 —— 品牌仿真，不属于站点语义色；暗色下保持浅色仿真）── */
  --serp-bg:#ffffff; --serp-ink:#202124; --serp-link:#1a0dab; --serp-url:#4d5156; --serp-fav-bg:#dfe1e5; --serp-fav-ink:#5f6368;
  /* ── 动效时长（U7：页签切换 120ms 淡入的唯一时长来源）── */
  --dur-tab:120ms;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#000000; --bg2:#1c1c1e;
    --card:#1c1c1e; --card2:rgba(255,255,255,.06);
    --glass:rgba(255,255,255,.06); --glass2:rgba(255,255,255,.09);
    --line:rgba(255,255,255,.1); --line2:rgba(255,255,255,.18);
    --ink:#f5f5f7; --ink2:#98989d; --ink3:#6e6e73;
    --accent:#0a84ff; --accent2:#7d7aff;
    --ok:#30d158; --warn:#ff9f0a; --err:#ff453a;
    --ok-ink:#30d158; --warn-ink:#ff9f0a; --err-ink:#ff6961; --accent-ink:#6cb2ff; --accent2-ink:#9d9bff; /* 暗色 on #000 ≥5.9 */
    --get:#30d158; --post:#0a84ff; --put:#ff9f0a; --del:#ff453a;
    --blue:#0a84ff; --cyan:#64d2ff; --purple:#bf5af2; --gold:#ffd60a; --orange:#ff9f0a;
    --on-accent:#ffffff; --scrim:rgba(0,0,0,.5); --shade-base:#000000; --shade-inv:#ffffff;
    --grad-a:#6366f1; --grad-b:#8b5cf6; --grad-c:#f472b6; --grad-d:#22d3ee; --gold-deep:#f59e0b;
    --shadow:0 8px 32px rgba(0,0,0,.45);
    --shadow-sm:0 6px 20px rgba(0,0,0,.35);
  }
}
/* ═══ U4 · 无障碍基线（全站继承）═══ */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:disabled,[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* 点击目标 ≥24px（WCAG 2.2 SC 2.5.8）；表格行内操作 ≥32px 由 .tbl-actions 承载 */
button:not(.compact),[role="button"]:not(.compact){min-height:24px;min-width:24px}
.tbl-actions button,.tbl-actions [role="button"]{min-height:32px}
/* 未生效徽章：文字+图标双通道（不得仅靠颜色） */
.badge-off{display:inline-flex;align-items:center;gap:var(--s1);font-size:var(--fs-xs);color:var(--ink2);border:1px solid var(--line);border-radius:999px;padding:0 var(--s2)}

.badge-off::before{content:"⊘";font-size:var(--fs-sm)}
/* ═══ U3 · 四态（骨架/空/错误/无权限）═══ */
@keyframes ax-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.skl{position:relative;overflow:hidden;background:var(--card2);border-radius:var(--r-sm);min-height:1em}
.skl::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ink) 6%,transparent),transparent);background-size:200% 100%;animation:ax-shimmer 1.4s linear infinite}
@media (prefers-reduced-motion:reduce){.skl::after{animation:none;background:none}}
.skl-row{height:calc(var(--fs-sm) * var(--lh-loose));margin:var(--s2) 0}
.skl-title{height:calc(var(--fs-lg) * var(--lh-tight));width:40%;margin:var(--s3) 0}
.skl-card{height:96px;margin:var(--s3) 0}
.state-box{padding:var(--s7) var(--s5);text-align:center;color:var(--ink2)}
.state-box b{display:block;font-size:var(--fs-md);color:var(--ink);margin-bottom:var(--s2)}
.state-box .rid{font-family:var(--mono);font-size:var(--fs-xs);user-select:all;color:var(--ink2)}
.state-box button{margin-top:var(--s4);padding:var(--s2) var(--s4);border:0;border-radius:var(--r-sm);background:var(--accent);color:var(--on-accent);font-size:var(--fs-sm);cursor:pointer}
.state-box button:hover{filter:brightness(1.08)}
/* ═══ U6 · 长表格（sticky 表头 + 斑马纹 + 数字列；member/radar 已有做法反哺全站）═══ */
.tbl-wrap{overflow:auto;max-height:70vh;border:1px solid var(--line);border-radius:var(--r-md)}
table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
table thead th{position:sticky;top:0;z-index:2;background:var(--bg2);border-bottom:1px solid var(--line);box-shadow:inset 0 -1px 0 var(--line);text-align:left;padding:var(--s2) var(--s3);font-size:var(--fs-xs);color:var(--ink2);white-space:nowrap}
table tbody tr:nth-child(even){background:color-mix(in srgb,var(--ink) 3%,transparent)}
table td{padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
table td.num,table th.num{text-align:right;font-family:var(--mono)}
table tbody tr:first-child td{border-top:0}
/* 首列 sticky（U6-④）：背景必须不透明 —— inherit 在斑马纹/透明行下会透出滚动内容 */
.tbl-sticky-first td:first-child{background:var(--card);border-right:1px solid var(--line)}
.tbl-sticky-first tbody tr:nth-child(even) td:first-child{background:color-mix(in srgb,var(--ink) 3%,var(--card))}
.tbl-sticky-first tbody tr:hover td:first-child{background:color-mix(in srgb,var(--accent) 6%,var(--card))}
.tbl-sticky-first th:first-child{background:var(--bg2);z-index:3}
@media (min-width:1200px){.tbl-sticky-first td:first-child,.tbl-sticky-first th:first-child{position:sticky;left:0}}

html[data-theme=light]{}
html[data-theme=dark]{}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth;scroll-padding-top:var(--s7)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Helvetica Neue","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
.wrap{max-width:980px;margin:0 auto;padding:0 var(--s5)}
/* ── 导航（毛玻璃） ── */
nav{position:sticky;top:0;z-index:100;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);background:var(--glass2);border-bottom:1px solid var(--line)}
nav .wrap{display:flex;align-items:center;gap:var(--s5);height:52px}
.brand{display:flex;align-items:center;gap:var(--s3);font-weight:700;font-size:var(--fs-sm);letter-spacing:-.01em;white-space:nowrap}
.brand svg{width:26px;height:26px;border-radius:7px}
nav .links{display:flex;gap:var(--s4);font-size:var(--fs-sm);color:var(--ink2);overflow-x:auto;scrollbar-width:none}
nav .links::-webkit-scrollbar{display:none}
nav .links a{color:inherit;white-space:nowrap;padding:var(--s1) 0;border-bottom:2px solid transparent;transition:color .18s,border-color .18s}
nav .links a:hover{color:var(--ink)}
.status-pill{margin-left:auto;display:flex;align-items:center;gap:var(--s2);font-size:var(--fs-xs);color:var(--ink2);white-space:nowrap;background:var(--glass);border:1px solid var(--line);padding:var(--s1) var(--s3);border-radius:999px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--ink2)}
.dot.ok{background:var(--ok);animation:pulse 2.4s ease-out infinite}
.dot.err{background:var(--err)}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--ok) 50%, transparent)}70%{box-shadow:0 0 0 7px color-mix(in srgb, var(--ok) 0%, transparent)}100%{box-shadow:0 0 0 0 color-mix(in srgb, var(--ok) 0%, transparent)}}
/* ── Hero ── */
.hero{position:relative;padding:var(--s7) 0 var(--s7);text-align:center;overflow:hidden}
.aurora{position:absolute;inset:-40% -20% auto;height:520px;background:
 radial-gradient(46% 46% at 30% 40%,color-mix(in srgb, var(--post) 28%, transparent),transparent 70%),
 radial-gradient(40% 40% at 70% 30%,color-mix(in srgb, var(--accent2) 26%, transparent),transparent 70%),
 radial-gradient(36% 36% at 50% 70%,color-mix(in srgb, var(--ok) 14%, transparent),transparent 70%);
 filter:blur(8px);animation:drift 18s ease-in-out infinite alternate;pointer-events:none}
@keyframes drift{from{transform:translate3d(-3%,0,0) scale(1)}to{transform:translate3d(3%,-2%,0) scale(1.07)}}
.hero h1{font-size:var(--fs-fluid-hero);font-weight:800;letter-spacing:-.03em;line-height:1.06;position:relative}
.grad{background:linear-gradient(92deg,var(--accent),var(--accent2) 55%,var(--purple));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p.sub{margin:var(--s4) auto 0;max-width:560px;color:var(--ink2);font-size:var(--fs-fluid-sm);position:relative}
.hero .cta{margin-top:var(--s6);display:flex;gap:var(--s3);justify-content:center;flex-wrap:wrap;position:relative}
.btn{display:inline-flex;align-items:center;gap:var(--s2);padding:var(--s3) var(--s5);border-radius:999px;font-size:var(--fs-sm);font-weight:600;border:1px solid transparent;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s;font-family:inherit}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--accent);color:var(--on-accent);box-shadow:0 4px 14px color-mix(in srgb, var(--post) 35%, transparent)}
.btn.primary:hover{filter:brightness(1.08)}
.btn.ghost{background:var(--glass);color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{box-shadow:var(--shadow)}
.badges{margin-top:var(--s5);display:flex;gap:var(--s3);justify-content:center;flex-wrap:wrap;position:relative}
.badge{font-size:var(--fs-xs);color:var(--ink2);background:var(--glass);border:1px solid var(--line);padding:var(--s1) var(--s3);border-radius:999px}
.badge b{color:var(--ink);font-weight:600}
/* ── 区块 ── */
section{padding:var(--s7) 0}
h2.sec{font-size:var(--fs-fluid-lg);font-weight:800;letter-spacing:-.02em;margin-bottom:var(--s2)}
p.secdesc{color:var(--ink2);margin-bottom:var(--s5);font-size:var(--fs-sm)}
/* ── 端点卡片 ── */
.toolbar{display:flex;gap:var(--s3);margin-bottom:var(--s4);flex-wrap:wrap}
.search{flex:1;min-width:220px;display:flex;align-items:center;gap:var(--s2);background:var(--glass);border:1px solid var(--line);border-radius:12px;padding:var(--s2) var(--s4)}
.search input{border:0;outline:0;background:transparent;color:var(--ink);font-size:var(--fs-sm);width:100%;font-family:inherit}
.chips{display:flex;gap:var(--s2)}
.chip{font-size:var(--fs-xs);font-weight:600;padding:var(--s2) var(--s3);border-radius:999px;border:1px solid var(--line);background:var(--glass);color:var(--ink2);cursor:pointer;transition:all .15s}
.chip[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.ep{background:var(--glass);border:1px solid var(--line);border-radius:var(--r-lg);margin-bottom:var(--s3);overflow:hidden;transition:box-shadow .2s}
.ep:hover{box-shadow:var(--shadow)}
.ep>summary{list-style:none;display:flex;align-items:center;gap:var(--s3);padding:var(--s4) var(--s4);cursor:pointer;user-select:none}
.ep>summary::-webkit-details-marker{display:none}
.m{font-family:var(--mono);font-size:var(--fs-xs);font-weight:700;padding:var(--s1) var(--s2);border-radius:7px;color:var(--on-accent);letter-spacing:.02em;flex-shrink:0}
.m.get{background:var(--get)}.m.post{background:var(--post)}.m.put{background:var(--put)}.m.del{background:var(--del)}
.ep .path{font-family:var(--mono);font-size:var(--fs-sm);font-weight:500;word-break:break-all}
.ep .desc{color:var(--ink2);font-size:var(--fs-sm);margin-left:auto;text-align:right;flex-shrink:0;max-width:44%}
.ep .chev{flex-shrink:0;color:var(--ink2);transition:transform .2s;font-size:var(--fs-xs)}
.ep[open] .chev{transform:rotate(90deg)}
.ep .body{padding:0 var(--s4) var(--s4);border-top:1px solid var(--line);margin-top:0}
.ep .body h4{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--ink2);margin:var(--s4) 0 var(--s2)}
table.params{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
table.params th{text-align:left;color:var(--ink2);font-weight:600;padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);font-size:var(--fs-xs)}
table.params td{padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);vertical-align:top}
table.params code{font-family:var(--mono);font-size:var(--fs-xs);background:var(--bg2);padding:var(--s1) var(--s2);border-radius:5px;border:1px solid var(--line)}
.req{color:var(--err);font-weight:700;font-size:var(--fs-xs)}
.opt{color:var(--ink2);font-size:var(--fs-xs)}
/* ── 调试台 ── */
.console{margin-top:var(--s4);background:var(--bg2);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.console .bar{display:flex;gap:var(--s2);padding:var(--s3) var(--s3);border-bottom:1px solid var(--line);align-items:center;flex-wrap:wrap}
.console input[type=text],.console input[type=password]{flex:1;min-width:140px;background:transparent;border:1px solid var(--line);border-radius:8px;padding:var(--s2) var(--s3);color:var(--ink);font-family:var(--mono);font-size:var(--fs-xs);outline:0}
.console input:focus{border-color:var(--accent)}
.mini{font-size:var(--fs-xs);font-weight:600;padding:var(--s2) var(--s4);border-radius:8px;border:1px solid var(--line);background:var(--glass);color:var(--ink);cursor:pointer;font-family:inherit;transition:all .15s}
.mini:hover{border-color:var(--accent);color:var(--accent)}
.mini.solid{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.console textarea{width:100%;min-height:64px;background:transparent;border:0;border-bottom:1px solid var(--line);padding:var(--s3) var(--s3);color:var(--ink);font-family:var(--mono);font-size:var(--fs-xs);resize:vertical;outline:0}
.console pre{padding:var(--s3);font-family:var(--mono);font-size:var(--fs-xs);overflow-x:auto;max-height:340px;line-height:1.55;white-space:pre-wrap;word-break:break-all}
.console .meta{display:flex;gap:var(--s3);padding:var(--s2) var(--s3);border-top:1px solid var(--line);font-size:var(--fs-xs);color:var(--ink2);font-family:var(--mono);flex-wrap:wrap}
.st{font-weight:700}.st.s2{color:var(--ok)}.st.s3{color:var(--accent)}.st.s4{color:var(--warn)}.st.s5{color:var(--err)}
.j-key{color:var(--accent2)}.j-str{color:var(--ok)}.j-num{color:var(--warn)}.j-bool{color:var(--purple)}.j-null{color:var(--ink2)}
@media (prefers-color-scheme:dark){.j-key{color:var(--cyan)}.j-str{color:var(--ok)}.j-num{color:var(--gold)}}
/* ── 代码块 ── */
.codeblock{position:relative;background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:var(--s4);font-family:var(--mono);font-size:var(--fs-xs);overflow-x:auto;line-height:1.7}
.copy{position:absolute;top:10px;right:10px}
/* ── 特性网格 ── */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:var(--s4)}
.feature{background:var(--glass);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s5)}
.feature .ic{font-size:var(--fs-lg);margin-bottom:var(--s3);display:block}
.feature h3{font-size:var(--fs-sm);font-weight:700;margin-bottom:var(--s1);letter-spacing:-.01em}
.feature p{font-size:var(--fs-sm);color:var(--ink2)}
footer{border-top:1px solid var(--line);padding:var(--s6) 0 var(--s7);color:var(--ink2);font-size:var(--fs-xs);text-align:center}
.token-note{background:linear-gradient(92deg,color-mix(in srgb, var(--post) 8%, transparent),color-mix(in srgb, var(--accent2) 8%, transparent));border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s4) var(--s5);font-size:var(--fs-sm);margin-bottom:var(--s5)}
@media (max-width:640px){.ep .desc{display:none}.hero{padding:var(--s7) 0 var(--s7)}}
.res-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:var(--s4)}
.res{background:var(--glass);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s4) var(--s5)}
.res h3{font-family:var(--mono);font-size:var(--fs-sm);margin:var(--s3) 0 var(--s2);word-break:break-all}
.res p{font-size:var(--fs-xs);color:var(--ink2);min-height:56px;line-height:1.55}
.res .actions{display:flex;gap:var(--s2);margin-top:var(--s3);flex-wrap:wrap}
.res .cnt{display:inline-block;margin-top:var(--s1);font-family:var(--mono);font-size:var(--fs-xs);color:var(--accent)}
a.mini{text-decoration:none;display:inline-flex;align-items:center}
.type-pill{font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;padding:var(--s1) var(--s2);border-radius:999px;color:var(--on-accent)}
.type-pill.xml{background:var(--get)}.type-pill.json{background:var(--post)}.type-pill.txt{background:var(--ink3)}
h4.sub{font-size:var(--fs-sm);font-weight:700;margin:var(--s5) 0 var(--s3)}
:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px;border-radius:6px}

/* ═══ P54 · U5：调试台路径参数内联输入（替代原生弹窗）═══ */
.cparams{display:flex;gap:var(--s2);flex-wrap:wrap;padding:var(--s2) 0 0}
.cparams label{display:inline-flex;align-items:center;gap:var(--s1);font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink2)}
.cparams input{padding:var(--s1) var(--s2);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg);color:var(--ink);font-family:var(--mono);font-size:var(--fs-xs);min-width:120px}
.cparams input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
