:root{
  --bg:#F3F5F8;--surface:#FFFFFF;--surface2:#F6F8FA;--ink:#16212E;--muted:#5B6878;--line:#DCE2EA;
  --accent:#0B7A70;--accent-ink:#FFFFFF;--accent-soft:#DDF1EE;--warn:#9A6514;--warn-soft:#FBF0D9;
  --danger:#B8352F;--danger-soft:#FBE4E2;--info:#2F5DA8;--info-soft:#E3ECFA;--frame:#1B2430;
  --bubble-me:#0B7A70;--bubble-me-ink:#FFFFFF;
  --serif:"Noto Serif SC","Songti SC","STSong","SimSun",serif;
  --sans:"PingFang SC","HarmonyOS Sans SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0F1620;--surface:#17212D;--surface2:#1C2734;--ink:#E6ECF2;--muted:#9AA7B6;--line:#2A3644;
    --accent:#3CC2B2;--accent-ink:#0F1620;--accent-soft:#143A36;--warn:#E8B44E;--warn-soft:#3A2E14;
    --danger:#F0807A;--danger-soft:#3A1C1B;--info:#86AEF0;--info-soft:#1A2A45;--frame:#05080C;
    --bubble-me:#2A9C8F;--bubble-me-ink:#FFFFFF;color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0F1620;--surface:#17212D;--surface2:#1C2734;--ink:#E6ECF2;--muted:#9AA7B6;--line:#2A3644;
  --accent:#3CC2B2;--accent-ink:#0F1620;--accent-soft:#143A36;--warn:#E8B44E;--warn-soft:#3A2E14;
  --danger:#F0807A;--danger-soft:#3A1C1B;--info:#86AEF0;--info-soft:#1A2A45;--frame:#05080C;
  --bubble-me:#2A9C8F;--bubble-me-ink:#FFFFFF;color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.6}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
button{font-family:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tag{display:inline-block;font-size:11px;line-height:1;padding:3px 6px;border-radius:4px;background:var(--accent-soft);color:var(--accent);font-weight:600;vertical-align:middle;white-space:nowrap}
.tag.gray{background:var(--surface2);color:var(--muted)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.red{background:var(--danger-soft);color:var(--danger)}
.tag.blue{background:var(--info-soft);color:var(--info)}
