/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:"Geist Mono", ui-monospace, monospace;--default-font-family:var(--font-sans);--default-mono-font-family:"Geist Mono", ui-monospace, monospace;--font-display:"Unbounded", "Unbounded fallback", system-ui, sans-serif;--font-text:"Geist", "Geist fallback", system-ui, sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{background:var(--bg);color:var(--ink);-webkit-text-size-adjust:100%;scroll-padding-top:24px}body{color:var(--ink);font-family:var(--font-text);text-rendering:optimizelegibility;background:0 0;margin:0;font-size:1.0625rem;line-height:1.6}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;font-weight:600;line-height:1.15}h3{font-size:1.2rem}p{text-wrap:pretty}a{color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}::selection{background:var(--pink);color:#fff}}@layer components{#scene{z-index:-1;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.scene-pause{z-index:5;min-height:44px;font:600 .82rem/1 var(--font-mono);color:var(--ink-2);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:999px;padding:.4em .95em;position:fixed;bottom:14px;right:14px}.scene-pause:hover{color:var(--ink);border-color:var(--violet)}@media (width<=719px){.scene-pause{min-width:44px;padding-inline:.8em;bottom:10px;right:10px}.scene-pause__more{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media print{#scene,.scene-pause{display:none}}.shell{max-width:1200px;margin-inline:auto;padding-inline:16px}.display{font-family:var(--font-display);letter-spacing:-.02em;font-weight:800}.section-title{font-family:var(--font-display);letter-spacing:-.015em;margin:0 0 .6em;font-size:clamp(1.7rem,3.2vw,2.4rem);font-weight:600;line-height:1.12}.page-title{font-family:var(--font-display);letter-spacing:-.025em;margin:0;font-size:clamp(2.2rem,5.4vw,3.8rem);font-weight:800;line-height:1.04}.lede{max-width:36ch;font-size:1.32rem;line-height:1.5}.meta{color:var(--ink-2);font-size:.86rem}.label{font:400 .78rem/1.3 var(--font-mono);letter-spacing:.02em;color:var(--ink-2)}.prose{max-width:68ch}.prose>*+*{margin-top:1em}.mono,.prose code{font-family:var(--font-mono);font-size:.9em}.flow-link{color:inherit;-webkit-text-decoration:underline 1.5px var(--cyan);-webkit-text-decoration:underline 1.5px var(--cyan);text-decoration:underline 1.5px var(--cyan);text-underline-offset:4px}.flow-link:hover{-webkit-text-decoration-color:var(--pink);-webkit-text-decoration-color:var(--pink);text-decoration-color:var(--pink);text-decoration-thickness:2.5px}.skip-link{z-index:10;position:absolute;top:-200px;left:16px}.skip-link:focus{top:16px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;position:relative}.panel__strip{border-top:1px solid var(--line);padding:14px 18px}.panel__scroll{overscroll-behavior-x:contain;scrollbar-width:thin;border-radius:14px 14px 0 0;overflow-x:auto}.panel__scroll>svg{width:100%;min-width:760px;height:auto;display:block}.plate{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:1rem 1.25rem}.plate--permit{font:600 .9rem/1.3 var(--font-mono);align-items:center;gap:.6em;padding:.35rem .85rem;display:inline-flex}.gauge{white-space:nowrap;--level:0%;--tone:transparent;align-items:center;gap:.5em;display:inline-flex}.gauge:before{content:"";border:1.5px solid var(--ink-2);background:linear-gradient(to top, var(--tone) var(--level), transparent var(--level));border-radius:3px;flex:none;width:10px;height:16px}.gauge[data-level=full]{--level:100%}.gauge[data-level=half]{--level:50%}.gauge[data-tone=mint]{--tone:var(--mint)}.gauge[data-tone=amber]{--tone:var(--amber)}.gauge[data-tone=red]{--tone:var(--red)}.gauge[data-tone=red]:before{border-color:var(--red)}.gauge[data-pulse]:before{animation:1s step-end 3 gauge-pulse}@keyframes gauge-pulse{50%{background:0 0}}.wbtn{--fill:0%;min-height:44px;font:600 .98rem/1.2 var(--font-text);color:var(--ink);border:1.5px solid var(--line);background:linear-gradient(var(--violet), var(--violet)) bottom / 100% var(--fill) no-repeat, var(--surface);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:.55em;padding:.5em 1.2em;text-decoration:none;transition:background-size .24s cubic-bezier(.3,0,.2,1),color .12s 90ms,border-color .12s;display:inline-flex}.wbtn:hover{border-color:var(--violet)}.wbtn:active,.wbtn--primary{--fill:100%;color:var(--on-violet);border-color:var(--violet)}.wbtn--primary:hover{border-color:var(--ink)}.wbtn[data-lit]:before{content:"";border-left:2.5px solid var(--mint);border-bottom:2.5px solid var(--mint);width:9px;height:5px;translate:0 -2px;rotate:-45deg}.wbtn:disabled{cursor:not-allowed;opacity:.55}.wbtn--small{min-height:36px;padding:.35em .85em;font-size:.9rem}@media (pointer:coarse){.wbtn--small{min-height:44px}}.theme-switch{--i:0;border:1px solid var(--line);background:var(--surface);border-radius:999px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:3px;display:inline-grid;position:relative}.theme-switch:has(input[value=light]:checked){--i:1}.theme-switch:has(input[value=dark]:checked){--i:2}.theme-switch:before{content:"";background:var(--violet);width:calc(33.3333% - 2px);translate:calc(var(--i) * 100%) 0;border-radius:999px;transition:translate .22s cubic-bezier(.3,0,.2,1);position:absolute;top:3px;bottom:3px;left:3px}.theme-switch__position{z-index:1;min-width:58px;min-height:38px;font:600 .82rem/1 var(--font-text);color:var(--ink-2);cursor:pointer;border-radius:999px;place-items:center;padding-inline:10px;display:grid;position:relative}.theme-switch__position input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.theme-switch__position:has(input:checked){color:var(--on-violet)}.theme-switch__position:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}@media (pointer:coarse){.theme-switch__position{min-height:44px}}html.theme-turning,html.theme-turning *{transition:background-color .24s,color .24s,border-color .24s,fill .24s,stroke .24s!important}.sluice{border-top:1px solid var(--line)}.sluice:last-of-type{border-bottom:1px solid var(--line)}.sluice summary{cursor:pointer;align-items:center;gap:.75em;min-height:48px;padding-block:10px;font-weight:600;list-style:none;display:flex}.sluice summary::-webkit-details-marker{display:none}.sluice__icon{flex:none;width:28px;height:20px;overflow:visible}.sluice__post{stroke:var(--ink-2);stroke-width:2px}.sluice__gate{fill:var(--violet);transition:translate .2s cubic-bezier(.3,0,.2,1)}.sluice__flow{stroke:var(--cyan);stroke-width:2px;stroke-linecap:round;opacity:0;transition:opacity .2s 80ms}.sluice[open] .sluice__gate{translate:0 -7px}.sluice[open] .sluice__flow{opacity:1}.sluice__body{padding:0 0 1.25rem 2.6rem}@supports selector(::details-content){.sluice::details-content{block-size:0;transition:block-size .26s, content-visibility .26s allow-discrete;overflow:clip}.sluice[open]::details-content{block-size:auto}}.level{white-space:nowrap;font-variant-numeric:tabular-nums;align-items:baseline;gap:.3em;font-weight:600;display:inline-flex}.level__mark{border:1.5px solid var(--ink-2);border-radius:2px;width:8px;height:13px;display:inline-block;position:relative;overflow:hidden}.level__mark:after{content:"";height:calc(var(--p,1) * 100%);background:var(--cyan);position:absolute;inset:auto 0 0}.channel-select{display:block;position:relative}.channel-select select{appearance:none;width:100%;min-height:48px;font:600 1rem/1.3 var(--font-text);color:var(--ink);background:var(--surface);border:1.5px solid var(--line);cursor:pointer;border-radius:10px;padding:.55em 3.4em .55em .9em}.channel-select select:hover{border-color:var(--violet)}.channel-select:after{content:"";background:var(--violet);pointer-events:none;border-radius:7px;width:34px;position:absolute;top:6px;bottom:6px;right:6px}.channel-select:before{content:"";z-index:1;border-right:2px solid var(--on-violet);border-bottom:2px solid var(--on-violet);pointer-events:none;width:7px;height:7px;position:absolute;top:50%;right:19px;translate:0 -70%;rotate:45deg}@supports (appearance:base-select){.channel-select select,.channel-select select::picker(select){appearance:base-select}.channel-select select::picker-icon{display:none}.channel-select select::picker(select){background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-top:6px;padding:4px 0}.channel-select option{min-height:44px;font:600 .98rem/1.3 var(--font-text);align-items:center;gap:.7em;padding:.6em .9em;display:flex}.channel-select option::checkmark{display:none}.channel-select option:before{content:"";border:1.5px solid var(--ink-2);border-radius:3px;flex:none;width:10px;height:16px}.channel-select option:checked:before{background:var(--violet);border-color:var(--violet)}.channel-select option:hover,.channel-select option:focus-visible{background:var(--surface-2);outline:none}}.gates svg{touch-action:pan-x pan-y;-webkit-user-select:none;user-select:none}.gates__trunk,.gates__line,.gates__glow{fill:none;stroke-linecap:round;stroke-linejoin:round}.gates__trunk{stroke:var(--cyan);stroke-width:4px}.gates__source{fill:var(--surface);stroke:var(--cyan);stroke-width:3px}.gates__tag{font:400 12px var(--font-mono);fill:var(--ink-2)}.gates__line{stroke:var(--line);stroke-width:4px;transition:stroke .16s}.gates__glow{stroke:#0000;stroke-width:14px}.gates__reach.is-flowing .gates__line,.gates__reach.is-flowing .gates__glow{stroke:var(--mint)}@supports (color:color-mix(in lab, red, red)){.gates__reach.is-flowing .gates__glow{stroke:color-mix(in srgb, var(--mint) 18%, transparent)}}.gates__reach.is-occupied .gates__line,.gates__reach.is-occupied .gates__glow{stroke:var(--pink)}@supports (color:color-mix(in lab, red, red)){.gates__reach.is-occupied .gates__glow{stroke:color-mix(in srgb, var(--pink) 20%, transparent)}}.gates__packet circle{fill:var(--ink)}.gates__packet-trail{fill:none;stroke:var(--mint);stroke-width:4px;stroke-linecap:round}.gates__you{fill:var(--pink);stroke:var(--surface);stroke-width:2px}.gates__resource rect{fill:var(--surface);stroke:var(--line);stroke-width:2px;transition:fill .2s,stroke .2s}.gates__resource text{font:600 12px var(--font-mono);fill:var(--ink-2)}.gates__resource[data-lit] rect{fill:var(--mint)}@supports (color:color-mix(in lab, red, red)){.gates__resource[data-lit] rect{fill:color-mix(in srgb, var(--mint) 22%, var(--surface))}}.gates__resource[data-lit] rect{stroke:var(--mint)}.gates__resource[data-lit] text{fill:var(--ink)}.gates__gate{cursor:pointer}.gates__hit{fill:#0000}.gates__slot{fill:var(--bg);stroke:var(--line);stroke-width:2px}.gates__door{fill:var(--ink-2);transition:fill .16s}.gates__gate:hover .gates__door{fill:var(--violet)}.gates__gate.is-open .gates__door{fill:var(--mint)}.gates__gate.is-refused .gates__slot{stroke:var(--red);stroke-width:4px}.gates__gate.is-refused .gates__door{fill:var(--red)}.gates__name{font:600 14px var(--font-mono);fill:var(--ink)}.gates__controls{gap:10px;display:grid}.gates__status-row{flex-wrap:wrap;align-items:center;gap:10px 20px;display:flex}.gates__message{max-width:68ch;min-height:1.6em;margin:0;font-weight:600}.gates__help{max-width:80ch;margin:0}.gates__list{flex-wrap:wrap;gap:10px 22px;margin:4px 0 0;padding:0;list-style:none;display:flex}.gates__list li{align-items:center;gap:12px;font-size:.9rem;display:flex}.gates__list .gauge{min-width:8.5em}@media (width<=719px){.gates__list{gap:8px;display:grid}}.gates__log{border-top:1px solid var(--line);margin-top:6px;padding-top:12px}.gates__log h3{margin:0 0 8px;font-size:1rem}.gates__log ol{gap:6px;margin:0;padding:0;font-size:.9rem;list-style:none;display:grid}.gates__log li{grid-template-columns:7.5em minmax(0,1fr);gap:10px;display:grid}.services__permit{border-top:0;border-bottom:1px solid var(--line)}.services__permit-row{flex-wrap:wrap;align-items:center;gap:10px 20px;margin-bottom:14px;display:flex}.services__bar{max-width:640px;margin-inline:12px;position:relative}.services__cells,.services__segments{grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;display:grid}.services__cell{background:var(--bg);border:1.5px solid var(--line);border-radius:5px;height:22px}.services__cell.is-used{background:var(--mint);border-color:var(--mint)}.services__cell.is-spare{background:0 0;border-style:dashed}.services__segments{font:400 12px var(--font-mono);color:var(--ink-2);margin-top:6px}.services__segments span{border-top:1.5px solid var(--ink-2);text-align:center;padding-top:2px}.services__handle{cursor:ew-resize;touch-action:none;width:44px;height:54px;position:absolute;top:-8px;translate:-50%}.services__handle:before{content:"";background:var(--violet);border-radius:3px;width:6px;position:absolute;top:0;bottom:0;left:50%;translate:-50%}.services__handle:focus-visible{outline-offset:0}.services__hint{margin:10px 0 0}.services svg text{font-family:var(--font-text);fill:var(--ink)}.services__trunk,.services__line{fill:none;stroke:var(--line);stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.services__trunk{stroke:var(--cyan)}.services__service{cursor:pointer;outline:none}.services__hit{fill:#0000}.services__focus{fill:none;stroke:#0000;stroke-width:3px}.services__service:focus-visible .services__focus{stroke:var(--focus)}.services__service.is-selected .services__line{stroke:var(--cyan)}.services__slot{fill:var(--bg);stroke:var(--line);stroke-width:1.5px}.services__slot.is-used{fill:var(--mint);stroke:var(--mint)}.services__node{fill:var(--ink-2)}.services__router{fill:var(--surface);stroke:var(--cyan);stroke-width:3px}.services__arm{stroke:var(--pink);stroke-width:5px;stroke-linecap:round;transition:rotate .16s}.services__name{font-size:15px;font-weight:600}.services__word{font-size:13px;fill:var(--ink-2)!important}.services__service.is-refused .services__name{fill:var(--red)}.services__controls{gap:10px;display:grid}.services__controls p{margin:0}.services__buttons{flex-wrap:wrap;gap:10px;display:flex}.services__message{min-height:1.6em;font-weight:600}.convoy__road{touch-action:pan-y;cursor:crosshair;border-radius:14px 14px 0 0;height:320px;position:relative;overflow:hidden}.convoy__road canvas{width:100%;height:100%;display:block}.convoy__road:focus-visible{outline-offset:-3px}.convoy__controls{flex-wrap:wrap;align-items:center;gap:12px 24px;display:flex}.convoy__gauge{align-items:center;gap:10px;display:inline-flex}.convoy__gauge svg{width:56px;height:40px}.convoy__dial{fill:none;stroke:var(--line);stroke-width:4px}.convoy__needle{stroke:var(--violet);stroke-width:3px;stroke-linecap:round}.convoy__hub{fill:var(--ink)}.convoy__kmh{font-variant-numeric:tabular-nums;min-width:5.2em;display:inline-block}.convoy__buttons{gap:10px;margin-left:auto;display:flex}.convoy__note{flex-basis:100%;margin:0}@media (width<=719px){.convoy__road{height:260px}.convoy__buttons{margin-left:0}}.contact{grid-template-columns:minmax(0,1fr) 260px;gap:32px 48px;max-width:920px;display:grid}.contact__fields{gap:18px;display:grid}.contact__field{gap:6px;font-size:.95rem;font-weight:600;display:grid}.contact__field input,.contact__field textarea{font:400 1.0625rem/1.5 var(--font-text);color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:10px;min-height:48px;padding:.6em .8em}.contact__field input:hover,.contact__field textarea:hover{border-color:var(--violet)}.contact__field textarea{resize:vertical}.contact__field [aria-invalid=true]{border-color:var(--red)}.contact__trap{position:absolute;left:-9999px}.contact__signal-col{align-content:start;justify-items:start;gap:14px;display:grid}.contact__meter{grid-template-columns:repeat(3,1fr);gap:6px;width:100%;max-width:220px;display:grid}.contact__meter span{background:var(--bg);border:1.5px solid var(--line);border-radius:999px;height:12px;transition:background-color .16s,border-color .16s}.contact__meter[data-step="1"] span:nth-child(-n+1),.contact__meter[data-step="2"] span:nth-child(-n+2){background:var(--amber);border-color:var(--amber)}.contact__meter[data-step="3"] span{background:var(--mint);border-color:var(--mint)}.contact__aspect p{margin:4px 0 0}.contact__send[data-ready]{box-shadow:0 0 0 4px var(--violet)}@supports (color:color-mix(in lab, red, red)){.contact__send[data-ready]{box-shadow:0 0 0 4px color-mix(in srgb, var(--violet) 30%, transparent)}}.contact__status{min-height:1.6em;margin:0;font-weight:600}.contact__status.is-error{color:var(--red)}@media (width<=719px){.contact{grid-template-columns:minmax(0,1fr)}}.chapter{--p:0;grid-template-columns:36px minmax(0,1fr);column-gap:30px;display:grid}.chapter__rail{position:relative}.chapter__rail:before{content:"";background:var(--line);width:2px;position:absolute;top:0;bottom:0;left:50%;translate:-50%}.chapter[data-state=done] .chapter__rail:before{background:var(--cyan)}.chapter[data-state=current] .chapter__rail:before{background:linear-gradient(var(--cyan) calc(var(--p) * 100%), var(--line) calc(var(--p) * 100%))}.chapter__node{border:2px solid var(--line);background:var(--bg);border-radius:50%;width:14px;height:14px;margin:6px auto 0;display:block;position:sticky;top:30px}.chapter[data-state=done] .chapter__node{background:var(--cyan);border-color:var(--cyan)}.chapter[data-state=current] .chapter__node{background:var(--pink);border-color:var(--pink);box-shadow:0 0 0 4px var(--pink)}@supports (color:color-mix(in lab, red, red)){.chapter[data-state=current] .chapter__node{box-shadow:0 0 0 4px color-mix(in srgb, var(--pink) 22%, transparent)}}.chapter__body{min-width:0;padding-block:72px}.chapter--first .chapter__body{padding-top:16px}@media (width<=719px){.chapter{grid-template-columns:3px minmax(0,1fr);column-gap:16px;margin-left:-6px}.chapter__rail:before{width:3px}.chapter__node{display:none}.chapter__body{padding-block:52px}}.name-resolve{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(2.4rem,7.5vw,6rem);font-weight:800;line-height:1}.board{border-collapse:collapse;background:var(--bg);width:100%;font-size:.97rem}@supports (color:color-mix(in lab, red, red)){.board{background:color-mix(in srgb, var(--bg) 86%, transparent)}}.board th{text-align:left;font:400 .78rem/1.3 var(--font-mono);color:var(--ink-2);border-bottom:1.5px solid var(--ink-2);padding:0 12px 8px 0}.board td{border-bottom:1px solid var(--line);vertical-align:top;padding:14px 12px 14px 0}.board tbody tr:hover{box-shadow:inset 3px 0 0 var(--pink)}.board tbody tr:hover td:first-child{padding-left:12px}.board__name{min-width:11em;font-weight:600}.board__when{font:400 .78rem/1.4 var(--font-mono);color:var(--ink-2);margin-top:2px;display:block}.board__stack{color:var(--ink-2)}.board__strip td{padding-top:0}.board__strip .strip{width:0;min-width:100%}.strip{overscroll-behavior-x:contain;grid-auto-columns:minmax(240px,1fr);grid-auto-flow:column;gap:20px;display:grid;overflow-x:auto}.strip img,.clip video{border-radius:14px;width:100%;height:auto;display:block}@media (width<=719px){.board thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.board tr,.board td{display:block}.board tr{border-bottom:1px solid var(--line);padding-block:12px}.board td{border:0;padding:2px 0}.board tbody tr:hover td:first-child{padding-left:0}}.timeline{gap:0;margin:0;padding:0;list-style:none;display:grid}.timeline__item{border-top:1px solid var(--line);grid-template-columns:12.5rem minmax(0,1fr);gap:4px 28px;padding:18px 0;display:grid;position:relative}.timeline__when{font:400 .82rem/1.5 var(--font-mono);color:var(--ink-2)}.timeline__item h3{font:600 1.06rem/1.35 var(--font-text);margin:0}.timeline__org{color:var(--ink-2);margin:2px 0 6px}.timeline__item ul{margin:6px 0 0;padding-left:1.1em}.timeline__item li+li{margin-top:4px}.timeline__item[data-current] h3:after{content:"Now";font:600 .72rem/1.4 var(--font-mono);color:var(--on-violet);background:var(--violet);vertical-align:2px;border-radius:999px;margin-left:10px;padding:2px 8px}@media (width<=719px){.timeline__item{grid-template-columns:minmax(0,1fr)}}.skills{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 28px;margin:0;display:grid}.skills dt{font:400 .78rem/1.4 var(--font-mono);color:var(--ink-2)}.skills dd{margin:4px 0 0;font-weight:600}@media (width<=719px){.skills{grid-template-columns:minmax(0,1fr)}}.article{background:var(--bg);min-width:0;padding:34px 40px 40px}@supports (color:color-mix(in lab, red, red)){.article{background:color-mix(in srgb, var(--bg) 92%, transparent)}}.article{border:1px solid var(--line);border-radius:18px}@media (width<=719px){.article{margin-inline:-4px;padding:22px 18px 26px}}.article>*{max-width:68ch;margin-block:0}.article>*+*{margin-top:1em}.article>.panel,.article>.strip,.article>.clip{max-width:none}.article>h2{margin-top:2.2em;font-size:1.6rem}.article>h3{margin-top:1.8em}.article>ul{padding-left:1.2em;list-style:outside}.article>ol{padding-left:1.5em;list-style:decimal}.article>ol li::marker{color:var(--cyan);font-family:var(--font-mono)}.article li+li{margin-top:.4em}.article code{font-family:var(--font-mono);font-size:.9em}.article>.sluice+.sluice{margin-top:0}.article__heading{flex-wrap:wrap;align-items:baseline;gap:8px 22px;margin-bottom:.4em;display:flex}.article .lede{margin-top:.6em}.case-panel{margin-block:2em}.article>.case-panel+*{margin-top:0}.article__next{margin-top:3em}.clip figcaption{margin-top:8px}.gates,.services{container-type:inline-size}.gates .gates__svg--tall,.services .services__list{display:none}@container (width<=560px){.gates .gates__svg--wide,.services .services__drawing{display:none}.gates .gates__svg--tall{width:100%;min-width:0;max-width:400px;margin-inline:auto;padding:8px 4px 4px;display:block}.services .services__list{display:grid}}.services__list{gap:10px;margin:0;padding:14px 18px 4px;list-style:none}.services__row{border:1.5px solid var(--line);background:var(--bg);cursor:pointer;border-radius:12px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 12px;min-height:44px;padding:12px 14px;display:grid}.services__row.is-selected{border-color:var(--cyan)}.services__row.is-refused .services__row-name{color:var(--red)}.services__row-name{font-weight:600}.services__row-slots{flex-wrap:wrap;grid-column:1/-1;gap:5px;display:flex}.services__row-slots .services__cell{width:24px;height:18px}.services__row .gauge{grid-area:1/2}@media (width<=719px),(pointer:coarse){.scene-pause{border-radius:50%;place-items:center;width:44px;height:44px;min-height:44px;padding:0;font-size:0;display:grid}.scene-pause:before{content:"";background:linear-gradient(90deg, var(--ink-2) 0 4px, transparent 4px 8px, var(--ink-2) 8px);width:12px;height:14px}.scene-pause[aria-pressed=true]:before{border-left:12px solid var(--violet);background:0 0;border-top:8px solid #0000;border-bottom:8px solid #0000;width:0;height:0;translate:2px}}.contribs{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:none;margin-block:28px;display:grid}.contrib{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px 24px}.contrib[data-role=built]{border-color:var(--violet)}@supports (color:color-mix(in lab, red, red)){.contrib[data-role=built]{border-color:color-mix(in srgb, var(--violet) 55%, var(--line))}}.contrib__role{font:600 .74rem/1.5 var(--font-mono);border:1.5px solid var(--cyan);color:var(--ink);border-radius:999px;margin:0 0 12px;padding:3px 10px;display:inline-block}.contrib[data-role=built] .contrib__role{background:var(--violet);border-color:var(--violet);color:var(--on-violet)}.contrib__title{margin:0 0 12px;font-size:1.3rem}.contrib__facts{gap:10px;margin:0;display:grid}.contrib__facts dt{font:400 .76rem/1.4 var(--font-mono);color:var(--ink-2)}.contrib__facts dd{margin:2px 0 0}@media (width<=719px){.contribs{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.wbtn,.theme-switch:before,.sluice__gate,.sluice__flow{transition:none}.gauge[data-pulse]:before{animation:none}}}@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.relative{position:relative}.static{position:static}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.table{display:table}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}:root,[data-theme=dark]{--bg:#0b0b24;--surface:#14153a;--surface-2:#1c1e4c;--line:#2a2b5a;--ink:#ecebff;--ink-2:#a6a4cc;--violet:#9a70ff;--on-violet:#0b0b24;--cyan:#22d3ee;--mint:#34e3a4;--amber:#ffb547;--red:#ff5a6a;--pink:#dc38ab;--focus:#9a70ff;color-scheme:dark}[data-theme=light]{--bg:#f4f3ff;--surface:#fff;--surface-2:#ecebfb;--line:#dad8f2;--ink:#15142e;--ink-2:#4e4c6e;--violet:#6d3ff0;--on-violet:#fff;--cyan:#0a7c93;--mint:#1c9c82;--amber:#a86400;--red:#c42340;--pink:#f53dbe;--focus:#6d3ff0;color-scheme:light}@media (prefers-color-scheme:light){:root[data-theme=auto]{--bg:#f4f3ff;--surface:#fff;--surface-2:#ecebfb;--line:#dad8f2;--ink:#15142e;--ink-2:#4e4c6e;--violet:#6d3ff0;--on-violet:#fff;--cyan:#0a7c93;--mint:#1c9c82;--amber:#a86400;--red:#c42340;--pink:#f53dbe;--focus:#6d3ff0;color-scheme:light}}@font-face{font-family:Unbounded;src:url(/fonts/unbounded-latin-600-normal.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Unbounded;src:url(/fonts/unbounded-latin-800-normal.woff2)format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-latin-600-normal.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Unbounded fallback;src:local(Arial Black),local(Arial);size-adjust:112%;ascent-override:88%;descent-override:22%}@font-face{font-family:Geist fallback;src:local(Arial),local(Helvetica),local(Liberation Sans);size-adjust:100%;ascent-override:92%;descent-override:22%}:root{interpolate-size:allow-keywords}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.site-header__row[data-astro-cid-hkbrpulz]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 28px;padding-block:20px;display:flex}.site-header__row--home[data-astro-cid-hkbrpulz]{align-items:flex-start;padding-top:44px}.site-header__name[data-astro-cid-hkbrpulz]{font:800 1rem/1.2 var(--font-display);letter-spacing:-.01em;text-decoration:none}.site-header__nav[data-astro-cid-hkbrpulz]{flex-wrap:wrap;gap:4px 22px;margin-right:auto;font-size:.95rem;display:flex}.site-header__nav[data-astro-cid-hkbrpulz] [data-astro-cid-hkbrpulz][aria-current=page]{text-decoration-color:var(--pink);font-weight:600}main[data-astro-cid-hkbrpulz]:focus{outline:none}.site-footer[data-astro-cid-hkbrpulz]{border-top:1px solid var(--line);color:var(--ink-2);margin-top:24px;padding-block:40px 72px;font-size:.9rem}.site-footer[data-astro-cid-hkbrpulz] p[data-astro-cid-hkbrpulz]{margin:0 0 12px}.site-footer[data-astro-cid-hkbrpulz] nav[data-astro-cid-hkbrpulz]{flex-wrap:wrap;gap:6px 22px;display:flex}@media (width<=719px),(pointer:coarse){.site-header__nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz],.site-footer[data-astro-cid-hkbrpulz] nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{align-items:center;min-height:44px;display:inline-flex}.site-header__nav[data-astro-cid-hkbrpulz],.site-footer[data-astro-cid-hkbrpulz] nav[data-astro-cid-hkbrpulz]{gap:0 20px}}@media (width<=719px){.site-header__row[data-astro-cid-hkbrpulz]{gap:4px 12px;padding-block:12px 6px}.site-header__name[data-astro-cid-hkbrpulz]{order:1;align-items:center;min-height:44px;display:inline-flex}.site-header__row[data-astro-cid-hkbrpulz] .theme-switch{order:2;margin-left:auto}.site-header__row[data-astro-cid-hkbrpulz] .theme-switch__position{min-width:44px;padding-inline:7px;font-size:.76rem}.site-header__nav[data-astro-cid-hkbrpulz]{flex-basis:100%;order:3;margin-right:0}.site-header__row--home[data-astro-cid-hkbrpulz]{padding-top:24px}}@media print{.site-header[data-astro-cid-hkbrpulz],.site-footer[data-astro-cid-hkbrpulz],.skip-link[data-astro-cid-hkbrpulz]{display:none}}
