:root{--bg:#0a0e13;--bg2:#0f151d;--panel:#0d131bd6;--panel-solid:#111821;--line:#233041;--line2:#2f3f54;--text:#dbe5ef;--muted:#8797ab;--dim:#5d6c80;--accent:#63cdfb;--accent2:#b28dff;--amber:#ffb547;--bad:#ff5f6d;--good:#44d39a;--mono:"JetBrains Mono", "D2Coding", "Cascadia Mono", Consolas, ui-monospace, monospace;--sans:"Pretendard", "Pretendard Variable", "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--sans);margin:0;font-size:13px}button,input,select{font:inherit;color:inherit}a{color:var(--accent)}.app{flex-direction:column;height:100%;display:flex}.page{flex:1;min-height:0;position:relative}.loading{color:var(--muted);padding:40px}.topbar{border-bottom:1px solid var(--line);background:linear-gradient(#0d131a,#0a0e13);flex:none;align-items:center;gap:18px;height:48px;padding:0 14px;display:flex}.brand{color:var(--accent);letter-spacing:.02em;align-items:center;gap:8px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.tabs{scrollbar-width:none;flex:1;gap:4px;min-width:0;display:flex;overflow-x:auto}.tab{cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:8px;flex-direction:column;align-items:flex-start;padding:4px 12px;line-height:1.15;display:flex}.tab b{font-size:13px;font-weight:600}.tab small{color:var(--dim);font-size:10.5px}.tab:hover{background:#121a24}.tab.on{border-color:var(--line2);background:#131c27}.tab.on b{color:var(--accent)}.topright{align-items:center;gap:12px;font-size:12px;display:flex}.engine-badge{color:var(--accent2);font-family:var(--mono);border:1px solid #3b2d5c;border-radius:999px;padding:2px 9px;font-size:11px}.src{color:var(--muted);text-decoration:none}.src:hover{color:var(--text)}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);border-radius:10px}.panel h3{letter-spacing:.06em;color:var(--muted);text-transform:uppercase;margin:0;font-size:11.5px;font-weight:700}.sec{border-bottom:1px solid var(--line);padding:10px 12px}.sec:last-child{border-bottom:none}.row{align-items:center;gap:8px;display:flex}.row+.row{margin-top:6px}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.dim{color:var(--dim)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.btn{border:1px solid var(--line2);cursor:pointer;white-space:nowrap;background:#142030;border-radius:7px;padding:5px 10px}.btn:hover{border-color:var(--accent)}.btn.on{border-color:var(--accent);color:var(--accent);background:#183147}.btn.warn{color:var(--amber);border-color:#6b4a1a}.btn.bad{color:var(--bad);border-color:#6d2a33}.btn.small{padding:2px 7px;font-size:12px}.btn:disabled{opacity:.45;cursor:default}.seg{border:1px solid var(--line2);border-radius:7px;display:inline-flex;overflow:hidden}.seg button{cursor:pointer;border:none;border-right:1px solid var(--line2);white-space:nowrap;background:#111a25;padding:4px 9px}.seg button:last-child{border-right:none}select{border:1px solid var(--line2);background:#111a25;border-radius:7px;max-width:100%;padding:4px 8px}input[type=range]{accent-color:var(--accent);width:100%}input[type=number]{border:1px solid var(--line2);background:#0f1720;border-radius:6px;width:80px;padding:3px 6px}label.check{cursor:pointer;align-items:center;gap:6px;display:flex}.kv{grid-template-columns:auto 1fr;gap:2px 10px;display:grid}.kv>span:nth-child(2n){font-family:var(--mono);text-align:right;font-variant-numeric:tabular-nums}.tag{border:1px solid var(--line2);color:var(--muted);border-radius:999px;padding:1px 7px;font-size:11px;display:inline-block}.tag.good{color:var(--good);border-color:#1e5b44}.tag.bad{color:var(--bad);border-color:#6d2a33}.tag.warn{color:var(--amber);border-color:#6b4a1a}.note{color:var(--muted);font-size:12px;line-height:1.5}table.grid{border-collapse:collapse;width:100%;font-size:12px}table.grid th,table.grid td{border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;padding:4px 6px}table.grid th{color:var(--muted);background:var(--panel-solid);font-weight:600;position:sticky;top:0}table.grid td:first-child,table.grid th:first-child{text-align:left}table.grid tr:hover td{background:#121b26}:root{--glass:#0a0d14a3;--glass-hi:#0e131cb8;--glass-blur:blur(20px) saturate(1.2);--glass-line:#ffffff1f;--r:16px;--r-sm:12px;--ink:#f2f5f8;--ink-2:#c4ccd6;--ink-3:#8b96a5}.glass{background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-line);border-radius:var(--r);box-shadow:0 10px 40px #00000047}.sim{color:var(--ink);position:absolute;inset:0;overflow:hidden}.sim canvas.view{position:absolute;inset:0}.hud{pointer-events:none;z-index:2;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;top:16px;left:50%;transform:translate(-50%)}.hud-row{border-radius:999px;padding:8px 6px;display:flex}.hud-row .m{text-align:center;border-right:1px solid #ffffff14;min-width:92px;padding:0 14px}.hud-row .m:last-child{border-right:none}.hud-row .m b{font:600 20px/1.15 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--ink);display:block}.hud-row .m small{color:var(--ink-3);font-size:11px;font-weight:500}.hud-row .m.good b{color:#7ee2b3}.hud-row .m.warn b{color:#ffc56b}.hud-row .m.bad b{color:#ff7a85}.hud-sub{gap:6px;display:flex}.chip{font:500 11.5px var(--sans);font-variant-numeric:tabular-nums;color:var(--ink-2);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a0e146b;border:1px solid #ffffff14;border-radius:999px;padding:3px 10px}.alert{font:600 13px var(--sans);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:999px;padding:7px 16px}.alert.bad{color:#ffe1e4;background:#781622b3;border:1px solid #ff6e7d99}.alert.warn{color:#fff0d6;background:#6e480ca8;border:1px solid #ffbe5a8c}.alert.info{color:#dff2ff;background:#0e283c9e;border:1px solid #78c8ff66}.dock{z-index:3;pointer-events:none;align-items:flex-start;gap:8px;display:flex;position:absolute;top:16px;bottom:92px}.dock>*{pointer-events:auto}.dock-left{left:16px}.dock-right{flex-direction:row-reverse;right:16px}.dock-rail{border-radius:var(--r);flex-direction:column;gap:2px;padding:6px;display:flex}.rail-btn{cursor:pointer;color:#aab4c1;background:0 0;border:none;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;width:54px;height:54px;display:flex}.rail-btn svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.rail-btn span{font:500 10.5px var(--sans)}.rail-btn:hover{color:var(--ink);background:#ffffff0f}.rail-btn.on{color:#bfe4ff;background:#78beff29}.dock-panel{flex-direction:column;width:316px;max-height:100%;display:flex;overflow:hidden}.dock-head{justify-content:space-between;align-items:center;padding:14px 16px 6px;display:flex}.dock-head b{font:600 15px var(--sans)}.dock-head .x{color:var(--ink-3);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:20px;line-height:1}.dock-head .x:hover{color:var(--ink)}.dock-body{flex-direction:column;gap:12px;padding:4px 16px 16px;display:flex;overflow-y:auto}.dock-body .meta{color:var(--ink-3);margin:0;font-size:12px;line-height:1.5}.dock-body select.full{border:1px solid var(--glass-line);background:#ffffff0f;border-radius:10px;width:100%;padding:8px 10px}.field{flex-direction:column;gap:6px;display:flex}.field .lab{font:500 12px var(--sans);color:var(--ink-3)}.range{align-items:center;gap:10px;display:flex}.range input{flex:1}.range .val,.cruise .val{text-align:right;min-width:64px;font:600 13px var(--sans);font-variant-numeric:tabular-nums}.range .val small,.cruise .val small{color:var(--ink-3);font-weight:500}.btns{flex-wrap:wrap;gap:6px;display:flex}.dock .btn,.pilotbar .btn{border:1px solid var(--glass-line);background:#ffffff0f;border-radius:10px;padding:6px 10px;font-size:12.5px}.dock .btn:hover{border-color:#96d2ff80}.seg{border:1px solid var(--glass-line);background:#ffffff0d;border-radius:10px;gap:2px;padding:2px;display:inline-flex;overflow:visible}.seg button{cursor:pointer;color:var(--ink-2);white-space:nowrap;background:0 0;border:none;border-radius:8px;padding:5px 10px;font-size:12.5px}.seg button.on{color:#e2f3ff;background:#8cc8ff33}.kv{grid-template-columns:auto 1fr;gap:6px 12px;font-size:12.5px;display:grid}.kv>span:nth-child(odd){color:var(--ink-3)}.kv>span:nth-child(2n){text-align:right;font-variant-numeric:tabular-nums;font-family:var(--sans);font-weight:500}.big-metric{align-items:baseline;gap:10px;display:flex}.big-metric span{font:700 34px var(--sans);font-variant-numeric:tabular-nums}.big-metric span.good{color:#7ee2b3}.big-metric span.warn{color:#ffc56b}.big-metric span.bad{color:#ff7a85}.big-metric small{color:var(--ink-3);font-size:12px}label.check{cursor:pointer;color:var(--ink-2);align-items:center;gap:8px;font-size:13px;display:flex}.pilotbar{z-index:3;white-space:nowrap;border-radius:999px;align-items:center;gap:10px;padding:8px 10px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.pilotbar .seg{border-radius:999px}.pilotbar .seg button{border-radius:999px;padding:6px 14px}.pilotbar .cruise{align-items:center;gap:8px;width:220px;display:flex}.pilotbar .cruise input{flex:1}.pilotbar select{border:1px solid var(--glass-line);background:#ffffff0f;border-radius:999px;padding:5px 8px;font-size:12.5px}.pilotbar .sep{background:#ffffff1a;width:1px;height:22px}.icon-btn{border:1px solid var(--glass-line);cursor:pointer;width:34px;height:34px;color:var(--ink-2);background:#ffffff0d;border-radius:999px;justify-content:center;align-items:center;font-size:13px;display:inline-flex}.icon-btn svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}.icon-btn:hover{color:var(--ink);border-color:#96d2ff73}.icon-btn.on{color:#e2f3ff;background:#8cc8ff33}.adi{pointer-events:auto;z-index:2;border-radius:999px;padding:6px;line-height:0;position:absolute;bottom:16px;left:86px}.keys{color:var(--ink-2);z-index:3;padding:12px 16px;font-size:12.5px;line-height:1.9;position:absolute;bottom:76px;left:50%;transform:translate(-50%)}.keys kbd{font:600 11px var(--sans);color:var(--ink);border:1px solid #ffffff38;border-bottom-width:2px;border-radius:6px;margin:0 1px;padding:1px 6px}.badge-engine{font:500 11px var(--sans);color:var(--ink-3);z-index:1;background:#0a0e1459;border-radius:999px;padding:4px 10px;position:absolute;bottom:22px;right:16px}.sim .bottom{z-index:2;grid-template-columns:repeat(4,1fr);gap:8px;width:min(1180px,100% - 200px);height:168px;display:grid;position:absolute;bottom:72px;left:50%;transform:translate(-50%)}.sim .bottom .chart{background:var(--glass);min-width:0;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-line);border-radius:var(--r-sm);flex-direction:column;padding:8px 10px;display:flex;position:relative}.sim .bottom .chart canvas{flex:1;width:100%;min-height:0}.sim.with-charts .dock{bottom:252px}.chart .ttl{color:var(--ink-3);justify-content:space-between;gap:6px;font-size:11px;display:flex}.chart .ttl .mono{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart .legend{color:var(--ink-3);flex-wrap:wrap;gap:8px;font-size:10.5px;display:flex}.chart .legend i{vertical-align:middle;width:10px;height:2px;margin-right:3px;display:inline-block}.fault-ring{cursor:pointer;margin:0 auto;display:block}.toast-error{border:1px solid var(--bad);color:#ffd7db;z-index:5;background:#461018d9;border-radius:12px;max-width:70%;padding:8px 14px;position:absolute;bottom:80px;left:50%;transform:translate(-50%)}.parts{grid-template-columns:290px 1fr 360px;display:grid;position:absolute;inset:0}.parts>aside{border-right:1px solid var(--line);background:var(--bg2);overflow-y:auto}.parts>aside.right{border-right:none;border-left:1px solid var(--line)}.parts .viewport{min-width:0;position:relative}.parts .viewport canvas{position:absolute;inset:0}.parts .tree button{text-align:left;cursor:pointer;background:0 0;border:none;border-bottom:1px solid #16202b;align-items:center;gap:8px;width:100%;padding:6px 12px;display:flex}.parts .tree button:hover{background:#121b26}.parts .tree button.on{background:#15283a}.parts .tree .sw{border:1px solid #0006;border-radius:2px;flex:none;width:10px;height:10px}.parts .tree .grp{color:var(--dim);letter-spacing:.06em;padding:8px 12px 4px;font-size:11px}.parts .toolbar{flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;display:flex;position:absolute;top:10px;left:10px}.parts .sheet-wrap{background:#d9dde2;display:none;position:absolute;inset:0;overflow:auto}.parts .sheet-wrap.on{display:block}.parts .sheet-wrap svg{width:calc((100% - 32px) * var(--zoom,1));background:#fbfbf8;height:auto;margin:16px auto;display:block;box-shadow:0 6px 30px #0007}.dimlist td:nth-child(2){color:#e8f4ff}.doc{position:absolute;inset:0;overflow-y:auto}.doc .inner{max-width:1240px;margin:0 auto;padding:18px 20px 60px}.doc h1{margin:4px 0;font-size:20px}.doc h2{color:var(--accent);margin:26px 0 8px;font-size:15px}.doc p,.doc li{color:#c7d3df;line-height:1.65}.doc .cards{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px;display:grid}.doc .card{padding:12px 14px}.doc .eq{font-family:var(--mono);border:1px solid var(--line);white-space:pre;color:#d9ecff;background:#0e151d;border-radius:8px;padding:8px 10px;font-size:12.5px;line-height:1.6;overflow-x:auto}.plot{width:100%;height:260px;display:block}.spinner{border:2px solid var(--line2);border-top-color:var(--accent);vertical-align:-2px;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:1100px){.sim .bottom{grid-template-columns:repeat(2,1fr);width:calc(100% - 32px)}.sim .bottom .chart:nth-child(n+3){display:none}.hud-row .m{min-width:70px;padding:0 8px}.adi{display:none}.parts{grid-template-columns:230px 1fr}.parts>aside.right{display:none}}@media (max-width:760px){.topbar{flex-wrap:wrap;gap:6px;height:auto;padding:6px 10px}.topright,.tab small{display:none}.hud{width:calc(100% - 16px);top:8px}.hud-row{border-radius:16px;flex-wrap:wrap;justify-content:center}.hud-row .m{min-width:60px;padding:0 6px}.hud-row .m b{font-size:15px}.hud-sub{display:none}.dock{top:auto;bottom:74px}.dock-left{left:8px}.dock-right{right:8px}.dock-rail{flex-direction:row}.dock-left .dock-rail,.dock-right .dock-rail{position:absolute;bottom:0}.dock-right .dock-rail{right:0}.rail-btn{width:44px;height:44px}.rail-btn span{display:none}.dock-panel{width:auto;max-height:46vh;position:fixed;bottom:132px;left:8px;right:8px}.pilotbar{max-width:calc(100% - 16px);bottom:8px;overflow-x:auto}.pilotbar .cruise{width:120px}.sim .bottom,.badge-engine{display:none}.parts{grid-template-rows:46% 1fr;grid-template-columns:1fr}.parts>aside{border-right:none}.parts>aside:first-child{order:2}}
