.ksh{--ln:color-mix(in oklab, var(--color-base-content) 55%, transparent);--mu:color-mix(in oklab, var(--color-base-content) 62%, transparent);--dot:color-mix(in oklab, var(--color-base-content) 10%, transparent);border:1px solid var(--color-base-300);border-radius:var(--radius-box);background:var(--color-base-100) radial-gradient(var(--dot) 1px, transparent 1.3px) 0 0 / 14px 14px;margin:1.75rem 0;padding:1rem 1rem .5rem;font-size:.9375rem;line-height:1.4}.ksh__stage{align-items:flex-start;gap:.25rem;display:flex}.ksh__box{text-align:center;flex:0 0 7.5rem;justify-items:center;gap:.2rem;display:grid}:where(.ksh__box) svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;display:block;overflow:visible}.ksh__dev{width:4rem;height:3rem;color:var(--ln)}.ksh__box b{font-size:.875rem;font-weight:600}.ksh__card{border:1px dashed var(--ln);border-radius:var(--radius-field);background:var(--color-base-100);font:.6875rem/1.3 var(--font-mono);align-items:center;gap:.3rem;padding:.15rem .4rem;display:flex}.ksh__key,.ksh__lock{width:1.6rem;height:1rem}.ksh__key{fill:var(--color-accent);color:var(--color-base-content)}.ksh__lock{width:.9rem;height:1.05rem;fill:var(--color-base-200);color:var(--color-base-content)}.ksh__empty{color:var(--mu);display:none}.ksh[data-s=nokey] .ksh__lock{opacity:.3}.ksh[data-s=nokey] .ksh__pub{display:none}.ksh[data-ph=nope] .ksh__card:has(.ksh__key){border:1.5px solid var(--color-error)}.ksh[data-s=nokey] .ksh__empty{display:inline}.ksh__led{fill:var(--ln);stroke:none}.ksh[data-ph=ok] .ksh__led{fill:var(--color-success)}.ksh[data-ph=deny] .ksh__led{fill:var(--color-error)}.ksh__wire{flex:1;height:3rem;margin-inline:-1.25rem;position:relative;container-type:inline-size}.ksh__wire:before{content:"";border-top:2px dashed var(--ln);transition:border-color .3s;position:absolute;inset:50% 0 auto}.ksh[data-ph=ok] .ksh__wire:before{border-top-style:solid;border-color:var(--color-success)}.ksh[data-ph=deny] .ksh__wire:before{border-color:var(--color-error)}.ksh__wall{background:var(--color-error);opacity:0;border-radius:2px;width:.3rem;transition:all .2s;position:absolute;inset:.6rem auto .6rem .2rem;transform:scaleY(.2)}.ksh[data-ph=nope] .ksh__wall{opacity:1;transform:none}.ksh__pkt{border:1.5px solid var(--color-base-content);background:var(--color-base-100);font:600 .6875rem/1.25rem var(--font-mono);white-space:nowrap;opacity:0;border-radius:3px;margin-top:-.75rem;padding:.1rem .4rem;transition:translate .55s cubic-bezier(.5,0,.3,1),opacity .15s;position:absolute;top:50%;left:0}.ksh__pkt[data-on]{opacity:1}.ksh__pkt[data-at=srv]{translate:calc(100cqw - 100%)}.ksh__pkt[data-k=nonce]{border-color:var(--color-primary);color:var(--color-primary)}.ksh__pkt[data-k=sig]{border-color:var(--color-accent);rotate:-4deg}.ksh__pkt[data-k=sig]:after{content:"";border:2px solid var(--color-accent);opacity:.7;border-radius:999px;animation:.35s ease-out ksh-ink;position:absolute;inset:-5px}.ksh__pkt[data-k=x]{border-color:var(--color-error);color:var(--color-error)}.ksh[data-ph=sign] .ksh__key{animation:.45s ease-in-out ksh-stamp}.ksh[data-ph=nope] .ksh__key{animation:.6s ease-in-out ksh-lunge}.ksh[data-ph=check] .ksh__lock{fill:var(--color-success);animation:.4s ease-in-out ksh-pulse}@keyframes ksh-stamp{40%{translate:2.2rem -.6rem;rotate:40deg}60%{translate:2.4rem -.2rem;rotate:40deg}}@keyframes ksh-lunge{35%{translate:2.6rem}50%{translate:1.6rem}65%{translate:.3rem}80%{translate:-.3rem}}@keyframes ksh-ink{0%{opacity:0;scale:1.8}}@keyframes ksh-pulse{50%{scale:1.35}}.ksh__ctl{flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;margin:.9rem 0 .6rem;display:flex}.ksh__chip{cursor:pointer;position:relative}.ksh__chip input{opacity:0;position:absolute}.ksh__chip span{border:1px solid color-mix(in oklab, var(--color-base-content) 25%, transparent);border-radius:var(--radius-field);background:var(--color-base-100);box-shadow:0 2px 0 color-mix(in oklab, var(--color-base-content) 18%, transparent);color:var(--color-base-content);padding:.35rem .8rem;font-size:.8125rem;font-weight:500;transition:background .15s,box-shadow .1s,translate .1s;display:block}.ksh__chip span:before{content:"▶";vertical-align:.15em;margin-inline-end:.4em;font-size:.65em;display:inline-block}.ksh__chip span:dir(rtl):before{scale:-1 1}.ksh__chip:hover span{background:var(--color-base-200)}.ksh__chip:active span{translate:0 2px;box-shadow:0 0 #0000}.ksh__chip input:checked+span{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-primary-content);box-shadow:0 2px 0 color-mix(in oklab, var(--color-primary) 55%, black)}.ksh__chip input:focus-visible+span{outline:2px solid var(--color-primary);outline-offset:2px}.ksh .ksh__steps{counter-reset:s;color:var(--mu);grid-template-columns:repeat(4,1fr);gap:.4rem;margin:0;padding:0;font-size:.8125rem;list-style:none;display:grid}.ksh__steps li{counter-increment:s;border-top:2px solid var(--color-base-300);padding-top:.3rem;transition:all .2s}.ksh__steps li:before{content:counter(s) " ";font:600 .75rem var(--font-mono)}.ksh__steps li[data-st=on]{color:var(--color-base-content);border-color:var(--color-primary)}.ksh__steps li[data-st=done]{border-color:var(--color-success)}.ksh__steps li[data-st=done]:before{content:"✓ ";color:var(--color-success)}.ksh__steps li[data-st=x]{border-color:var(--color-error);color:var(--color-error)}.ksh__steps li[data-st=x]:before{content:"✗ "}.ksh .ksh__log{border-radius:var(--radius-field);background:var(--color-base-200);height:calc(7.25em + 1rem + 2px);font:.75rem/1.45 var(--font-mono);white-space:pre;border:0;margin:.6rem 0 0;padding:.5rem .7rem;overflow:auto}.ksh__log .g{color:var(--color-success);font-weight:600}.ksh__log .r{color:var(--color-error);font-weight:600}.ksh__log .m{color:var(--mu)}.ksh figcaption{margin-top:.5rem}@media (width<=30rem){.ksh{padding-inline:.7rem}.ksh__box{flex-basis:6.2rem}.ksh__card{font-size:.625rem}.ksh__wire{margin-inline:-.75rem}.ksh .ksh__steps{grid-template-columns:1fr 1fr}}@media (prefers-reduced-motion:reduce){.ksh *,.ksh :before,.ksh :after{transition:none!important;animation:none!important}}.ksh__pkt,.ksh__log>span{unicode-bidi:plaintext}
