.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-ext-wght-normal-DHTKMUil.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-wght-normal-B1g8a0vD.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-greek-wght-normal-BpXpdlRW.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-vietnamese-wght-normal-BsaNuasd.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-ext-wght-normal-BVZ5su8S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-wght-normal-DMe4EKeb.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--sans:"Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", Ubuntu, sans-serif;--heading:"Space Grotesk Variable", "Inter Variable", system-ui, sans-serif;--mono:"JetBrains Mono Variable", "JetBrains Mono", "Cascadia Code", Consolas, ui-monospace, monospace;--ease:cubic-bezier(.2, .8, .2, 1);--fast:.12s;--base:.2s;--slow:.32s;--radius:16px;--radius-s:10px}:root,body[data-theme=azul]{--bg:#07090c;--canvas:#0b0e13;--dots:#1f2632;--surface:#10141a;--surface-2:#161b23;--surface-3:#1f2530;--line:#1c222b;--line-strong:#2b3340;--ink:#e8edf5;--ink-2:#9aa5b5;--ink-3:#657082;--accent:#4f8cff;--accent-ink:#fff;--port:#3ecf6e;--ok:#3ecf6e;--danger:#ff5d5d;--arp:#f5b83d;--icmp:#5b9bff;--dhcp:#b48cff;--dns:#33c9c9;--tcp:#ff8f5a;--http:#f06fb0;--shadow:0 10px 30px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body[data-theme=marron]{--bg:#0a0806;--canvas:#100c09;--dots:#2a221b;--surface:#15100c;--surface-2:#1e1813;--surface-3:#2a221b;--line:#261e18;--line-strong:#3a2f26;--ink:#efe6dc;--ink-2:#b3a597;--ink-3:#7c6e61;--accent:#c8834b;--accent-ink:#1a0f07;--port:#8fc96a;--ok:#8fc96a;--danger:#ef6a55;--arp:#e9b85a;--icmp:#6fa8e0;--dhcp:#b99ad8;--dns:#6cc2b5;--tcp:#e08a5f;--http:#d97aa0;--shadow:0 10px 30px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body[data-theme=editorial]{--heading:"Source Serif 4 Variable", "Source Serif 4", Georgia, "Times New Roman", serif;--bg:#ebe8e1;--canvas:#f5f3ee;--dots:#d3cec3;--surface:#fff;--surface-2:#f3f1ec;--surface-3:#e6e2da;--line:#e1ddd4;--line-strong:#c9c3b7;--ink:#141414;--ink-2:#4a4843;--ink-3:#8a867d;--accent:#b3261e;--accent-ink:#fff;--port:#2f7d3f;--ok:#2f7d3f;--danger:#b3261e;--arp:#a86b00;--icmp:#1f4fa8;--dhcp:#6b3fa0;--dns:#0f7a75;--tcp:#b5531c;--http:#a3216a;--shadow:0 8px 24px #14120c1a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body[data-theme=morado]{--bg:#08070a;--canvas:#0c0a10;--dots:#26222e;--surface:#110f15;--surface-2:#19161f;--surface-3:#231f2b;--line:#201c27;--line-strong:#322c3c;--ink:#ece9f2;--ink-2:#a7a1b3;--ink-3:#6f687c;--accent:#9b6dff;--accent-ink:#fff;--port:#4fd18b;--ok:#4fd18b;--danger:#ff6b8a;--arp:#f2bb4a;--icmp:#62b0ff;--dhcp:#e59cff;--dns:#45c8e8;--tcp:#ff9466;--http:#ff7a9c;--shadow:0 10px 30px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{--accent-soft:color-mix(in srgb, var(--accent) 18%, transparent);--accent-glow:color-mix(in srgb, var(--accent) 50%, transparent);--ok-soft:color-mix(in srgb, var(--ok) 13%, transparent);--danger-soft:color-mix(in srgb, var(--danger) 13%, transparent)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font:14px/1.45 var(--sans);-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.4}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mono{font-family:var(--mono);font-size:.92em}.muted{color:var(--ink-3)}.small{font-size:12.5px}kbd{border:1px solid var(--line-strong);font:11.5px var(--mono);color:var(--ink-2);border-radius:5px;padding:1px 5px}.icon{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:none}.app{grid-template-rows:60px minmax(0,1fr);grid-template-columns:minmax(0,1fr);height:100%;display:grid}.workspace{grid-template-columns:minmax(0, 1fr) var(--side-width,380px);gap:12px;min-height:0;padding:0 12px 12px;display:grid;position:relative}.workspace.side-full{grid-template-columns:0 minmax(0,1fr);gap:0}.workspace.side-full .stage{visibility:hidden;border:0}.workspace.side-full .side-body>.props,.workspace.side-full .side-body>.sim{max-width:880px;margin:0 auto}.workspace.side-full .events{max-height:46vh}body.resizing{cursor:ew-resize;-webkit-user-select:none;user-select:none}.workspace.side-undocked{grid-template-columns:minmax(0,1fr)}.side.side-floating{z-index:30;min-width:340px;max-width:calc(100% - 24px);min-height:300px;max-height:100%;box-shadow:var(--shadow);border-color:var(--line-strong);resize:both;position:absolute}.stage{background:var(--canvas);border:1px solid var(--line);border-radius:22px;flex-direction:column;min-width:0;display:flex;position:relative;overflow:hidden}.canvas-area{flex:1;min-height:0;position:relative}.topbar{align-items:center;gap:18px;padding:0 16px 0 20px;display:flex}.brand{font:600 15px var(--heading);letter-spacing:-.01em;align-items:center;gap:10px;display:flex}.brand-version{border:1px solid var(--line-strong);font:500 11px var(--mono);color:var(--ink-3);border-radius:999px;padding:1px 7px}.brand-mark{background:var(--accent);width:32px;height:32px;color:var(--accent-ink);border-radius:9px;place-items:center;display:grid}.modes{background:var(--surface);border:1px solid var(--line);border-radius:13px;gap:4px;padding:4px;display:flex}.modes button{color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:7px;padding:6px 14px;font-weight:500;display:flex}.modes button.active{background:var(--surface-3);color:var(--ink);border-color:var(--line-strong)}.lab-name{background:0 0;border:1px solid #0000;border-radius:9px;padding:6px 8px;font-weight:500}.lab-name:hover,.lab-name:focus{border-color:var(--line-strong);background:var(--surface);outline:none}.topbar-actions{align-items:center;gap:6px;display:flex}.dropdown{position:relative}.dropdown-button{color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:8px;padding:6px 10px;font-weight:500;display:inline-flex}.dropdown-button:hover,.dropdown-button[aria-expanded=true]{background:var(--surface-2);border-color:var(--line-strong);color:var(--ink)}.theme-menu .dropdown-button{border-color:var(--line-strong)}.lang-menu .dropdown-button{border-color:var(--line-strong);gap:6px}.lang-short{letter-spacing:.03em;font-size:12.5px;font-weight:600}.lang-code{background:var(--surface-2);border:1px solid var(--line);width:28px;height:20px;color:var(--ink-2);border-radius:6px;place-items:center;font-size:11px;font-weight:600;display:inline-grid}.swatch{border:1px solid var(--line-strong);border-radius:5px;width:30px;height:16px;display:inline-flex;overflow:hidden}.swatch i{flex:1}.menu{z-index:20;background:var(--surface);border:1px solid var(--line-strong);min-width:210px;max-width:320px;box-shadow:var(--shadow);border-radius:12px;padding:5px;position:absolute;top:calc(100% + 6px)}.menu-end{right:0}.menu-start{min-width:290px;left:50%;transform:translate(-50%)}.menu>button,.menu-list>button{text-align:left;width:100%;color:var(--ink);background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.menu>button:hover,.menu>button:focus-visible,.menu-list>button:hover,.menu-list>button:focus-visible{background:var(--surface-2);outline:none}.menu .check{color:var(--accent);margin-left:auto}.menu-label{color:var(--ink-3);padding:6px 10px 4px;font-size:11.5px}.menu-list{max-height:260px;overflow-y:auto}.menu-text{flex-direction:column;min-width:0;display:flex}.menu-text span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.menu-text small{color:var(--ink-3);font-size:11.5px}.menu-sep{background:var(--line);height:1px;margin:5px 6px}.menu-danger{color:var(--danger)!important}.menu-confirm{color:var(--ink-2);flex-direction:column;gap:8px;padding:8px 10px;font-size:13px;display:flex}.menu-confirm div{justify-content:flex-end;gap:6px;display:flex}.danger{border:1px solid var(--danger);background:var(--danger);color:#fff;border-radius:10px;align-items:center;gap:6px;padding:5px 10px;font-size:12.5px;font-weight:500;display:inline-flex}.lab-title{flex:1;justify-content:center;align-items:center;gap:6px;min-width:0;display:flex}.crumb{color:var(--ink-3);white-space:nowrap}.crumb-sep{color:var(--line-strong)}.lab-title .lab-name{field-sizing:content;text-align:left;min-width:0;max-width:360px;font-family:var(--heading);flex:0 auto;margin:0}.lab-menu .dropdown-button{padding:5px}.avatar{background:var(--accent);color:var(--accent-ink);letter-spacing:.02em;box-shadow:0 0 0 2px var(--surface), 0 0 0 3px var(--line-strong);border-radius:50%;flex:none;place-items:center;font-weight:600;display:inline-grid;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.ghost,.primary{border-radius:10px;justify-content:center;align-items:center;gap:7px;padding:7px 13px;font-weight:500;display:inline-flex}.ghost{border:1px solid var(--line-strong);color:var(--ink-2);background:0 0}.ghost:hover:not(:disabled){color:var(--ink);background:var(--surface-2)}.ghost.small{padding:5px 10px;font-size:12.5px}.primary{background:var(--accent);border:1px solid var(--accent);color:var(--accent-ink)}.primary:hover:not(:disabled){filter:brightness(1.08)}.icon-button{width:34px;height:34px;color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:10px;place-items:center;padding:0;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}.link{color:var(--accent);text-align:left;background:0 0;border:0;padding:0}.link:hover:not(:disabled){text-decoration:underline}.link:disabled{color:inherit;opacity:1;cursor:default}.canvas{position:absolute;inset:0}.canvas .react-flow{background:var(--canvas)}.canvas .react-flow__background{--xy-background-pattern-dots-color-default:var(--dots)}.canvas.tool-ping .react-flow__pane,.canvas.tool-ping .react-flow__node{cursor:crosshair}.react-flow__node-device{background:0 0;border:0;padding:0}.device{align-items:center;gap:12px;display:flex}.device-tile{border-radius:var(--radius);background:var(--surface-2);border:1.5px solid var(--line-strong);color:var(--ink);box-shadow:var(--shadow);place-items:center;transition:border-color .15s,background .15s,transform .15s;display:grid;position:relative}.device:hover .device-tile{border-color:var(--ink-3)}.device.selected .device-tile{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft), var(--shadow)}.device.mark-current .device-tile{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 0 0 6px var(--accent-soft), 0 0 40px var(--accent-glow)}.device.mark-current.dropped .device-tile{background:var(--danger);border-color:var(--danger);box-shadow:0 0 0 6px var(--danger-soft)}.device.mark-source .device-tile,.device.mark-picked .device-tile{border-color:var(--accent);border-style:dashed}.device-text{white-space:nowrap;pointer-events:none;flex-direction:column;min-width:0;display:flex}.device-text strong{font:600 15px/1.3 var(--heading)}.device-text span{color:var(--ink-2);font-size:13px}.device-handle{opacity:0;transition:opacity .15s;background:var(--port)!important;border:2px solid var(--canvas)!important;width:10px!important;height:10px!important}.device:hover .device-handle,.react-flow__node.selected .device-handle{opacity:1}.react-flow__handle-top{top:-5px!important}.react-flow__handle-bottom{bottom:-5px!important}.react-flow__handle-left{left:-5px!important}.react-flow__handle-right{right:-5px!important}.react-flow__edge-path.link{stroke:var(--line-strong);stroke-width:2px}.react-flow__edge:hover .react-flow__edge-path.link{stroke:var(--ink-3)}.react-flow__edge-path.link.selected{stroke:var(--accent);stroke-width:2.5px}.react-flow__edge-path.link.active{stroke:var(--accent);stroke-width:2.5px;filter:drop-shadow(0 0 6px var(--accent-glow))}.port{fill:var(--port);stroke:var(--canvas);stroke-width:2px}.port-label{background:var(--surface);border:1px solid var(--line-strong);font:11px var(--mono);color:var(--ink-2);pointer-events:none;border-radius:6px;padding:1px 6px;position:absolute}.packet rect{stroke-width:1.5px}.packet path{fill:none;stroke-width:1.5px}.packet-arp rect{fill:var(--arp);stroke:color-mix(in srgb, var(--arp) 45%, black)}.packet-arp path{stroke:color-mix(in srgb, var(--arp) 45%, black)}.packet-icmp rect{fill:var(--icmp);stroke:color-mix(in srgb, var(--icmp) 45%, black)}.packet-icmp path{stroke:color-mix(in srgb, var(--icmp) 20%, white)}.packet-dhcp{--packet:var(--dhcp)}.packet-dns{--packet:var(--dns)}.packet-tcp{--packet:var(--tcp)}.packet-http{--packet:var(--http)}:is(.packet-dhcp,.packet-dns,.packet-tcp,.packet-http) rect{fill:var(--packet);stroke:color-mix(in srgb, var(--packet) 45%, black)}:is(.packet-dhcp,.packet-dns,.packet-tcp,.packet-http) path{stroke:color-mix(in srgb, var(--packet) 45%, black)}.packet-dropped rect{fill:var(--danger);stroke:color-mix(in srgb, var(--danger) 45%, black)}.minimap{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)!important}.react-flow__minimap-mask{fill:var(--canvas);opacity:.7}.react-flow__minimap-node{fill:var(--surface-3);stroke:none}.toolbar{z-index:5;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;flex-direction:column;gap:4px;padding:8px;display:flex;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.tool{width:40px;height:40px;color:var(--ink-2);background:0 0;border:0;border-radius:11px;place-items:center;display:grid}.tool:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}.tool.active{background:var(--accent-soft);color:var(--accent)}.toolbar-sep{background:var(--line);height:1px;margin:4px 6px}.bottom-bar{z-index:6;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.bar{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;align-items:center;gap:4px;padding:6px;display:flex}.bar-button{color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:11px;align-items:center;gap:8px;padding:8px 14px;font-weight:500;display:inline-flex}.bar-button:hover{background:var(--surface-2);color:var(--ink)}.bar-button.active{background:var(--accent-soft);color:var(--accent)}.bar-sep{background:var(--line);width:1px;height:22px;margin:0 2px}.add-panel{z-index:1;box-sizing:border-box;background:var(--surface);border:1px solid var(--line-strong);width:min(400px,100vw - 48px);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;padding:8px;animation:.16s ease-out rise-in;display:flex;position:absolute}@keyframes rise-in{0%{opacity:0;transform:translateY(6px)}}.add-search{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-3);border-radius:11px;align-items:center;gap:8px;margin-bottom:6px;padding:0 10px;display:flex}.add-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.add-search input{background:0 0;border:0;outline:none;flex:1;min-width:0;padding:9px 0}.add-list{flex-direction:column;flex:0 auto;gap:2px;min-height:0;max-height:360px;display:flex;overflow-y:auto}.add-item{text-align:left;cursor:grab;background:0 0;border:1px solid #0000;border-radius:11px;align-items:center;gap:12px;width:100%;padding:7px 8px;display:flex}.add-item.active{background:var(--surface-2);border-color:var(--line-strong)}.add-item:active{cursor:grabbing}.add-icon{background:var(--surface-3);width:40px;height:40px;color:var(--ink);border-radius:11px;flex:none;place-items:center;display:grid}.add-item.active .add-icon{background:var(--accent);color:var(--accent-ink)}.add-text{flex-direction:column;min-width:0;display:flex}.add-text strong{font-weight:600}.add-text small{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.add-empty{margin:0;padding:12px 10px}.add-hint{flex-wrap:wrap;align-items:center;gap:4px;margin:6px 4px 2px;display:flex}.add-hint kbd{margin-right:2px}.banner{z-index:6;background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:14px;padding:8px 14px;font-weight:500;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.banner .link{color:inherit;text-decoration:underline}.toast{z-index:7;background:var(--surface-3);border:1px solid var(--line-strong);max-width:min(560px,100% - 28px);box-shadow:var(--shadow);border-radius:12px;padding:10px 16px;animation:.18s ease-out rise;position:absolute;bottom:84px;left:50%;transform:translate(-50%)}.toast-ok{border-color:var(--ok);background:color-mix(in srgb, var(--ok) 14%, var(--surface))}.toast-error{border-color:var(--danger);background:color-mix(in srgb, var(--danger) 14%, var(--surface))}@keyframes rise{0%{opacity:0;transform:translate(-50%,8px)}}.side{background:var(--surface);border:1px solid var(--line);border-radius:22px;flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.tabs{border-bottom:1px solid var(--line);flex:none;align-items:flex-start;gap:2px;padding:8px 8px 0;display:flex}.side-expand{margin-top:1px;margin-left:auto}.side-full-button{margin-top:1px}.side-full-button[aria-pressed=true],.side-expand[aria-pressed=true]{color:var(--accent)}.side-resizer{z-index:3;cursor:ew-resize;touch-action:none;width:10px;position:absolute;top:0;bottom:0;left:0}.side-resizer:after{content:"";background:var(--line-strong);opacity:0;border-radius:3px;width:4px;height:44px;margin-top:-22px;transition:opacity .15s,background .15s;position:absolute;top:50%;left:3px}.side:hover .side-resizer:after,.side-resizer:focus-visible:after,body.resizing .side-resizer:after{opacity:1}.side-resizer:hover:after,.side-resizer:focus-visible:after,body.resizing .side-resizer:after{background:var(--accent)}.side-resizer:focus-visible{outline:none}.tabs button{color:var(--ink-3);background:0 0;border:0;align-items:center;gap:6px;padding:9px 12px 11px;font-weight:500;display:flex;position:relative}.tabs button:hover,.tabs button.active{color:var(--ink)}.tabs button.active:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:10px;right:10px}.badge{background:var(--accent-soft);min-width:20px;color:var(--accent);text-align:center;border-radius:10px;padding:0 6px;font-size:11.5px;line-height:18px}.side-body{flex:1;min-height:0;padding:16px;overflow-y:auto}.side-body:has(.doc){padding:0;display:flex;overflow:hidden}h2{font:600 18px/1.25 var(--heading);margin:0}h3{color:var(--ink-2);margin:20px 0 8px;font-size:13px;font-weight:600}.field{flex-direction:column;gap:4px;min-width:0;margin-bottom:10px;display:flex}.field label{color:var(--ink-3);font-size:12px}.field input,.field select,.speed{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);width:100%;padding:7px 10px}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.field input.invalid{border-color:var(--danger)}.field input::placeholder{color:var(--ink-3);opacity:.7;font-style:italic}.field-error{color:var(--danger);font-size:12px}.field-hint{color:var(--ink-3);font-size:12px}.props-title{align-items:center;gap:12px;margin-bottom:16px;display:flex}.props-icon{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.props-title h2{line-height:1.2}.props-actions{margin-top:18px}.props-actions .primary{width:100%}.ifaces{flex-direction:column;gap:8px;display:flex}.iface{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;padding:10px 12px 4px}.iface-free{background:0 0;border-style:dashed}.iface-head{justify-content:space-between;gap:10px;margin-bottom:6px;display:flex}.cable{color:var(--port);text-align:right;font-size:12px}.cable.none{color:var(--ink-3)}.iface-mac{margin:-2px 0 6px;font-size:11.5px;display:block}.routes{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.route{grid-template-columns:1fr 1fr auto;align-items:start;gap:8px;display:grid}.route .icon-button{margin-top:20px}h4{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;margin:14px 0 6px;font-size:12px;font-weight:600}.check-row{color:var(--ink-2);cursor:pointer;align-items:center;gap:8px;margin-bottom:10px;font-size:13px;display:flex}.check-row input{accent-color:var(--accent);margin:0}.service-card{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;margin-bottom:8px;padding:8px 12px 2px}.service-head{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.props-actions{flex-direction:column;gap:8px;display:flex}.stats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stats div{background:var(--surface-2);border-radius:12px;flex-direction:column;align-items:center;padding:10px 4px;display:flex}.stats strong{font-variant-numeric:tabular-nums;font-size:20px}.stats span{color:var(--ink-3);font-size:11.5px}.help{color:var(--ink-2);flex-direction:column;gap:6px;margin:0;padding-left:18px;font-size:13px;display:flex}.sim-kinds{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;grid-template-columns:repeat(5,1fr);gap:2px;margin-bottom:8px;padding:3px;display:grid}.sim-kinds button{color:var(--ink-2);background:0 0;border:0;border-radius:9px;padding:6px 4px;font-size:12.5px;font-weight:500}.sim-kinds button:hover{color:var(--ink)}.sim-kinds button.active{background:var(--accent);color:var(--accent-ink)}.sim-help{margin:0 0 10px}.console{border:1px solid var(--line);background:var(--canvas);max-height:220px;font:12px/1.55 var(--mono);color:var(--ink-2);white-space:pre;border-radius:12px;margin:-4px 0 12px;padding:10px 12px;overflow:auto}.console-prompt{color:var(--ink)}.sim-form{grid-template-columns:1fr 1fr;gap:0 10px;display:grid}.sim-form .ttl{grid-column:1}.sim-form .primary{grid-column:2;align-self:end;margin-bottom:10px}.outcome{border:1px solid;border-radius:12px;margin:6px 0 12px;padding:10px 12px;font-size:13px}.outcome.ok{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 40%, transparent);background:var(--ok-soft)}.outcome.fail{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 40%, transparent);background:var(--danger-soft)}.controls{justify-content:center;align-items:center;gap:8px;padding:6px 0 10px;display:flex}.control{background:var(--surface-2);border:1px solid var(--line);width:42px;height:42px;color:var(--ink);border-radius:12px;place-items:center;display:grid}.control.primary{background:var(--surface-3);border-color:var(--line-strong);width:52px;height:52px;color:var(--ink)}.control:hover:not(:disabled){border-color:var(--accent)}.speed{width:auto;margin-left:6px;padding:6px 8px}.events-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.events-head h3{margin:10px 0 8px}.filters{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.chip{border:1px solid var(--line-strong);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:12px;display:inline-flex}.chip input{accent-color:var(--accent);margin:0}.chip-arp{color:var(--arp)}.chip-icmp{color:var(--icmp)}.chip-dhcp{color:var(--dhcp)}.chip-dns{color:var(--dns)}.chip-tcp{color:var(--tcp)}.chip-http{color:var(--http)}.events{border:1px solid var(--line);background:var(--canvas);border-radius:12px;max-height:260px;overflow-y:auto}.event{border:0;border-bottom:1px solid var(--line);text-align:left;width:100%;color:var(--ink-2);background:0 0;grid-template-columns:74px minmax(0,1fr) minmax(0,1fr) 46px 80px;align-items:center;gap:6px;padding:7px 10px;font-size:12.5px;display:grid}.event span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.event:hover:not(.event-head){background:var(--surface-2);color:var(--ink)}.event.current{background:var(--accent-soft);color:var(--ink)}.event-head{z-index:1;background:var(--surface);color:var(--ink-3);cursor:default;font-size:11.5px;position:sticky;top:0}.event.is-dropped .result{color:var(--danger)}.proto{font-weight:600}.proto-arp{color:var(--arp)}.proto-icmp{color:var(--icmp)}.proto-dhcp{color:var(--dhcp)}.proto-dns{color:var(--dns)}.proto-tcp{color:var(--tcp)}.proto-http{color:var(--http)}.event-detail{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;margin-top:14px;padding:12px}.event-detail h3{color:var(--ink);text-transform:none;letter-spacing:0;font-size:13.5px;font-family:var(--sans);margin:0 0 2px}.notes{color:var(--ink-2);margin:8px 0;padding-left:18px;font-size:13px}.headers details{border-top:1px solid var(--line);padding:6px 0}.headers summary{cursor:pointer;color:var(--ink-2);font-size:12.5px;font-weight:600}.headers dl{gap:2px;margin:6px 0 2px;display:grid}.headers dl div{grid-template-columns:110px 1fr;gap:8px;font-size:12.5px;display:grid}.headers dt{color:var(--ink-3)}.headers dd{overflow-wrap:anywhere;margin:0}.doc{flex-direction:column;flex:1;min-width:0;display:flex}.doc-bar{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.segmented{background:var(--surface-2);border-radius:10px;gap:2px;padding:3px;display:flex}.segmented button{color:var(--ink-3);background:0 0;border:0;border-radius:8px;padding:4px 12px;font-size:12.5px;font-weight:600}.segmented button.active{background:var(--surface-3);color:var(--ink)}.doc-actions{gap:2px;display:flex}.doc-editor{flex:1;min-height:0;position:relative}.monaco{position:absolute;inset:0}.doc-loading{padding:16px}.doc-status{border-top:1px solid var(--line);flex:none;max-height:140px;padding:8px 12px;overflow-y:auto}.doc-status.has-problems{background:var(--danger-soft)}.doc-status ul{color:var(--danger);margin:0;padding-left:16px;font-size:12.5px}.doc-status .link{color:var(--danger)}@media (width<=980px){.workspace{grid-template-rows:minmax(0,1fr) 46%;grid-template-columns:1fr}.topbar{gap:10px}.brand-name{display:none}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.log{background:var(--surface);flex-direction:column;min-height:0;font-size:12.5px;display:flex}.log-docked{border-top:1px solid var(--line-strong);flex:none;position:relative}.log-floating{z-index:9;border:1px solid var(--line-strong);min-width:420px;max-width:100%;min-height:180px;max-height:100%;box-shadow:var(--shadow);resize:both;border-radius:14px;position:absolute;overflow:hidden}.log-floating .log-head{cursor:grab}body.dragging,body.dragging *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}body.resizing-y,body.resizing-y *{-webkit-user-select:none;user-select:none;cursor:ns-resize!important}.log-resizer{z-index:2;cursor:ns-resize;touch-action:none;height:10px;position:absolute;top:-5px;left:0;right:0}.log-resizer:after{content:"";background:var(--line-strong);border-radius:3px;width:44px;height:4px;margin-left:-22px;position:absolute;top:3px;left:50%}.log-resizer:hover:after,body.resizing-y .log-resizer:after{background:var(--accent)}.log-head{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;padding:8px 10px 8px 14px;display:flex}.log-head strong{font-family:var(--heading);white-space:nowrap;font-size:13px}.log-head .muted{white-space:nowrap}.log-search{background:var(--surface-2);border:1px solid var(--line);min-width:120px;max-width:320px;color:var(--ink-3);border-radius:9px;flex:1;align-items:center;gap:6px;margin-left:auto;padding:0 8px;display:flex}.log-search:focus-within{border-color:var(--accent)}.log-search input{background:0 0;border:0;outline:none;flex:1;min-width:0;padding:5px 0;font-size:12.5px}.log-actions{gap:2px;display:flex}.log-actions .icon-button{width:30px;height:30px}.log-main{flex:1;min-height:0;display:flex}.log-body{background:var(--canvas);flex:1;min-width:0;overflow:auto}.log-empty{margin:0;padding:18px}.log-row{border:0;border-bottom:1px solid var(--line);text-align:left;width:100%;min-width:760px;color:var(--ink-2);background:0 0;grid-template-columns:46px 74px minmax(90px,1fr) minmax(120px,1.2fr) 66px minmax(200px,3fr) 88px;align-items:center;gap:8px;padding:4px 12px;display:grid}.log-row>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button.log-row:hover{background:var(--surface-2);color:var(--ink)}.log-row.current{background:var(--accent-soft);color:var(--ink)}.log-row.selected{box-shadow:inset 3px 0 0 var(--accent);color:var(--ink)}.log-row.is-dropped .result{color:var(--danger)}.log-columns{z-index:1;background:var(--surface);color:var(--ink-3);font-size:11.5px;position:sticky;top:0}.log-info{color:var(--ink)}.log-run{background:var(--surface-2);border-bottom:1px solid var(--line);min-width:760px;box-shadow:inset 3px 0 0 var(--ok);align-items:center;gap:10px;padding:6px 12px;display:flex}.log-run.fail{box-shadow:inset 3px 0 0 var(--danger)}.log-run strong{color:var(--ink);font-weight:600}.log-outcome{text-overflow:ellipsis;white-space:nowrap;color:var(--ok);overflow:hidden}.log-run.fail .log-outcome{color:var(--danger)}.log-detail{border-left:1px solid var(--line);background:var(--surface);flex:none;width:320px;padding:10px 12px;overflow-y:auto}.log-detail-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.log-detail-head strong{font-size:13px}.log-detail .icon-button{width:26px;height:26px}.grip{color:var(--ink-3);cursor:grab;touch-action:none;border-radius:7px;flex:none;place-items:center;display:inline-grid}.grip:hover{color:var(--ink);background:var(--surface-2)}.grip svg{fill:currentColor}.toolbar .grip{width:40px;height:18px;margin-bottom:2px}.bar .grip{width:18px;height:36px}.bar>button{white-space:nowrap}.tabs .grip{width:20px;height:34px;margin-right:4px}body.dragging .grip{cursor:grabbing}.gallery{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);width:min(1080px,100vw - 32px);max-height:min(780px,100vh - 32px);color:var(--ink);box-shadow:var(--shadow);padding:0}.gallery::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c}.gallery-inner{max-height:inherit;flex-direction:column;display:flex}.gallery-head{justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 20px 8px;display:flex}.gallery-head h2{font-family:var(--heading);margin:0 0 4px;font-size:18px}.gallery-head p{margin:0}.gallery-tools{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 20px 12px;display:flex}.gallery-search{max-width:360px;margin:0;padding:2px 10px}.gallery-tools .filters{justify-content:flex-start}.gallery-tools .chip{color:var(--ink-2);background:0 0}.chip.chip-on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.gallery-body{flex:1;grid-template-columns:minmax(0,1fr) 320px;min-height:0;display:grid}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));align-content:start;gap:10px;padding:16px 20px 20px;display:grid;overflow-y:auto}.template-card{border:1px solid var(--line);background:var(--surface-2);text-align:left;color:var(--ink);border-radius:14px;flex-direction:column;align-items:flex-start;gap:4px;padding:10px;display:flex}.template-card:hover{border-color:var(--line-strong)}.template-card.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.template-name{font-size:13.5px;font-weight:600}.template-topics{color:var(--ink-3);font-size:11.5px}.level{border:1px solid;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.level-basico{color:var(--ok)}.level-intermedio{color:var(--arp)}.level-avanzado{color:var(--danger)}.sketch{background:var(--canvas);border-radius:10px;width:100%;height:96px;margin-bottom:4px}.sketch line{stroke:var(--line-strong);stroke-width:6px}.sketch rect{stroke:var(--canvas);stroke-width:6px}.sketch-host{fill:var(--ink-3)}.sketch-switch{fill:var(--port)}.sketch-router{fill:var(--accent)}.gallery-detail{border-left:1px solid var(--line);flex-direction:column;gap:4px;padding:16px 20px 20px;display:flex;overflow-y:auto}.gallery-detail .sketch{height:150px}.gallery-detail h3{color:var(--ink);margin:8px 0 0;font-size:15px}.gallery-detail p{color:var(--ink-2);margin:2px 0}.gallery-detail .primary{margin-top:12px}.try{color:var(--ink-2);flex-direction:column;gap:5px;margin:4px 0 8px;padding-left:20px;font-size:13px;display:flex}.lab-notes{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;margin-bottom:12px;padding:10px 12px}.lab-notes p{color:var(--ink-2);margin:0 0 4px}.lab-notes h4{margin-top:8px}.gallery-open{width:100%;margin-top:12px}@media (width<=760px){.gallery-body{grid-template-columns:1fr;overflow-y:auto}.gallery-grid{overflow:visible}.gallery-detail{border-left:0;border-top:1px solid var(--line);overflow:visible}}.emu-section+.emu-section{border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.emu-section>h3,.emu-section>.events-head{margin:0 0 10px}.emu-section>.events-head h3{margin:0}.emu-info{gap:4px;margin:0 0 10px;font-size:12.5px;display:grid}.emu-info>div{grid-template-columns:minmax(0,11em) minmax(0,1fr);gap:10px;display:grid}.emu-info dt{color:var(--ink-3)}.emu-info dd{color:var(--ink);overflow-wrap:anywhere;margin:0}.emu-controls{flex:none;gap:2px;display:inline-flex}.emu-controls .icon-button{border-radius:7px;width:26px;height:26px}.emu-note{background:var(--accent-soft);color:var(--ink);border-radius:10px;margin:0 0 12px;padding:8px 12px;font-size:13px}.emu-warnings{color:var(--ink-2);margin-bottom:12px;font-size:13px}.emu-warnings summary{cursor:pointer;font-weight:600}.emu-warnings ul{flex-direction:column;gap:4px;margin:6px 0 0;padding-left:18px;display:flex}.emu-console{max-height:320px;margin-top:0}.emu-failed .console-prompt{color:var(--danger)}.emu-devices{flex-direction:column;gap:2px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.emu-devices li{background:var(--surface-2);border-radius:9px;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) auto auto;align-items:center;gap:8px;padding:4px 6px 4px 10px;display:grid}.emu-devices li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.emu-devices .mono{font-size:11.5px}.emu-state{font-size:11.5px;font-weight:600}.emu-state.on{color:var(--ok)}.emu-state.off{color:var(--danger)}.emu-state.idle{color:var(--ink-3);font-weight:500}.emu-zone{margin-bottom:8px}.emu-zone>summary{cursor:pointer;align-items:center;gap:8px;padding:4px 2px 6px;list-style:none;display:flex}.emu-zone>summary::-webkit-details-marker{display:none}.emu-zone>summary:before{content:"";border:solid var(--ink-3);border-width:0 1.5px 1.5px 0;flex:none;width:6px;height:6px;transition:transform .15s;transform:rotate(-45deg)}.emu-zone[open]>summary:before{transform:rotate(45deg)}.emu-zone>summary strong{font-size:13px}.emu-zone>summary .emu-controls{margin-left:auto}.icon-button.spinning svg{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.icon-button.spinning svg{animation:none}}.tag{letter-spacing:.01em;border:1px solid var(--line-strong);color:var(--ink-2);background:var(--surface-2);white-space:nowrap;border-radius:999px;flex:none;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.tag-images{color:var(--ink);background:color-mix(in srgb, #0d597f 20%, var(--surface));border-color:color-mix(in srgb, #0d597f 55%, var(--surface))}.add-group+.add-group{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}.add-group-head{align-items:center;gap:8px;min-width:0;padding:4px 8px 6px;display:flex}.add-group-head small{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.add-icon-images,.add-item.active .add-icon-images{border:1px solid var(--line);background:#fff}.icon.brand{flex:none}.device-window{box-sizing:border-box;resize:both;background:var(--surface);border:1px solid var(--line-strong);width:560px;min-width:360px;max-width:calc(100% - 8px);height:580px;min-height:260px;max-height:calc(100% - 8px);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;animation:.16s ease-out rise-in;display:flex;position:absolute;overflow:hidden}.dw-head{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;flex:none;align-items:center;gap:10px;padding:10px 10px 8px 12px;display:flex}body.dragging .dw-head{cursor:grabbing}.dw-icon{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;flex:none;place-items:center;width:34px;height:34px;display:grid}.dw-title{flex-direction:column;flex:1;min-width:0;display:flex}.dw-title strong,.dw-title>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dw-tabs{padding-top:0}.dw-body{flex:1;min-height:0;padding:14px 16px 16px;overflow-y:auto}.dw-body[hidden]{display:none}.dw-cli{flex-direction:column;gap:8px;padding:10px 12px 12px;display:flex;overflow:hidden}.dw-cli-help,.dw-cli .emu-note{margin:0}.dw-note{flex-direction:column;align-items:flex-start;gap:10px;padding:8px 4px;display:flex}.dw-note p{margin:0}.props-title .props-window{margin-left:auto}.shell{flex-direction:column;flex:1;gap:6px;min-height:0;display:flex}.shell-status{flex:none;align-items:center;gap:10px;min-height:26px;display:flex}.shell-term{border:1px solid var(--line-strong);background:#0b0f17;border-radius:12px;flex:1;min-height:120px;padding:8px;display:flex;overflow:hidden}.shell-fit{flex:1;min-width:0;min-height:0;overflow:hidden}.shell-term .xterm{height:100%}.shell-term .xterm-viewport{border-radius:8px}.image-card{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;flex-direction:column;gap:8px;margin-bottom:14px;padding:12px;display:flex}.image-card p{margin:0}.image-card h4{margin:6px 0 0}.image-head{align-items:center;gap:12px;display:flex}.image-head>div{flex-direction:column;flex:1;min-width:0;display:flex}.image-head .props-icon{background:#fff}.image-facts{gap:4px;margin:0;font-size:12.5px;display:grid}.image-facts>div{grid-template-columns:minmax(96px,34%) 1fr;gap:10px;display:grid}.image-facts dt{color:var(--ink-3)}.image-facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.image-links{gap:4px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.image-links li{justify-content:space-between;align-items:baseline;gap:10px;min-width:0;display:flex}.image-links a{color:var(--accent);text-decoration:none}.image-links a:hover{text-decoration:underline}.image-links .mono{flex:none;font-size:11px}.react-flow__node-zone{pointer-events:none!important}.zone{--zone:#3d7eff;box-sizing:border-box;border:1.5px solid color-mix(in srgb, var(--zone) 55%, transparent);background:color-mix(in srgb, var(--zone) 11%, transparent);border-radius:22px;flex-direction:column;transition:border-color .15s,box-shadow .15s;display:flex}.zone.selected{border-color:var(--zone);box-shadow:0 0 0 4px color-mix(in srgb, var(--zone) 22%, transparent)}.zone-head{pointer-events:all;background:color-mix(in srgb, var(--zone) 20%, var(--surface));border:1px solid color-mix(in srgb, var(--zone) 50%, transparent);max-width:calc(100% - 20px);color:var(--ink);cursor:grab;border-radius:999px;align-self:flex-start;align-items:center;gap:8px;margin:8px 10px 0;padding:4px 10px 4px 8px;display:flex}body.dragging .zone-head{cursor:grabbing}.zone-head strong{text-overflow:ellipsis;white-space:nowrap;font:600 13px/1.3 var(--heading);overflow:hidden}.zone-dot{background:var(--zone);border-radius:50%;flex:none;width:10px;height:10px}.zone-status{letter-spacing:.02em;text-transform:uppercase;border-radius:999px;flex:none;padding:1px 7px;font-size:10.5px;font-weight:700}.zone-status.status-up{color:var(--ok);background:var(--ok-soft)}.zone-status.status-down{color:var(--danger);background:var(--danger-soft)}.zone-status.status-hybrid{color:#b7791f;background:#d4a0172e}.zone-text{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;margin:auto 14px 8px;font-size:12.5px;overflow:hidden}.zone-empty{color:var(--ink-3);text-align:center;margin:auto;padding:0 16px;font-size:12.5px}.zone-empty+.zone-text{margin-top:0}.device.idle{opacity:.4;filter:grayscale(.8)}.zone-swatch{border:1px solid var(--line-strong);border-radius:12px;flex:none;width:44px;height:44px;display:inline-block}.zone-swatch.small{border-radius:4px;width:12px;height:12px}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{border:2px solid var(--surface);width:28px;height:28px;box-shadow:0 0 0 1px var(--line-strong);cursor:pointer;border-radius:50%;padding:0}.swatch.active{box-shadow:0 0 0 2px var(--ink)}.swatch-custom{background:conic-gradient(#d64545,#d4a017,#22a06b,#0fa5b5,#3d7eff,#9b6dff,#d64545);position:relative;overflow:hidden}.swatch-custom input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.field .label{color:var(--ink-3);margin-bottom:6px;font-size:12px;display:block}.field textarea{box-sizing:border-box;resize:vertical;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);width:100%;font:inherit;color:inherit;padding:7px 10px}.zone-devices,.zone-list{gap:4px;margin:0 0 12px;padding:0;list-style:none;display:grid}.zone-devices li,.zone-list li{justify-content:space-between;align-items:center;gap:10px;display:flex}.zone-devices .link,.zone-list .link{color:var(--ink);align-items:center;gap:8px;text-decoration:none;display:inline-flex}.zone-devices .link:hover,.zone-list .link:hover{color:var(--accent)}button.add-group-head{text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:11px;width:100%;padding:7px 8px}button.add-group-head:hover:not(:disabled){background:var(--surface-2)}button.add-group-head:disabled{cursor:default;opacity:1}.add-group-chevron{color:var(--ink-3);flex:none;place-items:center;transition:transform .15s;display:grid;transform:rotate(-90deg)}.add-group-chevron.open{transform:none}.add-group-count{background:var(--surface-3);min-width:20px;color:var(--ink-2);text-align:center;border-radius:999px;flex:none;margin-left:auto;padding:1px 6px;font-size:11px;font-weight:600}body.popup-body{background:var(--bg,var(--surface));height:100vh;color:var(--ink);margin:0;overflow:hidden}.popup-root{height:100%}.device-window.detached{resize:none;width:100%;max-width:none;height:100%;max-height:none;box-shadow:none;border:0;border-radius:0;animation:none;position:static}.device-window.detached .dw-head{cursor:default}.port-label.selected{border-color:var(--accent);color:var(--ink)}.market-tabs{padding:0 20px}.market-alert{margin:10px 20px 0}.market-body{flex:1;min-height:0;padding:16px 20px 20px;overflow-y:auto}.market-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;display:grid}.market-card{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;flex-direction:column;gap:6px;padding:14px;display:flex}.market-card.installed{border-color:color-mix(in srgb, #0d597f 45%, var(--line))}.market-card p{margin:0}.market-card-head{align-items:center;gap:12px;display:flex}.market-card-head>div{flex-direction:column;flex:1;min-width:0;display:flex}.market-card-head .mono{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.market-logo{background:#fff}.market-tools{color:var(--ink-2)}.market-card-foot{align-items:center;gap:10px;margin-top:auto;padding-top:6px;display:flex}.market-card-foot a{color:var(--accent);text-decoration:none}.market-card-foot button{margin-left:auto}.market-profiles{grid-template-columns:240px 1fr;gap:18px;display:grid}.profile-list{flex-direction:column;gap:4px;min-width:0;display:flex}.profile-list h4{margin:12px 0 2px}.profile-list .ghost.active{border-color:var(--accent)}.profile-item{text-align:left;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;padding:7px 8px;display:flex}.profile-item:hover{background:var(--surface-2)}.profile-item.active{background:var(--surface-2);border-color:var(--line-strong)}.profile-item>span:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.profile-item strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.profile-state{flex:none;font-size:11px;font-weight:600}.profile-state.state-built{color:var(--ok)}.profile-state.state-outdated{color:#b7791f}.profile-state.state-missing{color:var(--ink-3)}.preset{text-align:left;align-items:center;gap:8px;display:inline-flex}.profile-editor{min-width:0}.profile-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.profile-delete{margin-left:auto}.build-log{margin-top:10px}.build-log pre{white-space:pre-wrap;max-height:240px;font-size:11.5px;overflow:auto}.add-more{align-items:center;gap:6px;margin:4px 8px 2px;display:inline-flex}.shell-pick{align-items:center;gap:8px;display:flex}.shell-pick select{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);width:auto;color:var(--ink);padding:3px 8px}.image-profile{margin:2px 0}@media (width<=720px){.market-profiles{grid-template-columns:1fr}}.device-text .tag-image,.device-text .tag-profile{font:500 10.5px/1.5 var(--mono);align-self:flex-start;margin-top:3px;padding:0 6px}.device-text .tag-image{color:var(--ink-3);border-color:var(--line);background:0 0}.device-text .tag-profile{color:var(--ink-2);background:var(--surface-2);border-color:var(--line-strong)}.device-text .tag-profile.pending{border-style:dashed}.capture{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.capture-tools{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.capture-tools select,.capture-tools input,.capture-show{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);color:var(--ink);padding:5px 8px}.capture-tools input{flex:1;min-width:140px}.capture-status{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.capture-show{width:170px;margin-left:auto;font-size:12px}.capture-list{border:1px solid var(--line);background:var(--canvas);min-height:120px;font:11.5px/1.5 var(--mono);border-radius:10px;flex:1;overflow:auto}.capture-row{white-space:nowrap;cursor:default;grid-template-columns:44px 84px minmax(90px,1fr) minmax(90px,1fr) 64px minmax(180px,3fr);gap:8px;padding:1px 8px;display:grid}.capture-row>span{text-overflow:ellipsis;overflow:hidden}.capture-row:not(.capture-head):hover{background:var(--surface-2)}.capture-row.picked{background:var(--accent-soft)}.capture-head{z-index:1;background:var(--surface);border-bottom:1px solid var(--line);color:var(--ink-3);font-weight:600;position:sticky;top:0}.capture-row.proto-icmp>span:nth-child(5),.capture-row.proto-icmpv6>span:nth-child(5){color:var(--icmp)}.capture-row.proto-arp>span:nth-child(5){color:var(--arp)}.capture-row.proto-tcp>span:nth-child(5),.capture-row.proto-http>span:nth-child(5){color:var(--tcp)}.capture-row.proto-udp>span:nth-child(5),.capture-row.proto-dns>span:nth-child(5),.capture-row.proto-dhcp>span:nth-child(5){color:var(--dns)}.capture-empty{font-family:var(--body,inherit);margin:0;padding:10px}.capture-detail{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;flex:none;max-height:40%;padding:8px 10px;font-size:12px;overflow:auto}.capture-detail summary{cursor:pointer;font-weight:600}.capture-detail dl{gap:2px;margin:4px 0 8px 14px;display:grid}.capture-detail dl>div{grid-template-columns:140px 1fr;gap:8px;display:grid}.capture-detail dt{color:var(--ink-3)}.capture-detail dd{overflow-wrap:anywhere;margin:0}.capture-hex{font:11px/1.45 var(--mono);color:var(--ink-2);white-space:pre;margin:0;overflow-x:auto}.canvas.tool-capture .react-flow__edge,.canvas.tool-capture .react-flow__node-device{cursor:crosshair}.market-section{margin:22px 0 4px}.vendor-logo{font:700 14px/1 var(--heading);color:#444}.market-card.vendor{background:var(--surface);border-style:dashed}body{font-feature-settings:"cv11", "ss03";letter-spacing:-.005em}h1,h2,.gallery-head h2,.brand-name,.props-title h2{font-family:var(--heading);letter-spacing:-.02em}h3{font-family:var(--heading);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);font-size:12px;font-weight:600}.mono,kbd,.emu-info dd,.stats strong,.dash-stats strong,.emu-devices .mono{font-variant-numeric:tabular-nums}.field span,.field label{color:var(--ink-3);font-size:12px}textarea{font:inherit;color:inherit}.field textarea{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);resize:vertical;width:100%;padding:7px 10px}.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.side,.toolbar,.gallery,.menu,.device-window,.inspector{box-shadow:inset 0 1px 0 color-mix(in srgb, var(--ink) 4%, transparent), var(--shadow)}.ghost,.primary,.icon-button,.dropdown-button,.modes button,.tabs button,.link,.chip,.danger{transition:background-color var(--fast) var(--ease), border-color var(--fast) var(--ease), color var(--fast) var(--ease), box-shadow var(--base) var(--ease), transform var(--fast) var(--ease), filter var(--fast) var(--ease)}.ghost:active:not(:disabled),.primary:active:not(:disabled),.icon-button:active:not(:disabled),.danger:active:not(:disabled){transform:scale(.96)}.primary{background:linear-gradient(180deg, color-mix(in srgb, var(--accent), #fff 10%), var(--accent));box-shadow:0 1px 0 #fff3 inset, 0 4px 14px -6px var(--accent-glow)}.primary:hover:not(:disabled){filter:none;box-shadow:0 1px 0 #fff3 inset, 0 6px 20px -6px var(--accent-glow)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 5px var(--accent-soft)}.modes button.active{box-shadow:0 1px 2px #00000040}.tabs button:after{content:"";background:var(--accent);height:2px;transition:transform var(--base) var(--ease);border-radius:2px;position:absolute;bottom:-1px;left:10px;right:10px;transform:scaleX(0)}.tabs button.active:after{transform:scaleX(1)}.inspector{z-index:6;background:var(--surface);border:1px solid var(--line-strong);width:min(360px,100% - 28px);max-height:calc(100% - 100px);animation:slide-in var(--slow) var(--ease);border-radius:18px;flex-direction:column;display:flex;position:absolute;top:14px;right:14px;overflow:hidden}.inspector-head{flex:none;justify-content:space-between;align-items:center;gap:8px;padding:8px 8px 0 16px;display:flex}.inspector-kind{font:600 11px var(--heading);letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.inspector-head .icon-button{width:30px;height:30px}.inspector-body{min-height:0;animation:fade-in var(--base) var(--ease);flex:1;padding:4px 16px 16px;overflow-y:auto}.lab-title .lab-info{width:30px;height:30px}.lab-title .lab-info[aria-pressed=true]{color:var(--accent);background:var(--accent-soft)}.profile-button{border-radius:999px;padding:3px 6px 3px 3px}.dashboard{width:min(980px,100vw - 32px);height:min(680px,100vh - 32px)}.dash-inner{grid-template-columns:230px minmax(0,1fr);height:100%;display:grid}.dash-nav{background:var(--surface-2);border-right:1px solid var(--line);flex-direction:column;gap:2px;padding:16px 10px;display:flex}.dash-user{border-bottom:1px solid var(--line);align-items:center;gap:10px;margin:0 4px 14px;padding-bottom:14px;display:flex}.dash-nav>button{color:var(--ink-2);text-align:left;transition:background-color var(--fast) var(--ease), color var(--fast) var(--ease);background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-weight:500;display:flex}.dash-nav>button:hover{background:var(--surface-3);color:var(--ink)}.dash-nav>button.active{background:var(--surface);border-color:var(--line-strong);color:var(--ink)}.dash-nav>button.active .icon{color:var(--accent)}.dash-main{flex-direction:column;min-width:0;min-height:0;display:flex}.dash-body{min-height:0;animation:fade-in var(--base) var(--ease);flex:1;padding:4px 24px 24px;overflow-y:auto}.dash-body>h3:first-child{margin-top:4px}.dash-lab-text{flex-direction:column;min-width:0;display:flex}.dash-lab-text>*{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dash-profile{align-items:center;gap:18px;margin:8px 0 18px;display:flex}.dash-profile-photo{gap:6px;display:flex}.dash-fields{gap:4px;max-width:520px;display:grid}.dash-fields input{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);width:100%;padding:7px 10px}.dash-stats{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin:18px 0 12px;display:grid}.dash-stats>div{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;flex-direction:column;gap:2px;padding:14px;display:flex}.dash-stats strong{font:600 26px/1 var(--heading)}.dash-stats span{color:var(--ink-3);font-size:12px}.dash-choices{flex-wrap:wrap;gap:8px;display:flex}.dash-choice,.dash-theme{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);transition:border-color var(--fast) var(--ease), background-color var(--fast) var(--ease), transform var(--fast) var(--ease);border-radius:12px;align-items:center;gap:8px;padding:8px 12px;display:inline-flex}.dash-choice:hover,.dash-theme:hover{border-color:var(--line-strong);color:var(--ink)}.dash-choice.active,.dash-theme.active{border-color:var(--accent);color:var(--ink);box-shadow:0 0 0 3px var(--accent-soft)}.dash-themes{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.dash-theme{flex-direction:column;align-items:stretch;gap:8px;padding:8px;font-weight:500}.dash-theme-preview{border:1px solid var(--line-strong);border-radius:8px;height:58px;display:block;position:relative;overflow:hidden}.dash-theme-preview i{display:block;position:absolute}.dash-theme-preview i:first-child{border-radius:6px;width:46%;height:38px;top:10px;left:10px}.dash-theme-preview i:last-child{border-radius:50%;width:22px;height:22px;bottom:12px;right:12px}.dash-inline{max-width:280px}.dash-actions{flex-wrap:wrap;gap:8px;margin:8px 0 14px;display:flex}.dash-labs,.dash-images{flex-direction:column;gap:6px;margin:0 0 14px;padding:0;list-style:none;display:flex}.dash-labs li,.dash-images li{border:1px solid var(--line);background:var(--surface-2);transition:border-color var(--fast) var(--ease);border-radius:12px;align-items:center;gap:10px;padding:10px 12px;display:flex}.dash-labs li:hover,.dash-images li:hover{border-color:var(--line-strong)}.dash-labs li.current{border-color:color-mix(in srgb, var(--accent) 45%, var(--line))}.dash-labs .dash-lab-text,.dash-images .dash-lab-text{flex:1}.dash-images .props-icon{border-radius:10px;width:34px;height:34px}.dash-confirm{gap:6px;display:inline-flex}.dash-keys{border-collapse:collapse;width:100%;font-size:13px}.dash-keys td{border-bottom:1px solid var(--line);padding:7px 4px}.dash-keys td:first-child{white-space:nowrap;width:150px}@media (width<=720px){.dash-inner{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.dash-nav{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;padding:8px;overflow-x:auto}.dash-user{display:none}}.gallery[open]{animation:dialog-in var(--slow) var(--ease)}.gallery[open]::backdrop{animation:fade-in var(--base) var(--ease)}.menu{animation:menu-in var(--base) var(--ease);transform-origin:100% 0}.menu-start{transform-origin:top}.device-tile{transition:border-color var(--base) var(--ease), background-color var(--base) var(--ease), transform var(--base) var(--ease), box-shadow var(--base) var(--ease)}.device:hover .device-tile{border-color:color-mix(in srgb, var(--accent) 40%, var(--line-strong));transform:translateY(-1px)}.react-flow__edge-path{transition:stroke var(--base) var(--ease), stroke-width var(--base) var(--ease)}.emu-devices li,.market-card{transition:background-color var(--fast) var(--ease), border-color var(--fast) var(--ease), transform var(--base) var(--ease)}.emu-devices li:hover{background:var(--surface-3)}.market-card:hover{border-color:var(--line-strong);transform:translateY(-1px)}.emu-state.on:before{content:"";vertical-align:1px;width:6px;height:6px;animation:pulse 2.4s var(--ease) infinite;background:currentColor;border-radius:50%;margin-right:6px;display:inline-block}@keyframes fade-in{0%{opacity:0}}@keyframes slide-in{0%{opacity:0;transform:translate(16px)}}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px)scale(.98)}}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}}.menu-start{animation-name:menu-in-centred}@keyframes menu-in-centred{0%{opacity:0;transform:translate(-50%,-4px)scale(.98)}}@keyframes pulse{to{opacity:.35}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}body[data-motion=reduced] *,body[data-motion=reduced] :before,body[data-motion=reduced] :after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.inspector .stats+h3,.inspector .lab-notes+.stats+h3{margin-top:18px}.practice{grid-template-columns:minmax(0,1fr);min-height:0;padding:0 12px 12px;display:grid}.practice-main{border-radius:18px;min-height:0;overflow-y:auto}.practice-inner{max-width:1080px;animation:fade-in var(--slow) var(--ease);margin:0 auto;padding:18px 12px 28px}.challenge-kicker{font:600 11px var(--heading);letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.box-status{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.level{text-align:center;border:1px solid var(--line-strong);min-width:84px;color:var(--ink-2);border-radius:999px;flex:none;padding:2px 8px;font-size:11px;font-weight:600}.level-1{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, transparent)}.level-2{color:var(--arp);border-color:color-mix(in srgb, var(--arp) 45%, transparent)}.level-3{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, transparent)}.challenge{z-index:6;background:var(--surface);border:1px solid var(--line-strong);width:340px;max-height:calc(100% - 28px);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--ink) 4%, transparent), var(--shadow);animation:challenge-in var(--slow) var(--ease);border-radius:18px;flex-direction:column;display:flex;position:absolute;top:14px;left:14px;overflow:hidden}.challenge.solved{border-color:color-mix(in srgb, var(--ok) 55%, var(--line-strong))}.challenge-head{justify-content:space-between;align-items:flex-start;gap:8px;padding:12px 8px 8px 16px;display:flex}.challenge-head h2{margin:2px 0 0;font-size:16px}.challenge-head .icon-button{width:30px;height:30px}.challenge-head .icon-button .icon{transition:transform var(--base) var(--ease)}.challenge.folded .challenge-head .icon-button .icon{transform:rotate(-90deg)}.challenge-body{animation:fade-in var(--base) var(--ease);padding:0 16px 14px;overflow-y:auto}.challenge-body>p{margin:0 0 4px}.challenge-body h3{margin:12px 0 6px}.challenge-goals{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.challenge-goals li{gap:10px;font-size:13px;display:flex}.challenge-goals li>div{flex-direction:column;gap:2px;min-width:0;display:flex}.challenge-goals small{overflow-wrap:anywhere;font-size:11.5px}.goal-mark{border:1.5px solid var(--line-strong);border-radius:50%;flex:none;place-items:center;width:20px;height:20px;margin-top:1px;display:grid}.goal-ok .goal-mark{background:var(--ok);border-color:var(--ok);color:#fff}.goal-fail .goal-mark{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.challenge-goals li.stale{opacity:.6}.challenge-actions{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.challenge-done{background:var(--ok-soft);border:1px solid color-mix(in srgb, var(--ok) 40%, transparent);animation:dialog-in var(--slow) var(--ease);border-radius:12px;margin-top:12px;padding:10px 12px}.challenge-done .challenge-actions{margin-top:8px}.challenge-hints{color:var(--ink-2);margin:12px 0 0;padding-left:18px}.challenge-hints li+li{margin-top:4px}.challenge-back{margin-top:12px;display:block}@keyframes challenge-in{0%{opacity:0;transform:translate(-16px)}}fieldset.locked{border:0;min-width:0;margin:0;padding:0}fieldset.locked input,fieldset.locked select,fieldset.locked textarea{opacity:.7}.locked-note{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;display:flex}.locked-note>span{flex:1;min-width:160px}.difficulty{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:560px;margin-top:16px;display:grid}.difficulty button{text-align:left;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);transition:border-color var(--fast) var(--ease), box-shadow var(--base) var(--ease);border-radius:12px;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;display:flex}.difficulty button strong{font:600 14px var(--heading);color:var(--ink)}.difficulty button span{font-size:12px;line-height:1.35}.difficulty button:hover{border-color:var(--line-strong)}.difficulty button.active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.difficulty-tag{vertical-align:2px;font:600 10.5px var(--sans);text-transform:none;letter-spacing:0;margin-left:6px}.difficulty-tag.medium{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.primary.spinning .icon{animation:1s linear infinite spin}@media (width<=720px){.difficulty{grid-template-columns:1fr}}.canvas-area.with-challenge .toolbar{left:var(--reserved-left)}.canvas-area.with-challenge .bottom-bar,.canvas-area.with-challenge .banner{left:calc(var(--reserved-left) + (100% - var(--reserved-left)) / 2)}.device-text .live-address{color:var(--accent);align-items:baseline;gap:6px;font-weight:500;display:inline-flex}.device-text .live-address small{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);border-radius:999px;padding:0 5px;font-size:10px;font-weight:600;line-height:1.5}.challenge-solution{background:var(--surface);border:1px solid color-mix(in srgb, var(--ok) 30%, var(--line));animation:fade-in var(--slow) var(--ease);border-radius:10px;margin:8px 0 2px;padding:8px 10px}.challenge-solution>span{color:var(--ink-2);display:block}.challenge-solution ol{margin:6px 0 0;padding-left:18px}.challenge-solution li+li{margin-top:4px}.challenge-head-end{flex:none;align-items:center;gap:4px;display:flex}.challenge-time{border:1px solid var(--line-strong);font:600 12px var(--mono);font-variant-numeric:tabular-nums;color:var(--ink-2);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;display:inline-flex}.challenge-time.warn{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 50%, transparent);animation:pulse 1s var(--ease) infinite}.challenge-time.done{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, transparent)}.challenge-time.over{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 50%, transparent);font-family:var(--sans)}.challenge.expired{border-color:color-mix(in srgb, var(--danger) 55%, var(--line-strong))}.challenge-over,.challenge-done{flex-direction:column;gap:4px;display:flex}.challenge-over{background:var(--danger-soft);border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);animation:dialog-in var(--slow) var(--ease);border-radius:12px;margin-top:12px;padding:10px 12px}.challenge-over .challenge-actions{margin-top:8px}.box-best{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.challenge-meta{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.challenge-meta .difficulty-tag{vertical-align:0;margin-left:0}.lab-row{border-radius:8px;align-items:center;gap:2px;display:flex}.lab-row>button:first-child{text-align:left;min-width:0;color:var(--ink);background:0 0;border:0;border-radius:8px;flex:1;align-items:center;gap:10px;padding:8px 10px;display:flex}.lab-row:hover,.lab-row:focus-within{background:var(--surface-2)}.lab-row.current>button:first-child .menu-text>span{font-weight:600}.lab-row-delete{opacity:0;width:30px;height:30px}.lab-row:hover .lab-row-delete,.lab-row-delete:focus-visible{opacity:1}.lab-row-delete:hover:not(:disabled){color:var(--danger);background:var(--danger-soft)}.lab-row.confirming{background:var(--danger-soft);gap:6px;padding:6px 8px}.lab-row.confirming .menu-text{flex:1}.menu-search{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;width:calc(100% - 8px);margin:4px 4px 6px;padding:7px 10px}.menu-empty{margin:4px 10px 8px}@media (hover:none){.lab-row-delete{opacity:1}}.machine-avatar{flex:none;place-items:center;display:inline-grid;position:relative}.machine-avatar>svg{position:absolute;inset:0}.machine-avatar-icon{color:#fff;filter:drop-shadow(0 1px 1px #00000059);place-items:center;display:grid;position:relative}.challenge-head{align-items:center;gap:10px}.challenge-head-text{flex-direction:column;flex:1;min-width:0;display:flex}.player-card,.featured{background:var(--surface);border:1px solid var(--line);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--ink) 4%, transparent), var(--shadow);text-align:left;color:var(--ink);border-radius:18px;align-items:center;gap:14px;padding:16px 18px;display:flex}.player-badge{background:linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent), #7a3cff 45%));width:52px;height:52px;color:var(--accent-ink);border-radius:14px;place-items:center;display:grid}.player-text,.featured>div{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.player-text strong,.featured strong{font:600 18px/1.2 var(--heading)}.player-bar{background:var(--surface-3);border-radius:6px;height:6px;margin-top:4px;display:block;overflow:hidden}.player-bar i{background:linear-gradient(90deg, var(--ok), var(--accent));height:100%;transition:width var(--slow) var(--ease);border-radius:6px;display:block}.featured{transition:border-color var(--fast) var(--ease), transform var(--base) var(--ease)}button.featured:hover{border-color:var(--line-strong);transform:translateY(-1px)}.featured-tag{font:600 11px var(--heading);letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.featured.done{flex-direction:column;justify-content:center;align-items:stretch}.difficulty.compact{background:var(--surface);border:1px solid var(--line);border-radius:12px;gap:4px;max-width:none;margin:0 0 8px;padding:4px;display:flex}.difficulty.compact button{background:0 0;border-color:#0000;flex-direction:row;padding:6px 12px}.difficulty.compact button.active{background:var(--surface-3);border-color:var(--line-strong);box-shadow:none}.difficulty button strong{align-items:center;gap:6px;display:inline-flex}.machine-tools{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.machine-search{background:var(--surface);border:1px solid var(--line);min-width:200px;color:var(--ink-3);border-radius:12px;flex:1;align-items:center;gap:8px;padding:0 12px;display:flex}.machine-search input{background:0 0;border:0;outline:none;flex:1;min-width:0;padding:9px 0}.machine-tools select{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 12px}.machine-table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow-x:auto}.machine-table{border-collapse:collapse;width:100%;font-size:13px}.machine-table th{text-align:left;color:var(--ink-3);border-bottom:1px solid var(--line);white-space:nowrap;padding:12px 14px;font-size:12px;font-weight:600}.machine-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:10px 14px}.machine-table tr:last-child td{border-bottom:0}.machine-row{cursor:pointer;transition:background-color var(--fast) var(--ease)}.machine-row:hover,.machine-row:focus-visible{background:var(--surface-2);outline:none}.machine-row.locked .machine-cell{opacity:.65}.machine-cell{align-items:center;gap:12px;min-width:220px;display:flex}.machine-cell>div{flex-direction:column;gap:2px;display:flex}.machine-cell strong{font:600 15px var(--heading)}.modes-cell{gap:4px;display:inline-flex}.modes-cell .tag{padding:1px 7px;font-size:10.5px}.modes-cell .medium-tag{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.modes-cell .off{opacity:.4;text-decoration:line-through}.xp-cell{color:var(--arp);font-weight:600}.solved-cell{color:var(--ok);font:600 12px var(--mono);align-items:center;gap:4px;display:inline-flex}.play-cell{text-align:right;white-space:nowrap}.machine-empty{text-align:center;padding:18px}.meter{align-items:flex-end;gap:3px;height:16px;display:inline-flex}.meter i{background:var(--surface-3);border-radius:2px;width:4px;display:block}.meter-1 i.on{background:var(--ok)}.meter-2 i.on{background:var(--arp)}.meter-3 i.on{background:var(--danger)}.machine-page{animation:fade-in var(--slow) var(--ease)}.machine-banner{border:1px solid var(--line);background:radial-gradient(120% 140% at 0% 0%, color-mix(in srgb, var(--box) 32%, transparent), transparent 60%), radial-gradient(80% 120% at 100% 0%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 70%), var(--surface);border-radius:22px;margin-bottom:4px;padding:16px 22px 24px;position:relative}.machine-hero{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.machine-title{flex-direction:column;flex:1;gap:4px;min-width:200px;display:flex}.machine-title h1{font:600 30px/1.1 var(--heading);letter-spacing:-.02em;margin:0}.machine-title p{color:var(--ink-2);margin:2px 0 0}.machine-stats{flex-wrap:wrap;gap:22px;margin:0;display:flex}.machine-stats>div{flex-direction:column;gap:4px;display:flex}.machine-stats dt{color:var(--ink-3);font-size:11.5px}.machine-stats dd{font:600 18px var(--heading);margin:0}.machine-tabs{margin:10px 0 0;padding:0}.machine-tabs button{gap:6px}.machine-body{animation:fade-in var(--base) var(--ease);padding:18px 2px}.machine-body>p{max-width:720px}.machine-start{background:var(--surface);border:1px solid var(--line);border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin:14px 0 6px;padding:16px 18px;display:flex}.machine-start>div{flex-direction:column;gap:3px;max-width:620px;display:flex}.machine-tasks{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.machine-tasks li{background:var(--surface);border:1px solid var(--line);color:var(--ink-2);border-radius:12px;align-items:center;gap:14px;padding:14px 16px;display:flex}.machine-tasks li>span:nth-child(2){flex:1}.machine-tasks li .icon{color:var(--ink-3)}.machine-tasks li.done{border-color:color-mix(in srgb, var(--ok) 40%, var(--line))}.machine-tasks li.done .icon{color:var(--ok)}.task-number{min-width:64px;font:600 12px var(--heading);color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;flex:none}.machine-story{border-left:3px solid var(--box);background:color-mix(in srgb, var(--box) 10%, var(--surface));font:italic 500 16px/1.5 var(--heading);border-radius:0 12px 12px 0;margin:4px 0 18px;padding:14px 18px}.machine-devices{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.machine-devices li{background:var(--surface);border:1px solid var(--line);border-radius:10px;align-items:center;gap:8px;padding:8px 12px;display:flex}.machine-devices li>span:nth-child(2){flex:1}.machine-solution{padding-left:20px;line-height:1.7}.machine-solution.mono{font-size:13px}.machine-locked{text-align:center;background:var(--surface);border:1px dashed var(--line-strong);color:var(--ink-2);border-radius:16px;flex-direction:column;align-items:center;gap:8px;padding:40px 18px;display:flex}@media (width<=900px){.practice-top{grid-template-columns:1fr}}.auth{background:radial-gradient(1200px 600px at 15% -10%, var(--accent-soft), transparent 60%), var(--bg);place-items:center;min-height:100vh;padding:32px 16px;display:grid}.auth-card{border:1px solid var(--line);background:var(--surface);width:min(420px,100%);animation:fade-in var(--base) var(--ease);border-radius:20px;padding:28px 28px 22px;box-shadow:0 24px 60px #0000002e}.auth-brand{align-items:center;gap:10px;margin-bottom:22px;display:flex}.auth-brand .brand-name{font-family:var(--heading);font-weight:600}.auth-lang{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);margin-left:auto;padding:4px 8px;font-size:12.5px}.auth h1{font:600 24px/1.2 var(--heading);margin:0 0 6px}.auth h1+p{margin:0 0 18px;line-height:1.5}.auth code{font:12px var(--mono);background:var(--surface-2);border:1px solid var(--line);border-radius:5px;padding:1px 5px}.auth .field>span,.dash-invite-form .field>span{color:var(--ink-3);font-size:12px}.auth .field input,.auth-form .field input{padding:9px 11px}.auth .field small{font-size:11.5px}.auth-submit{width:100%;margin-top:6px;padding:10px}.auth-error{border:1px solid color-mix(in srgb, var(--danger) 50%, var(--line));background:color-mix(in srgb, var(--danger) 10%, var(--surface));color:var(--ink);border-radius:10px;margin:4px 0 8px;padding:8px 11px;font-size:13px}.auth-switch{text-align:center;margin:16px 0 0}.auth-form{gap:2px;max-width:360px;display:grid}.auth-form .primary{justify-self:start;margin-top:4px}.ok-text{color:var(--ok);margin:2px 0 6px}.dash-invite-form{grid-template-columns:1.2fr .7fr .9fr;align-items:end;gap:0 10px;max-width:620px;margin:8px 0 12px;display:grid}.dash-invite-form .field select,.dash-invite-form .field input{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);width:100%;padding:7px 10px}.dash-invite-note{grid-column:1/3}.dash-invite-form>button{margin-bottom:10px}.dash-users select{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-s);padding:5px 8px;font-size:12.5px}.dash-users li.disabled .dash-lab-text{opacity:.55}.dash-users .dash-confirm input{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-s);width:180px;padding:5px 8px;font-size:12.5px}.dash-invites,.dash-users{margin-bottom:18px}@media (width<=640px){.dash-invite-form{grid-template-columns:1fr 1fr}.dash-invite-note{grid-column:1/-1}.dash-users li,.dash-invites li{flex-wrap:wrap}}.rankings{flex-direction:column;gap:14px;display:flex}.podium{grid-template-columns:1fr 1.15fr 1fr;align-items:end;gap:12px;margin:4px 0 0;padding:0;list-style:none;display:grid}.podium li{border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:6px;padding:18px 12px 16px;display:flex}.podium li strong{font-family:var(--heading)}.podium-first{order:2;border-color:color-mix(in srgb, #d4a72c 55%, var(--line))!important;background:linear-gradient(180deg, color-mix(in srgb, #d4a72c 14%, var(--surface)), var(--surface))!important;padding-top:26px!important}.podium-second{order:1}.podium-third{order:3}.podium li.me{box-shadow:0 0 0 2px var(--accent-soft)}.podium-place{width:26px;height:26px;font:700 13px var(--mono);background:var(--surface-3);color:var(--ink);border-radius:50%;place-items:center;display:grid}.podium-first .podium-place{color:#1d1600;background:#d4a72c}.podium-second .podium-place{color:#15181c;background:#b9c0c9}.podium-third .podium-place{color:#1d1006;background:#c58a5a}.podium-xp{color:var(--accent);font-weight:600}.rank-avatar{background:color-mix(in srgb, var(--accent) 22%, var(--surface-2));border:1px solid color-mix(in srgb, var(--accent) 40%, var(--line));color:var(--ink);font-weight:700;font-family:var(--heading);border-radius:50%;flex:none;place-items:center;display:grid}.rank-table tr.me td{background:color-mix(in srgb, var(--accent) 8%, transparent)}.rank-position{width:44px;font-weight:700}.solves-cell{color:var(--ok);gap:2px;display:inline-flex}@media (width<=640px){.podium{grid-template-columns:1fr}.podium li{order:initial!important}}.dash-search{max-width:360px;margin:6px 0 12px}.dash-students li{flex-direction:column;align-items:stretch}.dash-student-head{text-align:left;background:0 0;border:0;align-items:center;gap:10px;width:100%;padding:0;display:flex}.dash-student-head .dash-lab-text{flex:1}.dash-student-head[aria-expanded=true] .icon{transform:rotate(180deg)}.dash-solves{margin-top:8px}.app-sidebar{background:var(--surface);border:1px solid var(--line);border-radius:18px;flex-direction:column;gap:10px;min-height:0;padding:12px;display:flex;overflow-y:auto}.app-sidebar .player-card{box-shadow:none;background:var(--surface-2);gap:12px;padding:12px}.app-sidebar .player-badge{border-radius:12px;width:42px;height:42px}.app-sidebar .player-text strong{font-size:15px}.rail-sections{border-top:1px solid var(--line);flex-direction:column;gap:2px;margin-top:4px;padding-top:10px;display:flex}.rail-sections button{color:var(--ink-2);text-align:left;transition:background-color var(--fast) var(--ease), color var(--fast) var(--ease);background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:11px;padding:9px 12px;font-weight:500;display:flex}.rail-sections button:hover{background:var(--surface-2);color:var(--ink)}.rail-sections button.active{background:var(--surface-2);border-color:var(--line-strong);color:var(--ink)}.rail-sections button.active .icon{color:var(--accent)}.season-mini{border:1px solid color-mix(in srgb, var(--season) 45%, var(--line));background:linear-gradient(135deg, color-mix(in srgb, var(--season) 22%, var(--surface)), var(--surface-2));color:var(--ink);text-align:left;border-radius:14px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.season-mini-icon{background:color-mix(in srgb, var(--season) 30%, var(--surface));width:34px;height:34px;color:var(--season);border-radius:10px;place-items:center;display:grid}.season-mini-text{flex-direction:column;min-width:0;display:flex}.season-mini-text>*{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.season-mini-theme{font:700 10.5px var(--mono);background:var(--season);color:#fff;border-radius:6px;padding:2px 6px}.section-head{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:18px;display:flex}.section-icon{background:var(--accent-soft);width:48px;height:48px;color:var(--accent);border-radius:14px;flex:none;place-items:center;display:grid}.section-text{flex:1;min-width:240px}.section-text h1{font:600 26px/1.15 var(--heading);letter-spacing:-.02em;margin:0}.section-text p{max-width:680px;margin:4px 0 0}.section-kicker{font:600 11px var(--mono);letter-spacing:.04em;color:var(--accent)}.section-tools{align-items:center;gap:8px;display:flex}.next-machine{width:100%;margin-bottom:14px}.next-machine:hover{border-color:var(--line-strong)}.start-hero{border:1px solid var(--line);background:radial-gradient(700px 260px at 0% 0%, var(--accent-soft), transparent 70%), var(--surface);border-radius:22px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;margin-bottom:18px;padding:28px;display:grid}.start-hero h1{font:700 32px/1.1 var(--heading);letter-spacing:-.02em;margin:6px 0 8px}.start-hero p{max-width:620px;margin:0;line-height:1.55}.start-chips{color:var(--ink-2);flex-wrap:wrap;gap:8px 18px;margin:16px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.start-chips li{align-items:center;gap:6px;display:inline-flex}.start-chips .icon{color:var(--accent)}.start-art{background:var(--surface-2);color:var(--accent);border-radius:20px;grid-template-columns:auto auto;gap:10px;padding:18px;display:grid;position:relative}.start-art .icon:first-child{grid-column:1/-1;justify-self:center}.tier-tabs{border-bottom:1px solid var(--line);scrollbar-width:thin;margin-bottom:18px;overflow:auto hidden}.tier-tabs button{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.tier-tabs button .icon{color:var(--ok)}.tier-about{grid-template-columns:1.2fr 1fr;gap:28px;margin-bottom:14px;display:grid}.tier-about h3{text-transform:none;letter-spacing:0;font:600 15px var(--heading);color:var(--ink);margin:0 0 8px}.tier-about p{margin:0;line-height:1.6}.tier-skills{color:var(--ink-2);flex-direction:column;gap:5px;margin:0;padding-left:18px;font-size:13.5px;display:flex}.tier-progress{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin:8px 0 16px;font-size:13px;font-weight:600;display:grid}.tier-progress .player-bar{height:8px;margin:0}.tier-items{flex-direction:column;gap:8px;margin:0 0 14px;padding:0;list-style:none;display:flex}.tier-item{background:var(--surface);border:1px solid var(--line);width:100%;color:var(--ink);text-align:left;transition:border-color var(--fast) var(--ease);border-radius:14px;align-items:center;gap:14px;padding:12px 14px;display:flex}.tier-item:hover{border-color:var(--line-strong)}.tier-item.done{border-color:color-mix(in srgb, var(--ok) 35%, var(--line))}.tier-item-icon{background:var(--surface-2);width:38px;height:38px;color:var(--accent);border-radius:11px;flex:none;place-items:center;display:grid}.tier-item.done .tier-item-icon{background:color-mix(in srgb, var(--ok) 16%, var(--surface));color:var(--ok)}.tier-item-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.tier-item>.icon:last-child{color:var(--ink-3);transform:rotate(-90deg)}.lesson{max-width:760px;animation:fade-in var(--base) var(--ease)}.lesson-head{align-items:center;gap:14px;margin:12px 0 14px;display:flex}.lesson-head h2{font:600 24px/1.2 var(--heading);margin:0}.lesson-body p{font:15.5px/1.7 var(--sans);color:var(--ink);max-width:68ch;margin:0 0 14px}.lesson-question{border:1px solid var(--line);background:var(--surface);border-radius:16px;margin-top:18px;padding:18px}.lesson-question h3{margin:0 0 6px}.lesson-question>p{margin:0 0 12px;font-weight:600}.lesson-options{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.lesson-options button{background:var(--surface-2);border:1px solid var(--line);text-align:left;color:var(--ink);border-radius:12px;align-items:center;gap:12px;padding:10px 12px;display:flex}.lesson-options button:hover:not(:disabled){border-color:var(--line-strong)}.lesson-options button.right{border-color:var(--ok);background:color-mix(in srgb, var(--ok) 12%, var(--surface));opacity:1}.lesson-options button.wrong{border-color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, var(--surface))}.lesson-letter{background:var(--surface);border:1px solid var(--line-strong);width:26px;height:26px;font:600 12px var(--mono);border-radius:8px;place-items:center;display:grid}.reference-table td.mono{white-space:nowrap;color:var(--ink)}.track-grid,.season-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.track-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:18px}.track-card{background:var(--surface);border:1px solid var(--line);color:var(--ink);text-align:left;transition:border-color var(--fast) var(--ease), transform var(--base) var(--ease);border-radius:16px;flex-direction:column;align-items:stretch;padding:0;display:flex;overflow:hidden}.track-card:hover{border-color:color-mix(in srgb, var(--track) 55%, var(--line));transform:translateY(-2px)}.track-art{height:210px;color:var(--track);background:radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--track) 22%, transparent), transparent 65%), radial-gradient(color-mix(in srgb, var(--track) 30%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--surface-2);place-items:center;display:grid;position:relative}.track-corner{background:var(--track);color:#fff;border-bottom-right-radius:12px;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:0;left:0}.track-card.upcoming .track-art{filter:grayscale();opacity:.6}.track-text{flex-direction:column;gap:6px;padding:16px 18px 18px;display:flex}.track-text strong{font:600 18px/1.25 var(--heading)}.track-level{font:600 11.5px var(--mono);text-align:center}.track-foot{color:var(--ink-3);margin-top:4px}.track-text .player-bar{margin-top:2px}.track-banner,.season-banner{border:1px solid color-mix(in srgb, var(--track,var(--season)) 40%, var(--line));background:radial-gradient(600px 240px at 0% 0%, color-mix(in srgb, var(--track,var(--season)) 20%, transparent), transparent 70%), var(--surface);border-radius:22px;flex-wrap:wrap;align-items:center;gap:22px;margin:10px 0 16px;padding:24px;display:flex}.track-banner>div,.season-banner>div:not(.season-admin){flex:1;min-width:240px}.track-banner h1,.season-banner h1{font:700 28px/1.15 var(--heading);margin:4px 0 6px}.track-banner p,.season-banner p{max-width:640px;margin:0;line-height:1.55}.track-banner-icon,.season-banner-icon{background:color-mix(in srgb, var(--track,var(--season)) 18%, var(--surface-2));width:96px;height:96px;color:var(--track,var(--season));border-radius:24px;flex:none;place-items:center;display:grid}.track-mode{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.season-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.season-card{border:1px solid color-mix(in srgb, var(--season) 35%, var(--line));background:var(--surface);min-height:380px;color:var(--ink);text-align:left;transition:transform var(--base) var(--ease), box-shadow var(--base) var(--ease);border-radius:18px;flex-direction:column;align-items:stretch;padding:0;display:flex;overflow:hidden}.season-card:hover{box-shadow:0 18px 40px color-mix(in srgb, var(--season) 22%, transparent);transform:translateY(-3px)}.season-card.over{filter:saturate(.55)}.season-art{color:#fff;background:radial-gradient(circle at 50% 40%, #ffffff2e, transparent 55%), linear-gradient(160deg, color-mix(in srgb, var(--season) 85%, #fff), color-mix(in srgb, var(--season) 70%, #000));flex:none;place-items:center;height:230px;display:grid;position:relative}.season-art .icon{filter:drop-shadow(0 6px 14px #00000040)}.season-theme{font:700 12px var(--mono);letter-spacing:.04em;background:#0000004d;border-radius:8px;padding:3px 8px;position:absolute;top:12px;left:12px}.season-text{flex-direction:column;flex:1;gap:5px;padding:12px 14px 14px;display:flex}.season-foot{margin-top:auto!important}.season-text strong{font:600 16px/1.25 var(--heading)}.season-summary{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.season-foot{color:var(--ink-3);justify-content:space-between;gap:8px;margin-top:4px;display:flex}.season-phase{font:600 11px var(--mono);border:1px solid var(--line-strong);color:var(--ink-2);border-radius:999px;align-self:flex-start;padding:2px 8px}.season-phase.running{border-color:color-mix(in srgb, var(--ok) 50%, var(--line));color:var(--ok)}.season-phase.upcoming{border-color:color-mix(in srgb, var(--arp) 50%, var(--line));color:var(--arp)}.season-admin{align-self:flex-start;gap:6px;display:flex}.season-inspiration{border-left:3px solid var(--season);background:var(--surface);border-radius:0 14px 14px 0;margin-bottom:8px;padding:16px 18px}.season-inspiration h3{margin-top:0}.season-inspiration p{white-space:pre-line;margin:0;line-height:1.65}.season-editor{border:1px solid var(--line);background:var(--surface);border-radius:18px;max-width:820px;padding:20px}.season-editor h2{font:600 20px var(--heading);margin:0 0 14px}.season-editor .field>span{color:var(--ink-3);font-size:12px}.season-editor textarea{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);width:100%;font:inherit;color:inherit;resize:vertical;padding:8px 10px}.season-editor-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;display:grid}.season-editor input[type=color]{height:36px;padding:2px 4px}.season-icons{flex-wrap:wrap;gap:4px;display:flex}.season-icons button{border:1px solid var(--line);background:var(--surface-2);width:32px;height:32px;color:var(--ink-2);border-radius:8px;place-items:center;display:grid}.season-icons button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.season-machines{border:1px solid var(--line);border-radius:12px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px 14px;margin:6px 0 14px;padding:12px;display:grid}.season-machines legend{color:var(--ink-3);padding:0 6px;font-size:12px}.season-machines label{align-items:flex-start;gap:8px;font-size:13px;display:flex}@media (width<=900px){.tier-about,.start-hero,.season-editor-grid{grid-template-columns:minmax(0,1fr)}.start-art{display:none}}.guide{grid-template-columns:230px minmax(0,1fr);align-items:start;gap:28px;display:grid}.guide-toc{border:1px solid var(--line);background:var(--surface);scrollbar-width:thin;border-radius:16px;max-height:calc(100vh - 140px);padding:14px 10px;position:sticky;top:12px;overflow-y:auto}.guide-toc .section-kicker{padding:0 8px 8px;display:block}.guide-toc ol{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.guide-toc button{width:100%;color:var(--ink-2);text-align:left;background:0 0;border:0;border-radius:9px;align-items:center;gap:9px;padding:6px 8px;font-size:13px;line-height:1.3;display:flex}.guide-toc button:hover{background:var(--surface-2);color:var(--ink)}.guide-toc button.read{color:var(--ink)}.guide-toc-n{background:var(--surface-2);width:22px;height:22px;font:600 11px var(--mono);color:var(--ink-3);border-radius:7px;flex:none;place-items:center;display:grid}.guide-toc button.read .guide-toc-n{background:color-mix(in srgb, var(--ok) 18%, var(--surface));color:var(--ok)}.guide-body{min-width:0;max-width:820px}.guide-head{border-bottom:1px solid var(--line);margin-bottom:8px;padding-bottom:14px}.guide-head h2{font:700 28px/1.15 var(--heading);letter-spacing:-.01em;margin:0 0 8px}.guide-head p{font:15.5px/1.65 var(--sans);max-width:70ch;margin:0 0 8px}.guide-section{border-bottom:1px solid var(--line);padding:22px 0 6px;scroll-margin-top:12px}.guide-section h3{font:650 21px/1.25 var(--heading);text-transform:none;letter-spacing:0;color:var(--ink);align-items:center;gap:12px;margin:0 0 14px;display:flex}.guide-n{background:var(--accent-soft);width:30px;height:30px;color:var(--accent);font:700 14px var(--mono);border-radius:9px;flex:none;place-items:center;display:grid}.guide-section p,.guide-section li{font:15.5px/1.7 var(--sans);color:var(--ink)}.guide-section p{max-width:72ch;margin:0 0 14px}.guide-section ul,.guide-section ol{flex-direction:column;gap:6px;max-width:72ch;margin:0 0 16px;padding-left:22px;display:flex}.guide-section code{background:var(--surface-2);border:1px solid var(--line);font:13.5px var(--mono);border-radius:6px;padding:1px 6px}.guide-steps{counter-reset:step;list-style:none;padding-left:0!important}.guide-steps li{counter-increment:step;padding-left:38px;position:relative}.guide-steps li:before{content:counter(step);background:var(--surface-2);border:1px solid var(--line-strong);width:26px;height:26px;font:600 12px var(--mono);color:var(--accent);border-radius:50%;place-items:center;display:grid;position:absolute;top:2px;left:0}.guide-figure{border:1px solid var(--line);background:var(--surface);border-radius:16px;margin:6px 0 20px;padding:16px}.guide-figure figcaption{color:var(--ink-2);text-align:center;margin-top:10px;font-size:13.5px;line-height:1.55}.guide-table-wrap{margin-bottom:18px}.guide-table td{vertical-align:top;line-height:1.5}.guide-table td.mono{white-space:nowrap;color:var(--ink)}.guide-note{border:1px solid color-mix(in srgb, var(--c) 40%, var(--line));background:color-mix(in srgb, var(--c) 8%, var(--surface));border-radius:12px;gap:12px;max-width:72ch;margin:0 0 18px;padding:12px 14px;display:flex}.guide-note>.icon{color:var(--c);flex:none;margin-top:2px}.guide-note>div>strong{color:var(--c);margin-bottom:2px;font-size:13px;display:block}.guide-note p{margin:0;font-size:14.5px;line-height:1.6}.guide-note-tip{--c:var(--accent)}.guide-note-lab{--c:var(--ok)}.guide-note-warn{--c:var(--arp)}.guide-code{background:var(--canvas);border:1px solid var(--line);font:13px/1.6 var(--mono);color:var(--ink);border-radius:12px;margin:0 0 18px;padding:12px 14px;overflow-x:auto}.guide-refs{list-style:none;gap:10px!important;padding:0!important}.guide-refs li{flex-direction:column;gap:2px;display:flex}.guide-refs a{color:var(--accent);align-items:center;gap:7px;font-weight:600;text-decoration:none;display:inline-flex}.guide-refs a:hover{text-decoration:underline}.guide-quiz{border-bottom:0}.quiz-intro{border:1px solid var(--line);background:var(--surface);border-radius:16px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:18px;display:grid}.quiz-intro h3{margin:0 0 4px;font-size:18px}.quiz-intro p{margin:0 0 4px;font-size:14px}.quiz-run,.quiz-result{border:1px solid var(--line);background:var(--surface);border-radius:16px;padding:18px}.quiz-top{color:var(--ink-2);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:14px;display:grid}.quiz-top .player-bar{height:6px;margin:0}.quiz-question{font-weight:600;margin:0 0 12px!important;font-size:16.5px!important}.quiz-wrong{border:1px solid color-mix(in srgb, var(--danger) 45%, var(--line));background:color-mix(in srgb, var(--danger) 8%, var(--surface));border-radius:12px;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.quiz-wrong strong{color:var(--danger)}.quiz-score{align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.quiz-score strong{font:700 44px/1 var(--heading);color:var(--danger)}.quiz-score.pass strong{color:var(--ok)}.quiz-result h4{margin:16px 0 8px}.quiz-review{list-style:none;gap:10px!important;margin-bottom:16px!important;padding:0!important}.quiz-review li{background:var(--surface-2);border-radius:12px;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;display:flex;font-size:14px!important}.fig-svg{width:100%;height:auto;max-height:420px;display:block}.fig-svg .f-t{fill:var(--ink);font:500 13px var(--sans)}.fig-svg .f-small{font-size:11.5px}.fig-svg .f-mono{font-family:var(--mono)}.fig-svg .f-bold{font-weight:700}.fig-svg .f-dim{fill:var(--ink-2)}.fig-svg .f-halo{paint-order:stroke;stroke:var(--surface);stroke-width:5px;stroke-linejoin:round}.fig-svg .f-node{fill:var(--surface-2);stroke:var(--line-strong);stroke-width:1.5px}.fig-svg .f-icon path{fill:none;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.fig-svg .f-icon[style] path{stroke:inherit}.fig-svg .f-line{stroke:var(--ink-3);fill:none}.fig-svg .f-life{stroke:var(--line-strong);stroke-width:1.5px;stroke-dasharray:4 4}.fig-svg .f-dot{fill:var(--surface-2);stroke:var(--accent);stroke-width:2px}.fig-svg .f-tint{fill:color-mix(in srgb, var(--c) 16%, var(--surface));stroke:color-mix(in srgb, var(--c) 70%, transparent);stroke-width:1.3px}.fig-svg .f-solid{fill:var(--c);stroke:none}.fig-svg .f-zone{fill:color-mix(in srgb, var(--c) 5%, transparent);stroke:var(--c);stroke-width:1.4px;stroke-dasharray:6 5}@media (width<=1100px){.guide{grid-template-columns:minmax(0,1fr)}.guide-toc{max-height:none;position:static}.guide-toc ol{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}}@media (width<=600px){.quiz-intro{grid-template-columns:minmax(0,1fr)}.quiz-intro .section-icon{display:none}.guide-figure{padding:8px}}.back-button{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);transition:border-color var(--fast) var(--ease), background var(--fast) var(--ease), transform var(--fast) var(--ease);border-radius:999px;align-items:center;gap:8px;margin-bottom:14px;padding:8px 16px 8px 12px;font-size:14px;font-weight:600;display:inline-flex;box-shadow:0 1px 2px #0000000f}.back-button .icon{color:var(--accent)}.back-button:hover{border-color:var(--accent);background:var(--accent-soft)}.back-button:active{transform:translate(-2px)}.protocol-tags{flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.protocol-tags button{border:1px solid color-mix(in srgb, var(--tag) 55%, transparent);background:color-mix(in srgb, var(--tag) 14%, var(--surface));color:var(--ink);font:600 12px var(--mono);transition:background var(--fast) var(--ease);border-radius:999px;padding:3px 10px}.protocol-tags button:hover{background:color-mix(in srgb, var(--tag) 28%, var(--surface))}.protocol-library{margin:4px 0 22px}.protocol-library h3{text-transform:none;letter-spacing:0;font:600 15px var(--heading);color:var(--ink);margin:0 0 4px}.protocol-library p{margin:0 0 12px}.protocol-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;display:grid}.protocol-card{border:1px solid var(--line);background:var(--surface);color:var(--ink);text-align:left;transition:border-color var(--fast) var(--ease);border-radius:14px;align-items:center;gap:12px;padding:12px;display:flex}.protocol-card:hover{border-color:var(--tag)}.protocol-card-icon{background:color-mix(in srgb, var(--tag) 16%, var(--surface));width:38px;height:38px;color:var(--tag);border-radius:11px;flex:none;place-items:center;display:grid}.protocol-card-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.protocol-page{animation:fade-in var(--slow) var(--ease)}.protocol-hero{border:1px solid var(--line);background:linear-gradient(135deg, color-mix(in srgb, var(--tag) 14%, var(--surface)), var(--surface) 60%);border-radius:22px;align-items:flex-start;gap:22px;margin-bottom:8px;padding:24px;display:flex}.protocol-hero-icon{background:color-mix(in srgb, var(--tag) 20%, var(--surface));width:76px;height:76px;color:var(--tag);border-radius:20px;flex:none;place-items:center;display:grid}.protocol-hero h1{font:700 32px/1.1 var(--heading);margin:4px 0 2px}.protocol-hero p{max-width:70ch;margin:10px 0 0;line-height:1.6}.protocol-body{max-width:900px}.protocol-body .section-kicker{margin-bottom:4px;display:block}.spoiler{position:relative}.spoiler-content{transition:filter var(--slow) var(--ease), opacity var(--slow) var(--ease)}.spoiler:not(.shown) .spoiler-content{filter:blur(9px);opacity:.55;-webkit-user-select:none;user-select:none;pointer-events:none;max-height:520px;overflow:hidden}.spoiler-cover{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex;position:absolute;inset:0}.spoiler-cover .icon{color:var(--accent)}.spoiler-cover strong{font-size:16px}.spoiler-cover span{max-width:46ch}.spoiler-cover button{margin-top:6px}.spoiler-hide{margin-top:12px}.walkthrough{border-bottom:0;padding-top:6px}@media (width<=700px){.protocol-hero{flex-direction:column;padding:18px}}.machine-admin-list li{gap:12px}.machine-editor h3{text-transform:none;letter-spacing:0;font:600 18px var(--heading);color:var(--ink);align-items:center;gap:10px;margin:0 0 14px;display:flex}.machine-editor h4{font:600 14px var(--heading);margin:18px 0 8px}.machine-editor-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:0 14px;display:grid}.machine-editor .field input,.machine-editor .field select,.machine-editor .field textarea{color:var(--ink)}.machine-protocols{flex-wrap:wrap;gap:6px;display:flex}.machine-protocols label{border:1px solid var(--line-strong);font:600 11.5px var(--mono);color:var(--ink-2);cursor:pointer;border-radius:999px;align-items:center;gap:5px;padding:4px 10px;display:inline-flex}.machine-protocols label.on{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}.machine-protocols input{display:none}.machine-file-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.machine-file-preview{object-fit:cover;border:1px solid var(--line-strong);border-radius:50%;width:44px;height:44px}.button-like{cursor:pointer;border-radius:var(--radius-s);border:1px solid var(--line-strong);align-items:center;gap:6px;padding:5px 10px;font-size:12.5px;display:inline-flex}.button-like:hover{border-color:var(--accent)}.machine-labs{grid-template-columns:1fr 1fr;gap:10px 14px;display:grid}.machine-labs>div{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;display:flex}.machine-labs>p{grid-column:1/-1;align-items:center;gap:6px;margin:0;display:flex}.ok-text{color:var(--ok)}.error-text{color:var(--danger)}.machine-goals{flex-direction:column;gap:8px;margin:0 0 8px;padding:0;list-style:none;display:flex}.machine-goals li{border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:6px;padding:10px;display:flex}.machine-goals input,.machine-goals select{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);color:var(--ink);min-width:0;padding:6px 9px}.machine-goal-check{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.machine-goal-check input{flex:120px}.machine-hidden{align-items:center;gap:8px;margin:14px 0;font-size:13.5px;display:flex}.machine-editor-actions{flex-wrap:wrap;gap:10px;display:flex}.machine-avatar-image{aspect-ratio:1;object-fit:cover;border-radius:50%;width:auto;height:auto;position:absolute}.walkthrough-pdf{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:16px;display:flex}.walkthrough-pdf iframe{border:1px solid var(--line);background:var(--surface);border-radius:14px;width:100%;height:640px}.button-link{align-items:center;gap:6px;text-decoration:none;display:inline-flex}@media (width<=700px){.machine-labs{grid-template-columns:1fr}}.quiz-review .quiz-answer{align-items:baseline;gap:6px;font-size:13.5px;display:flex}.quiz-review .quiz-answer.wrong{color:var(--danger)}.quiz-review .quiz-answer.right{color:var(--ok)}.brand-home{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:10px;padding:2px 6px 2px 2px;display:inline-flex}.brand-home:hover .brand-mark{filter:brightness(1.1);box-shadow:0 0 0 4px var(--accent-soft)}.home{min-height:0;overflow-y:auto}.home-inner{max-width:1240px;animation:fade-in var(--slow) var(--ease);flex-direction:column;gap:18px;margin:0 auto;padding:22px 24px 40px;display:flex}.home-head{align-items:center;gap:18px;display:flex}.home-head>div{flex-direction:column;flex:1;align-items:flex-start;gap:6px;min-width:0;display:flex}.home-head h1{font:700 30px/1.1 var(--heading);letter-spacing:-.01em;margin:0}.home-head h1 .muted{font:500 18px var(--mono)}.home-top{grid-template-columns:1fr 1fr 1fr;gap:18px;display:grid}.home-column{flex-direction:column;gap:18px;min-width:0;display:flex}.home-card{border:1px solid var(--line);background:var(--surface);border-radius:20px;flex-direction:column;gap:10px;min-width:0;padding:18px;display:flex;position:relative}.home-card h3{text-transform:none;letter-spacing:0;font:600 16px var(--heading);color:var(--ink);margin:0}.home-level-art{background:radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--accent) 30%, transparent), transparent 62%), radial-gradient(color-mix(in srgb, var(--accent) 22%, transparent) 1px, transparent 1.5px) 0 0 / 16px 16px, var(--surface-2);border-radius:20px 20px 0 0;flex-direction:column;justify-content:center;align-items:center;gap:22px;height:240px;margin:-18px -18px 4px;display:flex;position:relative}.home-badge{background:linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 50%, #7b61ff));width:108px;height:108px;color:var(--accent-ink);box-shadow:0 12px 30px -10px var(--accent-glow,var(--accent));border-radius:30px;place-items:center;display:grid;transform:rotate(45deg)}.home-badge .icon{transform:rotate(-45deg)}.home-level-n{font:700 34px/1 var(--heading)}.home-level-n small{color:var(--ink-2);font-size:16px}.home-meter{justify-content:space-between;align-items:baseline;font-size:13px;font-weight:600;display:flex}.home-card .player-bar{height:8px;margin:0}.home-stats{grid-template-columns:1fr 1fr;gap:10px;margin-top:auto;display:grid}.home-stats>div{background:var(--surface-2);border-radius:14px;flex-direction:column;gap:2px;padding:12px;display:flex}.home-stats strong{font:700 20px var(--heading)}.home-stats span{color:var(--ink-3);font-size:12.5px}.home-season{text-align:center;background:radial-gradient(400px 220px at 50% 20%, color-mix(in srgb, var(--season,var(--ink-3)) 18%, transparent), transparent 70%), var(--surface);align-items:center}.home-season .home-stats,.home-season .ghost{align-self:stretch}.home-season.empty{justify-content:center}.home-chip{background:var(--surface-2);font:600 12px var(--mono);border-radius:999px;align-self:flex-end;padding:4px 10px}.home-season-icon{border:2px solid color-mix(in srgb, var(--season,var(--ink-3)) 60%, transparent);width:96px;height:96px;color:var(--season,var(--ink-3));background:color-mix(in srgb, var(--season,var(--ink-3)) 12%, var(--surface-2));border-radius:26px;place-items:center;margin:6px 0;display:grid}.home-streak-n{font:700 30px var(--heading);align-items:center;gap:10px;display:flex}.home-flame{flex:none}.home-trend{flex:1}.home-bars{flex:1;grid-auto-columns:1fr;grid-auto-flow:column;align-items:end;gap:10px;min-height:110px;display:grid}.home-bars span{border-bottom:2px solid var(--line-strong);align-items:flex-end;height:100%;display:flex}.home-bars i{background:color-mix(in srgb, var(--ok) 55%, var(--surface-2));border-radius:6px 6px 0 0;width:100%;display:block}.home-bars span.now i{background:var(--ok)}.home-tabs{background:var(--surface-2);border-radius:14px;grid-template-columns:1fr 1fr;gap:6px;padding:5px;display:grid}.home-tabs button{color:var(--ink-2);background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:9px;font-weight:600;display:inline-flex}.home-tabs button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000001f}.home-machines{grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:14px;display:grid}.home-machine{border:1px solid var(--line);background:var(--surface);color:var(--ink);text-align:left;transition:transform var(--base) var(--ease), border-color var(--fast) var(--ease);border-radius:16px;flex-direction:column;align-items:flex-start;gap:4px;padding:0 0 14px;display:flex;overflow:hidden}.home-machine:hover{border-color:color-mix(in srgb, var(--box) 55%, var(--line));transform:translateY(-2px)}.home-machine>:not(.home-machine-art){padding:0 14px}.home-machine-art{background:radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--box) 40%, transparent), transparent 70%), color-mix(in srgb, var(--box) 14%, var(--surface-2));align-self:stretch;place-items:center;height:140px;margin-bottom:8px;display:grid}.home-machine strong{font:600 16px var(--heading)}.home-bottom{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:18px;display:grid}.home-start ul,.home-news ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.home-start button{border:1px solid var(--line);background:var(--surface-2);width:100%;color:var(--ink);text-align:left;border-radius:12px;grid-template-columns:minmax(140px,auto) minmax(0,1fr) 40px;align-items:center;gap:12px;padding:10px 12px;font-size:13.5px;font-weight:600;display:grid}.home-start button:hover{border-color:var(--line-strong)}.home-start .mono{text-align:right;color:var(--ok)}.home-news li{border-bottom:1px solid var(--line);gap:12px;padding-bottom:10px;display:flex}.home-news li:last-child{border-bottom:0;padding-bottom:0}.home-news li>div{flex-direction:column;gap:3px;display:flex}.home-news-icon{background:var(--accent-soft);width:38px;height:38px;color:var(--accent);border-radius:11px;flex:none;place-items:center;display:grid}.home-shortcuts{flex-direction:column;gap:8px;display:flex}.home-shortcuts button{border:1px solid var(--line);background:var(--surface);color:var(--ink);text-align:left;border-radius:16px;align-items:center;gap:12px;padding:12px 14px;display:flex}.home-shortcuts button:hover{border-color:var(--accent)}.home-shortcuts button>span:nth-child(2){flex-direction:column;flex:1;gap:2px;display:flex}@media (width<=1000px){.home-top{grid-template-columns:1fr 1fr}.home-top>.home-column{flex-direction:row;grid-column:1/-1}.home-top>.home-column>*{flex:1}}@media (width<=700px){.home-top,.home-bottom{grid-template-columns:minmax(0,1fr)}.home-top>.home-column{flex-direction:column}.home-inner{padding:16px}.home-head{flex-wrap:wrap}}.app-body{grid-template-columns:minmax(0,1fr);min-height:0;display:grid;position:relative}.app-body.with-sidebar{grid-template-columns:240px minmax(0,1fr)}.app-body.with-sidebar .app-sidebar{margin:0 0 12px 12px}.app-main{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.app-sidebar{animation:fade-in var(--base) var(--ease)}.rail-heading{font:600 11px var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);padding:0 12px 4px}.app-sidebar-scrim{display:none}.sidebar-toggle{margin-left:-4px}@media (width<=900px){.app-body.with-sidebar{grid-template-columns:minmax(0,1fr)}.app-body.with-sidebar .app-sidebar{z-index:40;width:min(280px,85vw);box-shadow:var(--shadow);position:absolute;top:0;bottom:12px;left:0}.app-body.with-sidebar .app-sidebar-scrim{z-index:39;background:#00000059;display:block;position:absolute;inset:0}}.sync-status{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;align-items:center;gap:10px;margin:0 0 12px;padding:10px 12px;display:flex}.sync-status p{flex:1;margin:0;line-height:1.45}.sync-dot{background:var(--ink-3);border-radius:50%;flex:none;width:10px;height:10px}.sync-dot.saved{background:var(--ok)}.sync-dot.syncing{background:var(--arp);animation:1s ease-in-out infinite alternate pulse}.sync-dot.error{background:var(--danger)}.dash-labs li{flex-wrap:wrap}.lab-versions{flex-basis:100%;padding:8px 0 2px}.lab-versions ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.lab-versions li{background:var(--surface-2);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;display:flex}.auth-back{color:var(--ink-2);margin-bottom:14px;display:inline-block}.brand-version b{color:var(--accent);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.oauth-buttons{flex-direction:column;gap:8px;margin:4px 0 12px;display:flex}.oauth-button{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);transition:border-color var(--fast) var(--ease), background var(--fast) var(--ease);border-radius:12px;justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-weight:600;text-decoration:none;display:flex}.oauth-button:hover{border-color:var(--ink-3);background:var(--surface-2)}.oauth-button svg{fill:currentColor;width:18px;height:18px}.oauth-github svg{fill:var(--ink)}.oauth-google svg{fill:#4285f4}.auth-divider{color:var(--ink-3);align-items:center;gap:10px;margin:6px 0 12px;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:1px}.dash-fields .oauth-buttons,.dash-body .oauth-buttons{max-width:360px}.app-sidebar{flex-direction:column;display:flex}.rail-bottom{margin-top:auto}.rail-logout,.dash-logout{width:100%;color:var(--ink-2);text-align:left;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:11px;padding:9px 12px;font-weight:500;display:flex}.rail-logout:hover,.dash-logout:hover{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.dash-logout{margin-top:auto}
