:root{--bg:#0e1118;--panel:#161b25;--panel2:#1d2330;--line:#2a3243;--tx:#e8ecf4;--mut:#8b95a9;--acc:#3b6fe0;--acc2:#5b8cf0;--glow:rgba(59,111,224,.45);--off:#2f6bf0;--def:#d9dde4;--defl:#a64bf0;--ok:#22c55e;--bad:#ef4444;--ball:#e8741f;--rad:12px;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
body.light{--bg:#f4f4f5;--panel:#fff;--panel2:#f0f1f4;--line:#dcdfe6;--tx:#171b26;--mut:#6a7388;--acc:#2457d6;--acc2:#3b6fe0;--glow:rgba(36,87,214,.28);--def:#eef0f4}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tx);overflow:hidden;font-size:14px;touch-action:manipulation}
button,select,input{font:inherit;color:inherit}
button{cursor:pointer;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:7px 11px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
button:hover:not(:disabled){border-color:var(--acc2)}
button:disabled{opacity:.4;cursor:default}
button.on,.seg button.on{background:var(--acc);border-color:var(--acc);color:#fff}
#editBtn.on,#tmToggle.on{box-shadow:0 0 0 3px var(--glow)}
button.primary{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
button.danger:hover:not(:disabled){border-color:var(--bad);color:var(--bad)}
button.flat{background:none;border-color:transparent}
.ib{padding:7px;min-width:34px;height:34px;justify-content:center}
.ib.mini{min-width:24px;height:24px;padding:3px}
.ib.txt{font-weight:700;font-size:12px}
.i{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
.sp{flex:1}
.vsep{width:1px;height:22px;background:var(--line);margin:0 4px}
.seg{display:inline-flex;background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:2px;gap:2px}
.seg button{border:0;background:none;padding:6px 12px;border-radius:9px}
.seg.wide{display:flex}.seg.wide button{flex:1;justify-content:center}
.pill{background:var(--panel2);border:1px solid var(--line);padding:4px 10px;border-radius:99px;font-size:12px;color:var(--mut)}
#top{height:54px;display:flex;align-items:center;gap:8px;padding:0 10px;background:var(--panel);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:8px;font-weight:800;letter-spacing:.2px}.brand .logo{width:28px;height:28px;border-radius:7px}
.lkall.locked{background:var(--acc);color:#fff;border-color:var(--acc)}
.cloudBtn{font-weight:600}
main{display:flex;height:calc(100% - 54px)}
#side{width:260px;flex:none;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:10px;border-right:1px solid var(--line);background:var(--panel)}
body.sideOff #side{display:none}
.box{background:var(--panel2);border:1px solid var(--line);border-radius:var(--rad);padding:10px;display:flex;flex-direction:column;gap:8px}
.box h6{margin:0;font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:var(--mut)}.box h6 small{text-transform:none;letter-spacing:0}
.row{display:flex;gap:6px;flex-wrap:wrap}.row>button{flex:1;justify-content:center}.row.icons>button{flex:1}
select,input[type=text],input[type=password],textarea{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 10px;outline:none}
select:focus,input:focus,textarea:focus{border-color:var(--acc2);box-shadow:0 0 0 3px var(--glow)}
label{font-size:12px;color:var(--mut)}
.hint{color:var(--mut);font-size:12px;margin:0}.hint.tight{margin-top:-2px}
.wide{width:100%;justify-content:center}
.rosterBtn{letter-spacing:2px;font-weight:800}
#bench{display:flex;flex-wrap:wrap;gap:6px}
.bp{display:flex;align-items:center;gap:6px;padding:4px 8px 4px 4px;border:1px solid var(--line);border-radius:99px;background:var(--panel);cursor:pointer;font-size:12px}
.bp.sel{border-color:var(--acc);box-shadow:0 0 0 3px var(--glow)}.bp small{color:var(--mut)}
.av{position:relative;width:28px;height:28px;border-radius:50%;overflow:hidden;background:#27304a;flex:none}
.av .tint{position:absolute;inset:0}.av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
#stageCol{flex:1;min-width:0;display:flex;flex-direction:column}
#stage{isolation:isolate;position:relative;flex:1;min-height:200px;overflow:hidden;background:radial-gradient(120% 90% at 50% 0%,var(--panel2),var(--bg));touch-action:none}
#tilt,#zoomWrap{position:absolute;inset:0}
#floor{position:absolute;left:0;top:0;will-change:transform;box-shadow:0 18px 40px rgba(0,0,0,.35)}
#floor svg{position:absolute;left:0;top:0;display:block}
#over{pointer-events:none}
.mpath{fill:none;stroke:var(--off);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
.mpath.x,.mhead.x{stroke:#6f7a90;stroke-dasharray:6 5}
.mhead{fill:none;stroke:var(--off);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.tether{stroke:var(--acc2);stroke-width:2;stroke-dasharray:3 4;opacity:.8}
#players{position:absolute;inset:0;pointer-events:none}
.pl{position:absolute;left:0;top:0;pointer-events:auto;touch-action:none;cursor:grab;font-weight:800}
.pl .disc{position:absolute;inset:0;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 5px rgba(0,0,0,.4)}
.pl.off .disc{background:var(--off);color:#fff;border:.18em solid #fff}
.pl.def .disc{background:var(--def);color:#1b2a4e;border:.18em solid var(--defl)}
.pl .num{font-size:1em;position:relative;z-index:1}
.pl.def .x{position:absolute;inset:14%;width:72%;height:72%;fill:none;stroke:#1b2a4e;stroke-width:1.4;opacity:.18}
.pl .halo{position:absolute;inset:-22%;border-radius:50%;opacity:0;background:var(--glow);transition:opacity .15s}
.pl.sel .halo,.pl.touch .halo{opacity:1}
.pl.ball .disc{box-shadow:0 0 0 .22em var(--ball),0 2px 5px rgba(0,0,0,.4)}
.pl .ballmk{display:none}
.pl .badge{position:absolute;right:-.3em;top:-.5em;width:1.2em;height:1.2em;border-radius:50%;background:var(--panel);border:1px solid var(--line);display:flex;align-items:center;justify-content:center}
.pl .badge .i{width:.8em;height:.8em;stroke-width:2.4}
.pl .badge .lk-o{display:inline}.pl .badge .lk-c{display:none}
.pl.locked .badge{background:var(--acc);color:#fff;border-color:var(--acc)}
.pl.locked .badge .lk-c{display:inline}.pl.locked .badge .lk-o{display:none}
.pl .tag{position:absolute;left:50%;top:100%;transform:translateX(-50%);margin-top:.15em;font-size:.72em;font-weight:700;background:rgba(10,14,22,.7);color:#fff;padding:0 .5em;border-radius:99px;white-space:nowrap}
body.light .pl .tag{background:rgba(255,255,255,.85);color:#1b2a4e}
#hoop3d{position:absolute;pointer-events:none;z-index:2}
.chip{position:absolute;z-index:30;left:50%;transform:translateX(-50%);max-width:92%;background:var(--panel);border:1px solid var(--line);border-radius:99px;padding:5px 12px;font-size:12px;color:var(--mut);box-shadow:0 4px 14px rgba(0,0,0,.25)}
#hint{top:8px}#armChip{top:42px;color:var(--tx);border-color:var(--acc);display:flex;align-items:center;gap:8px}
#armChip[hidden],#capBar[hidden]{display:none}
#zoomCtl{position:absolute;right:8px;bottom:8px;z-index:30;display:flex;align-items:center;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:3px}
#zoomCtl .ib{height:28px;min-width:28px;border:0}#zLvl{font-size:12px;min-width:34px;text-align:center;color:var(--mut)}
#capBar{position:absolute;z-index:30;left:50%;transform:translateX(-50%);bottom:12px;max-width:80%;background:rgba(10,14,22,.82);color:#fff;border-radius:12px;padding:8px 14px;font-size:14px;text-align:center}
#frames{background:var(--panel);border-top:1px solid var(--line)}
#frHead{display:flex;align-items:center;gap:6px;padding:6px 10px}
#frCap{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#frCap .tip{font-weight:400;color:var(--mut);font-size:12px}
#tmToggle.on{background:var(--panel2);color:var(--tx);box-shadow:none;border-color:var(--line)}
#tmToggle i{display:inline-flex;transition:transform .15s}
#timingBody{max-height:26vh;overflow:auto;padding:0 10px 8px}
#strip{display:flex;gap:8px;overflow-x:auto;padding:4px 0 8px}
.th{flex:none;width:74px;border:2px solid var(--line);border-radius:10px;background:var(--panel2);padding:0;cursor:pointer;position:relative;overflow:hidden;display:block;aspect-ratio:50/47}
.th.on{border-color:var(--acc);box-shadow:0 0 0 3px var(--glow)}
.th svg{display:block;width:100%;height:100%}
.th .tn{position:absolute;left:4px;top:3px;font-size:10px;background:rgba(10,14,22,.7);color:#fff;border-radius:6px;padding:0 5px;z-index:1}
.th.add{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;color:var(--acc2);border-style:dashed;aspect-ratio:auto;width:64px;align-self:stretch}
.tl-grid{display:flex;flex-direction:column;gap:4px}
.tl-row{display:flex;align-items:center;gap:8px;min-height:28px}
.tl-name{width:120px;flex:none;font-size:12px;display:flex;align-items:center;gap:4px;overflow:hidden;white-space:nowrap}
.tl-name .mv{font-style:normal;color:var(--mut)}
.xbtn{padding:0 5px;border:0;background:none;color:var(--mut)}
.track{position:relative;flex:1;height:26px;background:var(--panel2);border-radius:8px;touch-action:none}
.ruler .track{background:none;height:18px}.tick{position:absolute;top:0;font-size:10px;color:var(--mut);border-left:1px solid var(--line);padding-left:3px;height:100%}
.bar{position:absolute;top:3px;bottom:3px;border-radius:7px;color:#fff;font-size:11px;display:flex;align-items:center;padding-left:6px;min-width:10px;touch-action:none;cursor:grab;overflow:hidden}
.bar.off{background:var(--off)}.bar.def{background:#6f7a90}.bar.pass{background:var(--ball)}
.bar .grip{position:absolute;right:0;top:0;bottom:0;width:12px;cursor:ew-resize;background:rgba(255,255,255,.28)}

.track .lseg{position:absolute;top:10px;height:6px;border-radius:3px}
.track .lseg.on{background:var(--acc)}.track .lseg.off{background:var(--line)}
.mk{position:absolute;top:2px;width:22px;height:22px;margin-left:-11px;border-radius:50%;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;color:#fff;cursor:ew-resize;z-index:2;touch-action:none}
.mk.lk{background:var(--acc)}.mk.un{background:var(--bad)}
.playhead{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--ball);margin-left:-1px;pointer-events:none;z-index:3}
.tl-sub{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--mut);margin-top:6px}
.tl-empty{color:var(--mut);font-size:12px;margin:4px 0}
.tl-foot{display:flex;align-items:center;justify-content:space-between;margin-top:6px}.durlbl{color:var(--mut);font-size:12px}
#pb{display:flex;align-items:center;gap:8px;padding:8px 10px;border-top:1px solid var(--line);background:var(--panel);flex-wrap:wrap}
#scrub{position:relative;flex:1;min-width:120px;height:26px;background:var(--panel2);border-radius:8px;border:1px solid var(--line);touch-action:none;cursor:pointer}
#scrubBar{position:absolute;inset:0}.seg-f{position:absolute;top:0;bottom:0;border-right:1px solid var(--line);font-size:10px;color:var(--mut);padding:2px 4px}.seg-f.on{background:var(--glow);color:var(--tx)}
#scrubHead{position:absolute;top:-3px;bottom:-3px;width:3px;background:var(--ball);margin-left:-1px;border-radius:2px;pointer-events:none}
#scopeRow{display:flex;gap:6px;align-items:center}
.chk{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--tx)}
#floatBar{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:6px;box-shadow:0 10px 30px rgba(0,0,0,.4)}
#floatBar[hidden]{display:none}
body.present #top,body.present #side,body.present #frames,body.present #pb,body.present .chip,body.present #zoomCtl{display:none}
body.present main{height:100%}body.present #stage{border-radius:0}
body.present #top{display:none}
#modalRoot:empty{display:none}
.mback{position:fixed;inset:0;z-index:100;background:rgba(5,8,14,.6);display:flex;align-items:center;justify-content:center;padding:14px}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:min(560px,100%);max-height:92vh;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:12px;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.modal.big{width:min(980px,100%)}
.modal h3{margin:0;font-size:18px;display:flex;align-items:center;justify-content:space-between}
.field{display:flex;flex-direction:column;gap:4px}
.err{color:var(--bad);font-size:13px;min-height:1em}
.list{display:flex;flex-direction:column;gap:6px}
.li{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.li .grow{flex:1;min-width:0}.li small{color:var(--mut)}
.badge2{font-size:11px;padding:1px 7px;border-radius:99px;background:var(--panel);border:1px solid var(--line);color:var(--mut)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.tc{perspective:900px;cursor:pointer;aspect-ratio:5/7}
.tci{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s}
.tc.flip .tci{transform:rotateY(180deg)}
.tcf,.tcb{position:absolute;inset:0;backface-visibility:hidden;border-radius:12px;overflow:hidden}
.tcf{background:linear-gradient(145deg,#f7d56a,#b8862b 45%,#f3dc8a 70%,#a77622);padding:7px;box-shadow:0 8px 20px rgba(0,0,0,.4)}
.tcf .pic{position:relative;width:100%;height:76%;border-radius:8px;overflow:hidden;background:#27304a}
.tcf .pic .tint{position:absolute;inset:0}.tcf .pic img{position:absolute;left:0;bottom:0;width:100%;height:100%;object-fit:cover}
.tcf .nm{margin-top:6px;text-align:center;color:#2a1c04;font-weight:800;font-size:13px;line-height:1.1}.tcf .nm small{display:block;font-weight:600;font-size:10px}
.tcf .num{position:absolute;left:8px;top:8px;background:#1b2a4e;color:#fff;border-radius:7px;padding:1px 7px;font-weight:800;font-size:13px}
.tcb{transform:rotateY(180deg);background:var(--panel2);border:1px solid var(--line);display:flex;flex-direction:column}
.tcb header{background:#2457d6;color:#fff;padding:7px 9px;font-weight:800;font-size:13px}
.tcb dl{margin:0;padding:8px 9px;font-size:11px;display:grid;grid-template-columns:auto 1fr;gap:3px 8px;overflow:auto}.tcb dt{color:var(--mut)}.tcb dd{margin:0;font-weight:600}
.swatches{display:flex;gap:6px;flex-wrap:wrap}.sw{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);padding:0;cursor:pointer}.sw.on{border-color:var(--tx);box-shadow:0 0 0 3px var(--glow)}
.sils{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.sils button{padding:2px;aspect-ratio:1;background:#27304a;overflow:hidden;position:relative}.sils img{width:100%;height:100%;object-fit:cover}.sils button.on{border-color:var(--acc);box-shadow:0 0 0 3px var(--glow)}
.form2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.form2 .full{grid-column:1/-1}
#toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;background:#10131b;color:#fff;border-radius:99px;padding:8px 16px;z-index:200;transition:.2s;font-size:13px}
#toast.on{opacity:1;transform:translateX(-50%)}
.switch{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}
body.lowpower *{transition:none!important;box-shadow:none}
@media (max-width:820px){#side{position:absolute;z-index:40;left:0;top:54px;bottom:0;box-shadow:12px 0 30px rgba(0,0,0,.4)}.brand span{display:none}.cloudBtn{padding:7px 8px}#setBtn,#reAuto{display:none}.tl-name{width:80px}}

@media (max-width:1500px){#wholeBtn span,#presentBtn span{display:none}#pb{gap:6px}}
