:root{--bg:#0f1216;--bg-2:#151a20;--panel:#151a20db;--panel-solid:#171c23;--line:#242c36;--line-2:#2f3947;--text:#e6edf3;--text-2:#9fb3c8;--text-3:#66798f;--accent:#3ddc97;--accent-2:#1fbf7a;--warn:#ff7a59;--info:#4fc3f7;--gold:#ffd54f;--radius:14px;--radius-s:10px;--shadow:0 10px 30px #00000073;--tap:44px;--rail:64px;--inspector:340px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", Inter, "Segoe UI", Roboto, system-ui, sans-serif;--mono:"SF Mono", ui-monospace, Menlo, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-user-select:none;user-select:none;overscroll-behavior:none;font-size:14px;line-height:1.4;overflow:hidden}input,textarea,select,button{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}input,textarea{-webkit-user-select:text;user-select:text}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px}.btn{border-radius:var(--radius-s);background:var(--bg-2);border:1px solid var(--line-2);min-height:40px;color:var(--text);white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:600;transition:background .15s,border-color .15s,transform 80ms;display:inline-flex}.btn:hover{background:#1c232c;border-color:#3a4656}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#062a1c}.btn.primary:hover{background:#55e6a8}.btn.warn{color:#ffb39e;background:#ff7a5924;border-color:#ff7a5980}.btn.ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn.ghost:hover{color:var(--text);background:#ffffff0d}.btn.sm{border-radius:8px;min-height:32px;padding:0 10px;font-size:12.5px}.btn.icon{width:40px;padding:0}.btn svg{flex:none;width:18px;height:18px}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:var(--text-2)}.dim{color:var(--text-3)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.chip{background:var(--bg-2);border:1px solid var(--line-2);height:24px;color:var(--text-2);border-radius:999px;align-items:center;gap:6px;padding:0 9px;font-size:11.5px;font-weight:600;display:inline-flex}.chip svg{flex:none;width:14px;height:14px}.chip.ok{color:var(--accent);background:#3ddc9714;border-color:#3ddc9766}.chip.warn{color:#ffb39e;background:#ff7a5914;border-color:#ff7a5966}.chip.info{color:#9fdcff;background:#4fc3f714;border-color:#4fc3f766}.chip.gold{color:var(--gold);background:#ffd54f14;border-color:#ffd54f66}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--text-2);letter-spacing:.01em;font-size:12px;font-weight:600}.input{border-radius:var(--radius-s);background:var(--bg);border:1px solid var(--line-2);height:42px;color:var(--text);outline:none;width:100%;padding:0 12px}.input:focus{border-color:var(--accent)}textarea.input{resize:vertical;height:auto;padding:10px 12px}.seg{background:var(--bg);border:1px solid var(--line-2);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.seg button{min-height:32px;color:var(--text-2);border-radius:8px;padding:0 12px;font-size:12.5px;font-weight:600}.seg button.on{background:var(--bg-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--line-2)}.seg.fill{display:flex}.seg.fill button{flex:1}.slider{grid-template-columns:1fr auto;align-items:center;gap:10px;padding:6px 0;display:grid}.slider .lab{color:var(--text-2);grid-column:1/-1;justify-content:space-between;font-size:12.5px;display:flex}.slider .lab b{color:var(--text);font-weight:600;font-family:var(--mono);font-variant-numeric:tabular-nums}.slider input[type=range]{width:100%;height:28px;accent-color:var(--accent);grid-column:1/-1;margin:0}.switch{justify-content:space-between;align-items:center;min-height:36px;font-size:13px;display:flex}.switch .tg{background:var(--line-2);border-radius:13px;flex:none;width:42px;height:26px;transition:background .15s;position:relative}.switch .tg:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch .tg.on{background:var(--accent)}.switch .tg.on:after{transform:translate(16px)}.card{background:var(--panel-solid);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.h{letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin:14px 0 8px;font-size:12px;font-weight:700}.h:first-child{margin-top:0}.kv{grid-template-columns:1fr auto;gap:4px 12px;font-size:13px;display:grid}.kv span{color:var(--text-2)}.kv b{font-weight:600;font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}hr.sep{border:0;border-top:1px solid var(--line);margin:12px 0}.login{background:radial-gradient(1200px 600px at 70% -10%, #3ddc971f, transparent), var(--bg);place-items:center;height:100%;padding:20px;display:grid}.login .card{flex-direction:column;gap:14px;width:360px;max-width:100%;padding:28px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand .logo{border:1px solid var(--line-2);background:#0b0e12;border-radius:12px;place-items:center;width:40px;height:40px;display:grid}.brand .logo svg{width:26px;height:26px}.brand h1{letter-spacing:-.01em;margin:0;font-size:18px}.brand small{color:var(--text-3);font-size:12px;font-weight:500;display:block}.cases{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(14px);height:56px;padding:0 16px;padding-top:env(safe-area-inset-top);box-sizing:content-box;align-items:center;gap:12px;display:flex}.cases .list{flex:1;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-content:start;gap:14px;padding:18px;display:grid;overflow:auto}.case-card{text-align:left;flex-direction:column;gap:10px;min-height:140px;transition:border-color .15s,transform .1s;display:flex}.case-card:hover{border-color:var(--line-2)}.case-card:active{transform:scale(.99)}.case-card .title{font-size:16px;font-weight:700}.case-card .vers{flex-wrap:wrap;gap:4px;display:flex}.case-card .vers i{background:var(--line-2);border-radius:3px;width:10px;height:10px;display:inline-block}.case-card .vers i.scan{background:#8da2b8}.case-card .vers i.auto{background:var(--accent)}.case-card .vers i.edit{background:var(--gold)}.case-card .vers i.shell{background:var(--info)}.new-card{color:var(--text-2);border-style:dashed;place-items:center;min-height:140px;font-weight:600;display:grid}.new-card:hover{color:var(--text);border-color:var(--accent)}.modal-bg{z-index:50;background:#0000008c;place-items:center;padding:16px;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.modal{flex-direction:column;gap:12px;width:440px;max-width:100%;padding:22px;display:flex}.modal h3{margin:0 0 4px;font-size:17px}.editor{grid-template-rows:auto 1fr;grid-template-columns:var(--rail) 1fr auto;grid-template-areas:"top top top""rail view insp";height:100%;display:grid}.editor .topbar{grid-area:top}.rail{border-right:1px solid var(--line);background:var(--bg-2);flex-direction:column;grid-area:rail;align-items:center;gap:4px;padding:10px 0;display:flex;overflow:hidden auto}.rail .grp{flex-direction:column;align-items:center;gap:3px;width:100%;display:flex}.rail .divider{background:var(--line-2);width:28px;height:1px;margin:6px 0}.tool{width:48px;height:48px;color:var(--text-2);border-radius:12px;place-items:center;transition:background .12s,color .12s;display:grid;position:relative}.tool svg{width:22px;height:22px}.tool:hover{color:var(--text);background:#ffffff0f}.tool.on{color:var(--accent);background:#3ddc9726;box-shadow:inset 0 0 0 1px #3ddc9780}.tool .key{color:var(--text-3);font-size:9px;font-family:var(--mono);position:absolute;bottom:3px;right:5px}.tool[data-tip]:hover:after{content:attr(data-tip);border:1px solid var(--line-2);white-space:nowrap;color:var(--text);z-index:20;pointer-events:none;background:#0b0e12;border-radius:8px;padding:5px 9px;font-size:12px;position:absolute;top:50%;left:56px;transform:translateY(-50%)}.view{background:radial-gradient(900px 600px at 50% 30%, #1a212a, var(--bg));grid-area:view;min-width:0;min-height:0;position:relative}.view canvas{display:block;position:absolute;top:0;bottom:0;left:0;right:0;width:100%!important;height:100%!important}.view .hud{pointer-events:none;flex-wrap:wrap;gap:6px;display:flex;position:absolute;bottom:12px;left:12px}.view .hud>*{pointer-events:auto}.view .views{flex-direction:column;gap:4px;display:flex;position:absolute;top:12px;right:12px}.view .views button,.view .hud .btn{background:var(--panel);-webkit-backdrop-filter:blur(10px)}.view .shading{position:absolute;top:12px;left:12px}.view .shading .seg{background:var(--panel);-webkit-backdrop-filter:blur(10px)}.view .busy{-webkit-backdrop-filter:blur(3px);z-index:5;background:#0f121673;place-items:center;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.view .busy .box{background:var(--panel-solid);border:1px solid var(--line-2);box-shadow:var(--shadow);border-radius:14px;align-items:center;gap:12px;padding:14px 20px;font-weight:600;display:flex}.spin{border:2.5px solid var(--line-2);border-top-color:var(--accent);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.view .empty{place-items:center;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.view .empty .card{text-align:center;flex-direction:column;gap:12px;width:420px;max-width:calc(100% - 32px);padding:26px;display:flex}.drop{border:2px dashed var(--line-2);border-radius:var(--radius);color:var(--text-2);padding:22px;transition:border-color .15s,background .15s}.drop.over{border-color:var(--accent);background:#3ddc970f}.insp{width:var(--inspector);border-left:1px solid var(--line);background:var(--bg-2);flex-direction:column;grid-area:insp;min-height:0;display:flex}.insp .tabs{border-bottom:1px solid var(--line);gap:2px;padding:6px 8px 0;display:flex}.insp .tabs button{white-space:nowrap;min-height:38px;color:var(--text-2);border-bottom:2px solid #0000;border-radius:10px 10px 0 0;flex:1;padding:0 4px;font-size:12.5px;font-weight:600}.insp .tabs button.on{color:var(--text);border-bottom-color:var(--accent)}.insp .body{padding:14px;padding-bottom:calc(14px + env(safe-area-inset-bottom));flex:1;overflow:auto}.insp .foot{border-top:1px solid var(--line);flex-wrap:wrap;gap:8px;padding:10px 14px;display:flex}.zone-item{border:1px solid var(--line);background:var(--bg);cursor:pointer;border-radius:10px;grid-template-columns:8px 1fr auto;align-items:center;gap:10px;margin-bottom:6px;padding:8px 10px;display:grid}.zone-item.on{border-color:var(--accent)}.zone-item i{background:var(--warn);border-radius:4px;width:8px;height:28px}.zone-item.exp i{background:var(--info)}.zone-item .n{font-size:13px;font-weight:600}.zone-item .d{color:var(--text-3);font-size:11.5px}.timeline{flex-direction:column;gap:6px;display:flex}.ver{border:1px solid var(--line);background:var(--bg);text-align:left;border-radius:10px;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.ver.on{border-color:var(--accent);background:#3ddc970f}.ver .k{color:#0b0e12;border-radius:8px;place-items:center;width:26px;height:26px;font-size:11px;font-weight:800;display:grid}.ver .k.scan{background:#8da2b8}.ver .k.auto{background:var(--accent)}.ver .k.edit{background:var(--gold)}.ver .k.shell{background:var(--info)}.ver .t{font-size:13px;font-weight:600}.ver .s{color:var(--text-3);font-size:11.5px}.lm-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.lm-grid button{border:1px solid var(--line);background:var(--bg);min-height:38px;color:var(--text-2);border-radius:10px;padding:0 8px;font-size:12.5px;font-weight:600}.lm-grid button.on{border-color:var(--gold);color:var(--gold);background:#ffd54f0f}.stat-row{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.stat{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px}.stat b{font-size:18px;font-family:var(--mono);font-variant-numeric:tabular-nums;display:block}.stat span{color:var(--text-3);font-size:11px}.toasts{left:50%;bottom:calc(18px + env(safe-area-inset-bottom));z-index:100;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;transform:translate(-50%)}.toast{background:var(--panel-solid);border:1px solid var(--line-2);box-shadow:var(--shadow);border-radius:12px;padding:10px 16px;font-size:13px;font-weight:600;animation:.25s up}.toast.ok{border-color:#3ddc9780}.toast.err{color:#ffb39e;border-color:#ff7a5999}@keyframes up{0%{opacity:0;transform:translateY(12px)}}.help-key{background:var(--bg);border:1px solid var(--line-2);min-width:20px;font-family:var(--mono);color:var(--text-2);border-radius:6px;padding:1px 6px;font-size:11px;display:inline-block}@media (max-width:1100px){:root{--inspector:300px}}@media (max-width:900px),(pointer:coarse) and (max-width:1200px){.editor{grid-template:"top""view"1fr"rail"/1fr}.rail{padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--line);height:calc(64px + env(safe-area-inset-bottom));flex-direction:row;justify-content:flex-start;overflow:auto hidden}.rail .grp{flex-direction:row;width:auto}.rail .divider{width:1px;height:28px;margin:0 6px}.tool[data-tip]:hover:after{display:none}.insp{z-index:40;width:min(380px,92vw);box-shadow:var(--shadow);transition:transform .22s;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.insp.open{transform:none}.insp .body{padding-top:calc(14px + env(safe-area-inset-top))}.view .views{top:64px}}@media (pointer:coarse){.tool{width:52px;height:52px}.slider input[type=range]{height:36px}.btn{min-height:44px}}
