diff --git a/ExoMy_Software-master/gui/admin-motor-test.css b/ExoMy_Software-master/gui/admin-motor-test.css new file mode 100644 index 0000000..e181027 --- /dev/null +++ b/ExoMy_Software-master/gui/admin-motor-test.css @@ -0,0 +1,183 @@ +:root { + --bg: #05080F; + --pri: #0088FF; + --sec: #FF8C00; + --ok: #00ff91; + --txt: rgba(0,255,145,.8); + --txt2: rgba(0,210,130,.38); + --mono: "Consolas","Cascadia Code","Cascadia Mono","Courier New",monospace; +} +* { margin:0; padding:0; box-sizing:border-box; } +html { height:100%; } +body { + font-family:var(--mono); + background-color:var(--bg); + background-image: + linear-gradient(rgba(0,255,145,.04) 1px, transparent 1px), + linear-gradient(90deg, rgba(0,255,145,.04) 1px, transparent 1px); + background-size:32px 32px; + color:var(--txt); + display:flex; flex-direction:column; height:100%; overflow:hidden; +} + +/* ── HEADER ─────────────────────────────────────── */ +header { + height:52px; + background:linear-gradient(135deg, #060D1A 0%, #0C1C38 100%); + border-bottom:2px solid var(--pri); + box-shadow:0 2px 24px rgba(0,136,255,.28); + display:flex; align-items:center; padding:0 16px; gap:14px; flex-shrink:0; z-index:10; +} +.hdr-icon { width:32px; height:32px; flex-shrink:0; } +.hdr-title { font-weight:700; font-size:14px; color:#fff; letter-spacing:5px; text-transform:uppercase; white-space:nowrap; } +.hdr-title em { font-style:normal; color:var(--pri); } +.hdr-div { width:1px; height:28px; background:rgba(255,255,255,.12); flex-shrink:0; } +.hdr-badge { font-size:7px; color:var(--pri); border:1px solid rgba(0,136,255,.5); padding:2px 8px; letter-spacing:2.5px; text-transform:uppercase; white-space:nowrap; } +.hdr-gap { flex:1; } +.hdr-status { font-size:8px; color:rgba(0,255,145,.55); letter-spacing:2px; text-transform:uppercase; white-space:nowrap; } +.hdr-back { color:rgba(0,255,145,.45); text-decoration:none; font-size:8px; letter-spacing:2px; text-transform:uppercase; } +.hdr-back:hover { color:rgba(0,255,145,.8); } +.hdr-clk { display:flex; flex-direction:column; align-items:flex-end; } +.hdr-clk-lbl { font-size:7px; color:rgba(255,255,255,.35); letter-spacing:2px; text-transform:uppercase; } +.hdr-clk-val { font-weight:700; font-size:14px; color:#fff; letter-spacing:3px; line-height:1.1; } + +/* ── PANEL ──────────────────────────────────────── */ +.panel { + position:relative; + background: + linear-gradient(rgba(0,255,145,.55),rgba(0,255,145,.55)) 0 0/14px 1px no-repeat, + linear-gradient(rgba(0,255,145,.55),rgba(0,255,145,.55)) 0 0/1px 14px no-repeat, + linear-gradient(rgba(0,255,145,.55),rgba(0,255,145,.55)) 100% 0/14px 1px no-repeat, + linear-gradient(rgba(0,255,145,.55),rgba(0,255,145,.55)) 100% 0/1px 14px no-repeat, + linear-gradient(rgba(0,255,145,.55),rgba(0,255,145,.55)) 0 100%/14px 1px no-repeat, + linear-gradient(rgba(0,255,145,.55),rgba(0,255,145,.55)) 0 100%/1px 14px no-repeat, + linear-gradient(rgba(0,255,145,.55),rgba(0,255,145,.55)) 100% 100%/14px 1px no-repeat, + linear-gradient(rgba(0,255,145,.55),rgba(0,255,145,.55)) 100% 100%/1px 14px no-repeat, + #070D18; + border:1px solid rgba(0,255,145,.1); + box-shadow:0 0 24px rgba(0,0,0,.5), inset 0 0 40px rgba(0,255,145,.018); +} +.p-hdr { + display:flex; align-items:center; gap:7px; padding:7px 12px; + border-bottom:1px solid rgba(0,255,145,.08); + background:linear-gradient(90deg, rgba(0,255,145,.05) 0%, transparent 100%); +} +.p-dot { width:5px; height:5px; border-radius:50%; background:var(--ok); box-shadow:0 0 6px var(--ok); flex-shrink:0; } +.p-lbl { font-size:8px; letter-spacing:3px; color:rgba(0,255,145,.7); text-transform:uppercase; font-weight:bold; } +.p-tag { margin-left:auto; font-size:7px; color:rgba(0,255,145,.25); letter-spacing:1px; } + +/* ── STATUS ROWS ────────────────────────────────── */ +.sr { display:flex; align-items:center; padding:5px 12px; gap:8px; border-bottom:1px solid rgba(0,255,145,.04); } +.sr:last-child { border-bottom:none; } +.sr-led { width:6px; height:6px; border-radius:50%; flex-shrink:0; border:1px solid rgba(0,255,145,.15); background:#0a1408; } +.sr-led.led-ok { background:#00ff91; border-color:#00ff91; box-shadow:0 0 5px #00ff91, 0 0 12px rgba(0,255,145,.55); } +.sr-led.led-blue { background:#0088FF; border-color:#0088FF; box-shadow:0 0 5px #0088FF, 0 0 12px rgba(0,136,255,.5); } +.sr-led.led-off { background:#0d1208; border-color:rgba(0,255,145,.08); } +.sr-key { font-size:7px; letter-spacing:2px; color:rgba(0,210,130,.4); text-transform:uppercase; min-width:80px; flex-shrink:0; } +.sr-val { font-size:9px; font-weight:700; letter-spacing:.8px; margin-left:auto; color:rgba(0,255,145,.85); } +.state_active { color:#00ff91; } +.state_inactive { color:#FF3333; } +.state_unknown { color:#FF8C00; } + +/* ── MAIN LAYOUT ────────────────────────────────── */ +.admin-main { + flex:1; min-height:0; overflow-y:auto; + display:flex; flex-direction:column; gap:12px; + padding:12px; width:100%; +} +.admin-col { display:flex; flex-direction:column; gap:12px; } + +/* ── RESPONSIVE ─────────────────────────────────── */ +@media (min-width:640px) { + .admin-main { flex-direction:row; overflow:hidden; max-width:1200px; margin:0 auto; } + .admin-col { flex:1; min-width:0; overflow-y:auto; min-height:0; } + .admin-col:first-child { flex:0 0 320px; } +} +@media (min-width:1024px) { + .admin-main { padding:16px; gap:16px; } + .admin-col:first-child { flex:0 0 380px; } +} +@media (max-width:479px) { + .hdr-badge, .hdr-clk { display:none; } +} + +/* ── BUTTONS ────────────────────────────────────── */ +.button { + font-family:var(--mono); font-size:8px; letter-spacing:1.5px; text-transform:uppercase; + padding:9px 12px; border:1px solid rgba(0,255,145,.2); background:rgba(0,255,145,.03); + color:rgba(0,255,145,.6); cursor:pointer; transition:all .15s; +} +.button:hover { background:rgba(0,255,145,.08); color:var(--ok); } +.button:disabled { opacity:.3; cursor:not-allowed; } +.buttonA { border-color:rgba(0,136,255,.4); background:rgba(0,136,255,.06); color:rgba(0,136,255,.8); } +.buttonA:hover { background:rgba(0,136,255,.14); color:#55AAFF; border-color:rgba(0,136,255,.7); } +.buttonA:disabled { opacity:.3; } +.buttonX { border-color:rgba(0,255,145,.3); background:rgba(0,255,145,.04); color:rgba(0,255,145,.7); } +.buttonX:hover { background:rgba(0,255,145,.1); color:var(--ok); } +.buttonWarm { border-color:rgba(255,140,0,.35); background:rgba(255,140,0,.04); color:rgba(255,140,0,.7); } +.buttonWarm:hover { background:rgba(255,140,0,.12); color:#FF8C00; } +.buttonWarm:disabled { opacity:.3; } +.buttonDanger { border-color:rgba(255,51,51,.35); background:rgba(255,51,51,.04); color:rgba(255,51,51,.7); } +.buttonDanger:hover { background:rgba(255,51,51,.12); color:#FF3333; } + +/* ── CONTAINER CONTROL ──────────────────────────── */ +.container-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:10px 12px; } +.container-grid .button { padding:10px 8px; } + +/* ── COPY TEXT ──────────────────────────────────── */ +.copy-text { font-size:8px; color:rgba(0,210,130,.45); letter-spacing:.5px; line-height:1.6; padding:8px 12px; border-bottom:1px solid rgba(0,255,145,.05); } + +/* ── TAB BAR ────────────────────────────────────── */ +.tab-bar { display:flex; gap:2px; padding:10px 12px 0; } +.motor_test_tab_button { + font-family:var(--mono); font-size:8px; letter-spacing:1.5px; text-transform:uppercase; + padding:7px 16px; border:1px solid rgba(0,255,145,.15); border-bottom:none; + background:transparent; color:rgba(0,255,145,.3); cursor:pointer; transition:all .15s; +} +.motor_test_tab_button:hover { color:rgba(0,255,145,.6); border-color:rgba(0,255,145,.35); } +.motor_test_tab_button.is_active { background:rgba(0,255,145,.06); color:#00ff91; border-color:rgba(0,255,145,.4); } +.tab-content-wrap { border-top:1px solid rgba(0,255,145,.08); } + +/* ── TAB PANELS ─────────────────────────────────── */ +.motor_test_tab_panel { display:none; } +.motor_test_tab_panel.is_active { display:block; } + +/* ── TWO-COLUMN TAB LAYOUT ──────────────────────── */ +.tab-row { display:grid; grid-template-columns:1fr 1fr; gap:0; } +.tab-box { padding:12px; } +.tab-box + .tab-box { border-left:1px solid rgba(0,255,145,.06); } +.tab-box-lbl { font-size:6px; letter-spacing:4px; color:rgba(0,255,145,.35); text-transform:uppercase; margin-bottom:8px; } + +/* ── WHEEL SELECTOR ─────────────────────────────── */ +.wheel_selector { display:grid; grid-template-columns:1fr 1fr; gap:4px; } +.wheel_option { display:flex; align-items:center; gap:6px; cursor:pointer; padding:6px 8px; border:1px solid rgba(0,255,145,.1); background:rgba(0,255,145,.02); transition:all .12s; } +.wheel_option:hover { border-color:rgba(0,255,145,.3); background:rgba(0,255,145,.05); } +.wheel_option input[type="radio"] { accent-color:var(--ok); width:12px; height:12px; flex-shrink:0; } +.wheel_option span { font-size:8px; letter-spacing:.8px; color:rgba(0,255,145,.6); } +.wheel_option:has(input:checked) { border-color:rgba(0,255,145,.5); background:rgba(0,255,145,.07); } +.wheel_option:has(input:checked) span { color:var(--ok); } + +/* ── MOTOR TEST GRID ────────────────────────────── */ +.motor_test_grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; } +.motor_test_grid .button { padding:12px 8px; } + +/* ── NEUTRAL TOOLBAR ────────────────────────────── */ +.neutral-toolbar { display:flex; gap:6px; padding:8px 12px; border-bottom:1px solid rgba(0,255,145,.05); } +.neutral-toolbar .button { padding:7px 14px; font-size:8px; } + +/* ── NEUTRAL CARDS ──────────────────────────────── */ +.steering_neutral_grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(130px, 1fr)); gap:6px; padding:12px; } +.steering_neutral_card { border:1px solid rgba(0,255,145,.12); background:rgba(0,255,145,.025); padding:10px; } +.steering_neutral_card.is_dirty { border-color:rgba(255,140,0,.4); background:rgba(255,140,0,.03); } +.steering_neutral_compact_row { display:flex; flex-direction:column; gap:8px; } +.steering_neutral_card_header_compact { } +.steering_neutral_title { font-size:8px; letter-spacing:1.5px; color:rgba(0,255,145,.7); text-transform:uppercase; display:block; } +.steering_neutral_value_row_compact { display:flex; align-items:center; gap:6px; } +.steering_neutral_value { font-size:14px; font-weight:700; color:rgba(0,255,145,.9); letter-spacing:2px; flex:1; text-align:center; } +.is_dirty .steering_neutral_value { color:#FF8C00; } +.steering_neutral_adjust { padding:4px 10px !important; font-size:12px !important; letter-spacing:0 !important; } + +/* ── BACK LINKS ─────────────────────────────────── */ +.back-row { display:flex; gap:12px; padding:10px 12px; } +.back-link { font-family:var(--mono); font-size:8px; letter-spacing:1.5px; text-transform:uppercase; color:rgba(0,255,145,.4); text-decoration:none; padding:7px 14px; border:1px solid rgba(0,255,145,.15); transition:all .15s; } +.back-link:hover { color:rgba(0,255,145,.8); border-color:rgba(0,255,145,.4); } diff --git a/ExoMy_Software-master/gui/admin-motor-test.html b/ExoMy_Software-master/gui/admin-motor-test.html index f7ae6b0..274cd86 100644 --- a/ExoMy_Software-master/gui/admin-motor-test.html +++ b/ExoMy_Software-master/gui/admin-motor-test.html @@ -4,191 +4,7 @@