@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff) format("woff")}:root{--bg: #040A1A;--bg-inset: #000000;--fg: #53CBFA;--fg-bright: #85d1f8;--fg-a30: rgba(83, 203, 250, .3);--fg-a15: rgba(83, 203, 250, .15);--fg-a40: rgba(83, 203, 250, .4);--rule: #1a2a4a;--danger: #ff5555;--ok: #5affa0;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "DejaVu Sans Mono", monospace;--fs-h1: 1.5rem;--fs-h2: 1.15rem;--fs-nav: 1.1rem;--fs-nav-hover: 1.25rem;--fs-body: .95rem;--fs-small: .85rem;--fs-micro: .72rem;--sp-1: .25rem;--sp-2: .5rem;--sp-3: 1rem;--sp-4: 1.5rem;--sp-5: 2.5rem;--sp-6: 4rem;--gutter: clamp(1rem, 3vw, 3rem);--measure: 72ch;--measure-prose: 88ch;--border: 1px solid var(--fg);--rule-dash: 1px dashed var(--fg-a30);--t-fast: .2s ease;--t-slow: .5s ease-in-out;font-family:var(--font-mono);background-color:var(--bg);color:var(--fg);line-height:1.5;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;background-color:var(--bg)}input,textarea,button,select{font:inherit;color:inherit}a{color:var(--fg)}img,iframe{max-width:100%;height:auto}.Page{display:flex;flex-direction:column;min-height:100dvh;background-color:var(--bg);padding-inline:var(--gutter);padding-block-start:var(--gutter);box-sizing:border-box;text-align:left}.TerminalHeader{display:block;margin:0;padding:0 0 var(--sp-3);text-align:left;text-decoration:none}.TerminalHeader h1{margin:0;font-size:var(--fs-h1);color:var(--fg);overflow-wrap:anywhere}.TerminalHeader:hover h1{color:var(--fg-bright)}.TerminalContent{padding:var(--sp-2) 0 var(--sp-6);text-align:left;max-width:var(--measure)}.body{display:flex;flex-direction:row;padding:0;gap:var(--sp-5);align-items:flex-start;padding-bottom:var(--sp-6)}.Left{flex:2;min-width:0;max-width:900px;display:flex;flex-direction:column}.Right{flex:.8;min-width:0;max-width:460px;display:flex;flex-direction:column;gap:var(--sp-3)}h2{font-size:var(--fs-h2);text-align:left;color:var(--fg);margin:var(--sp-4) 0 var(--sp-2)}h3{font-size:1rem;color:var(--fg);margin:var(--sp-3) 0 var(--sp-1)}p{text-align:left;color:var(--fg-bright);font-size:var(--fs-body);margin:var(--sp-2) 0}ul{list-style-type:square;padding-left:20px;margin:var(--sp-2) 0}ul:not([class]) li::marker{content:"- ";color:var(--fg)}li{color:var(--fg-bright);font-size:var(--fs-body)}hr{border:0;border-top:var(--rule-dash);margin:var(--sp-4) 0}.TerminalButton,.StaticLink{background-color:transparent;font-family:var(--font-mono);color:var(--fg);padding:var(--sp-1) 0;margin:var(--sp-1) 0;text-align:left;border:none;display:block;width:fit-content;cursor:pointer;transition:color var(--t-fast),transform var(--t-fast);text-decoration:none;font-size:var(--fs-nav);transform-origin:left center}.TerminalButton:hover,.StaticLink:hover,.TerminalButton:focus-visible,.StaticLink:focus-visible{color:var(--fg-bright);transform:scale(1.08);outline:none}.TerminalButton:focus-visible,.StaticLink:focus-visible{text-decoration:underline}.Rule{border-top:var(--rule-dash);margin:var(--sp-4) 0}.Tagline{color:var(--fg);font-size:var(--fs-body);margin:0 0 var(--sp-3)}.TechTags{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-3) 0;padding:0;list-style:none}.TechTags li{border:1px solid var(--fg-a40);padding:2px var(--sp-2);font-size:var(--fs-micro);color:var(--fg);white-space:nowrap}.MetaTable{display:grid;grid-template-columns:max-content 1fr;gap:var(--sp-1) var(--sp-3);margin:var(--sp-3) 0;font-size:var(--fs-small)}.MetaTable dt{color:var(--fg);opacity:.65;white-space:nowrap}.MetaTable dd{margin:0;color:var(--fg-bright)}.LinkRow{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin:var(--sp-4) 0}.Quote{font-style:italic;color:var(--fg);border-left:var(--rule-dash);padding-left:var(--sp-3);margin:var(--sp-3) 0}@media(max-width:900px){.body{flex-direction:column;gap:var(--sp-4);align-items:stretch}.Left,.Right{flex:none;width:auto;max-width:none;min-width:0}}@media(max-width:560px){:root{--gutter: var(--sp-3);--fs-h1: 1.2rem;--sp-6: 2rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}#root{width:100%;margin:0;padding:0}.content{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--t-slow),opacity var(--t-slow)}.content>.content-inner{overflow:hidden;display:flex;flex-direction:column;padding-left:var(--sp-4)}.content.expanded{grid-template-rows:1fr;opacity:1}.RouterLink{font-family:var(--font-mono);color:var(--fg);padding:var(--sp-1) 0;text-align:left;border:none;font-size:var(--fs-small);text-decoration:none;width:fit-content;transition:color var(--t-fast),transform var(--t-fast);transform-origin:left center}.RouterLink:hover,.RouterLink:focus-visible{color:var(--fg-bright);transform:scale(1.05);outline:none;text-decoration:underline}.TermLink{color:var(--fg);text-decoration:underline;font-size:var(--fs-small);transition:color var(--t-fast);white-space:nowrap}.TermLink:hover,.TermLink:focus-visible{color:var(--fg-bright)}.Banner{max-width:var(--measure);padding-top:var(--sp-3)}.Prompt{color:var(--fg);opacity:.55;font-size:var(--fs-small);margin:0}.Prompt+.BannerName{margin-top:var(--sp-2)}.PromptMark{color:var(--fg);opacity:.8;margin-right:var(--sp-2)}.BannerName{color:var(--fg);font-size:1.25rem;margin:0;line-height:1.3}.BannerLede{color:var(--fg-bright);font-size:var(--fs-body);margin:var(--sp-1) 0 var(--sp-4)}.BannerRows{display:grid;grid-template-columns:6.5rem 1fr;gap:var(--sp-2) var(--sp-3);margin:0 0 var(--sp-5);font-size:var(--fs-small);border-left:1px solid var(--fg-a30);padding-left:var(--sp-3)}.BannerRows dt{color:var(--fg);opacity:.55;letter-spacing:.06em;white-space:nowrap}.BannerRows dd{margin:0;color:var(--fg-bright);min-width:0}.BannerRows a{color:var(--fg-bright);text-decoration:underline;text-decoration-color:var(--fg-a40)}.BannerRows a:hover,.BannerRows a:focus-visible{color:var(--fg);text-decoration-color:var(--fg)}@media(max-width:620px){.BannerRows{grid-template-columns:1fr;gap:0;row-gap:var(--sp-1)}.BannerRows dt{margin-top:var(--sp-2);font-size:var(--fs-micro)}.BannerName{font-size:1.1rem}}.MediaHeader{margin:var(--sp-2) 0;font-size:var(--fs-small);letter-spacing:.08em;opacity:.8}.VideoEmbed{position:relative;width:100%;box-sizing:border-box;padding-bottom:56.25%;height:0;border:var(--border);background:var(--bg-inset)}.VideoEmbed iframe{position:absolute;inset:0;width:100%;height:100%}.Gallery{width:100%;box-sizing:border-box;border:var(--border);background-color:var(--bg-inset)}.GalleryViewport{position:relative;width:100%;aspect-ratio:16 / 9;overflow:hidden}.GalleryTrack{display:flex;height:100%;width:100%;transition:transform var(--t-slow)}.GallerySlide{flex:0 0 100%;height:100%;display:flex;align-items:center;justify-content:center}.GallerySlide img{max-width:100%;max-height:100%;width:auto;object-fit:contain;image-rendering:-webkit-optimize-contrast}.GalleryControls{display:flex;align-items:center;gap:var(--sp-2);border-top:1px solid var(--fg-a30);padding:var(--sp-1) var(--sp-2);position:relative;z-index:1}.GalleryNav{background:none;border:1px solid var(--fg-a40);color:var(--fg);min-width:28px;min-height:28px;font-size:var(--fs-small);line-height:1;cursor:pointer;padding:0;flex:none}.GalleryDots{display:flex;gap:var(--sp-1);list-style:none;margin:0;padding:0;flex:none}.GalleryDot{background:none;border:1px solid var(--fg-a40);color:var(--fg);min-width:28px;min-height:28px;font-size:var(--fs-micro);line-height:1;cursor:pointer;padding:0}.GalleryDot[aria-current=true]{background:var(--fg);color:var(--bg)}.GalleryNav:hover,.GalleryDot:hover{border-color:var(--fg);color:var(--fg-bright)}.GalleryNav:focus-visible,.GalleryDot:focus-visible{outline:2px solid var(--fg-bright);outline-offset:1px}.GalleryCaption{font-size:var(--fs-micro);color:var(--fg);opacity:.7;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}@media(max-width:560px){.GalleryCaption{display:none}}.SteamButton{display:block;border:var(--border);padding:var(--sp-3) var(--sp-4);color:var(--fg);text-decoration:none;transition:background var(--t-fast),color var(--t-fast),box-shadow var(--t-fast);margin-top:var(--sp-5);font-size:var(--fs-small);text-align:center;width:100%;box-sizing:border-box}.SteamButton:hover,.SteamButton:focus-visible{background:var(--fg);color:var(--bg);box-shadow:0 0 20px var(--fg-a40);outline:none}.Awards{border:1px solid var(--fg-a40);padding:var(--sp-2) var(--sp-3);margin:var(--sp-3) 0}.Awards ul{margin:0}.Awards li{font-size:var(--fs-small);color:var(--fg)}.CompactList{list-style:none;padding:0;margin:var(--sp-3) 0 0}.CompactEntry{border-top:var(--rule-dash);padding:var(--sp-3) 0;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2) var(--sp-3)}.CompactEntry .name{color:var(--fg);font-size:var(--fs-body)}.CompactEntry .tagline{color:var(--fg-bright);font-size:var(--fs-small);flex:1 1 14rem;min-width:0}.CompactEntry .facet{font-size:var(--fs-micro);color:var(--fg);opacity:.6;white-space:nowrap}.CompactEntry .note{flex-basis:100%;font-size:var(--fs-micro);color:var(--fg-bright);opacity:.75}.ProjectCard{display:block;border:1px solid var(--fg-a30);padding:var(--sp-3);margin-bottom:var(--sp-3);text-decoration:none;transition:border-color var(--t-fast),background var(--t-fast)}.ProjectCard:hover,.ProjectCard:focus-visible{border-color:var(--fg);background:var(--fg-a15);outline:none}.ProjectCard h2{margin:0 0 var(--sp-1)}.ProjectCard p{margin:0}.CodeBlock{background:var(--bg-inset);border:1px solid var(--fg-a30);padding:var(--sp-3);overflow-x:auto;font-size:var(--fs-small);color:var(--fg-bright);margin:var(--sp-3) 0;line-height:1.6}.SectionLabel{color:var(--fg);font-size:var(--fs-body);letter-spacing:.08em;margin-top:var(--sp-5);padding-bottom:var(--sp-1);border-bottom:1px solid var(--fg-a30)}.SectionLabel:first-child{margin-top:0}.Entry{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3) 0}.Entry+.Entry{border-top:var(--rule-dash)}.Entry>*{margin:0}.Entry>.StackRow{margin-top:var(--sp-2)}.EntryHead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--sp-2) var(--sp-3)}.EntryOrg{color:var(--fg);font-size:var(--fs-body)}.EntryOrg a{text-decoration:none}.EntryOrg a:hover,.EntryOrg a:focus-visible{color:var(--fg-bright);text-decoration:underline}.EntryDate{color:var(--fg);opacity:.65;font-size:var(--fs-micro);white-space:nowrap}.EntrySub{font-style:italic;color:var(--fg-bright);font-size:var(--fs-small)}.StackRow{font-size:var(--fs-micro);color:var(--fg);opacity:.8}.StackLabel{opacity:.65;margin-right:var(--sp-2)}.SkillList{display:grid;grid-template-columns:max-content 1fr;gap:var(--sp-2) var(--sp-3);margin:var(--sp-3) 0;font-size:var(--fs-small)}.SkillList dt{color:var(--fg);opacity:.65;white-space:nowrap}.SkillList dd{margin:0;color:var(--fg-bright)}@media(max-width:560px){.SkillList{grid-template-columns:1fr;gap:0 0}.SkillList dt{margin-top:var(--sp-2)}}.Entry>.LinkRow{margin:var(--sp-2) 0 0}.GithubFeed{max-width:var(--measure)}.FeedTotals{color:var(--fg);font-size:var(--fs-small);margin-bottom:var(--sp-4)}.RepoGroup{border-top:var(--rule-dash);padding:var(--sp-3) 0}.RepoHead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--sp-2)}.RepoName{color:var(--fg);font-size:var(--fs-body);text-decoration:none}.RepoName:hover,.RepoName:focus-visible{color:var(--fg-bright);text-decoration:underline}.RepoCounts{font-size:var(--fs-micro);color:var(--fg);opacity:.7;white-space:nowrap}.PrList{list-style:none;padding:0;margin:var(--sp-1) 0 0}.PrList li{display:flex;gap:var(--sp-2);align-items:baseline;padding:2px 0;min-width:0}.PrState{font-size:var(--fs-micro);white-space:nowrap;flex:none}.PrState--merged{color:var(--fg)}.PrState--open{color:var(--fg-bright)}.PrState--closed{color:var(--danger)}.PrLink{font-size:var(--fs-small);color:var(--fg-bright);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.PrLink:hover,.PrLink:focus-visible{color:var(--fg);text-decoration:underline}.Content{padding:var(--sp-5) 0}.TerminalContent--prose,.MarkdownContent{max-width:var(--measure-prose)}.PostTitle{font-size:1.6rem;line-height:1.3;color:var(--fg);margin:0 0 var(--sp-2)}.TerminalContent--prose .PostMeta{margin:0 0 var(--sp-5)}.MarkdownContent h1{font-size:1.5rem;color:var(--fg);margin:var(--sp-6) 0 var(--sp-3)}.MarkdownContent h2{font-size:1.3rem;color:var(--fg);margin:var(--sp-6) 0 var(--sp-3)}.MarkdownContent h3{font-size:1.1rem;color:var(--fg);margin:var(--sp-5) 0 var(--sp-2)}.MarkdownContent h4{font-size:.95rem;color:var(--fg);margin:var(--sp-4) 0 var(--sp-2)}.MarkdownContent>:first-child{margin-top:0}.MarkdownContent p{color:var(--fg-bright);font-size:var(--fs-body);line-height:1.75;margin:0 0 var(--sp-4)}.MarkdownContent ul,.MarkdownContent ol{margin:0 0 var(--sp-4);padding-left:var(--sp-4)}.MarkdownContent li{color:var(--fg-bright);font-size:var(--fs-body);line-height:1.75;margin-bottom:var(--sp-2)}.MarkdownContent a{color:var(--fg);text-decoration:underline}.MarkdownContent a:hover,.MarkdownContent a:focus-visible{color:var(--fg-bright)}.MarkdownContent code{background:var(--fg-a15);border:1px solid var(--fg-a30);padding:1px 4px;font-size:.85em;color:var(--fg)}.MarkdownContent pre{background:var(--bg-inset);border:1px solid var(--fg-a30);padding:var(--sp-3);overflow-x:auto;font-size:var(--fs-small);margin:0 0 var(--sp-4)}.MarkdownContent pre code{background:none;border:none;padding:0}.MarkdownContent blockquote{margin:var(--sp-4) 0;padding-left:var(--sp-3);border-left:var(--rule-dash);font-style:italic;color:var(--fg)}.MarkdownContent table{width:100%;border-collapse:collapse;font-size:var(--fs-small);margin:0 0 var(--sp-4);display:block;overflow-x:auto}.MarkdownContent th,.MarkdownContent td{border:1px solid var(--fg-a30);padding:var(--sp-1) var(--sp-2);text-align:left;color:var(--fg-bright)}.MarkdownContent th{color:var(--fg)}.MarkdownContent hr{border:0;border-top:var(--rule-dash);margin:var(--sp-5) 0}.TagPicker{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.TagPill{display:inline-block;font-family:inherit;font-size:var(--fs-micro);line-height:1.6;color:var(--fg);background:var(--fg-a15);border:1px solid var(--fg-a30);padding:1px 8px;text-decoration:none;cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.TagPill:hover,.TagPill:focus-visible{background:var(--fg-a30);color:var(--fg-bright)}.TagPill--active{background:var(--fg);color:var(--bg)}.TagPill--active:hover,.TagPill--active:focus-visible{background:var(--fg);color:var(--bg);opacity:.85}.PostCard{margin-bottom:var(--sp-5);border-bottom:var(--rule-dash);padding-bottom:var(--sp-4)}.PinBadge{display:inline-block;font-size:var(--fs-micro);letter-spacing:.05em;color:var(--fg);opacity:.7;margin-bottom:var(--sp-1)}.PostCard h2{font-size:1.3rem;margin:0 0 var(--sp-1)}.PostCard a{text-decoration:none}.PostCard a:hover h2,.PostCard a:focus-visible h2{color:var(--fg-bright)}.PostMeta{font-size:var(--fs-micro);opacity:.7}.PostExcerpt{color:var(--fg-bright);font-size:var(--fs-body);line-height:1.7;margin:var(--sp-2) 0 var(--sp-3)}.AdminGrid{display:flex;gap:var(--sp-5);align-items:flex-start}.AdminGrid>*{flex:1;min-width:0}.TerminalInput,.TerminalTextarea{width:100%;box-sizing:border-box;background:var(--bg-inset);border:1px solid var(--fg-a40);color:var(--fg);padding:var(--sp-2);font-size:var(--fs-small)}.TerminalInput:focus-visible,.TerminalTextarea:focus-visible{outline:2px solid var(--fg-bright);outline-offset:2px}.TerminalInput::placeholder,.TerminalTextarea::placeholder{color:var(--fg-a40)}.TerminalTextarea{min-height:24rem;resize:vertical;line-height:1.6}.TerminalTextarea--short{min-height:5rem}.AdminHint{font-size:var(--fs-micro);opacity:.7;margin:var(--sp-1) 0 0}.AdminHint--over{color:var(--danger);opacity:1}.AdminButton{background:transparent;border:var(--border);color:var(--fg);padding:var(--sp-2) var(--sp-3);cursor:pointer;font-size:var(--fs-small);transition:background var(--t-fast),color var(--t-fast)}.AdminButton:hover,.AdminButton:focus-visible{background:var(--fg);color:var(--bg)}.AdminButton--danger{border-color:var(--danger);color:var(--danger)}.AdminButton--danger:hover,.AdminButton--danger:focus-visible{background:var(--danger);color:var(--bg)}.AdminRow{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-3)}.EntryRow{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-2);border-bottom:1px solid var(--rule);padding:var(--sp-2) 0;font-size:var(--fs-small)}@media(max-width:900px){.AdminGrid{flex-direction:column}}
