:root{--c-bg:#fff;--c-text:#1a1a1a;--c-text-2:#666;--c-text-3:#999;--c-accent:#ff6a00;--c-success:#52c41a;--c-warning:#faad14;--c-error:#ff4d4f;--c-border:#e5e5e5;--c-bg-soft:#f5f5f5;--fs-h1:40px;--lh-h1:1.3;--fs-h2:32px;--lh-h2:1.4;--fs-h3:24px;--lh-h3:1.4;--fs-h4:18px;--lh-h4:1.5;--fs-body:16px;--lh-body:1.6;--fs-small:14px;--lh-small:1.6;--fs-caption:12px;--lh-caption:1.5;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-12:48px;--sp-16:64px;--sp-24:96px;--font-sans:Inter, Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;--container-max:1200px;--container-cols:12;--radius:2px;--el-color-primary:var(--c-accent);--el-color-success:var(--c-success);--el-color-warning:var(--c-warning);--el-color-error:var(--c-error);--el-text-color-primary:var(--c-text);--el-text-color-regular:var(--c-text-2);--el-text-color-placeholder:var(--c-text-3);--el-border-color:var(--c-border);--el-border-radius-base:var(--radius);--el-font-family:var(--font-sans);--el-font-size-base:var(--fs-small)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--c-bg);color:var(--c-text);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased}h1{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:700}h2{font-size:var(--fs-h2);line-height:var(--lh-h2);font-weight:700}h3{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:600}h4{font-size:var(--fs-h4);line-height:var(--lh-h4);font-weight:600}a{color:var(--c-accent);text-decoration:none}.esr-container{width:100%;max-width:var(--container-max);padding:0 var(--sp-4);margin:0 auto}.esr-muted{color:var(--c-text-2);font-size:var(--fs-small)}.esr-todo{border:1px dashed var(--c-border);background:var(--c-bg-soft);padding:var(--sp-6);color:var(--c-text-2)}.btn{padding:var(--sp-2) var(--sp-6);border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-bg);color:var(--c-text);font-size:var(--fs-body);cursor:pointer;line-height:1.6;display:inline-block}.btn:hover{border-color:var(--c-accent);color:var(--c-accent)}.btn.primary{background:var(--c-accent);border-color:var(--c-accent);color:#fff}.btn.primary:hover{color:#fff;opacity:.92}
