:root{--primary:#0581fa;--primary-light:#0a6ce0;--bg-page:#fff;--bg-soft:#f6f8fb;--bg-card:#fff;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#8a94a6;--border-color:#0f172a1a;--gradient-primary:linear-gradient(135deg, #0581fa, #0bc1ce);--header-height:64px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-card:0 1px 2px #0f172a0a, 0 4px 16px #0f172a0d}*{box-sizing:border-box;margin:0;padding:0}html{max-width:100vw}body{color:var(--text-primary);background:var(--bg-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}.skip-link{z-index:10000;background:var(--primary);color:#fff;border-radius:var(--radius-sm);padding:8px 16px;font-size:14px;font-weight:600;transition:top .2s;position:absolute;top:-100px;left:16px}.skip-link:focus{top:8px}.section-title{padding-left:16px;position:relative}.section-title:before{content:"";background:var(--gradient-primary);border-radius:2px;width:4px;height:60%;min-height:20px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.glass-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:border-color .2s,box-shadow .2s}.glass-card:hover{border-color:#0581fa59;box-shadow:0 2px 4px #0f172a0d,0 8px 24px #0f172a14}.hover-bg:hover{background:var(--bg-soft)}.gradient-text{background:var(--gradient-primary);-webkit-text-fill-color:#0000;-webkit-background-clip:text;background-clip:text}.article-content{color:var(--text-primary);overflow-wrap:anywhere;font-size:16px;line-height:1.9}.article-content h2,.article-content h3{color:var(--text-primary);scroll-margin-top:calc(var(--header-height) + 12px);margin-top:2em;margin-bottom:.6em;font-weight:700;line-height:1.4}.article-content h2{font-size:22px}.article-content h3{font-size:18px}.article-content p{color:var(--text-secondary);margin-bottom:1.1em}.article-content a{color:var(--primary);border-bottom:1px solid #0581fa59;transition:border-color .15s}.article-content a:hover{border-bottom-color:var(--primary)}.article-content strong{color:var(--text-primary);font-weight:600}.article-content ul,.article-content ol{color:var(--text-secondary);margin:0 0 1.1em 1.4em}.article-content ul li,.article-content ol li{margin-bottom:.4em}.article-content blockquote{border-left:3px solid var(--primary);background:#0581fa0f;border-radius:4px;margin:1.2em 0;padding:12px 16px}.article-content blockquote p:last-child{margin-bottom:0}.article-content code{color:#0b4f9e;background:#0581fa14;border-radius:4px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.article-content pre{border-radius:var(--radius-sm);background:#0f172a;margin:1.2em 0;padding:14px 16px;line-height:1.6;overflow-x:auto}.article-content pre code{color:#e2e8f0;background:0 0;padding:0;font-size:14px}.article-content figure{text-align:center;margin:1.4em 0}.article-content figure img{border-radius:var(--radius-md);max-width:100%;margin:0 auto;display:block}.article-content figure figcaption{color:var(--text-muted);margin-top:8px;font-size:13px}.article-content img{border-radius:var(--radius-md)}.article-content table{border-collapse:collapse;width:100%;margin:1.2em 0;font-size:15px;display:block;overflow-x:auto}.article-content th,.article-content td{text-align:left;border:1px solid var(--border-color);color:var(--text-secondary);padding:8px 12px}.article-content th{color:var(--text-primary);background:var(--bg-soft);font-weight:600}@media (max-width:47.99em){.article-content{font-size:15px}.article-content h2{font-size:20px}.article-content h3{font-size:17px}}@keyframes tonboCtaPulse{0%,to{transform:scale(1);box-shadow:0 8px 22px -8px #0581fa99}50%{transform:scale(1.05);box-shadow:0 0 0 4px #0581fa29,0 10px 28px -6px #0581fab3}}.tonbo-cta-pulse{animation:2.2s ease-in-out infinite tonboCtaPulse}@media (prefers-reduced-motion:reduce){.tonbo-cta-pulse{animation:none}}
