body:has(.lab-pw){background:#000}.lab-pw{--pw-bg:#000;--pw-panel:#111113;--pw-panel-2:#18181b;--pw-ink:#f5f5f7;--pw-ink-2:#d2d2d7;--pw-ink-3:#a1a1a6;--pw-rule:#ffffff1f;--pw-rule-2:#ffffff3d;--pw-req:#ffb27a;--pw-res:#7acfff;--pw-evt:#b69bff;--pw-local:#a1a1a6;--pw-bad:#ff5e6e;--pw-ok:#78f0c6;--pw-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;background:var(--pw-bg);color:var(--pw-ink);padding:calc(var(--nav-h) + 36px) 24px 64px;min-height:100vh;font-family:var(--font)}.lab-pw .pw-intro{max-width:860px;margin:0 auto 28px}.lab-pw .pw-eyebrow{color:var(--orange-400,#ff8a3d);letter-spacing:.02em;margin:0 0 10px;font-size:14px;font-weight:600}.lab-pw .pw-intro h1{letter-spacing:-.03em;margin:0 0 14px;font-size:clamp(32px,5vw,52px);line-height:1.05}.lab-pw .pw-intro p{color:var(--pw-ink-2);margin:0 0 10px;font-size:17px;line-height:1.5}.lab-pw .pw-intro strong{color:var(--pw-ink)}.lab-pw .pw-fine{color:var(--pw-ink-3)!important;font-size:13px!important}.lab-pw .pw-app{max-width:1320px;margin:0 auto}.lab-pw button{font:500 13px/1 var(--font);color:var(--pw-ink-2);border:1px solid var(--pw-rule);cursor:pointer;background:0 0;border-radius:999px;padding:8px 14px;transition:color .15s,border-color .15s,background-color .15s}.lab-pw button:hover{color:var(--pw-ink);border-color:var(--pw-rule-2)}.lab-pw .pw-picker{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:18px;display:grid}.lab-pw .pw-layer{background:var(--pw-panel);border:1px solid var(--pw-rule);border-radius:12px;padding:12px 14px}.lab-pw .pw-layer-name{color:var(--pw-ink-3);margin-bottom:8px;font-size:12px;display:block}.lab-pw .pw-chips{flex-wrap:wrap;gap:6px;display:flex}.lab-pw .pw-chip[aria-selected=true]{color:#000;background:var(--orange-500,#ff6a13);border-color:var(--orange-500,#ff6a13)}.lab-pw .pw-proto{margin:0 0 12px}.lab-pw .pw-proto-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.lab-pw .pw-proto-name{letter-spacing:-.02em;margin:0;font-size:24px}.lab-pw .pw-version{font:500 12px/1 var(--pw-mono);color:var(--pw-ok);border:1px solid #78f0c659;border-radius:6px;padding:4px 8px}.lab-pw .pw-spec{color:var(--pw-ink-3);font-size:13px}.lab-pw .pw-spec:hover{color:var(--pw-ink)}.lab-pw .pw-summary{max-width:860px;color:var(--pw-ink-2);margin:8px 0 0;font-size:15px;line-height:1.5}.lab-pw .pw-controls{flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 12px;display:flex}.lab-pw .pw-play[aria-pressed=true]{color:var(--pw-ink);border-color:#ffe3a873}.lab-pw .pw-intercept{border:1px solid var(--pw-rule);color:var(--pw-ink);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:7px 12px;font-size:13px;display:inline-flex}.lab-pw .pw-intercept input{accent-color:var(--pw-bad);width:16px;height:16px;margin:0}.lab-pw .pw-intercept:has(input:checked){background:#ff5e6e1a;border-color:#ff5e6e99}.lab-pw .pw-hint{color:var(--pw-ink-3);font-size:12px}.lab-pw .pw-main{grid-template-columns:minmax(0,1fr) 440px;align-items:start;gap:14px;display:grid}.lab-pw .pw-diagram-wrap{background:var(--pw-panel);border:1px solid var(--pw-rule);max-height:calc(100vh - var(--nav-h) - 140px);scrollbar-width:thin;scrollbar-color:var(--pw-rule-2) transparent;border-radius:14px;min-height:420px;position:relative;overflow:auto}.lab-pw .pw-diagram{display:block}.lab-pw .pw-lifeline{stroke:var(--pw-rule);stroke-width:1px;stroke-dasharray:2 5}.lab-pw .pw-actor rect{fill:var(--pw-panel-2);stroke:var(--pw-rule-2)}.lab-pw .pw-actor-name{font:600 13px/1 var(--font);fill:var(--pw-ink)}.lab-pw .pw-actor-role{font:400 10.5px/1 var(--font);fill:var(--pw-ink-3)}.lab-pw .pw-row{cursor:pointer;outline:none}.lab-pw .pw-row-bg{fill:#0000}.lab-pw .pw-row:hover .pw-row-bg,.lab-pw .pw-row:focus-visible .pw-row-bg{fill:#ffffff09}.lab-pw .pw-row.is-selected .pw-row-bg{fill:#ffb27a14}.lab-pw .pw-line{stroke-width:1.6px}.lab-pw .pw-req .pw-line{stroke:var(--pw-req)}.lab-pw .pw-res .pw-line{stroke:var(--pw-res);stroke-dasharray:6 4}.lab-pw .pw-evt .pw-line{stroke:var(--pw-evt);stroke-dasharray:2 3}.lab-pw .pw-local .pw-line{stroke:var(--pw-local);stroke-dasharray:1 4}.lab-pw .is-tampered .pw-line,.lab-pw .is-dropped .pw-line{stroke:var(--pw-bad)!important}.lab-pw .is-flying .pw-line,.lab-pw .is-held .pw-line{opacity:.35}.lab-pw .pw-x{stroke:var(--pw-bad);stroke-width:2.2px}.lab-pw .pw-self{fill:none;stroke:var(--pw-local);stroke-dasharray:2 3}.lab-pw .pw-head-req{fill:var(--pw-req)}.lab-pw .pw-head-res{fill:var(--pw-res)}.lab-pw .pw-head-evt{fill:var(--pw-evt)}.lab-pw .pw-head-local{fill:var(--pw-local)}.lab-pw .pw-head-bad{fill:var(--pw-bad)}.lab-pw .pw-label{font:500 12px/1 var(--pw-mono);fill:var(--pw-ink-2)}.lab-pw .is-selected .pw-label{fill:var(--pw-ink)}.lab-pw .is-tampered .pw-label,.lab-pw .is-dropped .pw-label{fill:var(--pw-bad)}.lab-pw .pw-packet{fill:var(--pw-ink);filter:drop-shadow(0 0 6px #fffc)}.lab-pw .pw-packet-req{fill:var(--pw-req)}.lab-pw .pw-packet-res{fill:var(--pw-res)}.lab-pw .pw-packet-evt{fill:var(--pw-evt)}.lab-pw .is-held~.pw-packet,.lab-pw .pw-packet{transition:none}.lab-pw .pw-lesson{background:var(--pw-panel-2);border:1px solid var(--pw-rule-2);border-radius:12px;margin:0 14px 14px;padding:14px 16px;position:sticky;bottom:12px;box-shadow:0 10px 30px #00000080}.lab-pw .pw-lesson strong{margin-bottom:4px;font-size:15px;display:block}.lab-pw .pw-lesson p{color:var(--pw-ink-2);margin:0 0 10px;font-size:14px;line-height:1.5}.lab-pw .pw-lesson[hidden]{display:none}.lab-pw .pw-inspector{top:calc(var(--nav-h) + 16px);max-height:calc(100vh - var(--nav-h) - 32px);background:var(--pw-panel);border:1px solid var(--pw-rule);scrollbar-width:thin;scrollbar-color:var(--pw-rule-2) transparent;border-radius:14px;padding:16px 18px;position:sticky;overflow:auto}.lab-pw .pw-empty{color:var(--pw-ink-3);margin:0;font-size:14px}.lab-pw .pw-i-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.lab-pw .pw-tag{font:600 11px/1 var(--font);border:1px solid;border-radius:999px;padding:4px 8px}.lab-pw .pw-tag-req{color:var(--pw-req)}.lab-pw .pw-tag-res{color:var(--pw-res)}.lab-pw .pw-tag-evt{color:var(--pw-evt)}.lab-pw .pw-tag-local{color:var(--pw-local)}.lab-pw .pw-i-route{color:var(--pw-ink-3);font-size:12px}.lab-pw .pw-i-title{font:600 18px/1.25 var(--pw-mono);word-break:break-word;margin:10px 0 4px}.lab-pw .pw-i-transport{font:400 12px/1.4 var(--pw-mono);color:var(--pw-ink-3);word-break:break-all;margin:0 0 10px}.lab-pw .pw-i-purpose{color:var(--pw-ink-2);margin:0 0 12px;font-size:14px;line-height:1.5}.lab-pw .pw-i-sub{font:600 12px/1 var(--font);color:var(--pw-ink-3);text-transform:uppercase;letter-spacing:.06em;margin:14px 0 6px}.lab-pw .pw-json{border:1px solid var(--pw-rule);font:400 12px/1.55 var(--pw-mono);color:var(--pw-ink-2);white-space:pre-wrap;word-break:break-word;background:#050506;border-radius:8px;margin:0;padding:10px 12px;overflow-x:auto}.lab-pw .pw-j-key{color:var(--pw-ink)}.lab-pw .pw-j-str{color:#a7e3b5}.lab-pw .pw-j-lit{color:#ffcb6b}.lab-pw button.pw-j-noted{all:unset;cursor:pointer;color:var(--orange-300,#ffb27a);border-bottom:1px dotted var(--orange-300,#ffb27a)}.lab-pw button.pw-j-noted:focus-visible{outline:2px solid var(--orange-400,#ff8a3d);outline-offset:2px}.lab-pw .pw-j-note{border-left:2px solid var(--orange-300,#ffb27a);color:var(--pw-ink);font:400 12px/1.45 var(--font);white-space:normal;background:#ffb27a14;margin:4px 0 6px 12px;padding:6px 9px;display:block}.lab-pw .pw-notes{gap:8px;margin:0;display:grid}.lab-pw .pw-notes dt{font:600 12px/1.3 var(--pw-mono);color:var(--orange-300,#ffb27a);word-break:break-all}.lab-pw .pw-notes dd{color:var(--pw-ink-2);margin:2px 0 0;font-size:13px;line-height:1.45}.lab-pw .pw-flag{border-radius:8px;margin:0 0 10px;padding:8px 10px;font-size:13px}.lab-pw .pw-flag-bad{color:#ffd0d5;background:#ff5e6e24;border:1px solid #ff5e6e66}.lab-pw .pw-actions{background:#ff5e6e12;border:1px solid #ff5e6e73;border-radius:10px;margin:0 0 12px;padding:12px}.lab-pw .pw-held{color:var(--pw-ink);margin:0 0 10px;font-size:13px;font-weight:600}.lab-pw .pw-action-row{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.lab-pw .pw-btn-primary{color:#000;background:var(--pw-ok);border-color:var(--pw-ok)}.lab-pw .pw-btn-primary:hover{color:#000;background:#a5f6da}.lab-pw .pw-btn-bad{color:#ffd0d5;text-align:left;border-color:#ff5e6e80;border-radius:10px;line-height:1.3}.lab-pw .pw-ui-card{color:#1d1d1f;background:#f5f5f7;border-radius:12px;padding:14px}.lab-pw .pw-ui-col{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.lab-pw .pw-ui-text{margin:0;font-size:14px}.lab-pw .pw-ui-text:first-child{font-size:16px;font-weight:600}.lab-pw .pw-ui-btn{color:#000;background:var(--orange-500,#ff6a13);border-color:var(--orange-500,#ff6a13)}.lab-pw .pw-ui-btn .pw-ui-text{font-size:13px;font-weight:600}@media (max-width:1100px){.lab-pw .pw-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.lab-pw .pw-main{grid-template-columns:1fr}.lab-pw .pw-inspector{max-height:none;position:static}.lab-pw .pw-diagram-wrap{max-height:60vh}}@media (max-width:640px){.lab-pw{padding:calc(var(--nav-h) + 24px) 14px 48px}.lab-pw .pw-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.lab-pw .pw-layer{padding:10px}.lab-pw .pw-chip{padding:7px 11px}.lab-pw .pw-hint{display:none}}@media (prefers-reduced-motion:reduce){.lab-pw *{transition:none!important}}
