@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-500-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2)format("woff2")}:root{--black:#000;--white:#fff;--dim:#a3a3a3;--rule:#2a2a2a;--amber:#ffb000;--sans:"IBM Plex Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;margin:0}html{background:var(--black);color:var(--white)}body{font:400 16px/1.55 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;-webkit-text-decoration-color:var(--amber);text-decoration-color:var(--amber);text-underline-offset:3px}a:hover{color:var(--amber)}:focus-visible{outline:2px solid var(--amber);outline-offset:3px}.page{width:min(1080px,100% - 40px);margin-inline:auto;padding-block:56px 40px}.seg{font:400 13px/1.5 var(--mono);color:var(--dim);white-space:pre;scrollbar-width:none;overflow-x:auto}.seg b{color:var(--amber);font-weight:400}header{grid-template-columns:1fr auto;align-items:end;gap:24px;margin-block:40px 28px;display:grid}h1{font:600 clamp(44px, 7vw, 80px)/1 var(--sans);letter-spacing:-.025em}.dim{color:var(--dim)}.site-nav{gap:20px;font-weight:500;display:flex}.site-nav a[aria-current=page]{color:var(--amber);text-decoration:none}.site-top{justify-content:space-between;align-items:baseline;gap:24px;margin-top:40px;display:flex}.site-top .name{font-size:18px;font-weight:600;text-decoration:none}.page-title{margin-top:40px;margin-bottom:28px}.lede{max-width:62ch;font-size:20px;line-height:1.5}.lede+.lede{margin-top:12px}section{border-top:1px solid var(--rule);grid-template-columns:200px 1fr;gap:24px;padding-block:28px;display:grid}section:first-of-type{margin-top:48px}h2{font:500 16px/1.55 var(--sans)}.rows{gap:22px;display:grid}.row{grid-template-columns:220px 1fr;gap:24px;display:grid}.row h3{font:600 16px/1.55 var(--sans)}.row .meta{color:var(--dim)}.row p{max-width:64ch}.row ul{max-width:64ch;margin-top:6px;padding-left:18px}.row li{margin-top:4px}.row li::marker{color:var(--amber)}.kv{grid-template-columns:220px 1fr;gap:6px 24px;display:grid}.kv dt{color:var(--dim)}.project h2 .meta{color:var(--amber);font-weight:400}.project .updated{color:var(--dim);font-weight:400}.project .summary{font-size:18px}.project .details>p{margin-top:14px;font-weight:500}.contact-form{gap:18px;max-width:640px;display:grid}.form-status{color:var(--amber)}.field{gap:6px;display:grid}.field label{font-weight:500}input,textarea{font:inherit;color:var(--white);background:var(--black);border:1px solid #3a3a3a;border-radius:0;width:100%;padding:10px 12px}textarea{resize:vertical;min-height:180px;line-height:1.5}input:focus-visible,textarea:focus-visible{outline:2px solid var(--amber);outline-offset:0;border-color:#0000}.button{font:600 16px/1 var(--sans);background:var(--amber);color:#000;cursor:pointer;border:0;border-radius:0;padding:12px 22px}.button:hover{background:#fff}.send{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.hp{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.sent{font-size:22px;line-height:1.4}.sent-sub{margin-top:10px}footer{margin-top:40px}@media (width<=760px){.page{padding-top:28px}header{grid-template-columns:1fr}.site-top{flex-direction:column;gap:10px;margin-top:24px}section,.row{grid-template-columns:1fr;gap:6px}.rows{gap:20px}.kv{grid-template-columns:1fr;gap:0}.kv dd{margin-bottom:8px}}html:has(.decode){overflow-x:clip}.decode{padding-top:0}.decode-bar{z-index:1;background:var(--black);border-bottom:1px solid var(--rule);--seg:var(--seg-end);justify-content:space-between;align-items:center;gap:20px;padding-block:14px 10px;display:flex;position:sticky;top:0}.decode-bar .site-top{flex:1;align-items:center;margin-top:0}.decode-bar label{font:400 13px/1.5 var(--mono);color:var(--dim);cursor:pointer;white-space:nowrap;align-items:center;padding-block:4px;display:inline-flex}.decode-bar input{margin-block:0;width:auto;accent-color:var(--amber);margin-right:6px}@property --seg{syntax:"<integer>";inherits:true;initial-value:0}.count{font:400 13px/1.5 var(--mono);color:var(--dim);white-space:nowrap;font-variant-numeric:tabular-nums}.count:after{counter-reset:seg var(--seg);content:"SE*" counter(seg) "*0001~"}.decode .seg{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}.raw-head{padding-block:22px 40px;display:none}.loop{border-bottom:1px solid var(--rule);padding-block:30px;scroll-margin-top:50px}.loop .raw{color:var(--amber)}.translated{margin-top:18px}.decode section{border-top:0;margin-top:0;padding-block:0}.decode footer{margin-top:30px;padding-bottom:60px}:is(.decode:has(#raw-only:checked) .translated,.decode:has(#raw-only:checked) .stream,.decode:has(#raw-only:checked) .map){display:none}.decode:has(#raw-only:checked) .raw-head{display:block}.decode:has(#raw-only:checked) .loop .raw{color:var(--white);animation:none}.decode .site-nav a,.ack a{text-decoration-thickness:1px;transition:color .18s,text-decoration-thickness .18s,text-underline-offset .18s}.decode .site-nav a:hover,.ack a:hover{text-underline-offset:5px;text-decoration-thickness:2px}.ack{margin-top:18px;font-size:18px}.ack-seg{font:400 13px/1.7 var(--mono);color:var(--amber);margin-bottom:8px;display:block}.stream{border-bottom:1px solid var(--rule);width:100vw;margin-left:calc(50% - 50vw);padding-block:10px;position:relative;overflow:clip}.stream p{font:400 13px/1.5 var(--mono);color:#7a7a7a;white-space:pre;padding-left:calc(50vw - 540px)}.map{border-bottom:1px solid var(--rule);padding-block:12px 26px;position:relative}.dest{opacity:0;width:1px;height:1px;padding:0;position:absolute}.topline{color:var(--dim);justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:8px;font-size:14px;display:flex}.deliver{font:400 13px/1.5 var(--mono);white-space:nowrap}.deliver label,.deliver a{padding-block:4px}.deliver label{color:var(--white);cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:4px;margin-left:14px;transition:color .18s}.deliver label:hover{color:var(--amber)}.deliver a{color:var(--dim);margin-left:22px}#to-you:checked~.topline label[for=to-you],#to-db:checked~.topline label[for=to-db],#to-xml:checked~.topline label[for=to-xml]{color:var(--amber);-webkit-text-decoration-color:var(--amber);text-decoration-color:var(--amber)}#to-you:focus-visible~.topline label[for=to-you],#to-db:focus-visible~.topline label[for=to-db],#to-xml:focus-visible~.topline label[for=to-xml]{outline:2px solid var(--amber);outline-offset:3px}.stage{width:1080px;min-height:var(--stage-h);--ease:cubic-bezier(.65, 0, .35, 1);padding-left:512px;position:relative}.source{width:330px;position:absolute;top:34px;left:0}.r{height:22px;font:400 13px/22px var(--mono);color:var(--dim);white-space:nowrap;grid-template-columns:46px 1fr 8px;align-items:center;display:grid}.r b{color:var(--amber);font-weight:400}.r span{text-overflow:ellipsis;overflow:hidden}.r.mapped span{color:var(--white)}.r:not(.mapped) span{font-family:var(--sans)}.r i{background:var(--amber);justify-self:end;width:5px;height:5px}.loom{width:1080px;height:var(--stage-h);pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.w{fill:none;stroke:#8f6c14;stroke-width:1.25px;stroke-dasharray:1;stroke-dashoffset:0}.fn{font:400 13px var(--mono);fill:var(--dim);text-anchor:middle;paint-order:stroke;stroke:#000;stroke-width:5px}.port{fill:var(--amber)}.tokens{pointer-events:none;position:absolute;inset:0}.tok{offset-rotate:0deg;offset-anchor:center;background:var(--amber);color:#000;font:400 12px/18px var(--mono);white-space:nowrap;justify-items:center;padding:0 5px;display:none;position:absolute;top:0;left:0}.tok em,.tok u{grid-area:1/1;font-style:normal;text-decoration:none}.tok u{opacity:0}.v-db,.v-xml{padding-top:42px;display:none}#to-db:checked~.stage .v-you,#to-xml:checked~.stage .v-you{display:none}#to-db:checked~.stage .v-db,#to-xml:checked~.stage .v-xml{display:block}.v-you{flex-direction:column;padding-top:30px;display:flex}.v h1{margin-bottom:10px;font-size:76px;line-height:92px}.para{min-height:var(--h);margin-bottom:9px}.v .lede{max-width:none;font-size:18px;line-height:27px}.v pre{font:400 13px/20px var(--mono);color:var(--white);white-space:pre-wrap;overflow-wrap:anywhere}.v pre+pre{margin-top:28px}.v pre b{color:var(--amber);font-weight:400}.kv-mini{grid-template-columns:74px 1fr;margin-top:12px;font-size:15px;line-height:22px;display:grid}.kv-mini dt{color:var(--dim)}.contents{margin-top:27px;padding:0;font-size:15px;line-height:22px;list-style:none}.contents a{padding-block:4px}.ackline{width:330px;font:400 13px/1.5 var(--mono);color:var(--dim);white-space:nowrap;position:absolute;left:0}.ackline b{color:var(--amber);font-weight:400}.ackline span{color:var(--white)}.phone-seg,.cross{display:none}@property --ink{syntax:"<percentage>";inherits:false;initial-value:100%}@property --shift{syntax:"<number>";inherits:true;initial-value:0}@media (prefers-reduced-motion:no-preference){html:has(.decode){scroll-behavior:smooth}.stream p{animation:1.15s cubic-bezier(.16,1,.3,1) both arrive}@keyframes arrive{0%{translate:100vw}to{translate:0}}.r{animation:.62s cubic-bezier(.16,1,.3,1) both drop;animation-delay:calc(.76s + var(--i) * 26ms)}@keyframes drop{0%{opacity:0;translate:0 calc(-60px - var(--i) * 15px)}to{opacity:1;translate:0}}.w{animation:draw .72s var(--ease) both;animation-delay:calc((var(--t) + var(--shift,0)) * 1s)}.port{animation:.26s both port;animation-delay:calc((var(--t) + var(--shift,0)) * 1s)}.fn{animation:.62s both fn;animation-delay:calc((var(--t) + var(--shift,0)) * 1s)}.tok{animation:ride .76s var(--ease) both;animation-delay:calc((var(--t) + var(--shift,0)) * 1s);display:grid}.tok em{animation:.76s linear both before;animation-delay:inherit}.tok u{animation:.76s linear both after;animation-delay:inherit}.t{-webkit-mask-image:linear-gradient(90deg, #000 var(--ink), #00000080 var(--ink));-webkit-mask-image:linear-gradient(90deg, #000 var(--ink), #00000080 var(--ink));mask-image:linear-gradient(90deg, #000 var(--ink), #00000080 var(--ink));animation:.62s cubic-bezier(.22,1,.36,1) both ink;animation-delay:calc((var(--t) + var(--shift,0)) * 1s)}.t:focus-within{-webkit-mask-image:none;mask-image:none}.ackline{animation:.7s both ack;animation-delay:calc((var(--t) + var(--shift,0)) * 1s)}.map{transition:--shift 0s 1000000s}:is(.map:has(#to-db:checked),.map:has(#to-xml:checked)){--shift:-1.3;transition-delay:0s}.map:has(#to-db:checked) .w{animation-name:draw-b}.map:has(#to-xml:checked) .w{animation-name:draw-c}.map:has(#to-db:checked) .tok{animation-name:ride-b}.map:has(#to-xml:checked) .tok{animation-name:ride-c}.map:has(#to-db:checked) .tok em{animation-name:before-b}.map:has(#to-xml:checked) .tok em{animation-name:before-c}.map:has(#to-db:checked) .tok u{animation-name:after-b}.map:has(#to-xml:checked) .tok u{animation-name:after-c}.map:has(#to-db:checked) .ackline{animation-name:ack-b}.map:has(#to-xml:checked) .ackline{animation-name:ack-c}@keyframes draw{0%{stroke-dashoffset:1px;stroke:var(--amber)}60%{stroke:var(--amber)}to{stroke-dashoffset:0;stroke:#8f6c14}}@keyframes draw-b{0%{stroke-dashoffset:1px;stroke:var(--amber)}60%{stroke:var(--amber)}to{stroke-dashoffset:0;stroke:#8f6c14}}@keyframes draw-c{0%{stroke-dashoffset:1px;stroke:var(--amber)}60%{stroke:var(--amber)}to{stroke-dashoffset:0;stroke:#8f6c14}}@keyframes ride{0%{offset-distance:0%;opacity:0}8%{opacity:1}90%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes ride-b{0%{offset-distance:0%;opacity:0}8%{opacity:1}90%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes ride-c{0%{offset-distance:0%;opacity:0}8%{opacity:1}90%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes before{0%,47%{opacity:1}53%,to{opacity:0}}@keyframes before-b{0%,47%{opacity:1}53%,to{opacity:0}}@keyframes before-c{0%,47%{opacity:1}53%,to{opacity:0}}@keyframes after{0%,47%{opacity:0}53%,to{opacity:1}}@keyframes after-b{0%,47%{opacity:0}53%,to{opacity:1}}@keyframes after-c{0%,47%{opacity:0}53%,to{opacity:1}}@keyframes ack{0%{opacity:.35;color:var(--amber)}60%{opacity:1;color:var(--amber)}to{opacity:1;color:var(--dim)}}@keyframes ack-b{0%{opacity:.35;color:var(--amber)}60%{opacity:1;color:var(--amber)}to{opacity:1;color:var(--dim)}}@keyframes ack-c{0%{opacity:.35;color:var(--amber)}60%{opacity:1;color:var(--amber)}to{opacity:1;color:var(--dim)}}@keyframes port{0%{opacity:0}to{opacity:1}}@keyframes fn{0%{opacity:0;fill:var(--amber)}30%{opacity:1;fill:var(--amber)}to{opacity:1;fill:var(--dim)}}@keyframes ink{0%{--ink:0%}to{--ink:100%}}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.decode-bar{animation:linear both seg-count;animation-timeline:scroll(root)}@keyframes seg-count{0%{--seg:0}to{--seg:var(--seg-end)}}.loop .raw{animation:linear both sent;animation-timeline:view();animation-range:entry 160px entry 420px}@keyframes sent{0%{color:var(--amber)}to{color:#858585}}.translated h2,.row,.project,.kv dt,.kv dd,.translated section>div>p{animation:linear both row-in;animation-timeline:view();animation-range:entry 0 entry 170px}@keyframes row-in{0%{opacity:.4;translate:0 14px}to{opacity:1;translate:0}}.row li{animation:linear both li-in;animation-timeline:view();animation-range:entry 0 entry 90px}@keyframes li-in{0%{opacity:.4;translate:8px}to{opacity:1;translate:0}}}}@media (width<=1120px){.stage{zoom:.9}.stream p{padding-left:20px}}@media (width<=1020px){.topline{display:block}.deliver{flex-wrap:wrap;gap:4px 0;margin-top:8px;display:flex}.deliver label:first-of-type{margin-left:10px}.stage{zoom:1;width:auto;min-height:0;padding-left:0}.source,.loom,.tokens,.ackline{display:none}.phone-seg{font:400 14px/1.5 var(--mono);color:var(--dim);margin-top:16px;display:block}.phone-seg b,.phone-seg span{color:var(--amber);font-weight:400}.cross{width:350px;max-width:100%;height:96px;display:block}.cross .w{--shift:-.5}.v-db,.v-xml{padding-top:12px}.v-you{padding-top:0}.v-you .t{min-height:0;margin-block:0 14px}.v h1{font-size:clamp(44px,13vw,76px);line-height:1.05}.v .lede{max-width:62ch}.contents a{display:inline-block}}@media (width<=760px){.decode-bar{flex-wrap:nowrap;gap:12px}.decode-bar .site-top{flex-flow:wrap;gap:4px 16px;margin-top:0}.count{text-align:right;min-width:11ch;font-size:12px}.loop{scroll-margin-top:80px}.deliver a{flex-basis:100%;margin-left:0}}@media (width<=360px){.decode-bar{flex-wrap:wrap;position:static}}
