.gv-home{gap:40px;display:grid}.gv-home>.site-header{margin-bottom:-12px}.gv-sheet{padding:var(--gv-sheet-pad);border:var(--gv-line-thick) solid var(--gv-ink);background:var(--gv-paper);border-radius:0;scroll-margin-top:96px;position:relative}.gv-sheet-head{border-bottom:var(--gv-line-thick) solid var(--gv-ink);flex-wrap:wrap;justify-content:space-between;align-items:end;gap:12px 32px;margin-bottom:24px;padding-bottom:16px;display:flex}.gv-sheet-head h2{max-width:24ch}.gv-lede{max-width:48ch;color:var(--gv-ink-soft);margin:0;font-size:1.08rem;line-height:1.55}.gv-link{color:var(--gv-sage-deep);text-decoration:underline;text-decoration-thickness:var(--gv-line);text-underline-offset:5px;transition:color .2s var(--gv-ease-out);align-items:center;gap:6px;font-weight:700;display:inline-flex}.gv-link:hover{color:var(--gv-ink)}.gv-icon{flex:none;width:.85em;height:.85em}.gv-pos{border:var(--gv-line) solid var(--gv-ink);width:26px;height:26px;font-family:var(--gv-font-mono);border-radius:50%;place-items:center;font-size:.78rem;font-weight:600;line-height:1;display:inline-grid}.gv-sheet-main{border-width:var(--gv-line-thin);padding:22px}.gv-zones{color:var(--gv-ink-soft);font-family:var(--gv-font-mono);font-size:var(--gv-annot-size);pointer-events:none;display:grid;position:absolute}.gv-zones span{place-items:center;display:grid}.gv-zones-x{grid-template-columns:repeat(6,1fr);height:22px;top:0;left:22px;right:22px}.gv-zones-y{grid-template-rows:repeat(4,1fr);width:22px;top:22px;bottom:22px;left:0}.gv-sheet-grid{border:var(--gv-line-thick) solid var(--gv-ink);background-color:var(--gv-paper);background-image:linear-gradient(var(--gv-grid) 1px, transparent 1px), linear-gradient(90deg, var(--gv-grid) 1px, transparent 1px);background-size:var(--gv-grid-step) var(--gv-grid-step);grid-template:"drawing title""drawing block"1fr/minmax(0,1.15fr) minmax(340px,.85fr);display:grid}.gv-sheet-title{border-left:var(--gv-line-thick) solid var(--gv-ink);background:var(--gv-paper);grid-area:title;gap:14px;padding:22px 28px 20px;display:grid}.gv-sheet-title h1{font-size:clamp(2.5rem,4.4vw,4.2rem);line-height:.98}.gv-sheet-drawing{grid-area:drawing;min-width:0;padding:18px 24px}.gv-title-block{border-top:var(--gv-line-thick) solid var(--gv-ink);border-left:var(--gv-line-thick) solid var(--gv-ink);background:var(--gv-paper);grid-area:block;grid-template-rows:1fr auto;display:grid}.gv-drawing-block{gap:12px;display:grid}.gv-drawing{margin:0}.gv-drawing svg{width:100%;height:auto;max-height:300px;display:block;overflow:visible}.gv-edge{fill:none;stroke:var(--gv-ink);stroke-width:2px;stroke-linejoin:miter;stroke-linecap:square}.gv-edge-manual{stroke-width:1.5px;stroke-dasharray:7 5;stroke-linecap:butt}.gv-edge-accent{stroke:var(--gv-sage);stroke-width:3.5px}.gv-node rect{fill:var(--gv-paper);stroke:var(--gv-ink);stroke-width:2px}.gv-node>text{fill:var(--gv-ink);font-family:var(--gv-font-body);paint-order:stroke;stroke:var(--gv-paper);stroke-width:5px;stroke-linejoin:round;font-size:13px;font-weight:600}.gv-node-manual>rect:first-of-type{stroke-dasharray:5 4;stroke-width:1.5px}.gv-node-tool>rect:first-of-type{stroke:var(--gv-sage-deep);stroke-width:3px}.gv-node-app>rect:first-of-type{stroke-width:3.5px}.gv-node-app>text{font-size:15px;font-weight:700}.gv-node-decision rect{fill:var(--gv-ink)}.gv-node-decision>text{fill:var(--gv-paper);stroke:var(--gv-ink)}.gv-hatch-line{stroke:var(--gv-sage);stroke-width:1.3px}.gv-node-hatch{stroke:none!important}.gv-balloon circle{fill:var(--gv-paper);stroke:var(--gv-ink);stroke-width:1.5px}.gv-balloon text{fill:var(--gv-ink);font-family:var(--gv-font-mono);font-size:11px;font-weight:600}.gv-value circle{fill:var(--gv-sage)}.gv-unknown{fill:var(--gv-ink-soft);font-family:var(--gv-font-display);font-size:24px;font-weight:700}.is-redrawing .gv-edge:not(.gv-edge-manual){stroke-dasharray:1;stroke-dashoffset:1px;animation:gv-draw var(--gv-draw-duration) var(--gv-ease-out) forwards;animation-delay:calc(var(--i,0) * .11s + .18s)}.is-redrawing .gv-edge-manual{animation:gv-fade .5s var(--gv-ease-out) both;animation-delay:calc(var(--i,0) * 60ms + .12s)}.is-redrawing .gv-node{animation:gv-place .52s var(--gv-ease-out) both;animation-delay:calc(var(--i,0) * 60ms)}.is-redrawing .gv-value circle{transform-box:fill-box;transform-origin:50%;animation:gv-dot .42s var(--gv-ease-out) both;animation-delay:.98s}@keyframes gv-draw{to{stroke-dashoffset:0}}@keyframes gv-fade{0%{opacity:0}}@keyframes gv-place{0%{opacity:0;transform:translateY(6px)}}@keyframes gv-dot{0%{transform:scale(0)}}@media (prefers-reduced-motion:reduce){.is-redrawing .gv-edge,.is-redrawing .gv-edge:not(.gv-edge-manual),.is-redrawing .gv-node,.is-redrawing .gv-value circle{stroke-dashoffset:0;animation:none}}.gv-dimension{color:var(--gv-ink);font-family:var(--gv-font-mono);font-size:var(--gv-annot-size);letter-spacing:.02em;text-align:center;align-items:center;gap:10px;margin-top:10px;display:flex}.gv-dimension-line{min-width:18px;height:var(--gv-line-thin);background:var(--gv-ink);flex:1;position:relative}.gv-dimension-line:before{content:"";width:var(--gv-line-thin);background:var(--gv-ink);height:11px;position:absolute;top:-5px}.gv-dimension-line:first-child:before{left:0}.gv-dimension-line:last-child:before{right:0}.gv-drawing-legend{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 24px;display:flex}.gv-parts-mini{flex-wrap:wrap;gap:8px 18px;margin:0;padding:0;font-size:.88rem;font-weight:600;list-style:none;display:flex}.gv-parts-mini li{align-items:center;gap:8px;display:inline-flex}.gv-parts-mini .gv-pos{width:22px;height:22px;font-size:.7rem}.gv-legend-note{color:var(--gv-ink-soft);align-items:center;gap:8px;margin:0;font-size:.8rem;display:inline-flex}.gv-legend-swatch{border:var(--gv-line-thin) dashed var(--gv-ink);background:var(--gv-hatch);width:22px;height:14px}.gv-revisions{border:var(--gv-line-thick) solid var(--gv-ink);background:var(--gv-paper);margin:0;padding:0}.gv-revisions legend{float:left;border-bottom:var(--gv-line-thin) solid var(--gv-ink);width:100%;letter-spacing:var(--gv-tracking-annot);text-transform:uppercase;padding:8px 12px;font-size:.78rem;font-weight:700}.gv-revisions-head,.gv-revision-row{clear:both;grid-template-columns:52px minmax(120px,.7fr) minmax(0,1.3fr);align-items:center;display:grid}.gv-revisions-head{border-bottom:var(--gv-line-thin) solid var(--gv-ink);color:var(--gv-ink-soft);font-family:var(--gv-font-mono);font-size:var(--gv-annot-size)}.gv-revisions-head span{padding:6px 12px}.gv-revision-row{border-bottom:var(--gv-line-thin) solid var(--gv-ink);cursor:pointer;min-height:40px;transition:background-color .2s var(--gv-ease-out);position:relative}.gv-revision-row:last-child{border-bottom:0}.gv-revision-row:hover{background:var(--gv-hatch-sparse)}.gv-revision-row input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.gv-revision-row:has(input:focus-visible){outline:var(--gv-line-thick) solid var(--gv-sage-deep);outline-offset:-4px}.gv-revision-row>span{padding:6px 12px}.gv-revision-id{border-right:var(--gv-line-thin) solid var(--gv-ink);font-family:var(--gv-font-mono);align-self:stretch;place-items:center;font-weight:600;display:grid}.gv-revision-name{font-weight:700}.gv-revision-when{color:var(--gv-ink-soft);font-size:.85rem;line-height:1.4}.gv-revision-row:has(input:checked){background:var(--gv-hatch-sparse)}.gv-revision-row:has(input:checked) .gv-revision-id{color:var(--gv-paper);background:var(--gv-sage-deep)}.gv-title-form{grid-template-rows:1fr auto auto auto;grid-template-columns:1fr 1fr;display:grid}.gv-tb-cell{border-bottom:var(--gv-line-thin) solid var(--gv-ink);gap:4px;padding:10px 14px 12px;display:grid}.gv-tb-cell+.gv-tb-cell:not(.gv-tb-message){border-left:var(--gv-line-thin) solid var(--gv-ink)}.gv-tb-message{grid-column:1/-1;grid-template-rows:auto 1fr}.gv-tb-cell label,.gv-tb-meta dt{color:var(--gv-ink-soft);letter-spacing:var(--gv-tracking-annot);text-transform:uppercase;font-size:.72rem;font-weight:700}.gv-tb-cell input,.gv-tb-cell textarea{border:0;border-bottom:var(--gv-line-thin) dashed var(--gv-ink-soft);width:100%;color:var(--gv-ink);background:0 0;outline:none;padding:4px 0;font-size:1rem;line-height:1.45}.gv-tb-cell textarea{resize:vertical;height:100%;min-height:72px}.gv-tb-cell input::placeholder,.gv-tb-cell textarea::placeholder{color:var(--gv-ink-soft);opacity:1}.gv-tb-cell:focus-within{background:var(--gv-hatch-sparse)}.gv-tb-cell:focus-within input,.gv-tb-cell:focus-within textarea{border-bottom:var(--gv-line-thick) solid var(--gv-sage-deep)}.gv-honeypot{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.gv-tb-submit{min-height:56px;color:var(--gv-paper);background:var(--gv-sage-deep);cursor:pointer;transition:background-color .2s var(--gv-ease-out);border:0;grid-column:1/-1;font-size:1.02rem;font-weight:700}.gv-tb-submit:hover:not(:disabled){background:var(--gv-ink)}.gv-tb-submit:focus-visible{outline-offset:-5px;outline-color:var(--gv-paper)}.gv-tb-submit:disabled{cursor:progress;opacity:.75}.gv-tb-status{grid-column:1/-1;margin:0;font-size:.92rem;font-weight:600}.gv-tb-status:not(:empty){border-top:var(--gv-line-thin) solid var(--gv-ink);padding:10px 14px}.gv-tb-status-success{color:var(--gv-sage-deep)}.gv-tb-status-error{color:var(--gv-danger)}.gv-tb-meta{border-top:var(--gv-line-thick) solid var(--gv-ink);grid-template-columns:1fr 1fr;margin:0;display:grid}.gv-tb-meta div{border-bottom:var(--gv-line-thin) solid var(--gv-ink);gap:2px;padding:8px 14px;display:grid}.gv-tb-meta div:nth-child(2n){border-left:var(--gv-line-thin) solid var(--gv-ink)}.gv-tb-meta div:nth-last-child(-n+2){border-bottom:0}.gv-tb-meta dd{margin:0;font-size:.92rem;font-weight:600}.gv-table-wrap{overflow-x:auto}.gv-parts{border-collapse:collapse;border:var(--gv-line-thick) solid var(--gv-ink);width:100%}.gv-parts th,.gv-parts td{border:var(--gv-line-thin) solid var(--gv-ink);text-align:left;vertical-align:top;padding:16px;line-height:1.5}.gv-parts thead th{border-bottom-width:var(--gv-line-thick);color:var(--gv-ink-soft);font-family:var(--gv-font-mono);font-size:var(--gv-annot-size);padding:8px 16px;font-weight:600}.gv-parts thead th:first-child,.gv-parts tbody td:first-child{text-align:center;width:64px}.gv-parts tbody th{width:22%;font-family:var(--gv-font-display);font-stretch:var(--gv-title-stretch);font-size:1.2rem;font-weight:700;line-height:1.15}.gv-parts tbody td{color:var(--gv-ink-soft)}.gv-parts ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.gv-parts li{color:var(--gv-ink);padding-left:16px;position:relative}.gv-parts li:before{content:"";background:var(--gv-sage);border-radius:50%;width:7px;height:7px;position:absolute;top:.62em;left:0}.gv-notes-block{gap:16px;margin-top:32px;display:grid}.gv-tech-notes{columns:2 320px;counter-reset:gv-note;column-gap:40px;margin:0;padding:0;list-style:none}.gv-tech-notes li{break-inside:avoid;color:var(--gv-ink-soft);counter-increment:gv-note;padding:0 0 14px 40px;line-height:1.55;position:relative}.gv-tech-notes li:before{content:counter(gv-note);border:var(--gv-line) solid var(--gv-ink);width:26px;height:26px;color:var(--gv-ink);font-family:var(--gv-font-mono);border-radius:50%;place-items:center;font-size:.75rem;font-weight:600;display:grid;position:absolute;top:0;left:0}.gv-tech-notes strong{color:var(--gv-ink)}.gv-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.gv-detail{border:var(--gv-line) solid var(--gv-ink);grid-template-rows:auto auto 1fr;display:grid}.gv-detail-callout{border-bottom:var(--gv-line-thin) solid var(--gv-ink);color:var(--gv-ink-soft);font-family:var(--gv-font-mono);font-size:var(--gv-annot-size);align-items:center;gap:12px;padding:10px 16px;display:flex}.gv-detail-letter{border:var(--gv-line-thick) solid var(--gv-ink);width:34px;height:34px;color:var(--gv-ink);font-family:var(--gv-font-display);border-radius:50%;place-items:center;font-size:1rem;font-weight:700;display:grid}.gv-detail-view{border-bottom:var(--gv-line-thin) solid var(--gv-ink);background:var(--gv-hatch-sparse);padding:16px}.gv-detail-view img{border:var(--gv-line-thin) solid var(--gv-ink);background:var(--gv-paper);width:100%;height:auto;display:block}.gv-detail-copy{align-content:start;gap:10px;padding:18px 20px 22px;display:grid}.gv-detail-copy p{color:var(--gv-ink-soft);margin:0;line-height:1.55}.gv-detail-copy p.gv-detail-impact{color:var(--gv-ink)}.gv-detail-stack,.gv-detail-copy p.gv-detail-stack{color:var(--gv-ink-soft);font-family:var(--gv-font-mono);font-size:var(--gv-annot-size)}.gv-private{border:var(--gv-line) solid var(--gv-ink);margin-top:24px}.gv-private h3{background:var(--gv-paper);padding:12px 16px 4px}.gv-private-note{border-bottom:var(--gv-line-thin) solid var(--gv-ink);color:var(--gv-ink-soft);margin:0;padding:0 16px 12px;font-size:.9rem}.gv-private ul{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.gv-private li{gap:6px;padding:16px 16px 16px 40px;line-height:1.5;display:grid;position:relative}.gv-private li+li{border-left:var(--gv-line-thin) solid var(--gv-ink)}.gv-private li:before{content:"";border-right:var(--gv-line-thin) solid var(--gv-ink);background:var(--gv-hatch);width:24px;position:absolute;top:0;bottom:0;left:0}.gv-private li span{color:var(--gv-ink-soft)}.gv-author,.gv-contact{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start;gap:32px;display:grid}.gv-author-copy,.gv-contact-copy{gap:16px;display:grid}.gv-author-copy p,.gv-contact-copy>p{max-width:62ch;color:var(--gv-ink-soft);margin:0;line-height:1.65}.gv-author-copy p.gv-lede{color:var(--gv-ink)}.gv-author-table{border:var(--gv-line-thick) solid var(--gv-ink);margin:0}.gv-author-table div{border-bottom:var(--gv-line-thin) solid var(--gv-ink);grid-template-columns:132px minmax(0,1fr);display:grid}.gv-author-table div:last-child{border-bottom:0}.gv-author-table dt{border-right:var(--gv-line-thin) solid var(--gv-ink);color:var(--gv-ink-soft);letter-spacing:var(--gv-tracking-annot);text-transform:uppercase;padding:12px 14px;font-size:.72rem;font-weight:700}.gv-author-table dd{margin:0;padding:12px 14px;line-height:1.5}.gv-faq{counter-reset:gv-faq;border-bottom:var(--gv-line-thin) solid var(--gv-ink);margin:0;padding:0;list-style:none}.gv-faq li{border-top:var(--gv-line-thin) solid var(--gv-ink);counter-increment:gv-faq}.gv-faq summary{cursor:pointer;grid-template-columns:44px minmax(0,1fr) 24px;align-items:center;gap:12px;padding:16px 0;font-size:1.05rem;font-weight:700;line-height:1.35;list-style:none;display:grid;position:relative}.gv-faq summary::-webkit-details-marker{display:none}.gv-faq summary:before{content:counter(gv-faq);border:var(--gv-line) solid var(--gv-ink);width:26px;height:26px;font-family:var(--gv-font-mono);border-radius:50%;place-items:center;font-size:.75rem;font-weight:600;display:grid}.gv-faq summary:after{content:"";background:linear-gradient(var(--gv-ink), var(--gv-ink)) center / 16px 2px no-repeat, linear-gradient(var(--gv-ink), var(--gv-ink)) center / 2px 16px no-repeat;width:16px;height:16px;transition:transform .25s var(--gv-ease-out);grid-column:3}.gv-faq details[open] summary:after{background:linear-gradient(var(--gv-ink), var(--gv-ink)) center / 16px 2px no-repeat}.gv-faq summary:hover{color:var(--gv-sage-deep)}.gv-faq details p{max-width:76ch;color:var(--gv-ink-soft);margin:0;padding:0 36px 20px 56px;line-height:1.65}.gv-contact-form .contact-form{border:var(--gv-line-thick) solid var(--gv-ink);border-radius:0}.gv-contact-form .field label{color:var(--gv-ink-soft);letter-spacing:var(--gv-tracking-annot);text-transform:uppercase;font-size:.72rem;font-weight:700}.gv-contact-form .field label .optional-indicator{letter-spacing:0;text-transform:none;font-weight:600}.gv-contact-form .field input,.gv-contact-form .field select,.gv-contact-form .field textarea{border:0;border-bottom:var(--gv-line-thin) dashed var(--gv-ink-soft);background-color:#0000;border-radius:0;padding:6px 0}.gv-contact-form .field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%232A2623' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 4px center;background-repeat:no-repeat;padding-right:28px}.gv-contact-form .field input:focus,.gv-contact-form .field select:focus,.gv-contact-form .field textarea:focus{border-bottom:var(--gv-line) solid var(--gv-sage-deep);box-shadow:none}@media (max-width:1080px){.gv-sheet-grid{grid-template:"title""figure""block""legend""revisions"/minmax(0,1fr)}.gv-sheet-drawing,.gv-drawing-block{display:contents}.gv-drawing{border-bottom:var(--gv-line-thick) solid var(--gv-ink);grid-area:figure;min-width:0;padding:14px 18px 12px}.gv-drawing svg{max-height:220px}.gv-drawing-legend{grid-area:legend;padding:16px 18px 0}.gv-revisions{grid-area:revisions;margin:14px 18px 18px}.gv-sheet-title,.gv-title-block{border-left:0;border-bottom:var(--gv-line-thick) solid var(--gv-ink)}}@media (max-width:860px){.gv-details,.gv-author,.gv-contact,.gv-private ul{grid-template-columns:minmax(0,1fr)}.gv-private li+li{border-left:0;border-top:var(--gv-line-thin) solid var(--gv-ink)}.gv-parts thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.gv-parts tr{border-bottom:var(--gv-line-thick) solid var(--gv-ink);grid-template-columns:56px minmax(0,1fr);display:grid}.gv-parts tbody tr:last-child{border-bottom:0}.gv-parts th,.gv-parts td{border:0}.gv-parts tbody td:first-child{border-right:var(--gv-line-thin) solid var(--gv-ink);grid-row:span 3;width:auto}.gv-parts tbody th{width:auto;padding-bottom:4px}.gv-parts tbody td{padding-top:6px}}@media (max-width:640px){.gv-home{gap:28px}.gv-sheet-main{padding:8px}.gv-zones{display:none}.gv-sheet-title{padding:22px 18px}.gv-sheet-drawing{padding:14px}.gv-node>text{font-size:16px}.gv-node-app>text{font-size:17px}.gv-balloon text{font-size:14px}.gv-balloon circle{r:13px}.gv-revisions-head,.gv-revision-row{grid-template-columns:44px minmax(0,1fr)}.gv-revisions-head span:last-child{display:none}.gv-revision-when{grid-column:2;padding-top:0!important}.gv-revision-id{grid-row:span 2}.gv-title-form{grid-template-columns:minmax(0,1fr)}.gv-tb-cell+.gv-tb-cell:not(.gv-tb-message){border-left:0}.gv-author-table div{grid-template-columns:minmax(0,1fr)}.gv-author-table dt{border-right:0;padding-bottom:0}.gv-faq details p{padding:0 0 18px 56px}}
