:root {}
.vdvl-linspeed{--bg:#ffffff;--panel:#ffffff;--muted:#f7f9fc;--border:#e6e9ef;--text:#0f172a;--sub:#48556a;--accent:#0d6efd;--ok:#16a34a;--warn:#f59e0b;--err:#dc2626;--shadow:0 10px 30px rgba(2,6,23,.08);--radius:16px}
.vdvl-linspeed .wrap{max-width:1180px;margin:0 auto;padding:20px}
.vdvl-linspeed .card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}
.vdvl-linspeed .row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.vdvl-linspeed .brand{font-weight:700}
.vdvl-linspeed .tag{font-size:12px;color:var(--sub)}
.vdvl-linspeed .controls{display:flex;gap:8px;flex-wrap:wrap}
.vdvl-linspeed button{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);color:var(--text);border-radius:12px;padding:8px 12px;cursor:pointer;transition:.15s}
.vdvl-linspeed button:hover{border-color:#cfd6e3;transform:translateY(-1px)}
.vdvl-linspeed .btn-accent{background:var(--accent);border-color:var(--accent);color:#fff}
.vdvl-linspeed .grid{display:grid;grid-template-columns:1fr;gap:16px}
@media(min-width:1050px){.vdvl-linspeed .grid{grid-template-columns:1.45fr .95fr}}

.vdvl-linspeed .viewport{position:relative;height:var(--h,320px);border:1px solid var(--border);border-radius:14px;overflow:hidden;background:linear-gradient(180deg,#f8fbff 0,#edf3ff 46%,#e9eff7 46%,#e9eff7 100%)}
.vdvl-linspeed .road{position:absolute;left:0;right:0;bottom:0;height:44%;background:#eef2f7;border-top:1px solid #dde3ec;z-index:1}
.vdvl-linspeed .ticks{position:absolute;left:60px;right:60px;bottom:44%;height:0;transform:translateY(24px);z-index:2}
.vdvl-linspeed .tick{position:absolute;bottom:0;width:2px;height:10px;background:#a1adc5;border-radius:2px}
.vdvl-linspeed .tick-label{position:absolute;bottom:14px;transform:translateX(-50%);font-size:12px;color:#5b6785}
.vdvl-linspeed .finish{position:absolute;bottom:44%;transform:translateY(24px);width:0;height:0;z-index:3}
.vdvl-linspeed .finish .flag{position:absolute;bottom:0;left:0;width:4px;height:28px;background:var(--err);border-radius:2px}
.vdvl-linspeed .finish .banner{position:absolute;bottom:18px;left:3px;width:16px;height:10px;background:var(--err);clip-path:polygon(0 0,100% 0,100% 100%,60% 70%,0 100%)}
.vdvl-linspeed .car{position:absolute;bottom:calc(44% - 38px);width:82px;height:34px;background:linear-gradient(180deg,#3cb4ff,#0aa1ff);border:2px solid #0963a0;border-radius:10px;box-shadow:0 8px 16px rgba(2,6,23,.18);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:13px;text-shadow:0 1px 0 rgba(0,0,0,.25);z-index:4}
.vdvl-linspeed .wheel{position:absolute;bottom:-9px;width:14px;height:14px;background:#2b3240;border-radius:50%;box-shadow:inset 0 0 0 2px #90a2bf}
.vdvl-linspeed .w1{left:10px}.vdvl-linspeed .w2{right:10px}
.vdvl-linspeed .badge-cur{position:absolute;top:12px;left:14px;background:#0000000d;color:#0f172a;border:1px solid #e6e9ef;border-radius:999px;padding:6px 10px;font-size:12px;backdrop-filter:blur(2px);z-index:4}

.vdvl-linspeed #status{display:grid;gap:10px}
.vdvl-linspeed .form-row{display:grid;grid-template-columns:170px 1fr;gap:10px;align-items:center}
.vdvl-linspeed .pill{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:var(--muted)}
.vdvl-linspeed .pill.ok{background:#eaf7ef;border-color:#d2f1da;color:#166534}
.vdvl-linspeed .pill.warn{background:#fff7e6;border-color:#ffe3b3;color:#92400e}
.vdvl-linspeed .pill.err{background:#fff1f1;border-color:#ffd2d2;color:#991b1b}
.vdvl-linspeed input[type="number"], .vdvl-linspeed input[type="range"]{width:100%}
.vdvl-linspeed .math{padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:12px;font-size:17px}
.vdvl-linspeed .math .k{color:#5b6785;min-width:110px;display:inline-block}
.vdvl-linspeed .math .val{font-weight:700}
.vdvl-linspeed .hint{font-size:13px;color:var(--sub)}
.vdvl-linspeed #distancePill{min-width:150px;justify-content:center}
.vdvl-linspeed .mini{display:flex;gap:8px;flex-wrap:wrap}
