.tui-grid{width:100%}.tui-grid-cols-1{grid-template-columns:1fr}.tui-grid-cols-2{grid-template-columns:repeat(2,1fr)}.tui-grid-cols-3{grid-template-columns:repeat(3,1fr)}.tui-grid-cols-4{grid-template-columns:repeat(4,1fr)}.tui-grid-gap-none{gap:0}.tui-grid-gap-small{gap:8px}.tui-grid-gap-medium{gap:16px}.tui-grid-gap-large{gap:24px}.tui-grid-responsive.tui-grid-cols-2{grid-template-columns:repeat(2,1fr)}.tui-grid-responsive.tui-grid-cols-3{grid-template-columns:repeat(3,1fr)}.tui-grid-responsive.tui-grid-cols-4{grid-template-columns:repeat(4,1fr)}@media (max-width:1024px){.tui-grid-responsive.tui-grid-cols-3,.tui-grid-responsive.tui-grid-cols-4{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.tui-grid-responsive.tui-grid-cols-2,.tui-grid-responsive.tui-grid-cols-3,.tui-grid-responsive.tui-grid-cols-4{grid-template-columns:1fr}}.tui-module{border:1px solid var(--terminal-accent);border-radius:0;background-color:var(--terminal-bg);position:relative;transition:all .2s ease;height:min-content}.tui-module:hover{border-color:var(--terminal-text);box-shadow:0 0 8px rgba(0,255,0,.1)}.tui-module-header{position:absolute;transform:translateY(-50%);left:12px;background-color:var(--terminal-bg);padding:0 8px;z-index:10}.tui-module-title{font-weight:700;color:var(--terminal-accent);font-size:11px;text-transform:uppercase;letter-spacing:1px;display:flex;align-items:center;gap:4px}.tui-module-title:after,.tui-module-title:before{content:"|";color:var(--terminal-accent)}.tui-module-toggle{background:none;border:none;color:var(--terminal-accent);cursor:pointer;padding:0;font-size:10px;transition:color .2s ease}.tui-module-toggle:hover{color:var(--terminal-text)}.tui-module-content{padding:16px 12px 12px;transition:max-height .3s ease,opacity .3s ease;max-height:100%;overflow:hidden}.tui-scrollable{overflow:scroll}.tui-module-content.collapsed{max-height:0;padding-top:0;padding-bottom:0;opacity:0}.tui-module-accent{border-color:var(--terminal-accent)}.tui-module-accent .tui-module-header{background-color:var(--terminal-bg)}.tui-module-warning{border-color:#ff6600}.tui-module-warning .tui-module-header{background-color:var(--terminal-bg)}.tui-module-warning .tui-module-title,.tui-module-warning .tui-module-title:after,.tui-module-warning .tui-module-title:before{color:#ff6600}.tui-module-danger{border-color:#ff0000}.tui-module-danger .tui-module-header{background-color:var(--terminal-bg)}.tui-module-danger .tui-module-title,.tui-module-danger .tui-module-title:after,.tui-module-danger .tui-module-title:before{color:#ff0000}.tui-module-small{max-height:180px}.tui-panel{color:var(--terminal-text);line-height:1.4}.tui-panel-bordered{border:none;border-radius:0}.tui-panel-background{background-color:transparent}.tui-panel-padding-none{padding:0}.tui-panel-padding-small{padding:4px}.tui-panel-padding-medium{padding:8px}.tui-panel-padding-large{padding:16px}.tui-navigation{display:flex}.tui-nav-horizontal{flex-direction:row}.tui-nav-vertical{flex-direction:column}.tui-nav-item{background:none;border:none;color:var(--terminal-muted);cursor:pointer;padding:6px 12px;font-family:inherit;font-size:11px;text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center;gap:4px;transition:all .2s ease}.tui-nav-item:hover:not(.disabled){color:var(--terminal-text);background-color:var(--terminal-fg)}.tui-nav-item.active{color:var(--terminal-accent);background-color:rgba(0,255,0,.1)}.tui-nav-item.disabled{opacity:.3;cursor:not-allowed}.tui-nav-icon{font-size:10px}.tui-nav-label{font-weight:500}.tui-nav-tabs .tui-nav-item{border:1px solid transparent;border-bottom:1px solid var(--terminal-muted);margin-right:-1px}.tui-nav-tabs .tui-nav-item.active{border-color:var(--terminal-accent);border-bottom-color:transparent;position:relative;z-index:1}.tui-nav-buttons .tui-nav-item{border:1px solid var(--terminal-muted);margin:2px;border-radius:2px}.tui-nav-buttons .tui-nav-item.active{border-color:var(--terminal-accent)}.tui-nav-list .tui-nav-item{justify-content:flex-start;padding:8px 12px;width:100%;text-align:left}.tui-nav-list .tui-nav-item:hover:not(.disabled){padding-left:16px}.social-btn{border:1px solid var(--terminal-muted);color:var(--brand-color,#fff);background:transparent;padding:4px 12px;font-size:12px;text-decoration:none;transition:all .15s ease-in-out}.social-btn:hover{background:var(--brand-color,#fff);color:var(--hover-text,#000)}@media (max-width:768px){.tui-module{min-height:auto!important}.tui-module-content{padding:14px;min-width:120px}.tui-module-header{padding:6px 8px}.tui-module-title{font-size:11px}.tui-nav-horizontal{flex-wrap:wrap}.tui-nav-item{padding:4px 8px;font-size:10px}}.tui-grid{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:auto auto;align-content:start;grid-gap:16px;gap:16px;height:100%}.oss-contributions{grid-column:1;grid-row:1}.projects{grid-column:1;grid-row:2}.right-col{display:grid;grid-auto-rows:auto;grid-gap:16px;gap:16px;grid-column:2;grid-row:1/span 2}@media (max-width:768px){.tui-grid{grid-template-columns:1fr;grid-template-rows:auto auto auto}.oss-contributions{order:0;grid-column:1;grid-row:auto}.right-col{order:1}.projects,.right-col{grid-column:1;grid-row:auto}.projects{order:2}.right-col{grid-auto-rows:auto}}.styles-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;height:100%}.styles-selector{order:0}.styles-preview{order:1}@media (max-width:768px){.styles-grid{grid-template-columns:1fr;grid-auto-rows:min-content;gap:16px}.styles-selector{order:0}.styles-preview{order:1}.palette-grid{grid-template-columns:1fr!important}}.home-top-row{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:16px;gap:16px}@media (max-width:768px){.home-top-row{grid-template-columns:1fr}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.tui-post blockquote{border-left:2px solid var(--terminal-accent);margin:0 0 12px;padding:4px 12px;color:var(--terminal-text)}.tui-post blockquote p:last-child{margin-bottom:0}.tui-post hr{border:0;border-top:1px dashed var(--terminal-muted);margin:32px auto}.tui-post code{font-size:.95em;color:var(--terminal-accent)}.post-figure{margin:24px auto;max-width:880px;position:relative}.tui-post>article>.post-figure{max-width:605px}.post-figure__label{text-transform:uppercase;letter-spacing:1px;font-size:11px;font-weight:700;color:var(--terminal-accent);margin-right:8px}.post-figure__caption{font-size:12px;color:var(--terminal-muted);margin-top:6px;line-height:1.5}.post-figure__caption p{display:inline;margin:0}.post-aside{margin:20px auto;border:1px dashed var(--terminal-muted);max-width:72ch}.post-aside__summary{list-style:none;cursor:pointer;padding:8px 12px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;color:var(--terminal-muted);font-size:12px}.post-aside__summary::-webkit-details-marker{display:none}.post-aside__summary:before{content:"▸";color:var(--terminal-accent)}.post-aside[open] .post-aside__summary:before{content:"▾"}.post-aside__label{text-transform:uppercase;letter-spacing:1px;font-size:11px;font-weight:700}.post-aside__title{color:var(--terminal-text);font-weight:700}.post-aside__hint{margin-left:auto;font-size:11px}.post-aside__body{padding:4px 12px 8px;border-top:1px dashed var(--terminal-muted);font-size:13px}.post-aside__body p:last-child{margin-bottom:0}.post-aside__summary:focus-visible{outline:1px solid var(--terminal-accent);outline-offset:2px}@media (max-width:640px){.post-aside__hint{display:none}.post-aside__summary{padding:10px 12px}}@media print{.post-aside{border-style:solid}.post-aside__body{display:block}}.post-evidence__link{display:block;position:relative;border:1px solid var(--terminal-muted);max-width:440px;margin:0 auto}.post-evidence__link:focus-visible,.post-evidence__link:hover{border-color:var(--terminal-accent);outline:none}.post-evidence__link img{display:block;width:100%;height:auto}.post-evidence__zoom{position:absolute;right:6px;bottom:6px;font-size:11px;padding:2px 6px;background:var(--terminal-bg);color:var(--terminal-accent);border:1px solid var(--terminal-muted)}.post-evidence__video{display:block;width:100%;max-width:360px;height:auto;margin:0 auto;aspect-ratio:720/1564;background:var(--terminal-fg);border:1px solid var(--terminal-muted)}.post-evidence__full{margin-left:6px}.post-lightbox{border:1px solid var(--terminal-accent);background:var(--terminal-bg);color:var(--terminal-text);padding:12px;max-width:96vw;font-family:var(--font-mono),monospace}.post-lightbox::-webkit-backdrop{background:rgba(0,0,0,.85)}.post-lightbox::backdrop{background:rgba(0,0,0,.85)}.post-lightbox__close{background:none;border:1px solid var(--terminal-muted);color:var(--terminal-text);padding:4px 8px;font:inherit;font-size:12px;cursor:pointer;margin-bottom:8px}.post-lightbox__close:focus-visible,.post-lightbox__close:hover{border-color:var(--terminal-accent);color:var(--terminal-accent);outline:none}.post-lightbox__img{display:block;max-height:86vh;width:auto;max-width:92vw;margin:0 auto}.post-lightbox__caption{font-size:12px;margin:8px 0 0}.post-diagram{container-type:inline-size;border:1px solid var(--terminal-muted);padding:12px}.post-diagram svg{width:100%;height:auto;display:block;font-family:var(--font-mono),monospace}.post-diagram svg.post-diagram__wide{display:none}.post-diagram svg.post-diagram__stacked{display:block}@container (min-width: 700px){.post-diagram svg.post-diagram__wide{display:block}.post-diagram svg.post-diagram__stacked{display:none}}.post-diagram__narration{margin:10px 0 0;min-height:3.2em;font-size:13px;line-height:1.5}.post-diagram__controls{flex-wrap:wrap}.post-diagram__controls,.post-diagram__scrub{display:none;gap:8px;align-items:center;margin-top:8px;font-size:12px}.post-diagram__scrub{width:100%;color:var(--terminal-muted)}.post-diagram__primary{display:none;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:10px}.post-diagram[data-hydrated=true] .post-diagram__primary{display:flex}.post-diagram__play{background:var(--terminal-accent);color:var(--terminal-bg);border:1px solid var(--terminal-accent);padding:8px 14px;font:inherit;font-size:14px;font-weight:700;cursor:pointer}.post-diagram__play:focus-visible,.post-diagram__play:hover{background:var(--terminal-bg);color:var(--terminal-accent);outline:none}.post-diagram__hint{font-size:12px;color:var(--terminal-muted)}.post-diagram__more{display:none;margin-top:8px;font-size:12px}.post-diagram[data-hydrated=true] .post-diagram__more{display:block}.post-diagram__more summary{cursor:pointer;color:var(--terminal-muted)}.post-diagram__more summary:focus-visible,.post-diagram__more summary:hover{color:var(--terminal-accent);outline:none}.post-diagram[data-hydrated=true] .post-diagram__controls,.post-diagram[data-hydrated=true] .post-diagram__scrub{display:flex}.post-diagram__controls:focus-visible{outline:1px dashed var(--terminal-accent);outline-offset:4px}.post-diagram__controls button{background:none;border:1px solid var(--terminal-muted);color:var(--terminal-text);padding:4px 8px;font:inherit;font-size:12px;cursor:pointer}.post-diagram__controls button:focus-visible,.post-diagram__controls button:hover{border-color:var(--terminal-accent);color:var(--terminal-accent);outline:none}.post-diagram__controls button[aria-pressed=true]{border-color:var(--terminal-accent);color:var(--terminal-accent)}.post-diagram__controls button:disabled{opacity:.4;cursor:default}.post-diagram__steps{display:flex;gap:4px;flex-wrap:wrap}.post-diagram__scrub input[type=range]{flex:1 1;accent-color:var(--terminal-accent);min-width:120px}.post-diagram__scrub output{min-width:5ch;text-align:right;color:var(--terminal-text)}.d-tip{position:absolute;z-index:2;max-width:260px;background:var(--terminal-bg);border:1px solid var(--terminal-accent);padding:6px 8px;font-size:12px;line-height:1.4;pointer-events:none;display:none}.d-tip[data-open=true]{display:block}.d-tip b{color:var(--terminal-accent)}[data-part][tabindex]:focus{outline:none}.is-inspecting rect:first-child,[data-part][tabindex]:focus>rect:first-child{stroke-width:2}.d-lane{fill:none;stroke:var(--diagram-line);stroke-width:1}.d-lane-title{fill:var(--diagram-good);font-weight:700;letter-spacing:1px}.d-note,.d-tick{fill:var(--diagram-muted)}.d-note--good{fill:var(--diagram-good)}.d-chip rect{fill:var(--diagram-panel);stroke:var(--diagram-line);stroke-width:1;cursor:pointer}.d-chip[data-state=active] rect{stroke:var(--diagram-good)}.d-chip[data-state=running] rect{stroke:var(--diagram-good);stroke-dasharray:3 3}.d-chip[data-state=block] rect{stroke:var(--diagram-bad);fill:var(--diagram-bad-fill)}.d-chip[data-state=allow] rect{stroke:var(--diagram-good);fill:var(--diagram-good-fill)}.d-chip[data-state=retract] rect{stroke:var(--diagram-bad);stroke-dasharray:3 3}.d-chip-label{fill:var(--diagram-ink);font-weight:700}.d-chip-state{fill:var(--diagram-muted)}.d-chip[data-state=block] .d-chip-state,.d-chip[data-state=retract] .d-chip-state{fill:var(--diagram-bad)}.d-chip[data-state=active] .d-chip-state,.d-chip[data-state=allow] .d-chip-state{fill:var(--diagram-good)}.d-arrow,.d-buffer{fill:var(--diagram-muted)}.d-buffer-track{fill:none;stroke:var(--diagram-line);stroke-width:1;stroke-dasharray:2 2}.d-screen>rect:first-child{fill:var(--diagram-bg);stroke:var(--diagram-ink);stroke-width:1;cursor:pointer}.d-screen[data-exposed=true]>rect:first-child{fill:var(--diagram-bad-fill);stroke:var(--diagram-bad);stroke-dasharray:4 3}.d-question{fill:var(--diagram-panel)}.d-question-text{fill:var(--diagram-ink)}.d-cursor{fill:var(--diagram-good);animation:d-blink .6s steps(1) infinite}.d-cursor[data-on=false]{display:none}@keyframes d-blink{50%{opacity:0}}.d-tok{fill:var(--diagram-ink);opacity:0;transition:opacity .12s linear}.d-tok[data-on=true]{opacity:1}.d-tok.is-struck{text-decoration:line-through;fill:var(--diagram-muted)}.d-line-box{fill:none;stroke:var(--diagram-bad);stroke-width:1;stroke-dasharray:3 3;opacity:0;transition:opacity .12s linear}.d-line-box[data-on=true]{opacity:1}.d-line-box.is-checked{stroke:var(--diagram-good);stroke-dasharray:none}.d-refusal{fill:var(--diagram-bad);font-weight:700;opacity:0;transition:opacity .12s linear}.d-refusal[data-on=true]{opacity:1}.d-bracket path{fill:none;stroke:var(--diagram-bad);stroke-width:1}.d-bracket-label{fill:var(--diagram-bad);font-weight:700}.d-timeline{stroke:var(--diagram-line);stroke-width:1}.d-playhead{stroke:var(--diagram-good);stroke-width:1}.post-diagram svg.post-diagram__ledger{max-width:605px;margin:0 auto}.g-head{fill:var(--diagram-good);letter-spacing:1px}.g-head,.g-n{font-weight:700}.g-n{fill:var(--diagram-ink)}.g-n--bad{fill:var(--diagram-bad)}.g-label{fill:var(--diagram-ink);font-weight:700}.g-note,.g-sub{fill:var(--diagram-muted)}.g-bar{fill:var(--diagram-panel);stroke:var(--diagram-line);stroke-width:1}.g-bar--bad{fill:var(--diagram-bad-fill);stroke:var(--diagram-bad);stroke-dasharray:4 3}.g-flow,.g-rule{stroke:var(--diagram-line);stroke-width:1}.g-flow{fill:none;stroke-dasharray:2 3}.g-back{fill:none;stroke:var(--diagram-good);stroke-width:1;stroke-dasharray:4 3}.g-arrowhead{fill:var(--diagram-muted)}.g-arrowhead--good,.g-good{fill:var(--diagram-good)}.g-good{font-weight:700}.g-spark{fill:none;stroke:var(--diagram-ink);stroke-width:1.25}.g-spark-axis{stroke:var(--diagram-line);stroke-width:1}.g-alert{fill:var(--diagram-bad);font-weight:700}.g-alert-line{stroke:var(--diagram-bad);stroke-width:1;stroke-dasharray:3 3}@media (prefers-reduced-motion:reduce){.post-aside,.post-figure *,.post-lightbox{transition:none!important;animation:none!important}}:root{--terminal-bg:#000000;--terminal-fg:#333333;--terminal-text:#ffffff;--terminal-accent:#00ff00;--terminal-muted:#888888;--brand-color:var(--terminal-accent);--hover-text:var(--terminal-accent)}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100vh;overflow-x:hidden;font-family:var(--font-mono,"IBM Plex Mono","SF Mono","Monaco","Inconsolata","Consolas",monospace);background-color:var(--terminal-bg);color:var(--terminal-text);line-height:1.4;font-size:14px}#__next,.terminal-interface{min-height:100vh;display:flex;flex-direction:column}.terminal-interface{width:100vw;background-color:var(--terminal-bg);color:var(--terminal-text)}.terminal-header{justify-content:space-between;height:24px;border-bottom:1px solid var(--terminal-muted);flex-shrink:0}.terminal-header,.terminal-title{display:flex;align-items:center;position:relative}.terminal-title{order:1;flex:1 1;justify-content:center;font-weight:700;font-size:12px;color:var(--terminal-accent);background-color:var(--terminal-bg);z-index:1}.terminal-title:after,.terminal-title:before{content:"";flex:1 1;height:1px;background-color:var(--terminal-muted)}.terminal-title:before{margin-right:8px}.terminal-title:after{margin-left:8px}.terminal-info{order:0;color:var(--terminal-muted);font-size:12px;padding-left:6px;white-space:nowrap}.terminal-body{flex:1 1;overflow:auto;display:flex;flex-direction:column}.terminal-footer{display:flex;align-items:center;justify-content:space-between;padding:0 12px;height:32px;background:var(--terminal-bg);border-top:1px solid var(--terminal-muted);font-size:12px;color:var(--terminal-accent);z-index:100}.footer-link{color:var(--terminal-accent);text-decoration:none}.footer-link:hover{text-decoration:underline}.tabs{background-color:var(--terminal-bg);border-bottom:1px solid var(--terminal-muted);padding:0;margin:0;flex-shrink:0}.tab,.tabs{display:flex;height:32px;align-items:center}.tab{padding:0 12px;background:none;border:none;color:var(--terminal-muted);cursor:pointer;font-family:inherit;font-size:14px;transition:all .1s;border-left:1px solid var(--terminal-muted);border-right:1px solid var(--terminal-muted);margin-right:-1px}.tab:first-child{border-left:none}.tab:hover{color:var(--terminal-text);background-color:var(--terminal-fg);text-decoration:none}.tab.active{color:var(--terminal-bg);background-color:var(--terminal-accent);font-weight:700}.gui-content,.tui-content{flex:1 1;overflow:auto;padding:16px}.tui-content{padding:8px;font-family:inherit;line-height:1.2}.tui-content:after{content:"";display:block;height:12px}.accent{color:var(--terminal-accent)}.muted{color:var(--terminal-muted)}.bold{font-weight:700}.tui-section{margin-bottom:16px}.tui-header{color:var(--terminal-accent);font-weight:700;margin-bottom:8px;border-bottom:1px solid var(--terminal-muted);padding-bottom:2px}.command-line{display:flex;align-items:center;margin:4px 0;font-family:inherit}.command-prompt{color:var(--terminal-accent);margin-right:8px}.command-input{background:transparent;border:none;outline:none;color:var(--terminal-text);font-family:inherit;font-size:inherit;flex:1 1;line-height:inherit}.command-input::placeholder{color:var(--terminal-muted)}.project-card{margin:12px 0;border-left:2px solid var(--terminal-muted);padding:8px 0 8px 12px}.project-card:hover{border-left-color:var(--terminal-accent)}.project-title{color:var(--terminal-accent);font-weight:700;text-decoration:none}.project-title:hover{text-decoration:underline}.project-description{color:var(--terminal-text);margin:4px 0;font-size:13px}.project-tech{color:var(--terminal-muted);font-size:12px}.project-tech .tech-name{color:var(--terminal-accent)}.theme-selector{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.theme-button{background:none;border:1px solid var(--terminal-muted);color:var(--terminal-text);padding:4px 8px;cursor:pointer;font-family:inherit;font-size:12px;transition:all .1s}.theme-button:hover{border-color:var(--terminal-accent);color:var(--terminal-accent)}.theme-button.active{border-color:var(--terminal-accent);color:var(--terminal-bg);background-color:var(--terminal-accent)}.terminal-table{border:2px solid var(--terminal-accent);border-radius:4px;overflow:hidden;font-family:monospace;width:100%}.terminal-table-header{display:grid;background-color:var(--terminal-fg);border-bottom:1px solid var(--terminal-accent)}.terminal-table-header-cell{padding:8px 12px;font-weight:700;color:var(--terminal-accent);font-size:12px;background-color:var(--terminal-fg)}.terminal-table-row{display:grid;min-height:60px;align-items:center}.terminal-table-cell{padding:12px;font-size:12px;background-color:var(--terminal-bg);display:flex;align-items:center;border-right:1px solid var(--terminal-muted);min-height:100%}.terminal-table-cell:last-child{border-right:none}.terminal-table-cell.ascii{justify-content:center!important;align-items:center!important;font-size:10px;line-height:1.1;color:var(--terminal-accent);min-height:140px;height:100%;padding:16px 12px;text-align:center}.terminal-table-cell.ascii pre{margin:0;white-space:pre;font-size:inherit;line-height:inherit;color:inherit}.terminal-table-cell.details{flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;padding:16px}.project-table{border:2px solid var(--terminal-accent);border-radius:4px;overflow:hidden;font-family:monospace}.project-header{background-color:var(--terminal-fg);border-bottom:1px solid var(--terminal-accent)}.project-header,.project-row{display:grid;grid-template-columns:200px 1fr}.project-row{min-height:140px}.project-ascii{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--terminal-muted);font-size:10px;line-height:1.1;color:var(--terminal-accent)}.project-ascii,.project-details{padding:12px;background-color:var(--terminal-bg)}.project-details{font-size:12px}@media (max-width:768px){body,html{font-size:16px}.terminal-header{height:20px;padding:0 1px}.tab,.tabs{height:28px}.tab{padding:0 8px;font-size:12px}.gui-content,.tui-content{padding:8px}.terminal-table-header,.terminal-table-row{grid-template-columns:1fr!important}.terminal-table-cell,.terminal-table-header-cell{border-right:none!important;border-bottom:1px solid var(--terminal-muted)}.terminal-table-cell{font-size:10px;padding:12px}.terminal-table-cell.ascii{min-height:100px;font-size:9px;padding:12px;border-bottom:1px solid var(--terminal-muted)}.terminal-table-cell.details{padding:12px;border-bottom:none}.project-header,.project-row{grid-template-columns:1fr}.project-ascii{border-right:none;border-bottom:1px solid var(--terminal-muted);min-height:80px;font-size:8px}.project-details{font-size:10px;padding:8px}.terminal-footer{flex-direction:column;height:auto;gap:4px;padding:8px 12px;text-align:center}}@media (max-width:480px){.gui-content{padding:4px}.project-table{margin:0 -4px}}@media (max-width:320px){.terminal-info{display:none}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--terminal-bg)}::-webkit-scrollbar-thumb{background:var(--terminal-muted)}::-webkit-scrollbar-thumb:hover{background:var(--terminal-accent)}a{color:var(--terminal-accent);text-decoration:none}a:hover{color:var(--terminal-text);text-decoration:underline}.tui-two-column{display:flex;gap:24px;align-items:flex-start;margin-bottom:16px}.tui-two-column-left{flex-shrink:0}.tui-two-column-right{flex:1 1;min-width:0}@media (max-width:640px){.tui-two-column{flex-direction:column}}.tui-post{--diagram-bg:var(--terminal-bg);--diagram-ink:var(--terminal-text);--diagram-muted:var(--terminal-muted);--diagram-line:var(--terminal-muted);--diagram-panel:var(--terminal-fg);--diagram-good:var(--terminal-accent);--diagram-good-fill:rgba(128,128,128,0.16);--diagram-bad:#e5484d;--diagram-bad-fill:rgba(229,72,77,0.18)}@supports (color:color-mix(in oklch,#000,#fff)){.tui-post{--diagram-good-fill:color-mix(in srgb,var(--terminal-accent) 16%,var(--terminal-bg));--diagram-bad-fill:color-mix(in srgb,#e5484d 18%,var(--terminal-bg))}}.tui-post{width:100%}.tui-post>article>:not(.post-figure):not(.post-aside):not(.tui-two-column){max-width:691px;margin-left:auto;margin-right:auto}.tui-post>article>.tui-two-column{max-width:880px;margin-left:auto;margin-right:auto}.tui-section-prose{margin-bottom:16px}.tui-post h1{font-size:28px;margin:0 0 24px;padding-bottom:6px}.tui-post h1,.tui-post h2{font-weight:700;color:var(--terminal-accent);border-bottom:1px solid var(--terminal-muted)}.tui-post h2{font-size:20px;margin:48px 0 12px;padding-bottom:4px}.tui-post h3{font-size:15px;font-weight:700;color:var(--terminal-accent);margin:28px 0 8px}.tui-post h4{font-size:12px;font-weight:700;color:var(--terminal-muted);margin:16px 0 4px;text-transform:uppercase;letter-spacing:.08em}.tui-post p{display:flow-root;margin:0 0 12px;font-size:16px;line-height:1.7}.tui-post strong{font-weight:500;color:var(--terminal-text)}.tui-post ol,.tui-post ul{margin:0 0 12px;padding-left:16px}.tui-post li{margin-bottom:4px;font-size:16px;line-height:1.7}.tui-post a{color:var(--terminal-accent);text-decoration:none}.tui-post a:hover{text-decoration:underline}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/011e180705008d6f-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ef4d5661765d0e49-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d29838c109ef09b4-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e40af3453d7c920a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/99dcf268bda04fe5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/98e207f02528a563-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/704b853f32d191d5-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/656feb427634a431-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/991629005c80bdf1-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/46e154b2fcbd6033-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/37786be940ec402b-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono Fallback;src:local("Arial");ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.00%;size-adjust:134.59%}.__className_483dd0{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_483dd0{--font-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}