:root{color-scheme:dark;--bg:#0d121a;--panel:#17212e;--line:#2b3b4d;--text:#e5edf6;--muted:#9cafc2;--accent:#88e1c1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px system-ui}button,select,input{font:inherit;color:inherit}button,select,input[type=number]{border:1px solid var(--line);border-radius:9px;background:#1a2838;padding:9px 13px}button{cursor:pointer}button:hover{border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}.primary{background:var(--accent);color:#10251f;border:0;font-weight:650}small{display:block;color:var(--muted);font-size:12px;line-height:1.5}header{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 25px;border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;align-items:center;gap:12px}.brand b{font-size:21px}.logo{font-size:25px;color:var(--accent);border:1px solid #496458;border-radius:12px;padding:7px 13px}.badge,.eyebrow{font-size:10px;letter-spacing:1.3px;color:var(--accent)}.badge{background:#20372f;padding:6px 8px;border-radius:5px}nav{display:flex;gap:25px;color:#687e94;font-size:12px}nav .active{color:var(--accent)}main{height:calc(100dvh - 82px);min-height:650px;position:relative;overflow:hidden}#plot{position:absolute;inset:0}#dropzone{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);width:min(520px,90%);text-align:center;padding:42px;border:1px dashed #526579;border-radius:22px;background:#141e2bbf}#dropzone.drag{border-color:var(--accent);background:#203a33}h1{font-size:32px;letter-spacing:-1px;margin:15px 0}h2{font-size:18px;margin:7px 0 12px}p{color:var(--muted);line-height:1.6}.upload-icon{font-size:35px;color:var(--accent)}#dropzone small{margin:18px 0}#recent{width:100%;margin-top:10px}#partbar{position:absolute;top:20px;left:25px;right:25px;display:flex;justify-content:space-between;pointer-events:none}#partbar button{pointer-events:auto}#partname{font-size:16px}#partinfo{max-width:600px;overflow:hidden;text-overflow:ellipsis}#setup{position:absolute;bottom:65px;left:25px;right:25px;display:flex;align-items:end;justify-content:space-between;gap:20px;pointer-events:none}.setup-card{pointer-events:auto;background:#17212ef2;border:1px solid var(--line);border-radius:15px;padding:18px;max-width:460px;box-shadow:0 15px 45px #0003}.setup-card p{margin:4px 0 12px;font-size:12px}.row{display:flex;align-items:center;gap:10px}.row label{display:flex;align-items:center;gap:6px}#radius{width:85px}#gatechips{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}#gatechips button{font-size:12px;color:#ffbf7c;padding:6px 9px}#gatehint{margin-top:10px}.gravity{width:300px}#gravitybuttons{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0}#gravitybuttons .selected{border-color:var(--accent);color:var(--accent);background:#203b34}#confirm{width:100%;margin-top:15px}#resultbar{position:absolute;top:85px;left:25px;display:flex;gap:10px;align-items:center}#stagebadge{color:var(--accent);font-weight:600;min-width:100px}#timeline{position:absolute;bottom:55px;left:50%;transform:translateX(-50%);width:min(860px,calc(100% - 50px));padding:16px 20px;border:1px solid var(--line);border-radius:16px;background:#17212ef5;box-shadow:0 12px 50px #0005}#timeline .row{margin-bottom:15px}#metric{margin-left:auto;color:var(--muted);font-size:12px}.segments{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.segments button{border:0;background:#203044;text-align:left;padding:7px 10px;border-radius:5px;font-size:12px}.segments button.active{background:#27473e;color:var(--accent)}input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}.events{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}#eventinfo{font-size:10px;margin-top:9px}#status{position:absolute;bottom:14px;left:25px;right:25px;color:var(--muted);font-size:12px;pointer-events:none}aside{position:fixed;right:14px;top:94px;bottom:14px;z-index:5;width:330px;background:#182331fa;padding:21px;border:1px solid var(--line);border-radius:16px;overflow:auto;box-shadow:0 20px 60px #0008}aside .row{justify-content:space-between}aside label{display:block;margin:17px 0 8px;font-size:13px}.toggle{display:flex!important;gap:9px;align-items:center}input[type=checkbox]{accent-color:var(--accent)}hr{border:0;border-top:1px solid var(--line);margin:20px 0}a{display:block;color:var(--accent);margin-top:16px;font-size:12px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:10px;color:var(--muted)}details{margin:20px 0}summary{cursor:pointer}dialog{width:min(520px,90%);padding:28px;color:var(--text);background:var(--panel);border:1px solid #526579;border-radius:20px}dialog::backdrop{background:#050b14b8;backdrop-filter:blur(5px)}dialog .row{justify-content:flex-end}.caution{font-size:12px;color:#e2b782}#summary{line-height:1.8}#summary ul{max-height:180px;overflow:auto;font-size:12px}[hidden]{display:none!important}@media(max-width:1000px){nav,.badge{display:none}#setup{gap:10px;left:12px;right:12px}.setup-card{padding:12px}.gravity{width:240px}.brand small{font-size:10px}header{padding:0 12px}#metric{display:none}}

.vector{display:flex;gap:5px;margin:10px 0;align-items:end}.vector label{width:50px;font-size:11px;color:var(--muted)}.vector input{width:100%;padding:6px 4px}.vector button{font-size:11px;padding:7px}.gravity{width:330px}.gravity .row button{font-size:12px}#pickgravity.selected{background:#27473e;border-color:var(--accent)}

#gpuplot{position:absolute;inset:130px 30px 270px 30px}#gpulegend{position:absolute;right:20px;top:170px;color:#9cafc2;font-size:12px;pointer-events:none}#gpulegend div{width:14px;height:180px;margin:8px 0}#gpulegend small{position:absolute;top:28px;left:22px;line-height:65px}

.frame-controls{display:flex;align-items:center;gap:10px;margin-top:8px;font-variant-numeric:tabular-nums;font-size:12px;color:var(--muted)}.frame-controls button{padding:2px 10px;font-size:19px}.frame-controls small{margin-left:auto;font-size:10px}#gpuplot{bottom:295px}

#gatedirection{border-top:1px solid var(--line);padding-top:10px;margin-top:12px}#gatedirection .row{margin-top:9px}#gatedirection button,#activegate{font-size:12px}#pickgatenormal.selected{border-color:var(--accent);color:var(--accent)}.setup-card{max-height:52vh;overflow:auto}
