/* Shared by the app and the admin page (ui/app.html, ui/admin.html): the fonts, the colors and the basics. Each page's own look: ui/css/app.css, ui/css/admin.css. */
/* Latin and digits in Inter, code in JetBrains Mono, Chinese in 思源黑体 (all served from here, no outside fonts; 思源黑体 in pieces, ui/fonts/noto-sans-sc.css). */
@font-face{font-family:"AB Sans";src:url("/ui/fonts/inter-latin-var.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-2013,U+2015-2017,U+201E-2025,U+2027-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"AB Mono";src:url("/ui/fonts/jetbrains-mono-latin-var.woff2") format("woff2");font-weight:100 800;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{
  --bg:#1A1A1A;--side:#141414;--panel:#1F1F1F;--surface:#242424;--raised:#2D2D2D;
  --hover:rgba(255,255,255,.055);--active:rgba(255,255,255,.09);
  --line:rgba(255,255,255,.075);--line2:rgba(255,255,255,.12);--line3:rgba(255,255,255,.2);
  /* the keyboard's place (about 9:1 on the background); the edge of a box you type in (3:1, as WCAG asks), and while you type in it */
  --focus:#A3BCFF;--line-field:rgba(255,255,255,.34);--line-typing:rgba(255,255,255,.55);
  --text:#ECECEC;--text2:#CFCFCF;--muted:#A0A0A0;--dim:#8C8C8C;
  --claude:#E38B6B;--codex:#7FD6C3;--warn:#E9B95E;--ok:#63C68F;--bad:#EF7B70;--hot:#F3594C;--link:#A3BCFF;
  --code:#111111;
  --sans:"AB Sans","AB Hei","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC","Source Han Sans SC",system-ui,sans-serif;
  --mono:"AB Mono","SF Mono","Cascadia Mono",Consolas,ui-monospace,"AB Hei","PingFang SC","Microsoft YaHei UI","Noto Sans CJK SC",monospace;
  --side-w:300px;
  --ease:cubic-bezier(.2,.8,.2,1);--out:cubic-bezier(.16,1,.3,1);
  --shadow:0 18px 48px rgba(0,0,0,.5),0 2px 10px rgba(0,0,0,.3);
}
*{box-sizing:border-box}
/* (text sizes in rem: they follow the size the person set in their browser or system; 1rem = 16px by default) */
body{font-size:.875rem}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.6;font-feature-settings:"cv05","cv08","ss03";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
button,textarea,input,select{font-family:inherit;font-size:inherit;color:inherit;font-feature-settings:inherit}
/* code reads as typed: no ligatures (!= stays !=; the app's other kinds of code: app.css) */
code,pre,.mono,.ver{font-variant-ligatures:none;font-feature-settings:"calt" 0,"liga" 0}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
button:disabled{cursor:not-allowed;opacity:.45}
:focus{outline:none}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:8px}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline}
[hidden]{display:none !important}
.ic{display:inline-flex;align-items:center;justify-content:center;flex:none}
.ic svg{display:block}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:6px;border:3px solid transparent;background-clip:padding-box}
*::-webkit-scrollbar-track{background:transparent}
/* ---------- motion ---------- */
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:none}}
@keyframes spin{to{transform:rotate(360deg)}}
