:root{--bg:#fff;--soft:#f7f7f7;--ink:#0b0b0b;--muted:#767676;--line:#e6e6e6;--accent:#ff8b3e;--accent-soft:#fff1e7;--sans:"Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;font:14px/1.45 var(--sans);color:var(--ink);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{background:var(--bg);margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer}kbd{font:500 11px/1 var(--mono);border:1px solid var(--line);background:var(--soft);color:var(--muted);border-bottom-width:2px;border-radius:4px;padding:3px 6px}.muted{color:var(--muted)}.brand{font-family:"Staatliches", var(--sans);letter-spacing:.02em;font-size:44px;font-weight:400;line-height:1}.link{color:var(--muted);background:0 0;border:0;align-items:center;gap:6px;margin-top:16px;padding:0;display:inline-flex}.link:hover{color:var(--ink)}.settings{max-width:620px;margin:0 auto;padding:56px 24px 96px}.settings h1{letter-spacing:-.02em;margin:24px 0 4px;font-size:28px;font-weight:600}.settings h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border-bottom:1px solid var(--ink);margin:48px 0 0;padding-bottom:10px;font-size:11px;font-weight:500}.settings .note{color:var(--muted);margin:12px 0 4px;font-size:13px}.back{color:var(--muted);align-items:center;gap:6px;text-decoration:none;display:inline-flex}.back:hover{color:var(--ink)}.row{border-bottom:1px solid var(--line);grid-template-columns:1fr 240px;align-items:center;gap:24px;padding:12px 0;display:grid}.row small{color:var(--muted);font-size:12px;display:block}.row input:not(.switch),.row select{border:1px solid var(--line);background:var(--bg);width:100%;height:34px;font-family:var(--mono);border-radius:6px;padding:0 10px;font-size:13px}.row input:focus,.row select:focus{border-color:var(--ink);outline:none}.switch{appearance:none;background:var(--line);cursor:pointer;border-radius:10px;justify-self:end;width:34px;height:20px;margin:0;transition:background .15s;position:relative}.switch:before{content:"";background:var(--bg);border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch:checked{background:var(--accent)}.switch:checked:before{transform:translate(14px)}.footer{border-top:1px solid var(--line);margin-top:56px;padding-top:8px}.login{place-items:center;min-height:100dvh;padding:24px;display:grid}.login form{text-align:center;flex-direction:column;width:100%;max-width:300px;display:flex}.login .brand{margin:0;font-size:72px}.login .muted{margin:4px 0 36px}.login input{border:1px solid var(--line);background:var(--bg);border-radius:6px;height:44px;padding:0 12px;font-size:16px}.login input:focus{border-color:var(--ink);outline:none}.login button{background:var(--ink);height:44px;color:var(--bg);border:0;border-radius:6px;margin-top:10px;font-weight:500}.login button:disabled{background:var(--line);color:var(--muted);cursor:default}.login .error{min-height:20px;color:var(--accent);margin:12px 0 0;font-weight:500}.app{-webkit-user-select:none;user-select:none;grid-template-rows:64px 1fr;height:100vh;display:grid}header{white-space:nowrap;border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:0 20px;display:flex}.spacer{flex:1}.paused{color:var(--accent);font-weight:500}.status{align-items:center;gap:8px;font-weight:500;display:inline-flex}.status i{background:var(--accent);border-radius:50%;width:8px;height:8px}.status.on i{background:var(--ink)}.url,.clock{font:12px var(--mono);color:var(--muted)}.clock{border-left:1px solid var(--line);color:var(--ink);padding-left:14px}main{grid-template-columns:1fr 360px;min-height:0;display:grid}.view{background:var(--soft);position:relative;overflow:hidden}.empty{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}aside{border-left:1px solid var(--line);flex-direction:column;min-height:0;display:flex}aside section{border-bottom:1px solid var(--line);padding:20px}h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);justify-content:space-between;align-items:baseline;margin:0 0 14px;font-size:11px;font-weight:500;display:flex}h3 span{font:11px var(--mono);text-transform:none;letter-spacing:0}h3 .link{text-transform:none;letter-spacing:0;margin:0;font-size:12px}.commands{border:1px solid var(--line);border-radius:6px;overflow:hidden}.commands button,.estop{background:var(--bg);text-align:left;border:0;align-items:center;gap:10px;width:100%;height:44px;padding:0 12px 0 14px;font-weight:500;display:flex}.commands button+button{border-top:1px solid var(--line)}.commands button:hover,.commands button.fired{background:var(--soft)}.commands kbd,.estop kbd{margin-left:auto}.estop{background:var(--accent);border-radius:6px;height:52px;margin-top:10px;font-weight:600}.estop kbd{color:var(--ink);background:#ffffff59;border-color:#00000026}.estop:hover,.estop.fired{background:#f57a2a}.control{align-items:center;gap:20px;display:flex}.pad{touch-action:none;grid-template-columns:repeat(3,48px);gap:6px;display:grid}.pad button{border:1px solid var(--line);background:var(--bg);height:48px;color:var(--muted);border-bottom-width:3px;border-radius:5px;place-items:center;display:grid;position:relative}.pad button span{font:500 10px var(--mono);position:absolute;top:3px;left:5px}.pad button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--ink);transform:translateY(1px)}.readout{font-family:var(--mono);flex:1;margin:0}.readout div{color:var(--muted);justify-content:space-between;padding:3px 0;display:flex}.readout div+div{border-top:1px dashed var(--line)}.readout dd{margin:0}.readout .on{color:var(--ink)}.readout .on dd:before{content:"";vertical-align:middle;background:var(--accent);width:6px;height:6px;margin-right:8px;display:inline-block}.log{flex:1;min-height:0;overflow:auto}aside section:last-child{border-bottom:0}.log p{margin:0;font-size:13px}.log ol{font:11.5px/1.5 var(--mono);margin:0;padding:0;list-style:none}.log li{gap:10px;padding:4px 0;display:flex}.log time{color:var(--muted);flex-shrink:0}.log code{font:inherit;word-break:break-all}.log em{color:var(--muted);flex-shrink:0;margin-left:auto;font-style:normal}.log em+em{margin-left:0}.log .dropped code{color:var(--muted);text-decoration:line-through}.log .dropped em:last-child{color:var(--accent)}@media (width<=820px){.app{height:auto;min-height:100vh}.url,header>.muted{display:none}main{grid-template-rows:45vh auto;grid-template-columns:1fr}aside{border-left:0}}.pad-chip{align-items:center;gap:6px;min-width:0;font-weight:500;display:inline-flex}.pad-chip span{text-overflow:ellipsis;max-width:200px;overflow:hidden}.glyph{border:1px solid var(--line);background:var(--bg);width:20px;height:20px;font:600 10.5px/1 var(--mono);color:var(--muted);border-radius:50%;flex:none;place-items:center;margin-left:auto;display:inline-grid}.commands .glyph+kbd,.estop .glyph+kbd{margin-left:0}.estop .glyph{color:var(--ink);background:#ffffff59;border-color:#00000026}.map{position:absolute;inset:0;overflow:hidden}.map img{filter:grayscale()contrast(1.05);opacity:.55;pointer-events:none;width:256px;height:256px;position:absolute;top:50%;left:50%}.marker{pointer-events:none;border-radius:50%;position:absolute;top:50%;left:50%}.marker.home{background:var(--accent);width:14px;height:14px;box-shadow:0 0 0 3px var(--bg), 0 0 0 4px #0000001f, 0 0 0 28px #ff8b3e1f;margin:-7px}.marker.device{background:var(--ink);width:12px;height:12px;box-shadow:0 0 0 3px var(--bg), 0 0 0 4px #0000001f, 0 0 0 18px #0b0b0b0f;margin:-6px}.marker.drone{background:var(--accent);width:30px;height:30px;color:var(--ink);box-shadow:0 0 0 3px var(--bg), 0 0 0 4px #0000001f;isolation:isolate;place-items:center;margin:-15px;transition:background .3s,color .3s;display:grid}.marker.drone:after{content:"";z-index:-1;background:#ff8b3e59;border-radius:50%;animation:2s ease-out infinite live;position:absolute;inset:0}.marker.drone svg{transition:rotate .3s ease-out}.marker.drone.stale{background:var(--line);color:var(--muted)}.marker.drone.stale:after{opacity:0;animation:none}@keyframes live{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(3)}}@media (prefers-reduced-motion:reduce){.marker.drone:after{opacity:.5;animation:none;transform:scale(2)}.marker.drone svg{transition:none}}.credit{background:var(--bg);font:11px var(--mono);color:var(--muted);padding:4px 8px;text-decoration:none;position:absolute;bottom:0;right:0}.strip{background:var(--bg);border:1px solid var(--ink);max-width:100%;display:flex;overflow-x:auto}.strip>div{padding:10px 16px 12px}.strip>div+div{border-left:1px solid var(--line)}.strip small{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);white-space:nowrap;margin-bottom:4px;font-size:10.5px;font-weight:500;display:block}.strip b{font:500 18px var(--mono);letter-spacing:-.02em;white-space:nowrap;align-items:baseline;gap:3px;display:flex}.strip b span{color:var(--muted);letter-spacing:0;font-size:11px}.strip .dir{align-self:center;align-items:center;gap:3px;margin-left:8px;display:inline-flex}.strip .place b{letter-spacing:0;font-size:14px;line-height:24px}.strip .low b{color:var(--accent)}.strip .stale b{color:var(--muted)}.telemetry{flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);display:flex;position:absolute;top:16px;left:16px}.weather{max-width:calc(100% - 32px);position:absolute;bottom:16px;left:16px}.weather.muted{padding:10px 14px}.weather .sky{font:500 14px/24px var(--sans);letter-spacing:0}.stick{--knob:84px;flex-direction:column;flex:none;align-items:center;gap:10px;margin-top:auto;display:flex}.stick .label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:11px;font-weight:500}.stick .base{border:1px solid var(--line);background:linear-gradient(var(--line), var(--line)) center / 1px 100% no-repeat, linear-gradient(var(--line), var(--line)) center / 100% 1px no-repeat, var(--soft);touch-action:none;border-radius:50%;width:220px;height:220px;position:relative}.stick.yaw{align-self:stretch}.stick.yaw .base{width:100%;max-width:260px;height:var(--knob);border-radius:calc(var(--knob) / 2);background:linear-gradient(var(--line), var(--line)) center / 1px 100% no-repeat, var(--soft)}.knob{width:var(--knob);height:var(--knob);border:1px solid var(--line);background:var(--bg);pointer-events:none;border-bottom-width:3px;border-radius:50%;margin:auto;transition:transform .15s ease-out;position:absolute;inset:0}.stick.on .knob{border-color:var(--accent);background:var(--accent-soft);transition:none}.battery{font:500 12px var(--mono);align-items:center;gap:6px;display:inline-flex}.battery.low{color:var(--accent)}.battery.stale{color:var(--muted)}[data-layout=tablet]{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}[data-layout=tablet] body{overscroll-behavior:none;-webkit-touch-callout:none}[data-layout=tablet] .settings{padding:calc(32px + env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) 96px max(24px, env(safe-area-inset-left))}[data-layout=tablet] .back,[data-layout=tablet] .link{min-height:44px;font-size:15px}[data-layout=tablet] .row{min-height:60px}[data-layout=tablet] .row input:not(.switch),[data-layout=tablet] .row select{height:44px;font-size:16px}[data-layout=tablet] .switch{border-radius:16px;width:51px;height:31px}[data-layout=tablet] .switch:before{width:27px;height:27px}[data-layout=tablet] .switch:checked:before{transform:translate(20px)}.app.tablet{height:100dvh;min-height:0;padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-user-select:none;touch-action:manipulation;grid-template-rows:auto minmax(0,1fr)}.tablet header{height:calc(68px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 10px 0 20px;gap:16px}.tablet .brand{font-size:48px}.tablet .status,.tablet .pad-chip,.tablet .battery{font-size:15px}.tablet .clock{font-size:13px}.gear{width:44px;height:44px;color:var(--ink);border-radius:8px;place-items:center;margin-left:-8px;display:grid}.gear:active{background:var(--soft)}.tablet main{grid-template:"flight view side"minmax(0,1fr)/280px minmax(0,1fr) 280px}.tablet .view{grid-area:view}.tablet .flight,.tablet .side{flex-direction:column;gap:14px;min-height:0;padding:20px 20px 24px;display:flex}.tablet .flight{border-right:1px solid var(--line);grid-area:flight}.tablet .side{border-left:1px solid var(--line);grid-area:side}.tablet h3{margin:0}.tablet .commands button{gap:12px;height:60px;padding:0 14px 0 16px;font-size:16px}.tablet .commands button:hover{background:var(--bg)}.tablet .commands button:active,.tablet .commands button.fired{background:var(--soft)}.tablet .estop{gap:12px;height:80px;margin:0;padding:0 16px 0 18px;font-size:18px}.tablet .estop:hover{background:var(--accent)}.tablet .estop:active,.tablet .estop.fired{background:#f57a2a}.tablet .glyph{width:24px;height:24px;font-size:12px}.tablet .readout{flex:none;font-size:15px}.tablet .readout div{padding:6px 0}.tablet .log{contain:size;border-top:1px solid var(--line);flex:1 1 0;padding-top:14px}.tablet .log h3{margin-bottom:10px}.tablet .log ol{font-size:12.5px}@media (orientation:portrait){.tablet main{grid-template:"view view"minmax(0,1fr)"flight side"/1fr 1fr}.tablet .flight,.tablet .side{border-top:1px solid var(--line)}.tablet .side{border-left:0}.tablet .readout{grid-template-columns:repeat(4,1fr);display:grid}.tablet .readout div{flex-direction:column;padding:0 0 0 12px}.tablet .readout div:first-child{padding-left:0}.tablet .readout div+div{border-top:0;border-left:1px dashed var(--line)}.tablet .log{min-height:132px}}@media (width<=640px){.app.tablet{height:auto;min-height:100dvh}.tablet main{grid-template:"view"45dvh"flight""side"/1fr}.tablet .flight{border-right:0}.tablet .log{contain:none;flex:none;max-height:240px}.tablet header>.muted,.tablet .pad-chip span{display:none}}
