.mibo-lab{margin:3.5rem 0;padding:clamp(18px,3vw,32px);border:1px solid var(--line);border-top:4px solid var(--cyan);background:var(--panel);box-shadow:6px 6px #050c12}.mibo-lab [hidden]{display:none!important}.mibo-lab .lab-kicker{color:var(--cyan);font:16px var(--pixel);letter-spacing:2px}.mibo-lab h3{margin:28px 0 20px;font-size:30px}.lab-controls{display:flex;flex-wrap:wrap;gap:16px;align-items:end;margin:28px 0 20px}.mibo-lab button{min-height:44px;padding:10px 14px;border:2px solid;border-color:#47616b #071018 #071018 #47616b;border-radius:0;background:#1b303b;box-shadow:3px 3px #050c12;color:var(--ink);font:17px var(--pixel);cursor:pointer}.mibo-lab button:hover:not(:disabled){background:#294550;border-top-color:var(--cyan)}.mibo-lab button:active:not(:disabled){transform:translate(2px,2px);box-shadow:1px 1px #050c12}.mibo-lab button:disabled{opacity:.4;cursor:default;box-shadow:none}.mibo-lab :focus-visible{outline:2px solid var(--cyan);outline-offset:5px}.mibo-lab label{display:flex;gap:10px;align-items:center;flex-wrap:wrap;min-height:48px}.mibo-lab input[type=checkbox]{accent-color:var(--cyan);width:18px;height:18px}.mibo-lab .pixel-control{display:inline-flex;gap:12px;align-items:center;min-height:50px;padding:12px 16px}.pixel-control svg{width:20px;height:20px;fill:currentColor;shape-rendering:crispEdges}.mibo-lab [data-play]{background:var(--copper);color:var(--bg);border-color:#f2c9a6 #8b583c #8b583c #f2c9a6}.mibo-lab [data-play]:hover:not(:disabled){background:#f0c29e;border-top-color:var(--ink)}.lab-select-field{display:grid;gap:10px;min-width:220px;margin-right:auto}.lab-select-field>span{color:var(--muted);font:14px var(--pixel);letter-spacing:1px}.lab-select{position:relative;min-width:220px}.mibo-lab .lab-select>button{display:flex;align-items:center;justify-content:space-between;gap:26px;width:100%;min-height:50px;text-align:left}.lab-select>button::after{content:'';flex:0 0 12px;height:9px;background:var(--cyan);clip-path:polygon(0 0,25% 0,25% 33%,42% 33%,42% 66%,58% 66%,58% 33%,75% 33%,75% 0,100% 0,100% 33%,75% 33%,75% 66%,58% 66%,58% 100%,42% 100%,42% 66%,25% 66%,25% 33%,0 33%)}.lab-select>button[aria-expanded=true]{border-color:var(--cyan)}.lab-options{position:absolute;z-index:7;top:calc(100% + 8px);inset-inline:0;padding:6px;border:2px solid var(--cyan);background:#101d27;box-shadow:5px 5px #050c12;max-height:300px;overflow-y:auto}.lab-options [role=option]{display:flex;align-items:center;gap:12px;min-height:46px;padding:10px 12px;color:var(--ink);font:17px var(--pixel);cursor:pointer}.lab-options [role=option]::before{content:'';width:6px;height:6px;background:0 0;flex:0 0 6px}.lab-options [aria-selected=true]::before{background:var(--cyan)}.lab-options [role=option]:hover,.lab-options .is-active{background:var(--copper);color:var(--bg)}.lab-options .is-active::before{background:var(--bg)}.mibo-lab .lab-hex{white-space:pre-wrap;overflow-wrap:anywhere;line-height:2;max-width:100%;font:14px/2 fira code,monospace;background:var(--bg);padding:20px;border:1px solid var(--line)}.lab-hex:has([data-byte]){display:grid;grid-template-columns:repeat(16,minmax(0,1fr));gap:5px}.lab-hex [data-byte]{display:block;padding:4px 0;text-align:center;background:#14232d;white-space:pre}.lab-hex .is-byte{background:var(--copper);color:var(--bg)}.mibo-lab [data-field-detail]{min-height:3em;padding:16px 20px;border-left:3px solid var(--copper);background:#14232d;color:var(--ink)}.mibo-lab table{display:table;width:100%;font-size:14px;table-layout:fixed}.packet-lab th:first-child,.packet-lab td:first-child{width:64px}.packet-lab th:nth-child(2),.packet-lab td:nth-child(2){width:60px}.packet-lab th:nth-child(3),.packet-lab td:nth-child(3){width:160px}.mibo-lab td{overflow-wrap:anywhere}.mibo-lab tr.is-field{background:#203740}.mibo-lab td button{font:14px fira code,monospace;text-align:left;max-width:100%;padding:8px;min-height:40px;box-shadow:none;border:1px solid var(--line);background:0 0}.mibo-lab tr.is-field button{color:var(--cyan);border-color:var(--cyan)}.mibo-lab caption{color:var(--muted);text-align:left;margin:20px 0 12px}.ptcp-stage{display:block;width:100%;height:auto;overflow:visible;margin:28px 0;background:var(--bg);border:1px solid var(--line)}.ptcp-stage path{stroke:var(--line);stroke-width:2}.ptcp-stage .stage-node{fill:#1b303b;stroke:var(--cyan);stroke-width:2}.ptcp-stage text{fill:var(--muted);font:14px fira code,monospace}.ptcp-stage [data-moving-packet]{fill:var(--cyan);transition:x 1.2s cubic-bezier(.22,1,.36,1),fill .2s ease}.ptcp-stage .is-rejected{fill:var(--copper)}.ptcp-lab output{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;font:14px/1.8 fira code,monospace;color:var(--muted)}.ptcp-lab output>span{display:block;background:var(--bg);padding:14px 16px;border-top:2px solid var(--line)}.ptcp-lab output b{display:block;color:var(--cyan);font:30px var(--pixel);margin-top:8px}.mibo-lab .lab-step-note{min-height:3.5em;margin:24px 0 12px;color:var(--ink)}.mibo-lab .lab-delivered{margin-top:0;color:var(--cyan);font:18px fira code,monospace;letter-spacing:3px}.ptcp-lab details{margin-top:28px}.ptcp-lab summary{cursor:pointer;color:var(--muted)}.ptcp-lab th:first-child,.ptcp-lab td:first-child{width:20%}.ptcp-lab th:nth-child(2),.ptcp-lab td:nth-child(2){width:45%}.ptcp-lab th:nth-child(3),.ptcp-lab td:nth-child(3){width:35%}@media(max-width:600px){.mibo-lab{margin-inline:-8px;padding:16px 12px}.lab-controls{gap:14px 10px}.lab-select-field{width:100%}.lab-select,.lab-select-field{min-width:0}.lab-controls label{width:100%}.mibo-lab .pixel-control{flex:1 1 40%;justify-content:center}.lab-hex:has([data-byte]){grid-template-columns:repeat(8,minmax(0,1fr))}.mibo-lab table{font-size:12px}.mibo-lab td,.mibo-lab th{padding:6px}.packet-lab th:first-child,.packet-lab td:first-child,.packet-lab th:nth-child(2),.packet-lab td:nth-child(2){width:36px}.packet-lab th:nth-child(3),.packet-lab td:nth-child(3){width:90px}.mibo-lab td button{font-size:11px;padding:5px}.ptcp-stage text{font-size:22px}.ptcp-lab output{gap:6px;font-size:11px}.ptcp-lab output>span{padding:10px 8px}.ptcp-lab output b{font-size:25px}}@media(prefers-reduced-motion:reduce){.ptcp-stage [data-moving-packet]{transition:none}.mibo-lab button:active:not(:disabled){transform:none}}.ptcp-lab .lab-reference{border:1px solid var(--line);background:var(--bg);overflow:hidden}.lab-reference>summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px;list-style:none;color:var(--ink);font:18px var(--pixel);cursor:pointer}.lab-reference>summary::-webkit-details-marker{display:none}.lab-reference>summary:hover{background:#1b303b}.lab-reference>summary:focus-visible{outline-offset:-5px}.reference-chevron{width:10px;height:10px;border-right:2px solid var(--cyan);border-bottom:2px solid var(--cyan);transform:rotate(45deg);flex-shrink:0;transition:transform .26s ease}.lab-reference>summary[aria-expanded=true] .reference-chevron,.lab-reference:not(:has([aria-expanded]))[open] .reference-chevron{transform:rotate(225deg)}.reference-content{border-top:1px solid var(--line);padding:8px 20px 20px}.prose .scenario-reference{margin:0;padding:0;list-style:none}.prose .scenario-reference>li{display:grid;grid-template-columns:32px 1fr;gap:14px;margin:0;padding:22px 0;border-bottom:1px solid var(--line)}.prose .scenario-reference>li:last-child{padding-bottom:0;border-bottom:0}.reference-number{color:var(--copper);font:16px var(--pixel);padding-top:3px}.reference-title{color:var(--ink);font:18px var(--pixel)}.scenario-reference dl{display:grid;grid-template-columns:minmax(0,1.5fr)minmax(0,1fr);gap:16px;margin:14px 0 0}.scenario-reference dt{color:var(--muted);font:12px fira code,monospace;margin-bottom:8px}.scenario-reference dd{margin:0;overflow-wrap:anywhere}.prose .scenario-reference code{background:0 0;padding:0;color:var(--cyan);font:13px/1.8 fira code,monospace}@media(max-width:600px){.lab-reference>summary{padding:16px;font-size:16px}.reference-content{padding:4px 14px 16px}.prose .scenario-reference>li{grid-template-columns:24px minmax(0,1fr);gap:8px}.scenario-reference dl{grid-template-columns:1fr;gap:14px}}@media(prefers-reduced-motion:reduce){.reference-chevron{transition:none}}.blog-article .mibo-lab .lab-heading{padding-bottom:18px;border-bottom:1px solid var(--line)}.blog-article .mibo-lab .lab-kicker{max-width:none;margin-bottom:10px;font-size:13px}.blog-article .mibo-lab .lab-intro{max-width:700px;margin:0;font:16px/1.6 var(--reading-font)}.blog-article .mibo-lab .lab-controls{gap:16px 24px;margin-block:20px}.lab-transport{display:flex;flex-wrap:wrap;gap:8px}.mibo-lab .lab-transport .pixel-control{gap:8px;min-height:44px;padding:10px 12px;font-size:15px}.mibo-lab .lab-transport svg{width:16px;height:16px}.mibo-lab [data-reset]{border-color:transparent;background:0 0;box-shadow:none;color:var(--muted)}.blog-article .packet-lab:has(.lab-controls:not([hidden])) [data-packet]>h3{display:none}.blog-article .mibo-lab .lab-hex{padding:16px 12px 16px 52px;gap:4px;font-size:13px}.lab-hex [data-byte]{position:relative;background:#14232d80}.lab-hex [data-byte]:nth-child(4n){margin-right:3px}.lab-hex [data-byte]:nth-child(16n+1)::before{content:attr(data-offset);position:absolute;right:calc(100% + 12px);top:4px;color:var(--muted);font-size:10px}.lab-hex [data-byte].is-byte{background:var(--copper);color:var(--bg)}.blog-article .mibo-lab [data-field-detail]{margin-block:12px 20px;padding:12px 16px;font-size:16px;line-height:1.6}.ptcp-stage{margin-block:16px}.ptcp-lab output{gap:0;border-block:1px solid var(--line)}.ptcp-lab output>span{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:12px;border:0;background:0 0}.ptcp-lab output>span+span{border-left:1px solid var(--line)}.ptcp-lab output b{margin:0;font-size:24px}.blog-article .mibo-lab .lab-step-note{min-height:0;margin-block:18px 12px;font-size:16px;line-height:1.6}.mibo-lab .lab-delivered{padding:14px 16px;border-left:2px solid var(--cyan);background:#0a111880;font-size:16px}.mibo-lab .lab-delivered.is-empty{letter-spacing:normal;color:var(--muted);font-size:14px}.ptcp-lab .lab-reference{border-inline:0;background:0 0}.lab-reference>summary{padding:14px 0;font-size:16px}.reference-content{padding:0 0 16px}.blog-article .prose .scenario-reference>li{padding-block:16px;margin:0}.scenario-reference dl{margin-top:10px}@media(max-width:600px){.lab-hex [data-byte]:nth-child(8n+1)::before{content:attr(data-offset);position:absolute;right:calc(100% + 12px);top:4px;color:var(--muted);font-size:10px}.blog-article .mibo-lab .lab-hex{padding-left:42px;padding-right:8px;font-size:11px;gap:3px}.lab-transport{width:100%}.ptcp-lab output>span{display:block;padding:10px 8px}.ptcp-lab output b{margin-top:4px}}.lab-table-scroll{max-width:100%;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--cyan)var(--panel)}@media(max-width:600px){.packet-lab .lab-table-scroll table{min-width:480px}}.blog-article .ptcp-lab .lab-result{margin-block:20px 28px;padding:18px 20px;border:1px solid var(--line);background:#0a111880}.blog-article .ptcp-lab .lab-result-title{margin:0 0 12px;color:var(--muted);font:12px/1.5 var(--pixel);letter-spacing:1px}.blog-article .ptcp-lab .lab-delivered{display:block;min-height:24px;margin:0;padding:0;border:0;background:0 0;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--cyan);font:16px/1.6 ui-monospace,monospace;letter-spacing:normal}.blog-article .ptcp-lab .lab-delivered::before{content:"> ";color:var(--muted)}.blog-article .ptcp-lab .lab-delivered::after{content:"▌";margin-left:3px;color:var(--cyan)}.blog-article .ptcp-lab .lab-step-note{margin:12px 0 0;color:var(--muted);font-size:14px;line-height:1.6}.blog-article .ptcp-lab .lab-reference{max-width:none;margin-top:0;border:0}.ptcp-lab .lab-reference>summary{padding-block:16px;border-top:1px solid var(--line);font:600 16px/1.5 var(--reading-font)}.ptcp-lab .reference-content{padding:4px 0 0;border:0}.blog-article .ptcp-lab .scenario-reference{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.blog-article .ptcp-lab .scenario-reference>li{grid-template-columns:22px minmax(0,1fr);gap:10px;min-width:0;padding:16px;border:1px solid var(--line);background:#0a111840}.blog-article .ptcp-lab .scenario-reference>li.is-current{border-color:#99d6cb80;background:#99d6cb08}.ptcp-lab .reference-number{padding-top:2px;font-size:12px}.ptcp-lab .reference-title{font:600 15px/1.5 var(--reading-font)}.ptcp-lab .scenario-reference dl{grid-template-columns:minmax(0,1fr);gap:12px;margin-top:12px}.ptcp-lab .scenario-reference dt{margin-bottom:4px;font-size:11px}.blog-article .ptcp-lab .scenario-reference code{font-size:12px;line-height:1.7}@media(max-width:600px){.blog-article .ptcp-lab .scenario-reference{grid-template-columns:minmax(0,1fr);gap:10px}.blog-article .ptcp-lab .lab-result{padding:14px}.blog-article .ptcp-lab .scenario-reference>li{padding:14px}}.blog-article .ptcp-lab .lab-reference{overflow:visible;padding-top:16px;border-top:1px solid var(--line)}.blog-article .ptcp-lab .lab-reference-label{max-width:none;margin:0 0 12px;color:var(--muted);font:12px/1.5 var(--pixel)}.blog-article .ptcp-lab .scenario-reference{display:block}.blog-article .ptcp-lab .scenario-reference>li{padding:0;border:0;background:0 0}.blog-article .ptcp-lab .scenario-reference>li+li{margin-top:20px}.ptcp-lab .scenario-reference dl{grid-template-columns:minmax(0,2fr)minmax(0,1fr);gap:16px}@media(max-width:600px){.ptcp-lab .scenario-reference dl{grid-template-columns:minmax(0,1fr);gap:10px}}.packet-lab .lab-table-scroll{border:1px solid var(--line);border-top:2px solid var(--copper);background:#0a111840}.packet-lab .lab-table-scroll table{border-collapse:collapse;margin:0}.packet-lab .lab-table-scroll caption{margin:0;padding:12px;background:#101e27;color:var(--muted);font:13px/1.5 var(--reading-font)}.packet-lab .lab-table-scroll :is(th,td){padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}.packet-lab .lab-table-scroll th{text-align:left;background:#192b34;color:var(--ink);font:600 12px/1.5 var(--reading-font)}.packet-lab .lab-table-scroll tbody tr:last-child td{border-bottom:0}.packet-lab .lab-table-scroll tr.is-field{background:#99d6cb0d}.packet-lab .lab-table-scroll tr.is-field td:first-child{box-shadow:inset 2px 0 var(--cyan)}