:root{--ink:#192f42;--muted:#71808d;--blue:#1758dc;--teal:#0b8b7b;--line:#e2e8ed;--paper:#f5f8fb;--orange:#995d16;font-family:Inter,"Microsoft YaHei","PingFang SC",Arial,sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--paper);font-size:14px}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a{color:inherit;text-decoration:none}[hidden]{display:none!important}:focus-visible{outline:3px solid #f6a33b;outline-offset:3px}.skip{position:fixed;z-index:100;top:-80px;left:20px;background:white;padding:16px}.skip:focus{top:10px}.topbar{height:84px;padding:0 32px;display:flex;align-items:center;gap:56px;background:white;border-bottom:1px solid var(--line);position:relative;z-index:5}.brand{display:flex;align-items:center;gap:11px;font-size:24px;font-weight:800;letter-spacing:.04em;min-width:195px}.brand-icon{display:grid;place-items:center;background:var(--blue);color:white;border-radius:12px;width:43px;height:43px;font-size:40px;line-height:1;transform:rotate(-7deg)}.brand small{display:block;font-size:9px;letter-spacing:.17em;color:var(--muted);font-weight:600;margin-top:3px}.topbar nav{height:100%;display:flex;gap:32px}.nav{border:0;border-bottom:3px solid transparent;background:none;font-weight:600;color:var(--muted);padding:3px 2px 0;font-size:14px}.nav.active{color:var(--blue);border-color:var(--blue)}.account{margin-left:auto;display:flex;gap:20px;align-items:center}.cloud-state{font-size:12px;color:var(--muted)}.cloud-state:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#a0adb7;margin-right:7px}.cloud-state.connected:before{background:var(--teal)}.button{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:44px;border:1px solid #d9e2eb;border-radius:8px;padding:11px 18px;color:var(--ink);background:white;font-weight:600;white-space:nowrap}.button:hover{border-color:#9aafc3;background:#f5f8ff}.button.primary{color:white;background:var(--blue);border-color:var(--blue)}.button.primary:hover{background:#0a46c0}.button.small{min-height:38px;font-size:12px;padding:9px 14px}.button.full{width:100%}.button.quiet{border:0}.workspace{height:calc(100dvh - 84px);min-height:660px;position:relative;overflow:hidden}.map{position:absolute;inset:0;background:#e8eff2}.map-loading{position:absolute;left:62%;top:45%;display:flex;align-items:center;gap:12px;transform:translateX(-50%);z-index:1;color:#607888;background:#ffffffeb;padding:15px 20px;border:1px solid #d9e4eb;border-radius:10px}.spinner{width:16px;height:16px;border:2px solid #d4e2f4;border-top-color:var(--blue);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sidebar{position:absolute;z-index:2;top:24px;left:24px;bottom:38px;width:346px;background:white;border:1px solid #dbe4ec;border-radius:16px;padding:26px;overflow:auto;box-shadow:0 12px 34px #213b5410;scrollbar-width:thin}.panel-heading{display:flex;justify-content:space-between;align-items:center}.eyebrow{font-size:9px;letter-spacing:.16em;color:#8c9aa6;font-weight:700}.panel-heading h1{font-size:27px;letter-spacing:-.04em;margin:11px 0 0;line-height:1.3}.scope-icon{font-size:40px;line-height:1;color:#c6d6ec}.intro{font-size:12px;color:var(--muted);margin:14px 0 28px;line-height:1.8}.guest{background:#f1f6ff;border:1px solid #e2ebfb;border-radius:12px;padding:23px 20px;margin-bottom:30px}.guest-mark{color:var(--blue);font-size:29px;font-weight:400;margin-bottom:15px}.guest strong{font-size:17px}.guest p{font-size:12px;line-height:1.95;color:#63778a;margin:12px 0 22px}.text-button{border:0;background:none;color:var(--blue);font-size:12px;padding:12px 0;min-height:42px}.guest .text-button{display:block;margin:0 auto;padding-bottom:0}label{display:block;font-size:12px;font-weight:600;margin-bottom:10px}select,input[type=datetime-local]{height:44px;border:1px solid #dce4eb;border-radius:7px;background:white;color:var(--ink);padding:0 11px;max-width:100%;width:100%;min-width:0}select{margin-bottom:19px}.device-actions{display:flex;gap:8px}.device-actions .primary{flex:1}.switch{display:flex;align-items:center;margin:19px 0 25px;gap:6px;line-height:1.6}.switch input{accent-color:var(--blue);height:17px;width:17px;margin:0 4px 0 0}.switch small{font-size:10px;color:#8c9ba8;font-weight:400;margin-left:auto}.position{padding-top:23px;border-top:1px solid var(--line)}.section-label{display:flex;justify-content:space-between;gap:10px;align-items:center}.section-label h2{font-size:13px;margin:0}.position-status{font-size:10px;color:#8394a3}.address{font-size:18px;line-height:1.7;font-weight:600;letter-spacing:-.02em;margin:20px 0 8px}.position-hint{font-size:11px;color:var(--muted);line-height:1.8;margin:0 0 22px}.coordinate{display:flex;background:#f5f8fb;border-radius:7px;padding:12px;gap:12px;color:#8a98a5;font-size:10px}.coordinate span{flex:1}.coordinate b{display:block;font-size:12px;color:var(--ink);font-family:ui-monospace,Consolas,monospace;margin-top:6px;font-weight:500}.device-facts{margin:18px 0 0;font-size:11px}.device-facts>div{display:flex;justify-content:space-between;gap:15px;padding:10px 0}.device-facts dt{color:#8997a3}.device-facts dd{margin:0;text-align:right;font-family:ui-monospace,Consolas,"Microsoft YaHei",monospace}.sidebar-note{margin-top:20px;padding-top:19px;border-top:1px solid var(--line);font-size:10px;color:#96a2ac;display:flex;gap:7px;line-height:1.8}.sidebar-note i{background:#9db2c2;border-radius:50%;width:4px;height:4px;flex-shrink:0;margin-top:7px}.map-caption{position:absolute;top:25px;left:394px;display:flex;align-items:center;gap:10px;background:#fffffff2;border:1px solid #dce5ec;border-radius:9px;min-height:45px;padding:12px 17px;font-size:11px;z-index:2;box-shadow:0 4px 20px #213b5408}.map-caption strong{font-weight:500}.map-caption>span:last-child{font-size:9px;border-left:1px solid #d8e2eb;padding-left:12px;color:#8c9ca9}.live-dot{height:6px;width:6px;border-radius:50%;background:var(--blue)}.map-tools{position:absolute;right:25px;top:25px;display:grid;gap:8px;z-index:2}.map-tool{height:42px;width:42px;border:1px solid #dce5ec;border-radius:8px;background:white;font-size:23px;color:#51697d;box-shadow:0 4px 20px #213b5408}.map-tool:hover{color:var(--blue);background:#f4f8ff}.map-error{position:absolute;z-index:2;left:56%;top:36%;background:white;padding:24px;max-width:360px;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 50px #12334412}.map-error p{font-size:12px;line-height:1.9;color:var(--muted)}.demo-banner{padding:11px;border-radius:7px;background:#fff5df;color:var(--orange);font-size:11px;line-height:1.8;margin-bottom:20px}.demo-banner button{border:0;background:none;text-decoration:underline;color:inherit;float:right;padding:0 4px;min-height:25px}.history-panel{position:absolute;z-index:3;left:394px;right:84px;bottom:38px;max-height:52%;overflow:auto;background:white;border:1px solid #dce5ec;border-radius:14px;padding:22px 25px;box-shadow:0 8px 38px #213b5414}.history-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.history-head h2{font-size:20px;margin:7px 0 0}.icon-button{background:none;border:0;font-size:26px;line-height:1;color:#728797;min-width:44px;min-height:44px}.history-form{display:grid;grid-template-columns:1fr 1fr auto auto;gap:12px;align-items:end}.history-form label{font-size:11px;margin:0}.history-form input{margin-top:7px}.history-form .button{padding:10px 13px;font-size:12px}.history-status{font-size:11px;color:var(--muted);line-height:1.8;margin:17px 0}.playback{display:flex;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.playback input{flex:1;min-width:40px;accent-color:var(--blue)}.playback output{font:10px ui-monospace,Consolas,monospace;min-width:120px}.history-list{display:flex;flex-direction:column;gap:2px;max-height:126px;overflow:auto}.history-row{border:0;background:#f8fafc;color:#6a8090;text-align:left;padding:10px 12px;display:flex;justify-content:space-between;gap:10px;font:11px ui-monospace,Consolas,monospace;min-height:37px}.history-row:hover,.history-row.selected{background:#eaf1ff;color:var(--blue)}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:20;background:#173449;color:white;padding:14px 22px;border-radius:8px;max-width:90vw;font-size:13px;box-shadow:0 8px 24px #12334426}.callback{min-height:100dvh;display:grid;place-items:center;padding:24px}.callback article{background:white;border:1px solid var(--line);border-radius:16px;max-width:430px;padding:36px}.callback h1{font-size:24px;margin-top:18px}.callback p{color:var(--muted);font-size:13px;line-height:1.9}.callback .button{margin-top:20px}
.map{z-index:0;isolation:isolate}
.course-view-label{font-size:11px;color:var(--blue);background:#edf3ff;padding:9px 12px;border-radius:6px;white-space:nowrap}.fixed-device{border:1px solid #dce7fa;background:#f3f7ff;padding:17px 18px;border-radius:10px;margin-bottom:20px}.fixed-device-heading{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#6e8093;margin-bottom:14px}.fixed-badge{font-size:10px;color:var(--blue);background:#e3edff;padding:4px 7px;border-radius:4px}.fixed-device>strong{display:block;font-size:16px;line-height:1.6}.device-suffix{display:block;font:11px ui-monospace,Consolas,"Microsoft YaHei",monospace;color:#7c8fa1;margin-top:5px}.connection-note{font-size:11px;line-height:1.8;color:#6c7f91;margin:12px 0 0}
@media(min-width:1600px){.sidebar{width:370px;padding:30px}.map-caption,.history-panel{left:422px}}
@media(max-width:1100px){.topbar{gap:28px;padding:0 24px}.account{gap:12px}.cloud-state{display:none}.topbar nav{gap:20px}.history-panel{right:25px}.history-form{grid-template-columns:1fr 1fr}.sidebar{width:322px;padding:22px}.map-caption,.history-panel{left:370px}}
@media(max-width:720px){.topbar{height:71px;padding:0 16px;gap:15px;flex-wrap:wrap}.brand{font-size:21px;min-width:138px;gap:9px}.brand-icon{width:35px;height:35px;font-size:33px;border-radius:10px}.brand small{font-size:7px}.account{gap:0}.account .button{font-size:11px;gap:7px;padding:9px 10px;min-height:37px}.topbar nav{position:absolute;top:71px;left:0;right:0;height:47px;background:white;justify-content:center;gap:38px;border-bottom:1px solid var(--line);z-index:5}.nav{font-size:12px;padding:0 5px}.workspace{margin-top:47px;height:auto;min-height:calc(100dvh - 118px);overflow:visible;padding-top:360px}.map{inset:0 0 auto;height:360px}.map-caption{top:14px;left:14px;right:66px;font-size:10px;gap:6px;min-height:39px;padding:11px}.map-caption>span:last-child{display:none}.map-tools{top:14px;right:14px;gap:6px}.map-tool{width:38px;height:38px;font-size:21px}.sidebar{position:relative;top:auto;left:auto;bottom:auto;width:auto;margin:-16px 12px 16px;padding:24px;border-radius:14px;box-shadow:0 4px 24px #213b5410;overflow:visible}.intro{margin-bottom:22px}.guest{margin-bottom:22px}.map-loading{left:50%;top:160px;white-space:nowrap;font-size:12px}.map-error{left:20px;right:65px;top:78px;max-width:none;padding:17px}.history-panel{position:fixed;inset:auto 0 0;max-height:72dvh;z-index:10;border-radius:18px 18px 0 0;padding:22px 20px 28px;box-shadow:0 -10px 70px #173e5126}.history-form{gap:10px}.history-form .button{width:100%}.history-form input{font-size:11px}.history-list{max-height:160px}.playback output{font-size:9px;min-width:100px}.history-row{font-size:9px}.toast{bottom:20px;min-width:240px;text-align:center}.scope-icon{font-size:34px}.position-hint{font-size:12px}.device-facts{font-size:12px}.sidebar-note{font-size:11px}.text-button{min-height:44px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.acceleration-panel{position:absolute;z-index:3;left:394px;right:84px;bottom:38px;max-height:calc(100% - 110px);overflow:auto;background:white;border:1px solid #dce5ec;border-radius:14px;padding:24px 26px;box-shadow:0 8px 38px #213b5414}.acceleration-panel h2{font-size:21px;margin:7px 0 0}.axis-readings{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px}.axis-readings>div{padding:15px 17px;background:#f7f9fc;border:1px solid var(--line);border-radius:8px}.axis-readings span{display:block;font-size:12px;font-weight:600}.axis-readings small{font-size:10px;font-weight:400;margin-left:5px;color:var(--muted)}.axis-readings strong{display:block;font:500 clamp(22px,2.5vw,36px) ui-monospace,Consolas,monospace;margin-top:9px}.axis-x{color:#1758dc;stroke:#1758dc}.axis-y{color:#0b8b7b;stroke:#0b8b7b}.axis-z{color:#be6b1c;stroke:#be6b1c}.acceleration-chart{position:relative;height:230px;border:1px solid var(--line);border-radius:8px;padding:14px 12px 6px}.acceleration-chart svg{width:100%;height:100%;overflow:visible}.chart-grid path{stroke:#e6edf3;stroke-width:1;fill:none}.acceleration-chart text{font:11px ui-monospace,Consolas,monospace;fill:#8c9ca9}.curve{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.acceleration-empty{position:absolute;inset:0;display:grid;place-items:center;font-size:13px;color:#8193a2;background:#ffffffb5}.acceleration-footer{display:flex;justify-content:space-between;gap:16px;align-items:center;font-size:11px;color:#6e8395;margin-top:12px}.acceleration-footer p{margin:0;line-height:1.8}.acceleration-footer>span{font-family:ui-monospace,Consolas,'Microsoft YaHei',monospace;font-size:10px;white-space:nowrap}.acceleration-note{font-size:11px;line-height:1.8;color:#8b9aa6;margin:10px 0 0}@media(min-width:1600px){.acceleration-panel{left:422px}}@media(max-width:1100px){.acceleration-panel{left:370px;right:25px}}@media(max-width:720px){.topbar nav{gap:24px}.acceleration-panel{position:fixed;inset:auto 0 0;max-height:82dvh;padding:22px 18px 28px;border-radius:18px 18px 0 0;z-index:10}.axis-readings{gap:8px}.axis-readings>div{padding:12px 10px}.axis-readings strong{font-size:22px}.acceleration-chart{height:200px}.acceleration-footer{display:block}.acceleration-footer>span{display:block;margin-top:6px}.acceleration-note{font-size:11px}}
