*{box-sizing:border-box}html,body{background:#0f1115;min-height:100%;margin:0}.np{--bg:#0f1115;--panel:#151920;--tile:#1a1f27;--fg:#e6e9ee;--muted:#8a9099;--faint:#5c626b;--line:#23272e;--line-strong:#343a42;--focus:#7cc4ff;--neg:#4d8dff;--pos:#ff9d3b;--sel:#fff;--sans:system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--serif:"EB Garamond", Georgia, "Times New Roman", serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;background:var(--bg);min-height:100vh;color:var(--fg);font-family:var(--sans);color-scheme:dark;-webkit-tap-highlight-color:transparent;flex-direction:column;padding:0 18px 24px;font-size:14px;line-height:1.4;display:flex}.np button,.np input,.np select{font:inherit;color:inherit}.np button{border:1px solid var(--line-strong);cursor:pointer;white-space:nowrap;background:#1b1f26;border-radius:4px;padding:3px 10px;line-height:1.3}.np button:hover{border-color:var(--muted)}.np button:disabled{color:var(--faint);border-color:var(--line);cursor:default;background:0 0}.np button[aria-pressed=true]{background:var(--fg);color:var(--bg);border-color:var(--fg)}.np button.np-quiet{color:var(--muted);background:0 0;border-color:#0000;padding:2px 6px}.np button.np-quiet:hover{color:var(--fg)}.np button.np-tiny{border-radius:3px;padding:0 6px;font-size:12px;line-height:18px}.np :focus-visible{outline:2px solid var(--focus);outline-offset:1px}.np select,.np input[type=number],.np input[type=text]{border:1px solid var(--line-strong);background:#1b1f26;border-radius:4px;padding:2px 6px}.np input[type=number]{width:5.2em;font-family:var(--mono);font-size:12.5px}.np input[type=checkbox]{accent-color:#8a9099;vertical-align:-1px;margin:0 4px 0 0}.np label.np-check{color:var(--muted);cursor:pointer;white-space:nowrap}.np label.np-check:hover{color:var(--fg)}.np .math,.np i.v{font-family:var(--serif);font-size:1.12em;font-style:italic}.np sub{vertical-align:-.25em;font-size:.72em;line-height:0}.np sup{vertical-align:.5em;font-size:.7em;line-height:0}.np .num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12.5px}.np .np-muted{color:var(--muted)}.np .np-faint{color:var(--faint)}.np-head{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:8px 18px;padding:14px 0 10px;display:flex}.np-title{font-family:var(--serif);letter-spacing:.01em;margin:0;font-size:22px;font-weight:400}.np-help-open{flex:none}.np-help{border:1px solid var(--line-strong);background:var(--panel);width:min(92vw,570px);color:var(--fg);border-radius:9px;margin:auto;padding:0;box-shadow:0 18px 60px #000000a6}.np-help::backdrop{background:#040609b8}.np-help-card{padding:18px 20px 16px}.np-help-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:10px;display:flex}.np-help-head h2{font-family:var(--serif);margin:0;font-size:20px;font-weight:500}.np-help-head button{font-size:20px;line-height:1}.np-help ul{color:var(--muted);margin:0;padding-left:1.25rem}.np-help li+li{margin-top:.55rem}.np-help strong,.np-help kbd,.np-help .num{color:var(--fg)}.np-help kbd{font-family:var(--mono)}.np-actions{flex-wrap:wrap;align-items:center;gap:6px;margin-left:auto;display:flex}.np-actions .np-sep{background:var(--line-strong);width:1px;height:18px;margin:0 4px}.np-toast{z-index:12;border:1px solid var(--line-strong);max-width:min(90vw,720px);color:var(--fg);pointer-events:none;background:#1b1f26;border-radius:999px;padding:6px 14px;font-size:13px;transition:opacity .25s;position:fixed;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 4px 18px #00000073}.np-toast:empty{opacity:0}.np-exercise{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 0 6px;font-size:13px;display:flex}.np-exercise .np-group{align-items:center;gap:4px;display:flex}.np-vizbar{min-height:32px;color:var(--muted);justify-content:flex-end;align-items:center;gap:12px;font-size:12.5px;display:flex}.np-vizbar label{color:var(--fg)}.np-learnbar{border-bottom:1px solid var(--line);width:100%;min-height:34px;color:var(--muted);flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px 8px;margin:0 0 10px;padding-bottom:9px;font-size:12.5px;display:flex}.np-learnbar label{color:var(--fg);white-space:nowrap}.np-learning-number{align-items:stretch;height:27px;display:inline-flex}.np-learning-number input{border-radius:4px 0 0 4px;width:5.2em}.np-learning-arrows{width:18px;display:grid}.np-learning-arrows button{border-left:0;border-radius:0 3px 0 0;min-width:0;height:13.5px;padding:0;font-size:7px;line-height:1}.np-learning-arrows button+button{border-top:0;border-radius:0 0 3px}.np-learning-slider{color:var(--muted);align-items:center;gap:4px;display:flex}.np-learning-slider input{width:112px;accent-color:var(--focus);margin:0}.np-learnbar kbd{color:var(--muted);font:10px var(--mono);margin-left:3px}.np-main{align-items:flex-start;gap:22px;padding-top:8px;display:flex}.np-left{flex:auto;min-width:0}.np-right{flex-direction:column;flex:none;gap:14px;width:400px;display:flex}.np-right:has(.np-backprop:not([hidden])){width:var(--np-backprop-width,400px)}.np-plotpanel,.np-inspector,.np-losspanel,.np-batch{box-sizing:border-box;align-self:flex-end;width:400px;max-width:100%}.np-backprop{box-sizing:border-box;width:100%}.np-right[hidden],.np-plotpanel[hidden],.np-inspector[hidden],.np-losspanel[hidden],.np-batch[hidden],.np-backprop[hidden]{display:none}@media (width>=1500px){.np-right{flex-flow:wrap;justify-content:flex-end;align-items:flex-start}.np-right:has(>:not([hidden])~:not([hidden])),.np-right:has(.np-backprop:not([hidden])):has(>:not([hidden])~:not([hidden])){width:820px}.np-right>.np-plotpanel,.np-right>.np-inspector,.np-right>.np-losspanel,.np-right>.np-batch{flex:0 0 400px;align-self:flex-start}.np-right>.np-backprop{flex:0 0 min(100%, var(--np-backprop-width,400px));width:min(100%, var(--np-backprop-width,400px))}}@media (width<=1000px){.np-main{flex-direction:column;align-items:stretch}.np-right{flex-flow:wrap;align-items:flex-start;width:auto}.np-right:has(.np-backprop:not([hidden])){width:auto}.np-right>*{flex:380px}}@media (width<=520px){.np{padding:0 12px 20px}.np-learning-slider input{width:105px}}.np-netwrap{user-select:none;padding-bottom:6px;overflow:auto hidden}.np-net{touch-action:pan-x;position:relative}.np-net svg{z-index:0;position:absolute;inset:0;overflow:visible}.np-wire{fill:none;stroke-linecap:round;pointer-events:none;transition:stroke-opacity .12s}.np-wire-hit{fill:none;stroke:#0000;stroke-width:16px;pointer-events:stroke;cursor:ew-resize;touch-action:none;outline:none}.np-net.np-dim .np-wire:not(.np-hot){stroke-opacity:.18!important}.np-wire.np-hot{filter:drop-shadow(0 0 3px #ffffff73)}.np-wire.np-sel{filter:drop-shadow(0 0 4px #ffffffb3)}.np-wire-hit:focus-visible+.np-wire,.np-wire-hit.np-focus+.np-wire{filter:drop-shadow(0 0 4px #7cc4ffe6)}.np-wire-activation{fill:#f4f6f8;stroke:#0f1115;stroke-width:4px;paint-order:stroke;stroke-linejoin:round;pointer-events:none;font:10px ui-monospace,Menlo,Consolas,monospace}.np-tile{z-index:1;background:var(--tile);border:1px solid var(--line-strong);cursor:pointer;touch-action:none;outline-offset:2px;border-radius:6px;width:56px;height:56px;position:absolute}.np-tile canvas{border-radius:5px;width:100%;height:100%;display:block}.np-tile.np-param{cursor:ew-resize}.np-tile:hover,.np-tile.np-hot{border-color:var(--muted)}.np-tile.np-sel{border-color:var(--sel);box-shadow:0 0 0 1px var(--sel)}.np-tile.np-end{border-color:#ffffff8c}.np-tile .np-name{text-align:center;font-family:var(--serif);color:var(--muted);pointer-events:none;white-space:nowrap;margin-top:3px;font-size:14px;font-style:italic;position:absolute;top:100%;left:0;right:0}.np-tile.np-sel .np-name{color:var(--fg)}.np-paramlabels{z-index:2;pointer-events:none;white-space:nowrap;align-items:center;gap:3px;display:flex;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.np-weightrow,.np-bias{border:1px solid var(--line-strong);font-family:var(--mono);color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;background:#0f1115;border-radius:8px;padding:0 5px;font-size:10.5px;line-height:15px}.np-weightrow{color:#aab1bb;pointer-events:none;max-width:var(--np-rowmax,none);overflow:hidden}.np-bias{cursor:ew-resize;pointer-events:auto}.np-tile:hover .np-bias,.np-tile.np-sel .np-bias{color:var(--fg);border-color:var(--muted)}.np-bias.np-active{color:var(--fg);border-color:var(--fg)}.np-clip{opacity:.55;pointer-events:none;background:#fff;border-radius:50%;width:6px;height:6px;display:none;position:absolute;bottom:3px;left:3px}.np-tile.np-clipped .np-clip{display:block}.np-layerhead{z-index:2;color:var(--muted);white-space:nowrap;flex-direction:column;align-items:center;gap:4px;font-size:12px;display:flex;position:absolute;top:0}.np-layerhead select{max-width:100px;padding:1px 4px;font-size:12px}.np-width{align-items:center;gap:2px;display:inline-flex}.np-width .num{text-align:center;min-width:1.2em;color:var(--fg)}.np button.np-removelayer{color:#c98b8b}.np button.np-removelayer:hover{color:#f0aaaa;border-color:#714848}.np-addlayer{z-index:2;text-align:center;width:20px;height:20px;color:var(--muted);border-radius:50%;padding:0;font-size:14px;line-height:18px;position:absolute;top:4px}.np-scalelabel{font-family:var(--mono);color:var(--faint);font-size:11px}.np-weight-code,.np-layer-code{z-index:1;border:1px solid var(--line);font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:left;color:#b8c2cf;pointer-events:none;white-space:pre;max-width:var(--np-codemax,none);background:#11151a;border-radius:4px;padding:5px 8px;font-size:10.5px;line-height:16px;display:block;position:absolute;overflow:hidden;transform:translate(-50%)}.np-truncated{mask-image:linear-gradient(90deg,#000 calc(100% - 20px),#0000)}.np-weight-code.np-truncated,.np-layer-code.np-truncated{pointer-events:auto;cursor:zoom-in}.np-weight-code.np-truncated:hover,.np-weight-code.np-truncated:focus,.np-layer-code.np-truncated:hover,.np-layer-code.np-truncated:focus,.np-tile:hover .np-weightrow.np-truncated{z-index:6;cursor:default;border-color:var(--muted);max-width:none;overflow:visible;mask-image:none}.np-tile:hover .np-paramlabels{z-index:5}.np-readout{z-index:10;pointer-events:none;border:1px solid var(--muted);font-family:var(--mono);color:var(--fg);white-space:nowrap;background:#0f1115;border-radius:4px;padding:2px 7px;font-size:12.5px;display:none;position:fixed;transform:translate(-50%,-140%)}.np-readout.np-on{display:block}.np-readout .np-fine{color:var(--muted);margin-left:6px;font-size:11px}.np-entry{z-index:11;width:5.5em;font-family:var(--mono);border:1px solid var(--focus);color:var(--fg);background:#0f1115;border-radius:4px;padding:1px 4px;font-size:12.5px;position:absolute;transform:translate(-50%,-50%)}.np-netbar{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 14px;padding:6px 0 0;font-size:12.5px;display:flex}.np-legend-w{align-items:center;gap:6px;display:inline-flex}.np-legend-w i{border-radius:2px;width:22px;height:3px;display:inline-block}.np-plotpanel,.np-losspanel,.np-batch,.np-backprop{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px 10px}.np-losspanel h2,.np-batch h2,.np-backprop h2{color:var(--fg);margin:0 0 8px;font-size:14px;font-weight:500}.np-batch-actions{border-bottom:1px solid var(--line);color:var(--muted);flex-wrap:wrap;align-items:center;gap:7px;padding-bottom:10px;font-size:12px;display:flex}.np-batch-actions label{align-items:center;gap:5px;display:flex}.np-batch-actions input[type=number]{width:4.5em}.np-batch-actions kbd{color:var(--muted);font:10px var(--mono);margin-left:3px}.np-batch-summary{color:var(--muted);margin:9px 0 6px;font-size:12px}.np-batch-list{max-height:330px;overflow:auto}.np-batch-table{border-collapse:collapse;width:100%;font:11px var(--mono);font-variant-numeric:tabular-nums}.np-batch-table th,.np-batch-table td{border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;padding:3px 6px}.np-batch-table th{background:var(--panel);color:var(--muted);font-weight:500;position:sticky;top:0}.np-batch-table th:first-child,.np-batch-table td:first-child{color:var(--faint);text-align:center}.np-loss-plot{aspect-ratio:1;width:100%;max-width:372px;margin:0 auto}.np-loss-plot canvas{cursor:grab;border-radius:4px;width:100%;height:100%;display:block}.np-loss-value{color:var(--fg);margin-top:7px;font-weight:600}.np-loss-editor{border-top:1px solid var(--line);margin-top:12px;padding-top:10px;font:12px ui-monospace,Menlo,Consolas,monospace}.np-loss-signature{color:var(--fg);border:1px solid var(--line-strong);user-select:none;background:#10141a;border-bottom:0;border-radius:5px 5px 0 0;padding:6px 9px 3px}.np-loss-editor textarea{box-sizing:border-box;resize:vertical;border-color:var(--line-strong);width:100%;min-height:54px;color:var(--fg);font:inherit;tab-size:2;background:#10141a;border-radius:0 0 5px 5px;margin:0;padding:4px 9px 7px 25px;line-height:1.5;display:block}.np-loss-editor textarea[aria-invalid=true]{border-color:#df7373;box-shadow:inset 0 0 0 1px #df737340}.np-loss-actions{min-height:25px;color:var(--muted);font:11px var(--sans,ui-sans-serif, system-ui, sans-serif);justify-content:space-between;align-items:center;gap:10px;margin-top:5px;display:flex}.np-loss-actions .np-error{color:#ef9999}.np-loss-tree{margin-top:8px}.np-loss-tree h3{color:var(--fg);margin:0 0 9px;font-size:12px;font-weight:500}.np-loss-tree-scroll{padding:2px 4px 8px;overflow-x:auto}.np-loss-tree-scroll>.np-loss-node{width:max-content;min-width:100%}.np-loss-node{flex-direction:column;flex:none;align-items:center;display:flex;position:relative}.np-loss-node-row{justify-content:center;align-items:center;gap:3px;min-height:24px;display:flex}.np-forward-value,.np-gradient-value{font:9px ui-monospace,Menlo,Consolas,monospace}.np-loss-node-row>.np-forward-value,.np-loss-node-row>.np-gradient-value{overflow-wrap:anywhere;white-space:normal;max-width:34px;line-height:1.25}.np-loss-node-row>.np-tensor-vector,.np-loss-node-row>.np-tensor-matrix{overflow-wrap:normal;white-space:nowrap;align-items:center;max-width:none;display:inline-flex}.np-tensor-cells{text-align:right;gap:1px 5px;display:grid}.np-tensor-bracket{align-self:stretch;align-items:center;display:inline-flex}.np-forward-value{color:#f07f7f;text-align:right}.np-gradient-value{color:#70aef5;text-align:left}.np-backprop-key{justify-content:space-between;gap:10px;margin-bottom:8px;display:flex}.np-loss-node-label{border:1px solid var(--line-strong);min-width:30px;color:var(--fg);text-align:center;white-space:nowrap;background:#1b2129;border-radius:4px;padding:3px 7px;font:11px ui-monospace,Menlo,Consolas,monospace}.np-loss-node-label[data-shape=vector]:after{content:"⃗";color:var(--muted);margin-left:3px}.np-loss-node-label[data-shape=matrix]:after{content:"▦";color:var(--muted);margin-left:4px}.np-loss-children{justify-content:center;align-items:flex-start;gap:10px;margin-top:12px;padding-top:12px;display:flex;position:relative}.np-loss-children:after{content:"";border-left:1px solid var(--line-strong);height:12px;position:absolute;top:-12px;left:50%}.np-loss-children>.np-loss-node:before{content:"";border-top:1px solid var(--line-strong);position:absolute;top:-12px;left:-5px;right:-5px}.np-loss-children>.np-loss-node:first-child:before{left:50%}.np-loss-children>.np-loss-node:last-child:before{right:50%}.np-loss-children>.np-loss-node:only-child:before{display:none}.np-loss-children>.np-loss-node:after{content:"";border-left:1px solid var(--line-strong);height:13px;position:absolute;top:-12px;left:50%}.np-loss-tree-empty{color:var(--muted);font-size:11.5px}.np-plothead{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.np-plothead h2{color:var(--fg);margin:0;font-size:14px;font-weight:500}.np-plotwrap{aspect-ratio:1;width:100%;max-width:372px;margin:0 auto;position:relative}.np-plotwrap canvas{cursor:grab;border-radius:4px;width:100%;height:100%;display:block}.np-loss-plot canvas.np-panning,.np-plotwrap canvas.np-panning{cursor:grabbing}.np-cross{pointer-events:none;background:#ffffff8c;display:none;position:absolute}.np-cross.h{height:1px}.np-cross.v{width:1px}.np-plotwrap.np-hover .np-cross{display:block}.np-hoverline{height:20px;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:6px;font-size:12.5px;overflow:hidden}.np-hoverline .num{color:var(--fg)}.np-legend{color:var(--muted);align-items:center;gap:8px;margin-top:8px;font-size:12px;display:flex}.np-legend .np-bar{background:linear-gradient(90deg, var(--neg), #2b3038 50%, var(--pos));border-radius:3px;flex:auto;height:10px;position:relative}.np-legend .np-clipmark{border:5px solid #0000;width:0;height:0;display:none;position:absolute;top:-4px}.np-legend .np-clipmark.lo{border-right-color:#fff;left:-6px}.np-legend .np-clipmark.hi{border-left-color:#fff;right:-6px}.np-legend .np-clipmark.np-on{display:block}.np-legend .np-swatch{vertical-align:-2px;border-radius:2px;width:12px;height:12px;margin-right:4px;display:inline-block}.np-plotctl{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:10px;font-size:12.5px;display:flex}.np [hidden]{display:none!important}.np-plotctl .np-group{align-items:center;gap:4px;display:inline-flex}.np-plotctl select{padding:1px 4px;font-size:12.5px}.np-plotctl input[type=number]{width:4.6em}.np-segmented{display:inline-flex}.np-segmented button{border-radius:0;padding:2px 8px;font-size:12.5px}.np-segmented button:first-child{border-radius:4px 0 0 4px}.np-segmented button:last-child{border-radius:0 4px 4px 0}.np-note{color:var(--muted);min-height:0;margin-top:6px;font-size:12px}.np-target{border-top:1px solid var(--line);color:var(--muted);margin-top:10px;padding-top:8px;font-size:12.5px}.np-target .np-score{color:var(--fg)}.np-target .np-row{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:6px;display:flex}.np-inspector{background:var(--panel);border:1px solid var(--line);border-radius:8px;min-height:268px;padding:12px 14px}.np-inspector h2{margin:0 0 8px;font-size:14px;font-weight:500}.np-insp-body{align-items:flex-start;gap:14px;display:flex}.np-insp-canvas{flex:none;width:160px}.np-insp-canvas canvas{background:var(--tile);cursor:crosshair;border-radius:5px;width:160px;height:160px;display:block}.np-insp-scale{color:var(--muted);font-size:11px;font-family:var(--mono);align-items:center;gap:4px;margin-top:6px;display:flex}.np-insp-scale .np-bar{background:linear-gradient(90deg, var(--neg), #2b3038 50%, var(--pos));border-radius:2px;flex:auto;height:6px}.np-insp-scale .np-bar.np-lo{background:linear-gradient(90deg, #2b3038, var(--pos))}.np-insp-text{flex:auto;min-width:0;font-size:13px}.np-insp-text .np-label{margin-bottom:4px;font-size:15px}.np-insp-text .np-label .np-muted{font-size:12.5px}.np-formula{font-family:var(--serif);overflow-wrap:anywhere;margin-top:6px;font-size:16px;line-height:1.55}.np-formula .np-term{cursor:default;white-space:nowrap;border-radius:3px;padding:0 2px}.np-formula .np-term:hover,.np-formula .np-term.np-hot{background:#ffffff1f}.np-formula .np-term.np-zero{color:var(--faint)}.np-formula .np-coef.neg{color:var(--neg)}.np-formula .np-coef.pos{color:var(--pos)}.np-formula .np-b{cursor:ew-resize;border-radius:3px;padding:0 2px}.np-formula .np-b:hover,.np-formula .np-b.np-hot{background:#ffffff1f}.np-formula .np-what{font-family:var(--sans);color:var(--muted);margin-top:4px;font-size:12px;display:block}.np-insp-toggle{margin-top:8px}.np-insp-empty{color:var(--muted);font-size:13px}.np-insp-hover{height:18px;color:var(--muted);margin-top:4px;font-size:12px}.np-foot{color:var(--faint);margin-top:18px;font-size:12px;line-height:1.5}.np-foot a{color:var(--muted)}
