*{box-sizing:border-box}
:root{
  font-family:"Inter",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:#edf2f7;background:#090c10;
  --bg:#090c10;--panel:#11161d;--panel2:#151b23;--line:#28313d;
  --muted:#8b97a7;--text:#edf2f7;--accent:#ef3340;--accent2:#ff5b66;
  --green:#39d98a;--blue:#4da3ff;--yellow:#ffcf5c;
}
html,body{margin:0;min-height:100%;background:radial-gradient(circle at top,#151b23 0,#090c10 45%,#07090c 100%);color:var(--text)}
body{min-height:100vh}
button,input,select{font:inherit}
.top{position:sticky;top:0;z-index:20;background:rgba(9,12,16,.92);backdrop-filter:blur(16px);border-bottom:1px solid #1e2630;padding:13px max(14px,3vw);display:flex;justify-content:space-between;align-items:center;gap:12px}
.brandline{display:flex;align-items:center;gap:8px}.brandDot{width:11px;height:11px;border-radius:50%;background:var(--accent);box-shadow:0 0 18px rgba(239,51,64,.65)}.top h1{font-size:22px;margin:0;letter-spacing:-.04em}.top p{color:var(--muted);font-size:12px;margin:3px 0 0}.topActions{display:flex;align-items:center;gap:7px}
.badge{padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:#111821;color:#aeb9c8;font-size:11px;font-weight:600}.badge.ok{background:rgba(57,217,138,.09);border-color:rgba(57,217,138,.35);color:#67e7a4}
main{max-width:1280px;margin:auto;padding:16px}.card{background:linear-gradient(180deg,rgba(22,28,36,.98),rgba(15,20,27,.98));border:1px solid var(--line);border-radius:18px;padding:15px;box-shadow:0 10px 35px rgba(0,0,0,.24)}
.toolbar{display:flex;align-items:end;gap:9px;flex-wrap:wrap;background:rgba(17,22,29,.86)}label{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:600;color:#aeb8c6}input,select{color:var(--text);background:#0e1319;border:1px solid #2a3440;border-radius:10px;padding:9px}.toolbar input{min-width:170px}
button{color:#eaf0f6;background:#141a21;border:1px solid #2b3541;border-radius:11px;padding:9px 12px;cursor:pointer;transition:.15s transform,.15s background,.15s border-color}.toolbar button:hover,button:hover{background:#1a222c;border-color:#3a4654}button:active{transform:translateY(1px)}button.primary{background:var(--accent);border-color:var(--accent);color:white;box-shadow:0 6px 18px rgba(239,51,64,.22)}button.primary:hover{background:var(--accent2);border-color:var(--accent2)}
.tabs{display:flex;gap:6px;margin:15px 0;overflow:auto;padding-bottom:1px}.tab{white-space:nowrap;background:#10151b}.tab.active{background:#edf2f7;color:#0b0f14;border-color:#edf2f7;font-weight:700}
.tabpage{display:none}.tabpage.active{display:block}.sectionHeader{display:flex;justify-content:space-between;align-items:end;gap:10px;margin:2px 2px 12px}.sectionHeader h2{margin:1px 0 0;font-size:23px;letter-spacing:-.04em}.eyebrow{font-size:10px;letter-spacing:.18em;color:#778394;font-weight:700}.split{display:grid;grid-template-columns:235px 1fr;gap:14px}
h2{font-size:16px;margin:0 0 12px}.palette,.blockPalette{display:grid;gap:7px}.palette button,.blockPalette button{text-align:left;background:#0f151c}.palette button:hover,.blockPalette button:hover{background:#19212b;border-color:#465361}.hint{font-size:11px;color:var(--muted);line-height:1.45}hr{border:0;border-top:1px solid #202934;margin:14px 0}.row{display:flex;align-items:center;justify-content:space-between;gap:8px}

.controllerCanvas{min-height:575px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;background:linear-gradient(180deg,#0d1217,#0a0e12);border:1px solid #222b35;border-radius:16px;padding:14px;align-content:start}
.control{position:relative;background:linear-gradient(180deg,#171e27,#121820);border:1px solid #29333f;border-radius:16px;padding:13px;min-height:124px;touch-action:none;box-shadow:inset 0 1px rgba(255,255,255,.03)}.control.selected{outline:2px solid rgba(77,163,255,.85);box-shadow:0 0 0 5px rgba(77,163,255,.1)}.control h3{font-size:12px;color:#c7d0db;margin:0 0 10px;letter-spacing:.01em}.del{position:absolute;right:7px;top:7px;padding:3px 7px;background:#0c1117;color:#7f8b9a;border-color:#28313b}.range{width:100%;accent-color:var(--accent);height:28px}.big{width:100%;height:60px;font-size:18px;font-weight:700;background:#1a2028;border:1px solid #35404c}.big:active{background:var(--accent);border-color:var(--accent)}.joystick{height:105px;display:grid;place-items:center}.joyPad{width:96px;height:96px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#4a5563,#202832 62%,#141a21 100%);position:relative;box-shadow:inset 0 5px 15px rgba(255,255,255,.05),0 8px 18px rgba(0,0,0,.3);touch-action:none}.joyKnob{width:36px;height:36px;border-radius:50%;background:#e7edf5;position:absolute;left:30px;top:30px;box-shadow:0 4px 11px rgba(0,0,0,.35);transition:left .04s,top .04s}.toggle.on{background:var(--green);color:#08130d;border-color:var(--green)}.meterBar{height:16px;background:#0b1015;border:1px solid #27313c;border-radius:99px;overflow:hidden}.meterBar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),#ff7980)}.readout{font-family:"Roboto Mono",ui-monospace,monospace;color:#dbe4ee;font-size:12px}.bigValue{font-family:"Roboto Mono",ui-monospace,monospace;font-size:32px;font-weight:600;letter-spacing:-.04em}.battery{font-size:27px}.sub{font-size:11px;color:#7f8b9b;margin-top:7px}

.programCanvas{min-height:575px;padding:11px;border:1px solid #222b35;border-radius:16px;background:linear-gradient(180deg,#0d1217,#0a0e12)}.block{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:9px 10px;margin:7px 0;border:1px solid #394a61;border-left:6px solid var(--blue);border-radius:10px;background:linear-gradient(180deg,#162335,#111c29);width:fit-content;max-width:100%;cursor:grab;box-shadow:0 4px 12px rgba(0,0,0,.12)}.block.dragging{opacity:.45}.block.running{box-shadow:0 0 0 3px rgba(255,207,92,.75),0 7px 20px rgba(0,0,0,.2)}.block[data-type=start]{background:linear-gradient(180deg,#2a2618,#201e16);border-left-color:var(--yellow)}.block[data-type=stop]{border-left-color:#ff5c68}.block input,.block select{padding:5px;min-width:58px}.ports,.sensorCards{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:10px}.port,.sensorCard{border:1px solid #2a3440;border-radius:13px;padding:12px;background:#11171e}.port strong,.sensorCard strong{display:block;font-size:18px}.monitorGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px}.monitorGrid div{padding:15px;border:1px solid #2a3440;border-radius:13px;background:linear-gradient(180deg,#121920,#0e141a)}.monitorGrid span{display:block;color:#7f8b9b;font-size:11px}.monitorGrid strong{font-family:"Roboto Mono",ui-monospace,monospace;font-size:24px;margin-top:4px;display:block}.log{min-height:145px;background:#070a0d;color:#9ce8be;border:1px solid #202934;border-radius:12px;padding:12px;overflow:auto;font-size:11px;line-height:1.55}
footer{text-align:center;color:#667282;padding:22px;font-size:11px}
@media(max-width:700px){.split{grid-template-columns:1fr}.controllerCanvas{grid-template-columns:1fr}.top{align-items:flex-start}.topActions{flex-wrap:wrap;justify-content:flex-end}.sectionHeader{align-items:flex-start;flex-direction:column}.sectionHeader h2{font-size:21px}}
