:root{--bg:#f4f5fb;--surface:#fff;--surface-2:#f8f9fe;--surface-hover:#eef0fb;--text:#1e293b;--text-muted:#64748b;--text-faint:#94a3b8;--border:#e2e8f0;--border-strong:#cbd5e1;--primary:#6366f1;--primary-hover:#4f46e5;--primary-soft:#eef2ff;--accent:#8b5cf6;--success:#10b981;--success-soft:#ecfdf5;--danger:#ef4444;--danger-soft:#fef2f2;--warning:#f59e0b;--warning-soft:#fffbeb;--info:#0ea5e9;--info-soft:#f0f9ff;--radius:14px;--radius-sm:10px;--radius-lg:20px;--shadow-sm:0 1px 3px #0f172a0f,0 1px 2px #0f172a0a;--shadow-md:0 4px 16px #0f172a14;--shadow-lg:0 12px 32px #0f172a1f;--nav-h:56px;--font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--mono:"SF Mono","JetBrains Mono",Consolas,Menlo,monospace}[data-theme=dark]{--bg:#0f172a;--surface:#1e293b;--surface-2:#182234;--surface-hover:#273449;--text:#e2e8f0;--text-muted:#94a3b8;--text-faint:#64748b;--border:#2d3b52;--border-strong:#3b4a63;--primary:#818cf8;--primary-hover:#a5b4fc;--primary-soft:#1e2237;--accent:#a78bfa;--success:#34d399;--success-soft:#0f2b23;--danger:#f87171;--danger-soft:#33181c;--warning:#fbbf24;--warning-soft:#2c2413;--info:#38bdf8;--info-soft:#0c2333;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 16px #0006;--shadow-lg:0 12px 32px #00000080}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);color:var(--text);background:var(--bg);min-height:100vh;transition:background-color .3s,color .3s;font-size:14px;line-height:1.6}a{color:var(--primary);text-decoration:none;transition:color .2s}a:hover{color:var(--primary-hover)}.navbar{position:sticky;z-index:100;height:var(--nav-h);background:color-mix(in srgb,var(--surface)82%,transparent);backdrop-filter:blur(12px)saturate(1.4);-webkit-backdrop-filter:blur(12px)saturate(1.4);border-bottom:1px solid var(--border);top:0}.navbar-inner{display:flex;align-items: center;gap:8px;max-width:1280px;height:100%;margin:0 auto;padding:0 20px}.nav-brand{display:flex;color:var(--text);white-space:nowrap;align-items: center;gap:8px;margin-right:16px;font-size:16px;font-weight:700}.nav-brand .logo{background:var(--primary);display:inline-flex;color:#fff;box-shadow:var(--shadow-sm);border-radius:8px;justify-content:center;align-items: center;width:28px;height:28px;font-size:14px}.nav-links{display:flex;overflow-x:auto;scrollbar-width:none;flex:1;gap:4px}.nav-links::-webkit-scrollbar{display:none}.nav-link{color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:7px 14px;transition:all .2s;font-size:14px;font-weight:500}.nav-link:hover{color:var(--text);background:var(--surface-hover)}.nav-link.active{color:#fff;background:var(--primary)}.theme-toggle{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;display:inline-flex;border-radius:10px;flex-shrink:0;justify-content:center;align-items: center;width:36px;height:36px;transition:all .2s;font-size:16px}.theme-toggle:hover{border-color:var(--border-strong);background:var(--surface-hover);color:var(--text)}.container{max-width:1280px;margin:0 auto;padding:24px 20px 96px}.page-grid{display:grid;grid-template-columns:360px 1fr;align-items: start;gap:20px}@media (max-width:900px){.page-grid{grid-template-columns:1fr}.page-grid>.main{order:-1}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow .2s,border-color .2s}.card-head{display:flex;border-bottom:1px solid var(--border);align-items: center;gap:10px;padding:16px 20px;font-size:15px;font-weight:600}.card-head .dot{background:var(--primary);border-radius:50%;width:8px;height:8px}.card-head .sub{color:var(--text-faint);margin-left:auto;font-size:12px;font-weight:400}.card-body{padding:20px}.info-list{list-style:none;margin:0;padding:0}.info-list li{display:flex;border-bottom:1px dashed var(--border);color:var(--text-muted);align-items: center;gap:8px;padding:8px 0;font-size:13px}.info-list li:last-child{border-bottom:none}.info-list .num{background:var(--surface-hover);color:var(--text-muted);display:inline-flex;border-radius:50%;flex-shrink:0;justify-content:center;align-items: center;width:22px;height:22px;font-size:11px}.info-list strong{color:var(--text);font-weight:600}.info-list .mono{font-family:var(--mono);font-size:13px}.info-ip{color:var(--danger);font-weight:500}.tool-links{display:flex;gap:16px;margin-top:4px}.tool-links a{text-decoration:underline;text-underline-offset:3px;font-size:13px}.config-group{margin-bottom:18px}.config-group:last-child{margin-bottom:0}.config-label{display:block;color:var(--text);margin-bottom:10px;font-size:13px;font-weight:600;line-height:1.5}.config-label .hint{color:var(--text-faint);display:block;margin-top:2px;font-size:12px;font-weight:400}.switch-row{display:flex;border-radius:var(--radius-sm);background:var(--surface-2);cursor:pointer;border:1px solid #0000;justify-content:space-between;align-items: center;gap:12px;margin-bottom:8px;padding:9px 12px;transition:border-color .2s,background .2s}.switch-row:hover{border-color:var(--border)}.switch-row.on{border-color:color-mix(in srgb,var(--success)40%,transparent);background:var(--success-soft)}.switch-text{color:var(--text);flex:1;font-size:13px}.switch-text .hint{color:var(--text-muted);margin-left:6px;font-size:12px;font-weight:400}.switch{position:relative;flex-shrink:0;width:42px;height:24px}.switch input{opacity:0;width:0;height:0}.switch .track{position:absolute;background:var(--border-strong);cursor:pointer;border-radius:999px;transition:background .25s;inset:0}.switch .track:after{content:"";position:absolute;background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .25s cubic-bezier(.34,1.56,.64,1);top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.switch input:checked+.track{background:var(--primary)}.switch input:checked+.track:after{transform:translate(18px)}.segmented{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;gap:3px;padding:3px}.seg-btn{color:var(--text-muted);cursor:pointer;font-size:13px;font-weight:500;font-family:var(--font);background:0 0;border:none;border-radius:8px;padding:6px 18px;transition:all .2s}.seg-btn:hover{color:var(--text)}.seg-btn.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm);font-weight:600}.form-control{font-size:14px;font-family:var(--font);color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;padding:10px 14px;transition:border-color .2s,box-shadow .2s,background .2s}.form-control:focus{outline:none;border-color:var(--primary);background:var(--surface)}textarea.form-control{resize:vertical;font-family:var(--mono);min-height:72px;font-size:13px}.config-inputs{display:grid;gap:6px;margin-top:10px}.input-group{display:flex;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);align-items: center;gap:0;transition:border-color .2s,box-shadow .2s}.input-group:focus-within{border-color:var(--primary)}.input-group-addon{color:var(--text-muted);background:var(--surface-hover);border-right:1px solid var(--border);border-radius:var(--radius-sm)0 0 var(--radius-sm);white-space:nowrap;padding:9px 12px;font-size:12px;font-weight:600}.input-group .form-control{border-radius:0 var(--radius-sm)var(--radius-sm)0;box-shadow:none;background:0 0;border:none}.input-group .form-control:focus{box-shadow:none}.clc-toggle{display:flex;color:var(--primary);background:var(--primary-soft);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-family:var(--font);border:none;justify-content:center;align-items: center;gap:6px;width:100%;margin-top:6px;padding:8px;transition:all .2s}.clc-toggle:hover{background:color-mix(in srgb,var(--primary)14%,transparent)}.clc-toggle .chev{display:inline-block;transition:transform .25s}.clc-toggle.open .chev{transform:rotate(180deg)}.collapse{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s}.collapse>.collapse-inner{overflow:hidden}.collapse.open{grid-template-rows:1fr}.btn{display:inline-flex;font-size:14px;font-weight:500;font-family:var(--font);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:none;justify-content:center;align-items: center;gap:8px;padding:10px 20px;transition:all .2s}.btn:active{transform:scale(.97)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{filter:brightness(1.05)}.btn-danger{background:var(--danger-soft);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger)25%,transparent)}.btn-danger:hover{background:color-mix(in srgb,var(--danger)10%,transparent)}.btn-sm{padding:7px 14px;font-size:13px}.btn-block{width:100%}.chat-panel{display:flex;height:calc(100vh - var(--nav-h) - 96px);flex-direction:column;min-height:480px}@media (max-width:900px){.chat-panel{height:calc(100vh - var(--nav-h) - 60px);min-height:420px}}.chat-content{overflow-y:auto;display:flex;flex-direction:column;flex:1;gap:12px;padding:20px}.chat-empty{display:flex;color:var(--text-faint);flex-direction:column;justify-content:center;align-items: center;gap:12px;height:100%}.chat-empty .empty-icon{opacity:.5;font-size:42px}.chat-empty .empty-text{text-align:center;padding:0 20px;font-size:14px;line-height:1.8}.msg{display:flex;flex-direction:column;gap:4px;max-width:86%}.msg-self{align-self: flex-end;align-items: flex-end}.msg-other{align-self: flex-start;align-items: flex-start}.msg-head{display:flex;color:var(--text-faint);flex-wrap:wrap;align-items: center;gap:8px;padding:0 4px;font-size:11px}.msg-tag{border-radius:999px;padding:2px 10px;font-size:11px;font-weight:600}.msg-tag-self{background:var(--primary);color:#fff}.msg-tag-other{background:var(--surface-hover);color:var(--text-muted)}.msg-tag-system{background:var(--warning-soft);color:var(--warning)}.msg-tag-mqtt{background:var(--info-soft);color:var(--info)}.msg-from,.msg-topic{color:var(--text-faint)}.msg-time{margin-left:auto}.msg-body{font-family:var(--mono);word-break:break-all;white-space:pre-wrap;box-shadow:var(--shadow-sm);border-radius:14px;padding:10px 14px;font-size:13px;line-height:1.5}.msg-self .msg-body{background:var(--primary);color:#fff;border-bottom-right-radius:4px}.msg-other .msg-body{background:var(--surface);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px}.msg-other.system .msg-body{background:var(--warning-soft);color:var(--warning);border-color:#0000}.msg-body img{border-radius:8px;max-width:100%;max-height:320px}.chat-operator{border-top:1px solid var(--border);display:flex;background:var(--surface);align-items: center;gap:10px;padding:16px}.chat-operator .input-group{flex:1}.chat-operator .btn{flex-shrink:0;height:42px;padding:0 24px}@media (max-width:640px){.chat-operator{flex-direction:column;align-items:stretch}}#toast-root{position:fixed;top:calc(var(--nav-h) + 12px);z-index:9999;display:flex;pointer-events:none;flex-direction:column;gap:10px;max-width:min(400px,100vw - 32px);right:16px}.toast{display:flex;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);color:var(--text);opacity:0;cursor:pointer;pointer-events:auto;align-items: center;gap:10px;max-width:100%;padding:12px 16px;transition:transform .3s cubic-bezier(.34,1.4,.64,1),opacity .3s;font-size:13px;transform:translate(120%)}.toast-in{opacity:1;transform:translate(0)}.toast-out{opacity:0;transform:translate(120%)}.toast-icon{display:inline-flex;color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items: center;width:22px;height:22px;font-size:12px;font-weight:700}.toast-success .toast-icon{background:var(--success)}.toast-danger .toast-icon{background:var(--danger)}.toast-info .toast-icon{background:var(--info)}.toast-warning .toast-icon{background:var(--warning)}.toast-msg{word-break:break-all;line-height:1.5}.footer{position:fixed;z-index:90;background:color-mix(in srgb,var(--surface)85%,transparent);backdrop-filter:blur(10px);border-top:1px solid var(--border);height:44px;bottom:0;left:0;right:0}.footer-inner{display:flex;color:var(--text-faint);justify-content:center;align-items: center;gap:24px;max-width:1280px;height:100%;margin:0 auto;padding:0 20px;font-size:12px}.footer-inner a{color:var(--text-faint)}.footer-inner a:hover{color:var(--primary)}.hero{text-align:center;padding:56px 20px 32px}.hero .hero-badge{display:inline-flex;background:var(--primary-soft);color:var(--primary);border-radius:999px;align-items: center;gap:8px;margin-bottom:20px;padding:6px 16px;font-size:13px;font-weight:600}.hero h1{letter-spacing:-.02em;color:var(--text);margin:0 0 12px;font-size:clamp(28px,4vw,40px);font-weight:800}.hero p{color:var(--text-muted);max-width:560px;margin:0 auto;font-size:16px}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:36px}.tool-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:block;color:var(--text);padding:24px;transition:all .25s cubic-bezier(.34,1.4,.64,1)}.tool-card:hover{border-color:color-mix(in srgb,var(--primary)40%,transparent);box-shadow:var(--shadow-md);color:var(--text);transform:translateY(-4px)}.tool-card .tool-icon{background:var(--primary);color:#fff;display:flex;border-radius:14px;justify-content:center;align-items: center;width:48px;height:48px;margin-bottom:14px;font-size:22px}.tool-card h3{margin:0 0 6px;font-size:16px;font-weight:700}.tool-card p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.6}.home-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px}@media (max-width:800px){.home-grid{grid-template-columns:1fr}}.faq-item{border-bottom:1px dashed var(--border);padding:12px 0}.faq-item:last-child{border-bottom:none}.faq-item .q{color:var(--text);margin-bottom:4px;font-weight:600}.faq-item .a{color:var(--text-muted);position:relative;padding-left:18px;font-size:13px}.faq-item .a:before{content:"→";position:absolute;color:var(--primary);left:0}.tutorial-layout{display:grid;grid-template-columns:220px minmax(0,1fr);align-items: start;gap:24px}.tutorial-toc{position:sticky;top:calc(var(--nav-h) + 20px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:16px}.tutorial-toc-title{color:var(--text);border-bottom:1px solid var(--border);margin-bottom:10px;padding-bottom:10px;font-size:13px;font-weight:700}.tutorial-toc nav{display:flex;flex-direction:column;gap:2px}.tutorial-toc nav a{color:var(--text-muted);border-radius:8px;padding:7px 10px;transition:all .15s;font-size:13px}.tutorial-toc nav a:hover{background:var(--surface-hover);color:var(--text)}@media (max-width:900px){.tutorial-layout{grid-template-columns:1fr}.tutorial-toc{position:static;order:-1}.tutorial-toc nav{flex-flow:wrap;gap:4px}.tutorial-toc nav a{border:1px solid var(--border);padding:5px 10px}}.tutorial-main{display:flex;flex-direction:column;gap:20px;min-width:0}.tutorial-hero{text-align:center;padding:8px 12px 4px}.tutorial-hero .hero-badge{display:inline-flex;background:var(--primary-soft);color:var(--primary);border-radius:999px;align-items: center;gap:8px;margin-bottom:14px;padding:6px 16px;font-size:13px;font-weight:600}.tutorial-hero h1{letter-spacing:-.02em;color:var(--text);margin:0 0 10px;font-size:clamp(24px,3.4vw,32px);font-weight:800}.tutorial-hero p{color:var(--text-muted);max-width:560px;margin:0 auto;font-size:15px}.tutorial-section-title{display:flex;color:var(--text);align-items: center;gap:12px;margin:8px 0 0;font-size:16px;font-weight:700}.tutorial-section-title:after{content:"";background:var(--border);flex:1;height:1px}.guide-card{scroll-margin-top:calc(var(--nav-h) + 20px)}.guide-card-head{display:flex;border-bottom:1px solid var(--border);align-items: center;gap:14px;padding:18px 20px}.guide-card-head .tool-icon{background:var(--primary);color:#fff;display:flex;border-radius:13px;flex-shrink:0;justify-content:center;align-items: center;width:46px;height:46px;font-size:20px}.guide-card-title{flex:1;min-width:0}.guide-card-title h2{margin:0;font-size:17px;font-weight:700}.guide-card-title p{color:var(--text-muted);margin:3px 0 0;font-size:13px;line-height:1.6}.guide-cta{flex-shrink:0}.guide-card-body{padding:18px 20px 20px}.conn-line{display:inline-flex;color:var(--text-muted);border-radius:var(--radius-sm);background:var(--surface-2);border:1px dashed var(--border-strong);align-items: center;gap:8px;margin-bottom:16px;padding:8px 14px;font-size:13px}.conn-line code{font-family:var(--mono);color:var(--primary);font-size:13px;font-weight:600}ol.steps{list-style:none;counter-reset:step;display:flex;flex-direction:column;gap:12px;margin:0;padding:0}ol.steps li{counter-increment:step;position:relative;color:var(--text-muted);padding-left:40px;font-size:14px;line-height:1.7}ol.steps li:before{content:counter(step);position:absolute;background:var(--primary-soft);color:var(--primary);display:inline-flex;border-radius:8px;justify-content:center;align-items: center;width:26px;height:26px;font-size:13px;font-weight:700;top:1px;left:0}ol.steps strong{color:var(--text)}ol.steps a{text-decoration:underline;text-underline-offset:3px;font-weight:500}ol.steps code{background:var(--surface-hover);font-family:var(--mono);color:var(--primary);border-radius:6px;padding:2px 6px;font-size:13px}.notice{border-radius:var(--radius-sm);background:var(--warning-soft);border:1px solid color-mix(in srgb,var(--warning)25%,transparent);color:var(--warning);margin-top:16px;padding:10px 14px;font-size:13px;line-height:1.6}.feature-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width:640px){.feature-grid{grid-template-columns:1fr}.guide-card-head{flex-wrap:wrap}.guide-cta{width:100%}}.feature-item{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);padding:12px 14px}.feature-item strong{display:block;color:var(--text);margin-bottom:4px;font-size:13px}.feature-item span{color:var(--text-muted);font-size:13px;line-height:1.6}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.card{animation:fadeInUp .35s ease both}.card:nth-child(2){animation-delay:60ms}@media (max-width:640px){.navbar-inner{gap:4px;padding:0 12px}.nav-brand{margin-right:8px;font-size:14px}.nav-brand .logo{width:24px;height:24px;font-size:12px}.nav-link{padding:6px 10px;font-size:13px}.container{padding:16px 12px 76px}.card-body{padding:16px}.chat-panel{height:calc(100vh - var(--nav-h) - 40px)}}
