:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f6f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button{font-family:inherit}#root{min-height:100vh}p{margin:0;line-height:1.6}.placeholder-demo{padding:22px}.placeholder-stage{color:var(--muted)}.placeholder-stage span{font-size:14px;font-weight:700}.cpu-replica-stage{color:#f4f4f4;background:#000;min-height:100vh;font-family:Courier New,Consolas,monospace;display:grid;overflow:auto}.cpu-replica-scene{background:#000;width:1280px;height:832px;position:relative;overflow:hidden}.cpu-title{color:#f7f7f7;text-shadow:0 0 5px #ffffff59;font-family:Arial,Microsoft YaHei,sans-serif;font-size:34px;font-weight:400;line-height:1;position:absolute;top:16px;left:331px}.cpu-panel{background:#191919;border:2px solid #454545;border-radius:16px;width:625px;height:461px;position:absolute;top:47px;left:49px;box-shadow:inset 0 0 0 1px #ffffff0a}.context-shell{z-index:2;color:#f0f0f0;pointer-events:none;text-shadow:0 0 4px #ffffff3d;background:#191919;border:2px solid #3f3f3f;border-radius:12px;grid-template-rows:96px 96px 80px 80px;grid-template-columns:repeat(4,1fr);align-items:start;padding:0 6px;font-size:14px;font-weight:700;display:grid;position:absolute;inset:34px 32px}.context-shell div:nth-child(5){grid-area:3/1/4/2}.context-shell div:nth-child(6),.context-shell div:nth-child(7),.context-shell div:nth-child(8){grid-column:3/5;margin-left:30px}.context-shell div:nth-child(6){grid-row:2/3;align-self:end}.context-shell div:nth-child(7){grid-row:3/4}.context-shell div:nth-child(8){grid-row:4/5}.cpu-register-row{grid-template-columns:repeat(4,130px);gap:11px;display:grid;position:absolute;top:36px;left:34px}.cpu-register{gap:8px;display:grid}.cpu-label{color:#eee;text-shadow:0 0 4px #ffffff47;font-size:14px;font-weight:700;line-height:1}.cpu-value{color:#f1f1f1;letter-spacing:0;text-shadow:0 0 4px #ffffff52;background:#020202;border:3px solid #262626;justify-content:center;align-items:center;height:35px;padding:0 12px;font-size:22px;font-weight:600;line-height:1;display:flex}.cpu-value-green{color:#a6e08e}.cpu-flags{gap:8px;display:grid;position:absolute;top:189px;left:40px}.flag-values{grid-template-columns:repeat(3,27px);display:grid}.flag-values span{color:#a6e08e;text-shadow:0 0 4px #a6e08e61;background:#020202;border:3px solid #262626;border-right-width:0;place-items:center;width:27px;height:34px;font-size:22px;font-weight:700;line-height:1;display:grid}.flag-values span:last-child{border-right-width:3px}.cpu-status{gap:25px;width:218px;display:grid;position:absolute;top:155px;left:368px}.cpu-status-item{gap:8px;display:grid}.cpu-status .cpu-value{width:190px}.cpu-instruction-value{color:#1c1c00;width:190px;text-shadow:none;background:#ffe900;font-weight:800}.cpu-status .cpu-value-center{justify-content:center}.incoming-context,.os-context-strip,.ram-context{color:#ffd23c;text-shadow:0 0 4px #ffd23c4d;font-size:20px;font-weight:700;line-height:1;display:grid}.incoming-context{z-index:4;pointer-events:none;transform-origin:50%;grid-template-rows:38px 38px;grid-template-columns:69px 69px 69px 69px 180px;width:510px;position:absolute;top:587px;left:74px}.incoming-context span,.os-context-strip span,.ram-context span{white-space:nowrap;background:#030303;border:2px solid #282828;place-items:center;min-width:0;height:35px;display:grid;overflow:hidden}.incoming-context span:nth-child(5),.os-context-strip span:nth-child(5),.ram-context span:nth-child(5){padding-inline:10px}.incoming-context span:nth-child(6),.os-context-strip span:nth-child(6),.ram-context span:nth-child(6){grid-column:1/3}.incoming-context span:nth-child(7),.os-context-strip span:nth-child(7),.ram-context span:nth-child(7){grid-column:3/5}.os-panel{color:#f3f3f3;text-shadow:0 0 5px #ffffff3d;background:#220b02;border:2px solid #ffb089;border-radius:42px;place-items:center;width:625px;height:250px;font-family:Arial,Microsoft YaHei,sans-serif;font-size:25px;font-weight:500;display:grid;position:absolute;top:566px;left:49px}.context-link{transform-origin:top;background:#d954cc;width:4px;height:58px;position:absolute;top:-58px;left:309px;transform:scaleY(0)}.os-context-strip{z-index:1;grid-template-rows:38px 38px;grid-template-columns:69px 69px 69px 69px 180px;width:510px;position:absolute;top:21px;left:25px}.os-panel>span{align-self:center;margin-top:32px}.ram-panel{z-index:2;background:#191919;border:2px solid #f2f2f2;width:214px;height:182px;position:absolute;top:694px;left:856px;overflow:visible}.ram-label{color:#ffffff6b;text-align:center;width:100%;font-family:Arial,Microsoft YaHei,sans-serif;font-size:24px;position:absolute;top:20px;left:0}.ram-context{z-index:3;grid-template-rows:24px 24px;grid-template-columns:46px 46px 46px 46px 118px;width:214px;font-size:9px;position:absolute;left:0}.ram-saved-context{bottom:58px}.ram-new-context{bottom:8px}.ram-context span{border-width:1px;height:22px}.memory-table{background:#181818;border-left:2px solid #f2f2f2;border-right:2px solid #f2f2f2;grid-auto-rows:27px;width:298px;display:grid;position:absolute;top:0;left:857px}.memory-row{color:#a6e08e;border-bottom:2px solid #e9e9e9;grid-template-columns:213px 83px;align-items:center;font-size:20px;font-weight:700;line-height:1;display:grid}.memory-row.active{background:#ffffff1f}.memory-row.yellow{color:#ffd23c}.memory-code{text-align:center;white-space:nowrap;padding-inline:12px;display:block;overflow:hidden}.memory-address{color:#ff170f;text-align:left;display:block}.memory-brace{opacity:.88;border-right:2px solid;border-radius:0;width:127px;position:absolute;left:1153px}.memory-brace:before,.memory-brace:after{content:"";background:currentColor;width:15px;height:2px;position:absolute;right:-15px}.memory-brace:before{top:0}.memory-brace:after{bottom:0}.memory-brace-system{color:#57de79;background:#0e4e2138;height:289px;top:0}.memory-brace-app{color:#ffc329;background:#594e043d;height:379px;top:453px}.cpu-arrow-layer{pointer-events:none;width:1280px;height:832px;position:absolute;inset:0;overflow:visible}.cpu-red-arrow-path{fill:none;stroke:#ff170f;stroke-linecap:square;stroke-linejoin:miter;stroke-width:3px;transition:d .24s,transform .24s}.process-dash{fill:none;stroke:#f2f2f2;stroke-dasharray:10 9;stroke-dashoffset:18px;stroke-linecap:square;stroke-width:4px}.cpu-caption{z-index:1;color:#f5f5f5;letter-spacing:0;text-shadow:0 2px #000,0 0 5px #ffffff38;white-space:nowrap;width:760px;margin:0;font-family:Arial,Microsoft YaHei,sans-serif;font-size:38px;font-weight:800;line-height:1.1;position:absolute;top:727px;left:398px}.i2c-stage{cursor:default;place-items:stretch stretch}.i2c-layout{grid-template-rows:auto auto minmax(0,1fr);gap:14px;width:min(100%,1520px);min-height:100vh;margin:0 auto;padding:24px 32px;display:grid}.i2c-header{justify-content:flex-start;align-items:end;gap:18px;min-width:0;display:flex}.i2c-header h1{color:var(--text);letter-spacing:0;margin:4px 0 8px;font-size:20px;line-height:1.18}.i2c-header p{color:var(--muted);font-size:14px}.i2c-tabs{flex-wrap:wrap;gap:8px;display:flex}.i2c-tabs button{border:1px solid var(--border);background:var(--panel);min-height:38px;color:var(--muted);border-radius:6px;padding:0 14px;font-size:13px;font-weight:700}.i2c-tabs button.active{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));background:var(--accent-soft);color:var(--accent-text)}.i2c-board{grid-template-columns:minmax(880px,1fr);align-items:stretch;min-height:0;display:grid}.i2c-canvas{border:1px solid var(--border);background:color-mix(in srgb, var(--panel) 92%, transparent);min-height:0;box-shadow:var(--shadow);border-radius:8px}.stage .i2c-canvas{width:100%;min-width:820px;height:100%;min-height:clamp(560px,100vh - 236px,720px);display:block}.i2c-chip rect,.i2c-device rect{fill:var(--panel);stroke:var(--border);stroke-width:2px}.i2c-chip rect{fill:#fff2c7;stroke:#111827;stroke-width:1.4px}.i2c-chip .i2c-port{fill:#aeb4bc;stroke:#111827;stroke-width:1.4px}.i2c-chip text,.i2c-device text{fill:var(--text);font-size:12px;font-weight:600}.i2c-chip .muted,.i2c-device .muted{fill:var(--muted);font-size:10px;font-weight:600}.i2c-chip .port-label{fill:#fff;font-size:12px;font-weight:700}.i2c-power line,.i2c-mcu-wires line,.i2c-device line,.i2c-pullups line{stroke-linecap:round;stroke-width:2.4px}.i2c-power .vdd,.i2c-pullups .vdd-drop{stroke:#d84f4f}.i2c-power .scl,.i2c-mcu-wires .scl-wire,.i2c-device .scl-wire,.i2c-pullups .scl-drop{stroke:#3b965c}.i2c-power .sda,.i2c-mcu-wires .sda-wire,.i2c-device .sda-wire,.i2c-pullups .sda-drop{stroke:#4f75d8}.i2c-power .gnd,.i2c-mcu-wires .gnd-wire,.i2c-device .gnd-wire{stroke:#b9c0c8}.i2c-power text{fill:var(--text);font-size:12px;font-weight:760}.i2c-pullups path{fill:none;stroke:#333946;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px}.i2c-pullups text{fill:#333946;font-size:14px;font-weight:700}.i2c-pullups circle,.i2c-mcu-wires circle,.i2c-device circle{stroke:#111827;stroke-width:1.5px}.i2c-mcu-wires .scl-wire+.sda-wire+.gnd-wire+circle,.i2c-device .scl-node{fill:#58a66f}.i2c-pullups .vdd-node{fill:#d84f4f}.i2c-pullups .scl-node{fill:#58a66f}.i2c-pullups .sda-node,.i2c-mcu-wires circle:nth-of-type(2),.i2c-device .sda-node{fill:#5576c9}.i2c-mcu-wires circle:nth-of-type(3),.i2c-device .gnd-node{fill:#c9ced5}.i2c-device rect{fill:#dcf6e4;stroke:#111827;stroke-width:1.4px}.i2c-device.active rect{fill:#fff7ed;stroke:#f97316;stroke-width:2.2px}.i2c-active-flow{pointer-events:none}.i2c-active-flow path{fill:none;stroke-dasharray:10 8;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4px;filter:drop-shadow(0 0 5px #f9731666);animation:.72s linear infinite i2cFlow}.i2c-active-flow .scl-flow{stroke:red}.i2c-active-flow .sda-flow{stroke:#ff0;animation-delay:-.18s}.i2c-active-flow .flow-secondary path{opacity:.78;animation-delay:-.36s}.i2c-active-flow .flow-secondary .sda-flow{animation-delay:-.54s}.app-shell[data-theme=dark] .i2c-device.active rect{fill:#f973162e}@keyframes i2cFlow{to{stroke-dashoffset:-36px}}@media (width<=1040px){.i2c-board{grid-template-columns:1fr}}@media (width<=760px){.i2c-layout{padding:16px}.i2c-header{flex-direction:column;align-items:stretch}.i2c-board{overflow:auto}}.lpf-stage{cursor:default;place-items:stretch stretch}.lpf-layout{grid-template-rows:auto minmax(0,1fr) auto;gap:18px;width:min(100%,1120px);min-height:100vh;margin:0 auto;padding:28px;display:grid}.lpf-toolbar,.lpf-readout{justify-content:space-between;align-items:center;gap:18px;min-width:0;display:flex}.lpf-title-block{gap:8px;min-width:0;display:grid}.lpf-title-block h1{color:var(--text);letter-spacing:0;margin:0;font-size:24px;line-height:1.15}.lpf-title-block code{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.lpf-slider{color:var(--text);flex:none;grid-template-columns:auto minmax(180px,320px) 54px;align-items:center;gap:12px;font-weight:800;display:grid}.lpf-slider span{color:var(--muted);text-transform:uppercase;font-size:13px}.lpf-slider strong{border:1px solid var(--border);background:var(--panel);height:34px;color:var(--accent-text);border-radius:6px;place-items:center;font-size:14px;display:grid}.lpf-slider input{width:100%;accent-color:var(--accent)}.lpf-chart-shell{border:1px solid var(--border);background:color-mix(in srgb, var(--panel) 88%, transparent);border-radius:8px;grid-template-rows:auto minmax(0,1fr);place-items:center;gap:10px;min-height:0;padding:14px;display:grid;overflow:auto}.lpf-legend{width:min(100%,980px);min-width:720px;color:var(--muted);justify-content:flex-end;align-items:center;gap:18px;font-size:13px;font-weight:750;display:flex}.lpf-legend span{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.lpf-legend-line{border-top:3px solid;width:34px;height:0;display:block}.lpf-legend-input{color:#f97316;border-top-style:dashed}.lpf-legend-filtered{color:var(--accent)}.lpf-chart{width:min(100%,980px);min-width:720px;height:auto;color:var(--muted)}.lpf-grid-lines line{stroke:var(--grid);stroke-width:1px}.lpf-axis{color:var(--muted)}.lpf-ticks{fill:var(--muted);font-size:13px;font-weight:750}.lpf-input-curve,.lpf-filtered-curve{fill:none;stroke-linecap:round;stroke-linejoin:round}.lpf-input-curve{stroke:#f97316;stroke-dasharray:6 8;stroke-width:2px}.lpf-filtered-curve{stroke:var(--accent);stroke-width:2px}.lpf-playhead{color:var(--text)}.lpf-playhead line{stroke:currentColor;stroke-dasharray:5 7;stroke-width:2px;opacity:.42}.lpf-playhead circle{fill:var(--text);opacity:.88;transition:cx 42ms linear,cy 42ms linear}.lpf-readout{flex-wrap:wrap;justify-content:flex-start}.lpf-readout span{border:1px solid var(--border);background:var(--panel);min-height:34px;color:var(--muted);border-radius:6px;align-items:center;gap:8px;padding:0 12px;font-size:13px;font-weight:750;display:inline-flex}.lpf-readout b{color:var(--text);font-variant-numeric:tabular-nums}@media (width<=760px){.lpf-layout{gap:14px;padding:16px}.lpf-toolbar{flex-direction:column;align-items:stretch}.lpf-slider{grid-template-columns:auto minmax(0,1fr) 52px}.lpf-title-block code{white-space:normal}.lpf-chart-shell{justify-items:start}}.axis-grid{color:var(--grid)}.axis-lines,.axis-ticks{color:var(--muted)}.axis-ticks text{font-size:13px;font-weight:700}.parabola-shadow,.parabola-curve{fill:none;stroke-linecap:round;stroke-linejoin:round}.parabola-shadow{stroke:#3b82f633;stroke-width:12px;filter:url(#curve-glow)}.parabola-curve{stroke:var(--accent);stroke-width:2px}.parabola-point,.parabola-focus{color:var(--text)}.parabola-point circle{fill:#f59e0b;stroke:var(--panel);stroke-width:3px}.parabola-focus circle{fill:#ef4444;stroke:var(--panel);stroke-width:3px}.parabola-point text,.parabola-focus text,.formula-label text{fill:var(--text);font-size:15px;font-weight:800}.formula-label rect{fill:var(--panel);stroke:var(--border)}.spi-stage{cursor:default;place-items:stretch stretch}.spi-layout{grid-template-rows:auto auto minmax(0,1fr);gap:14px;width:min(100%,1520px);min-height:100vh;margin:0 auto;padding:24px 32px;display:grid}.spi-header{justify-content:flex-start;align-items:end;gap:18px;min-width:0;display:flex}.spi-header h1{color:var(--text);letter-spacing:0;margin:4px 0 8px;font-size:20px;line-height:1.18}.spi-header p{color:var(--muted);font-size:14px}.spi-tabs{flex-wrap:wrap;gap:8px;display:flex}.spi-tabs button{border:1px solid var(--border);background:var(--panel);min-height:38px;color:var(--muted);border-radius:6px;padding:0 14px;font-size:13px;font-weight:700}.spi-tabs button.active{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));background:var(--accent-soft);color:var(--accent-text)}.spi-board{grid-template-columns:minmax(920px,1fr);align-items:stretch;min-height:0;display:grid}.spi-canvas{border:1px solid var(--border);background:color-mix(in srgb, var(--panel) 92%, transparent);min-height:0;box-shadow:var(--shadow);border-radius:8px}.stage .spi-canvas{width:100%;min-width:860px;height:100%;min-height:clamp(560px,100vh - 236px,720px);display:block}.spi-chip rect,.spi-device rect{fill:var(--panel);stroke:var(--border);stroke-width:2px}.spi-chip rect{fill:#fff2c7;stroke:#111827;stroke-width:1.4px}.spi-chip .spi-port{fill:#aeb4bc;stroke:#111827;stroke-width:1.4px}.spi-chip text,.spi-device text{fill:var(--text);font-size:12px;font-weight:600}.spi-chip .muted,.spi-device .muted{fill:var(--muted);font-size:10px;font-weight:600}.spi-chip .port-label{fill:#fff;font-size:12px;font-weight:700}.spi-power line,.spi-mcu-wires line,.spi-device line,.spi-device path{stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4px}.spi-power .vdd{stroke:#d84f4f}.spi-power .cs,.spi-mcu-wires .cs-wire,.spi-device .cs-wire{stroke:#7c3aed}.spi-power .sck,.spi-mcu-wires .sck-wire,.spi-device .sck-wire{stroke:#2f9461}.spi-power .mosi,.spi-mcu-wires .mosi-wire,.spi-device .mosi-wire{stroke:#d97706}.spi-power .miso,.spi-mcu-wires .miso-wire,.spi-device .miso-wire{stroke:#2563eb}.spi-power .gnd,.spi-mcu-wires .gnd-wire,.spi-device .gnd-wire{stroke:#b9c0c8}.spi-power text{fill:var(--text);font-size:12px;font-weight:760}.spi-mcu-wires circle,.spi-device circle{stroke:#111827;stroke-width:1.5px}.spi-mcu-wires .cs-node,.spi-device .cs-node{fill:#9f67ff}.spi-mcu-wires .sck-node,.spi-device .sck-node{fill:#58a66f}.spi-mcu-wires .mosi-node,.spi-device .mosi-node{fill:#f2a33a}.spi-mcu-wires .miso-node,.spi-device .miso-node{fill:#5b83de}.spi-mcu-wires .gnd-node,.spi-device .gnd-node{fill:#c9ced5}.spi-device rect{fill:#e8f6ff;stroke:#111827;stroke-width:1.4px}.spi-device.active rect{fill:#fff7ed;stroke:#f97316;stroke-width:2.2px}.spi-selected-cs,.spi-active-flow{pointer-events:none}.spi-selected-cs path{fill:none;stroke:#ef4444;stroke-linecap:round;stroke-linejoin:round;stroke-width:3.2px;filter:drop-shadow(0 0 5px #ef444459)}.spi-selected-cs .cs-secondary{opacity:.72}.spi-active-flow path{fill:none;stroke-dasharray:10 8;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.6px;filter:drop-shadow(0 0 5px #0ea5e94d);animation:.72s linear infinite spiFlow}.spi-active-flow .sck-flow{stroke:#22c55e;animation-delay:-.12s}.spi-active-flow .mosi-flow{stroke:#f97316;animation-delay:-.2s}.spi-active-flow .miso-flow{stroke:#38bdf8;animation:.72s linear infinite spiFlow}.spi-active-flow .flow-secondary path{opacity:.78;animation-delay:-.36s}.spi-active-flow .flow-secondary .miso-flow{animation-delay:-.54s}.app-shell[data-theme=dark] .spi-device.active rect{fill:#f973162e}@keyframes spiFlow{to{stroke-dashoffset:-36px}}@media (width<=1040px){.spi-board{grid-template-columns:1fr}}@media (width<=760px){.spi-layout{padding:16px}.spi-header{flex-direction:column;align-items:stretch}.spi-board{overflow:auto}}.heap-stage{cursor:default;place-items:stretch stretch}.heap-layout{grid-template-rows:auto auto minmax(0,1fr);gap:10px;width:min(100%,1540px);min-height:100vh;margin:0 auto;padding:12px 30px 24px;display:grid}.heap-header{justify-content:space-between;align-items:center;gap:24px;display:flex}.heap-header p,.heap-policy p{color:var(--muted);font-size:13px}.heap-size-control{align-items:center;gap:10px;min-width:154px;display:flex}.heap-size-control label{white-space:nowrap;color:var(--muted);font-size:12px;font-weight:700}.heap-size-control select{border:1px solid var(--border);background:var(--panel);height:42px;color:var(--text);font:inherit;border-radius:8px;outline:none;padding:0 12px;font-weight:750}.heap-tabs{justify-content:space-between;align-items:center;gap:14px;display:flex}.heap-tab-buttons{flex-wrap:wrap;gap:14px;display:flex}.heap-tab-buttons button{--heap-tab-color:#1677ff;--heap-tab-bg:#deebff;background:var(--heap-tab-bg);min-height:42px;color:var(--heap-tab-color);border:0;border-radius:4px;align-items:center;gap:7px;padding:0 16px;transition:background-color .18s,box-shadow .18s,transform .18s;display:flex}.heap-tab-buttons button:hover{background:color-mix(in srgb, var(--heap-tab-bg) 82%, var(--heap-tab-color));transform:translateY(-1px)}.heap-tab-buttons button.active{background:color-mix(in srgb, var(--heap-tab-bg) 74%, var(--heap-tab-color));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--heap-tab-color) 28%, transparent)}.heap-tab-buttons strong{color:inherit;font-size:16px;font-weight:500}.heap-tab-buttons span{font-size:12px;font-weight:500}.heap-workspace{grid-template-columns:minmax(0,1fr) 260px;gap:14px;min-height:0;display:grid}.heap-visual,.heap-sidebar>div{border:1px solid var(--border);background:color-mix(in srgb, var(--panel) 94%, transparent);box-shadow:var(--shadow);border-radius:12px}.heap-visual{grid-template-rows:auto minmax(240px,1fr) auto auto;gap:18px;min-width:0;padding:22px;display:grid}.heap-policy{justify-content:space-between;align-items:start;gap:18px;display:flex}.heap-policy span{color:var(--accent-text);font-size:11px;font-weight:800}.heap-policy h2{color:var(--text);margin:3px 0 4px;font-size:20px}.heap-policy code{border:1px solid var(--border);background:var(--panel-soft);color:var(--accent-text);border-radius:6px;flex:none;padding:7px 9px;font-size:11px;font-weight:800}.heap-memory-map{border:1px dashed color-mix(in srgb, var(--border) 75%, var(--muted));background:color-mix(in srgb, var(--panel-soft) 70%, transparent);border-radius:10px;align-content:center;gap:14px;min-width:0;padding:22px;display:grid}.heap-address-axis{color:var(--muted);grid-template-columns:auto minmax(40px,1fr) auto;align-items:center;gap:10px;font-size:10px;font-weight:700;display:grid}.heap-address-axis i{background:var(--muted);opacity:.55;height:1px;position:relative}.heap-address-axis i:after{border-top:1px solid var(--muted);border-right:1px solid var(--muted);content:"";width:7px;height:7px;position:absolute;top:-3px;right:0;transform:rotate(45deg)}.heap-region{gap:6px;display:grid}.heap-region-label{color:var(--text);justify-content:space-between;align-items:center;font-size:11px;font-weight:800;display:flex}.heap-region-label small{color:var(--muted);font-size:9px;font-weight:650}.heap-block-row{border:2px solid color-mix(in srgb, var(--text) 70%, transparent);background:var(--panel);border-radius:8px;min-width:0;height:clamp(78px,12vh,110px);display:flex;overflow:hidden}.heap-block{border-right:1px solid color-mix(in srgb, var(--text) 28%, transparent);color:#fff;cursor:default;align-content:center;justify-items:center;gap:3px;min-width:3px;padding:4px 2px;transition:background-color .28s,color .28s,filter .18s,box-shadow .22s;animation:.24s ease-out both heapBlockEnter;display:grid;position:relative;overflow:hidden}.heap-block:last-child{border-right:0}.heap-block.used{color:#b91c1c;cursor:pointer;background-color:#fee2e2}.heap-block.used:hover{background-color:#fecaca}.heap-block.free{color:#15803d;background-color:#dcfce7}.heap-block.selected{z-index:1;color:#991b1b;background-color:#fecaca;box-shadow:inset 0 0 0 2px #dc2626}@keyframes heapBlockEnter{0%{opacity:0}to{opacity:1}}.heap-block span{text-overflow:ellipsis;max-width:100%;font-size:9px;font-weight:850;overflow:hidden}.heap-block strong{white-space:nowrap;font-size:clamp(9px,1.1vw,13px)}.heap-block small{opacity:.8;font-size:8px}.heap-gap-note{color:var(--muted);text-align:center;font-size:10px}.heap-message{background:var(--panel-soft);min-height:38px;color:var(--text);border-radius:7px;align-items:center;gap:9px;padding:8px 12px;font-size:14px;display:flex}.heap-message.error{color:#dc2626}.heap-message.error .heap-message-dot{background:#dc2626;box-shadow:0 0 0 4px #dc26261f}.heap-message-dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 4px var(--accent-soft);border-radius:50%;flex:none}.heap-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;display:grid}.heap-actions button{border:1px solid var(--border);background:var(--panel);min-height:50px;color:var(--text);border-radius:8px;place-content:center;gap:3px;font-size:13px;font-weight:800;display:grid}.heap-actions button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.heap-actions button.auto-running{color:#b91c1c;background:#fee2e2;border-color:#dc2626}.heap-actions button:disabled{cursor:not-allowed;opacity:.45}.heap-actions small{opacity:.72;font-size:9px;font-weight:600}.heap-sidebar{align-content:start;gap:12px;display:grid}.heap-sidebar>div{padding:16px}.heap-sidebar h3{color:var(--text);margin:0 0 13px;font-size:13px}.heap-stats dl{gap:10px;margin:0;display:grid}.heap-stats dl div{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:10px;padding-bottom:9px;display:flex}.heap-stats dl div:last-child{border-bottom:0;padding-bottom:0}.heap-stats dt{color:var(--muted);font-size:11px}.heap-stats dd{color:var(--text);margin:0;font-size:14px;font-weight:850}.heap-legend{color:var(--muted);gap:9px;font-size:11px;display:grid}.heap-legend h3{margin-bottom:4px}.heap-legend div{align-items:center;gap:8px;display:flex}.heap-legend i{border-radius:3px;width:24px;height:12px}.heap-legend i.used{background:#fee2e2}.heap-legend i.free{background:#dcfce7}.heap-legend i.selected{background:#fecaca;border:2px solid #dc2626}.heap-legend p,.heap-source-note p{color:var(--muted);margin-top:5px;font-size:10px;line-height:1.65}.app-shell[data-theme=dark] .heap-block.used{color:#fecaca;background-color:#4c1d1d}.app-shell[data-theme=dark] .heap-block.used:hover,.app-shell[data-theme=dark] .heap-block.selected{color:#fee2e2;background-color:#632424}.app-shell[data-theme=dark] .heap-block.free{color:#bbf7d0;background-color:#143b25}@media (prefers-reduced-motion:reduce){.heap-block{transition:none;animation:none}}@media (width<=1100px){.heap-workspace{grid-template-columns:minmax(0,1fr)}.heap-sidebar{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=820px){.heap-layout{padding:12px 16px 18px}.heap-tabs{flex-direction:column;align-items:flex-start;gap:10px}.heap-sidebar{grid-template-columns:1fr}}@media (width<=620px){.heap-header{flex-direction:column;align-items:stretch}.heap-actions{grid-template-columns:1fr}.heap-tab-buttons{width:100%}.heap-tab-buttons button{justify-content:center;width:100%}.heap-policy{flex-direction:column}.heap-visual{padding:14px}.heap-memory-map{padding:14px 8px}}.stream-stage{cursor:default;place-items:stretch stretch}.stream-layout{grid-template-rows:auto minmax(0,1fr);gap:12px;width:min(100%,1580px);min-height:100vh;margin:0 auto;padding:18px 28px 24px;display:grid}.stream-header{justify-content:space-between;align-items:center;gap:24px;display:flex}.stream-header p{color:var(--muted);font-size:13px}.stream-capacity{min-width:220px;color:var(--muted);grid-template-columns:auto auto;gap:4px 14px;font-size:11px;display:grid}.stream-capacity strong{color:var(--text);text-align:right}.stream-capacity>i{background:var(--panel-soft);border-radius:999px;grid-column:1/-1;height:7px;overflow:hidden}.stream-capacity b{border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#6366f1);height:100%;transition:width .3s;display:block}.stream-workspace{border:1px solid var(--border);background:color-mix(in srgb, var(--panel) 94%, transparent);min-height:0;box-shadow:var(--shadow);border-radius:12px;grid-template-rows:minmax(0,1fr) auto auto;gap:11px;padding:18px;display:grid}.stream-flow{grid-template-columns:minmax(180px,.75fr) minmax(90px,.4fr) minmax(390px,1.55fr) minmax(90px,.4fr) minmax(180px,.75fr);align-items:center;gap:12px;min-height:430px;display:grid}.stream-endpoint{border:1px solid var(--border);background:var(--panel-soft);text-align:center;border-radius:12px;align-content:center;min-height:270px;padding:22px;display:grid}.stream-endpoint.producer{border-top:4px solid #0ea5e9}.stream-endpoint.consumer{border-top:4px solid #f59e0b}.stream-role-tags{justify-content:center;gap:6px;display:flex}.stream-role{background:var(--panel);color:var(--muted);letter-spacing:.12em;border-radius:4px;padding:3px 7px;font-size:11px;font-weight:900}.stream-endpoint h2{color:var(--text);margin:10px 0 8px;font-size:20px}.stream-memory{text-align:left;gap:7px;margin-top:22px;display:grid}.stream-memory small{color:var(--muted);font-size:11px;font-weight:750}.stream-memory>div{border:1px dashed var(--border);background:var(--panel);border-radius:7px;flex-wrap:wrap;gap:4px;min-height:57px;padding:8px;display:flex}.stream-memory b,.stream-moving-bytes b,.stream-linear-view b{color:#1d4ed8;background:#dbeafe;border-radius:4px;place-items:center;height:31px;padding:0 7px;font:11px ui-monospace,SFMono-Regular,Menlo,monospace;display:grid}.stream-memory i{color:var(--muted);align-self:center;font-size:10px;font-style:normal}.stream-copy-lane{color:var(--muted);text-align:center;gap:9px;font-size:11px;font-weight:750;display:grid;position:relative}.stream-copy-lane>i{background:color-mix(in srgb, var(--muted) 45%, transparent);height:2px;position:relative}.stream-copy-lane>i:after{border-top:2px solid var(--muted);border-right:2px solid var(--muted);content:"";width:8px;height:8px;position:absolute;top:-4px;right:0;transform:rotate(45deg)}.read-lane>i:after{left:auto;right:0;transform:rotate(45deg)}.stream-moving-bytes{z-index:5;pointer-events:none;gap:3px;display:flex;position:absolute;top:22px;left:0}.write-lane .stream-moving-bytes b,.read-lane .stream-moving-bytes b{animation:.6s ease-in-out both streamMoveRight;animation-delay:calc(var(--byte-index) * 35ms)}@keyframes streamMoveRight{0%{opacity:0;transform:translate(-45px)scale(.85)}25%{opacity:1}to{opacity:0;transform:translate(85px)scale(.85)}}.stream-ring-panel{border:1px solid var(--border);background:color-mix(in srgb, var(--panel-soft) 76%, transparent);border-radius:14px;grid-template-rows:auto 1fr;grid-template-columns:minmax(300px,1fr) minmax(150px,.6fr);gap:8px 14px;min-width:0;padding:15px;display:grid}.stream-ring-title{grid-column:1/-1;justify-content:space-between;align-items:center;display:flex}.stream-ring-title span{color:var(--muted);font-size:9px;font-weight:800}.stream-ring-title h2{color:var(--text);margin:2px 0 0;font-size:18px}.stream-ring-title code{color:var(--accent-text);font-size:11px}.stream-ring{align-content:center;place-self:center;width:340px;min-width:0;display:grid}.stream-buffer-demo .stream-ring svg{width:340px;min-width:0;max-width:340px;height:340px;display:block;overflow:visible}.stream-ring-segments path{fill:var(--panel);stroke:var(--text);stroke-width:1.5px;transition:fill .22s}.stream-ring-segments path.filled{fill:#dbeafe}.stream-ring-byte{fill:var(--muted);font:700 11px ui-monospace,SFMono-Regular,Menlo,monospace}.stream-ring-segments path.filled+.stream-ring-byte{fill:#1d4ed8}.stream-ring-address{fill:var(--text);font:750 14px ui-monospace,SFMono-Regular,Menlo,monospace}.stream-pointer{stroke-width:3px;stroke-linecap:round;transition:x1 .32s,y1 .32s,x2 .32s,y2 .32s}.stream-pointer.read{stroke:#2563eb;marker-end:url(#stream-read-arrow)}.stream-pointer.write{stroke:#dc2626;marker-end:url(#stream-write-arrow)}#stream-read-arrow path{fill:#2563eb}#stream-write-arrow path{fill:#dc2626}.stream-ring-center text:first-child{fill:var(--text);font-size:16px;font-weight:850}.stream-ring-center text:last-child{fill:var(--muted);font-size:16px;font-weight:850}.stream-pointer-legend{justify-content:center;gap:18px;margin-top:10px;font:750 11px ui-monospace,SFMono-Regular,Menlo,monospace;display:flex}.stream-pointer-legend .read{color:#2563eb}.stream-pointer-legend .write{color:#dc2626}.stream-linear-view{align-content:center;gap:8px;min-width:0;display:grid}.stream-linear-view>span{color:var(--text);font-size:12px;font-weight:800}.stream-linear-view>div{border:1px dashed var(--border);background:var(--panel);border-radius:7px;flex-wrap:wrap;align-content:flex-start;gap:4px;min-height:100px;padding:9px;display:flex}.stream-linear-view i{color:var(--muted);margin:auto;font-size:10px}.stream-linear-view small{color:var(--muted);font-size:11px;line-height:1.5}.stream-message{background:var(--panel-soft);min-height:38px;color:var(--text);border-radius:7px;align-items:center;gap:9px;padding:8px 12px;font-size:14px;display:flex}.stream-message i{background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 4px var(--accent-soft);border-radius:50%;flex:none}.stream-controls{grid-template-columns:auto minmax(120px,1fr) auto minmax(120px,1fr) minmax(140px,1fr) auto;gap:8px;display:grid}.stream-controls label,.stream-controls button{border:1px solid var(--border);background:var(--panel);min-height:48px;color:var(--text);border-radius:8px}.stream-controls label{color:var(--muted);grid-template-columns:auto auto;align-items:center;gap:8px;padding:0 12px;font-size:12px;font-weight:750;display:grid}.stream-controls select{color:var(--text);font:inherit;background:0 0;border:0;outline:0}.stream-controls button{place-content:center;font-size:14px;font-weight:800;display:grid}.stream-controls button.write-button{color:#fff;background:#0ea5e9;border-color:#0ea5e9}.stream-controls button.read-button{color:#fff;background:#f59e0b;border-color:#f59e0b}.stream-controls button.auto-running{color:#b91c1c;background:#fee2e2;border-color:#ef4444}.stream-controls button:disabled,.stream-controls select:disabled{cursor:not-allowed;opacity:.55}.stream-controls small{opacity:.72;margin-top:2px;font-size:10px;font-weight:600}.app-shell[data-theme=dark] .stream-ring-segments path.filled,.app-shell[data-theme=dark] .stream-memory b,.app-shell[data-theme=dark] .stream-moving-bytes b,.app-shell[data-theme=dark] .stream-linear-view b{color:#bfdbfe;background:#17345f}.app-shell[data-theme=dark] .stream-ring-segments path.filled{fill:#17345f}.app-shell[data-theme=dark] .stream-ring-segments path.filled+.stream-ring-byte{fill:#bfdbfe}.app-shell[data-theme=dark] .stream-controls button.auto-running{color:#fecaca;background:#4c1d1d}@media (prefers-reduced-motion:reduce){.stream-moving-bytes b{animation-duration:1ms}}@media (width<=1200px){.stream-flow{grid-template-columns:minmax(160px,.7fr) 70px minmax(390px,1.5fr) 70px minmax(160px,.7fr)}.stream-ring-panel{grid-template-columns:1fr}.stream-linear-view{display:none}}@media (width<=900px){.stream-flow{grid-template-columns:1fr}.stream-copy-lane{min-height:38px}.stream-copy-lane>i{justify-self:center;width:2px;height:38px}.stream-copy-lane>i:after{top:auto;bottom:0;right:-3px;transform:rotate(135deg)}.stream-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=620px){.stream-layout{padding:14px}.stream-header{flex-direction:column;align-items:stretch}.stream-capacity{min-width:0}.stream-workspace{padding:10px}.stream-ring{width:270px;min-width:0}.stream-buffer-demo .stream-ring svg{width:270px;max-width:270px;height:270px}.stream-controls{grid-template-columns:1fr}}.message-buffer-demo .stream-ring-panel{grid-template-columns:minmax(340px,1fr) minmax(180px,.62fr)}.message-buffer-demo .stream-ring{width:360px}.message-buffer-demo .stream-ring svg{width:360px;max-width:360px;height:360px}.message-ring-segments path.header{fill:#fde68a}.message-ring-segments path.payload{fill:#dbeafe}.message-ring-segments path.header+.stream-ring-byte{fill:#92400e;font-weight:900}.message-queue-view>div{align-content:start;display:grid}.message-queue-view article{border:1px solid var(--border);background:var(--panel-soft);border-radius:6px;padding:8px}.message-queue-view article strong{color:var(--text);font-size:10px}.message-queue-view article p{color:var(--accent-text);margin-top:4px;font:9px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.message-ring-legend{color:var(--muted);justify-content:center;gap:14px;margin-top:8px;font-size:10px;display:flex}.message-ring-legend span:before{border:1px solid var(--border);vertical-align:-2px;content:"";background:#dbeafe;border-radius:2px;width:11px;height:11px;margin-right:5px;display:inline-block}.message-ring-legend span.header:before{background:#fde68a}#message-read-arrow path{fill:#2563eb}#message-write-arrow path{fill:#dc2626}.message-buffer-demo .stream-pointer.read{marker-end:url(#message-read-arrow)}.message-buffer-demo .stream-pointer.write{marker-end:url(#message-write-arrow)}.message-buffer-demo .stream-pointer{stroke-width:3px}.app-shell[data-theme=dark] .message-ring-segments path.header{fill:#713f12}.app-shell[data-theme=dark] .message-ring-segments path.payload{fill:#17345f}@media (width<=1200px){.message-buffer-demo .stream-ring-panel{grid-template-columns:1fr}}@media (width<=620px){.message-buffer-demo .stream-ring,.message-buffer-demo .stream-ring svg{width:280px;max-width:280px;height:280px}}.app-shell{--bg:#f6f7fb;--panel:#fff;--panel-soft:#f1f5f9;--border:#e2e8f0;--text:#0f172a;--muted:#64748b;--accent:#3b82f6;--accent-soft:#eff6ff;--accent-text:#1d4ed8;--shadow:0 18px 50px #0f172a14;--grid:#64748b24;background:var(--bg);min-height:100vh;color:var(--text);grid-template-columns:260px minmax(0,1fr);display:grid}.app-shell[data-theme=dark]{--bg:#0e1117;--panel:#151a23;--panel-soft:#111722;--border:#252f3f;--text:#f8fafc;--muted:#94a3b8;--accent:#60a5fa;--accent-soft:#60a5fa24;--accent-text:#bfdbfe;--shadow:none;--grid:#94a3b821}.app-shell.collapsed{grid-template-columns:76px minmax(0,1fr)}.sidebar{border-right:1px solid var(--border);background:var(--panel);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.brand{border-bottom:1px solid var(--border);flex:none;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:10px;min-height:68px;padding:14px;display:grid}.logo{background:var(--accent);color:#fff;border-radius:12px;place-items:center;width:40px;height:40px;font-weight:800;display:grid}.brand-text{gap:2px;min-width:0;display:grid}.brand-text strong,.brand-text span,.group-title span,.menu-item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.brand-text strong{font-size:15px}.brand-text span{color:var(--muted);font-size:12px}button{font:inherit;cursor:pointer;border:0}.menu{flex:auto;align-content:start;gap:14px;padding:14px 10px;display:grid;overflow:auto}.sidebar-footer{border-top:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:12px 10px;display:flex}.collapse-button,.footer-button{width:32px;height:32px;color:var(--muted);background:0 0;border:0;border-radius:8px;place-items:center;padding:0;display:grid}.collapse-button span,.footer-button{place-items:center;width:32px;height:32px;display:grid}.menu-group{gap:5px;display:grid}.group-title{min-height:40px;color:var(--muted);text-align:left;background:0 0;border-radius:6px;justify-content:space-between;align-items:center;padding:6px 10px;font-size:14px;font-weight:800;display:flex}.group-title:hover{background:var(--panel-soft);color:var(--text)}.submenu{gap:4px;display:grid}.menu-item{width:100%;min-height:40px;color:var(--muted);text-align:left;background:0 0;border-radius:6px;grid-template-columns:8px minmax(0,1fr);align-items:center;gap:10px;padding:8px 12px;display:grid}.menu-item i{opacity:.45;background:currentColor;border-radius:50%;width:7px;height:7px}.menu-item:hover{background:var(--panel-soft);color:var(--text)}.menu-item.active{background:var(--accent-soft);color:var(--accent-text);font-weight:700}.main{grid-template-rows:minmax(0,1fr);min-width:0;padding:0;display:grid}.demo-card{min-height:0;box-shadow:none;background:0 0;border:0;border-radius:0;padding:0;display:grid}.stage{background:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px), var(--panel-soft);width:100%;min-height:100vh;color:var(--muted);cursor:pointer;background-size:28px 28px;border:0;border-radius:0;place-items:center;display:grid;overflow:auto}.stage.no-grid{background:var(--panel-soft)}.stage svg{width:min(100%,920px);min-width:680px;height:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.collapsed .brand{grid-template-columns:40px;justify-content:center;padding-inline:10px}.collapsed .brand-text,.collapsed .group-title span,.collapsed .menu-item span{display:none}.collapsed .menu{padding-inline:10px}.collapsed .sidebar-footer{flex-direction:column;padding-inline:10px}.collapsed .collapse-button{padding-inline:0}.collapsed .group-title{justify-content:center}.collapsed .menu-item{grid-template-columns:1fr;justify-items:center;padding-inline:0}@media (width<=760px){.app-shell,.app-shell.collapsed{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--border);height:auto;position:static}.collapsed .menu{display:none}.main,.demo-card{padding:0}.stage{min-height:100vh}}
