:root{color-scheme:dark;--bg:#11151d;--panel:#181d27;--edge:#2a3240;--muted:#8994a7;--text:#e6ebf5;--accent:#81a9ff;--win:#78cdb3;--lose:#e28596;--blue:#183757;--green:#254d44;--red:#622a37}*{box-sizing:border-box}body{margin:0;font:13px/1.5 "Segoe UI","Microsoft YaHei",sans-serif;color:var(--text);background:var(--bg)}button,input,select{font:inherit}button{border:1px solid #343e4f;border-radius:7px;background:#212936;color:#dce4f3;padding:7px 12px;cursor:pointer;transition:background .15s}button:hover{background:#303c50}button:disabled{opacity:.35;cursor:default}.primary{background:#87adfc;color:#142034;border-color:#87adfc;font-weight:650}.primary:hover{background:#a4c2ff}input,select{color:var(--text);background:#111722;border:1px solid #344156;border-radius:5px;padding:7px;min-width:0;width:100%}input:focus,select:focus,button:focus-visible{outline:2px solid #86acfc;outline-offset:2px}.topbar{height:76px;border-bottom:1px solid var(--edge);display:flex;align-items:center;gap:36px;padding:0 25px;background:#191f2a}.brand{display:flex;gap:12px;align-items:center;font-size:15px;font-weight:750;letter-spacing:2px;min-width:238px}.brand-icon{background:#82a8fb;color:#1a2640;width:34px;height:34px;display:grid;place-items:center;border-radius:9px;font-size:25px}.brand small{display:block;font-size:10px;color:var(--muted);font-weight:500;letter-spacing:1px}.document{flex:1}.document input{border:0;background:transparent;font-size:16px;font-weight:600;padding:0}.document span{font-size:10px;color:var(--muted)}.actions{display:flex;gap:8px}.workspace{display:grid;grid-template-columns:240px minmax(400px,1fr) 280px;height:calc(100vh - 76px)}.leftbar,.rightbar{background:var(--panel);overflow:auto;display:flex;flex-direction:column}.leftbar{border-right:1px solid var(--edge)}.rightbar{border-left:1px solid var(--edge)}.section-head{padding:16px 18px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--edge);font-weight:600}.eyebrow{font-size:9px;color:var(--muted);letter-spacing:1.6px}.left-inner{padding:20px 15px;flex:1}.group-label{font-size:11px;color:#b2bed1;display:flex;justify-content:space-between;align-items:center;margin:0 0 12px}.group-label button{padding:0 6px;border:0}.stage{display:flex;align-items:center;gap:10px;padding:11px 12px;margin-bottom:6px;border:1px solid transparent;border-radius:7px;cursor:pointer}.stage.active{background:#243147;border-color:#4b6390}.stage-index{font-size:10px;color:var(--accent);background:#32435c;width:24px;height:24px;border-radius:5px;display:grid;place-items:center}.stage small{display:block;font-size:10px;color:var(--muted)}#stages{margin-bottom:25px}.seed-row{display:flex;align-items:center;gap:8px;padding:7px 5px;border-bottom:1px solid #242d3b}.seed-rank{font-size:10px;color:var(--muted);width:25px}.seed-row .seed-name{flex:1;cursor:pointer;font-size:12px}.seed-row button{padding:0;border:0;background:none}.full{width:100%;margin-top:10px;font-size:11px}.hint{font-size:11px;line-height:1.7;color:var(--muted);margin-top:15px}.divider{height:1px;background:var(--edge);margin:24px 0}.doclink{color:#a2b9df;padding:15px 18px;border-top:1px solid var(--edge);text-decoration:none;font-size:11px}main{min-width:0;display:flex;flex-direction:column;overflow:hidden}.canvas-top{height:90px;display:flex;align-items:center;justify-content:space-between;padding:0 26px}.canvas-top h1{font-size:20px;margin:4px 0;font-weight:600}.canvas-controls{display:flex;gap:6px}.canvas-controls button{font-size:11px;padding:6px 9px}.canvas-instructions{padding:0 25px 14px;display:flex;justify-content:space-between;color:var(--muted);font-size:10px;gap:8px}.legend{display:flex;align-items:center;gap:5px;white-space:nowrap}.legend i{width:6px;height:6px;border-radius:50%;margin-left:5px}.win{background:var(--win)}.lose{background:var(--lose)}.preview{background:#dcb978}#canvasScroll{flex:1;overflow:auto;background:#111722}#canvas{position:relative;width:1390px;height:850px;background-image:radial-gradient(#2b3444 1px,transparent 1px);background-size:22px 22px}#links{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:1}#nodes{position:absolute;inset:0}.node{position:absolute;z-index:2;background:#1c2533;border:1px solid #46536b;border-radius:9px;box-shadow:0 6px 16px #0003;min-width:210px}.node.selected{border-color:#9ebffe;box-shadow:0 0 0 2px #80aaff30}.node-title{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;font-size:11px;cursor:move;color:#b8c8e3}.node-title small{font-size:9px;color:var(--muted)}.match{width:235px}.match .schedule{font:9px monospace;color:#859ab9;padding:0 12px 7px;text-align:right}.team-slot{height:34px;padding:7px 13px;background:var(--blue);font-size:12px;border-top:1px solid #ffffff0b}.team-slot:last-of-type{border-radius:0 0 8px 8px}.team-slot.winner{background:var(--green)}.team-slot.loser{background:var(--red)}.team-slot.speculative{color:#e5c690;font-style:italic}.port{position:absolute;width:14px;height:14px;border:2px solid #93aacd;border-radius:50%;background:#1b2534;padding:0;z-index:5;cursor:crosshair}.port:hover,.port.pending{box-shadow:0 0 0 5px #84aaff44;background:#8baeff}.port.inlet{left:-8px;top:77px}.port.win-port{right:-8px;top:67px;border-color:var(--win)}.port.lose-port{right:-8px;top:101px;border-color:var(--lose)}.port-label{position:absolute;right:-27px;font-size:9px;pointer-events:none;color:var(--muted)}.start{width:230px;left:90px;top:35px}.start .node-title{cursor:pointer;border-bottom:1px solid #45526a}.start .start-slot{position:relative;padding:10px 15px;font-size:11px;height:42px;border-bottom:1px solid #293649}.start-slot span{color:#83a8e5;margin-right:9px;font-size:9px}.start-slot .port{right:-8px;top:15px}.start>.port{top:15px}.result{width:235px;min-width:235px;display:flex;align-items:center;padding:11px 14px;gap:10px;cursor:pointer}.result .port.inlet{top:21px}.result .port.result-out{right:-8px;top:21px;border-color:var(--win)}.result .result-rank{color:#8caedc;font-size:10px;min-width:26px}.result.advance{border-left:3px solid var(--win)}.result.placement{border-left:3px solid #d5b57a}.result .result-text{flex:1;min-width:0}.result small{display:block;color:var(--muted);font-size:9px}.result b{font-size:11px;font-weight:500}.result .speculative{color:#e5c690}.boundary{position:absolute;font-size:10px;color:#7d8da5;z-index:2;max-width:180px}.layer-label{position:absolute;z-index:2;color:#6e82a4;font-size:9px;letter-spacing:2px;pointer-events:none}.channel{fill:none;stroke:#647a9d;stroke-width:2;cursor:pointer;pointer-events:stroke}.channel.win-line{stroke:var(--win)}.channel.lose-line{stroke:var(--lose)}.channel.preview-line{stroke-dasharray:6 5}.channel.selected{stroke-width:4}.runtime-bar{height:74px;border-top:1px solid var(--edge);display:flex;align-items:center;gap:8px;padding:0 24px;background:#1a2130}.runtime-bar>div{flex:1;display:flex;flex-direction:column;gap:3px}.runtime-bar b{font-size:11px;font-weight:500}.runtime-bar button{font-size:11px}#inspector{padding:20px 18px;min-height:270px}.inspector-title{font-size:15px;margin:0 0 16px}.field{margin:13px 0}.field>label{font-size:10px;color:var(--muted);display:block;margin-bottom:5px}.field-note{font-size:10px;color:#92a2ba;margin:9px 0}.danger{color:#f0a9b4;border-color:#744555;width:100%;font-size:11px;margin-top:18px}.inspector-empty{color:var(--muted);font-size:12px;padding:20px 0}.badge{display:inline-block;border:1px solid #394862;border-radius:4px;font-size:9px;padding:2px 6px;color:#8eb1ee;margin-bottom:8px}#issues{padding:13px 16px;max-height:230px;overflow:auto;font-size:11px}.issue{padding:8px 10px;background:#35242e;border-left:2px solid #d8859b;margin:7px 0;border-radius:4px;color:#dcb5c3;cursor:pointer}.valid{padding:10px;color:#92d5bd;background:#203a34;border-radius:5px}#log{padding:14px 18px;overflow:auto;flex:1;min-height:100px;font-size:11px;color:#aabbd3}.log-entry{padding:8px 0;border-bottom:1px solid var(--edge)}.log-entry span{color:#6f87ae;margin-right:7px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:70%;background:#34435b;border:1px solid #647da3;padding:11px 20px;border-radius:8px;z-index:99;opacity:0;pointer-events:none;transition:opacity .15s}#toast.show{opacity:1}.simulation .start,.simulation .seed-row .port{display:none}.simulation .layer-label.start-label{display:none}@media(max-width:1100px){.workspace{grid-template-columns:190px minmax(340px,1fr) 240px}.topbar{gap:18px;padding:0 15px}.brand{min-width:180px;font-size:12px}.canvas-controls{gap:3px}.canvas-instructions .legend{display:none}.canvas-top{padding:0 15px}.runtime-bar{padding:0 12px}}@media(max-width:800px){.workspace{grid-template-columns:155px minmax(320px,1fr)}.rightbar{grid-column:1/-1;height:500px}.workspace{height:auto}main{height:700px}.topbar{height:auto;padding:15px;flex-wrap:wrap;gap:12px}.document{min-width:200px}.actions{margin-left:auto}.canvas-top{height:100px;flex-wrap:wrap}.canvas-controls{margin-bottom:8px}}
.zoom-controls{display:flex;align-items:center;gap:5px;white-space:nowrap}.zoom-controls button{font-size:10px;padding:2px 7px}.attached-link{display:block;width:100%;text-align:left;font-size:10px;padding:5px 7px;margin:5px 0;overflow-wrap:anywhere}.canvas-instructions{align-items:center}
.rightbar>.section-head,#inspector,#issues{flex-shrink:0}.rightbar #log{flex-shrink:0}.canvas-top,.canvas-instructions,.runtime-bar{flex-shrink:0}.result{user-select:none}
#canvas{background-image:linear-gradient(#2b344455 1px,transparent 1px),linear-gradient(90deg,#2b344455 1px,transparent 1px);background-size:var(--grid-size,23.5px) var(--grid-size,23.5px)}.result{width:var(--result-width,235px);min-width:var(--result-width,235px)}.node.selected{z-index:3}.seed-row button.pending{color:#bcd0ff;box-shadow:0 0 0 3px #84aaff44}.node-title{user-select:none;touch-action:none}.result{touch-action:none}
.canvas-top{height:auto;min-height:90px;flex-wrap:wrap;gap:10px;padding-top:16px;padding-bottom:14px}.canvas-controls{flex-wrap:wrap;justify-content:flex-end}.canvas-instructions>span{min-width:0;overflow-wrap:anywhere}.canvas-instructions{line-height:1.6}.node.match{height:141px}.match .team-slot{height:42px}.match .win-port{top:72px}.match .lose-port{top:114px}.node.result{height:58.75px}.bigframe,.bigframe.selected{width:235px;min-width:235px;border:0;border-radius:0;background:transparent;box-shadow:none;z-index:2;touch-action:none;user-select:none}.bigframe:before{content:"";position:absolute;inset:0 -4.7px;z-index:-1;background:#26395488;border:1px solid #829dc2;border-radius:9px;pointer-events:none}.bigframe.label:before{border-style:dashed;background:#33402f55}.bigframe.selected:before{border-color:#b9d1ff;box-shadow:0 0 0 2px #80aaff55}.group-title{height:23.5px;line-height:23.5px;text-align:center;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:move;padding:0 8px}.bigframe>.port.inlet{top:4.75px}.pool-count{position:absolute;bottom:3px;left:10px;font-size:9px;color:#a4badd;pointer-events:none}.node.start .node-title{cursor:move}#selectionBox{position:absolute;border:1px solid #a4c6ff;background:#8eb3ff22;z-index:20;pointer-events:none}#contextMenu{position:fixed;width:210px;background:#202d40;border:1px solid #667da0;box-shadow:0 6px 20px #0008;border-radius:8px;padding:8px;z-index:80}#contextMenu button{margin:0 0 4px;font-size:11px;text-align:left}#contextMenu[hidden],#selectionBox[hidden]{display:none}.node.match,.node.result{z-index:3}.node.match.selected,.node.result.selected{z-index:4}
.bigframe{pointer-events:none}.bigframe .group-title,.bigframe .port{pointer-events:auto}.bigframe.selected{z-index:5}.bigframe.selected:before{background:transparent}.group-title{position:relative}
.seed-row .seed-name{min-width:0;overflow-wrap:anywhere}#teamInfoStatus{overflow-wrap:anywhere;margin-bottom:12px}#inspector .field>span{display:block;overflow-wrap:anywhere}
