:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#21332f;background:#f3f6f4;font-synthesis:none;--green:#176953;--muted:#71817a;--line:#dce5df}*{box-sizing:border-box}body{margin:0}header{height:88px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(5%,calc((100% - 1240px)/2));background:#fafcfb}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:#183e32;font-size:23px;font-weight:760;letter-spacing:1px}.logo{background:#176953;color:white;width:43px;height:43px;border-radius:12px;display:grid;place-items:center;font-size:29px}.brand-sub{display:block;font-size:9px;font-weight:600;color:var(--muted);letter-spacing:2px;margin-top:2px}.header-right{display:flex;align-items:center;gap:22px}.version{font-size:10px;color:var(--muted);letter-spacing:1.2px}.badge{font-size:12px;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:30px;padding:7px 12px;background:#f7faf8;color:#61756a;white-space:nowrap}.badge i{width:6px;height:6px;background:#a1aba5;border-radius:50%}.badge.online{color:var(--green);background:#eaf5ed;border-color:#c7e2d1}.badge.online i{background:#2e9466}main{max-width:1240px;margin:auto;padding:42px 0 20px}.intro{display:flex;justify-content:space-between;align-items:center;margin:0 0 32px}.eyebrow{font-size:10px;letter-spacing:2.1px;color:var(--green);font-weight:700}h1{font-size:34px;font-weight:650;letter-spacing:-.7px;margin:12px 0}p{line-height:1.65}.intro p{color:var(--muted);font-size:14px;margin:0}.architecture{display:flex;align-items:center;gap:10px;font-size:11px;color:#698075}.architecture span{background:#e8eeea;padding:10px 12px;border-radius:6px}.architecture b{font-size:17px;font-weight:400}.panel{border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 4px 18px #24472e03;overflow:hidden}.section-heading{display:flex;gap:13px;align-items:flex-start;padding:23px 26px}.section-heading>div{flex:1}.section-heading h2{font-size:17px;margin:1px 0 5px;font-weight:650}.section-heading p{font-size:12px;margin:0;color:var(--muted)}.step{font-size:11px;color:var(--green);border:1px solid #d6e6dc;background:#f0f7f2;padding:5px 7px;border-radius:6px;letter-spacing:.5px;margin-top:1px}.connect-grid{display:grid;grid-template-columns:.85fr 1.15fr;border-top:1px solid #eef2ef}.setup{padding:23px 26px;background:#f9fbfa;border-right:1px solid var(--line)}.setup strong{font-size:13px}.setup p{font-size:12px;color:var(--muted);max-width:400px;margin:9px 0 15px}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:7px;background:var(--green);color:white;font:inherit;font-size:13px;font-weight:600;padding:11px 17px;cursor:pointer;text-decoration:none;transition:background .15s,transform .15s;white-space:nowrap}.button:hover:enabled{background:#105440}.button:active:enabled{transform:translateY(1px)}.button:disabled{background:#d7e0da;color:#8c9b93;cursor:not-allowed}.secondary{background:white;color:var(--green);border:1px solid #cfded4}.secondary:hover:enabled{background:#edf6ef}.compact{padding:9px 12px;font-size:12px}.hint{display:block;color:var(--muted);font-size:11px;line-height:1.65;margin-top:10px}form{padding:21px 26px}label:not(.file-drop){display:block;font-size:11px;color:#63786b;margin-bottom:7px}input{font:inherit;font-size:13px;min-width:0;outline:0;border:1px solid #d4dfd7;border-radius:6px;padding:10px 11px;background:#fff;color:#244237;width:100%}input:focus{border-color:#509f76;box-shadow:0 0 0 3px #2c9a5e12}#bridgeAddress{margin-bottom:13px}.inline{display:flex;gap:9px}.inline input{flex:1}.work-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:22px;margin-top:22px}.device-list{min-height:260px;padding:0 20px 10px}.empty{display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:34px 18px;color:var(--muted);min-height:250px}.empty-icon{font-size:43px;color:#87aa98;font-weight:300;line-height:1;margin-bottom:17px}.empty strong{font-size:13px;color:#5e7568}.empty p{font-size:12px;margin:9px 0 0;max-width:280px}.device-foot{padding:13px 26px;background:#fafcfb;border-top:1px solid #edf2ee;color:var(--muted);font-size:11px}.device-card{width:100%;text-align:left;border:1px solid #dde5df;background:#fff;padding:15px 17px;border-radius:9px;margin-bottom:10px;cursor:pointer;color:inherit;font:inherit;position:relative}.device-card.selected{background:#f0f8f2;border-color:#70ad87;box-shadow:inset 3px 0 #27764e}.device-card:disabled{cursor:default}.device-card .top{display:flex;justify-content:space-between;align-items:center}.device-card strong{font-size:13px}.device-card .meta{font-size:11px;color:var(--muted);margin-top:9px}.device-card .radio{width:15px;height:15px;border:1px solid #b8c9bd;border-radius:50%;display:inline-block}.device-card.selected .radio{border:4px solid var(--green)}.device-card .state{font-size:10px;color:var(--green);margin-left:7px;background:#e7f1ea;border-radius:4px;padding:3px 5px}.file-drop{display:flex;align-items:center;flex-direction:column;justify-content:center;position:relative;border:1.5px dashed #bbd1c1;border-radius:9px;background:#f7fbf8;margin:0 25px;padding:25px 12px;gap:10px;cursor:pointer;text-align:center}.file-drop:hover,.file-drop.over{background:#edf6ef}.file-drop .file-icon{font-size:27px;color:var(--green)}.file-drop strong{font-size:13px;font-weight:600}.file-drop>span:last-of-type{font-size:11px;color:var(--muted)}.file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.file-drop:has(input:disabled){opacity:.55;cursor:default}.file-drop input:disabled{cursor:default}.package-info{padding:4px 26px;margin:10px 0 0;font-size:12px;display:grid;grid-template-columns:70px 1fr;gap:8px}.package-info[hidden]{display:none}.package-info dt{color:var(--muted)}.package-info dd{margin:0;overflow-wrap:anywhere}.upgrade-action{padding:18px 26px 23px}.upgrade-action>p{font-size:12px;margin:0 0 11px;color:#526c5b}.full{width:100%}.upgrade-action>.hint{text-align:center}.notice{border-radius:8px;padding:12px 17px;font-size:13px;background:#fff5e5;border:1px solid #eddbba;color:#7b6036;margin-top:20px}.notice.success{background:#eaf6ec;border-color:#c6e4ce;color:var(--green)}.progress-panel{margin-top:22px}.progress-line{padding:2px 27px 0;display:flex;gap:18px;align-items:center}.track{height:8px;border-radius:10px;background:#edf2ee;flex:1;overflow:hidden}#progressBar{width:0;height:100%;background:#278158;border-radius:10px;transition:width .4s}#progressText{font-size:13px;font-weight:700;width:40px;text-align:right}.timeline{display:flex;justify-content:space-between;margin:13px 28px 24px;color:#819087;font-size:10px}.key-instruction{margin:0 26px 20px;padding:16px;background:#f0f7ed;border:1px solid #d4e6cb;border-radius:8px;display:flex;align-items:center;gap:15px}.key-instruction[hidden]{display:none}.keycap{border:1px solid #b6cdb8;border-bottom-width:3px;background:#fff;border-radius:7px;padding:13px;font-size:17px;color:var(--green);font-weight:700}.key-instruction strong{font-size:12px}.key-instruction p{font-size:11px;color:#6c806c;margin:6px 0 0}details{border-top:1px solid var(--line);padding:14px 26px}summary{font-size:12px;color:#6c8173;cursor:pointer}.event-log{font-size:11px;font-family:ui-monospace,Consolas,monospace;line-height:1.8;color:#657c6d;max-height:190px;overflow:auto;margin-top:13px}.event-log p{margin:2px 0}footer{display:flex;justify-content:space-between;color:#92a096;font-size:10px;padding:22px 3px}code{font-family:Consolas,monospace;font-size:11px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #87bfa0;outline-offset:3px}[hidden]{display:none!important}@media(max-width:1320px){main{margin:0 5%}}@media(max-width:900px){.architecture{display:none}.connect-grid{grid-template-columns:1fr 1.3fr}.work-grid{grid-template-columns:1fr 1fr}.section-heading{padding:20px}.device-list{padding:0 15px 10px}.header-right{gap:10px}}@media(max-width:680px){header{height:74px}.version{display:none}main{padding-top:28px}.intro{margin-bottom:24px}h1{font-size:27px}.intro p{font-size:12px}.connect-grid,.work-grid{grid-template-columns:1fr}.setup{border-right:0;border-bottom:1px solid var(--line)}.setup,form{padding:20px}.section-heading{padding:20px;gap:10px}.section-heading h2{font-size:15px}.section-heading p{font-size:11px}.button{font-size:12px}.device-list{min-height:170px}.empty{min-height:170px;padding:25px 10px}.file-drop{margin:0 20px}.timeline{font-size:9px}footer{flex-direction:column;gap:9px}.key-instruction{margin:0 20px 18px}.header-right .badge{font-size:10px}}
.cloud-firmware{margin:0 25px 20px;padding:16px;background:#f4f8f5;border:1px solid var(--line);border-radius:9px}.cloud-firmware select{width:100%;font:inherit;font-size:12px;border:1px solid #d4dfd7;border-radius:6px;background:white;padding:10px;margin-bottom:13px;color:#244237}.cloud-firmware input{margin-bottom:12px}.cloud-firmware select:focus-visible{outline:2px solid #87bfa0}
.login-page{min-height:100vh;background:radial-gradient(ellipse at top,#e5efe9,transparent 65%),#f3f6f4}.login-shell{max-width:460px!important;width:90%;margin:0 auto!important;padding:70px 0 20px}.login-shell>.brand{justify-content:center;margin-bottom:30px}.login-panel{padding:30px}.login-panel h1{font-size:25px;margin-top:15px}.login-intro{font-size:13px;color:var(--muted)}.login-panel form{padding:16px 0 0}.login-panel input{margin-bottom:19px}.login-panel>.hint{text-align:center;margin-top:22px}.login-footer{text-align:center;font-size:11px;color:var(--muted);margin-top:24px}#loginError{font-size:12px;color:#a3372b;padding:10px;background:#fff2ee;border-radius:6px}
