.theme-controls[data-v-a85a6270]{position:fixed;top:10px;right:10px;z-index:9999;margin:0}.toggle-btn[data-v-a85a6270]{display:none}.dropdown[data-v-a85a6270]{display:flex;gap:8px;align-items:center;opacity:.3;transition:opacity .2s}.dropdown[data-v-a85a6270] *{margin-top:0}.dropdown[data-v-a85a6270]:hover{opacity:1}.dark-btn[data-v-a85a6270]{display:none}.colors[data-v-a85a6270]{display:flex;gap:6px;align-items:center}.dark-toggle[data-v-a85a6270]{background:none;border:none;font-size:14px;padding:0;color:var(--text-color);line-height:1}.dot[data-v-a85a6270]{width:8px;height:8px;border-radius:50%;border:none;padding:0;margin:0;vertical-align:middle;transition:transform .15s}.dot[data-v-a85a6270]:hover{transform:scale(1.4)}.dot.active[data-v-a85a6270]{outline:1.5px solid var(--text-color);outline-offset:2px}@media screen and (max-width: 600px){.theme-controls[data-v-a85a6270]{top:8px;right:8px}.toggle-btn[data-v-a85a6270]{display:flex;align-items:center;gap:4px;background:var(--background-color);border:1.5px solid var(--text-color);padding:6px 10px;font-size:14px;color:var(--text-color)}.arrow[data-v-a85a6270]{font-size:10px}.dropdown[data-v-a85a6270]{display:none;flex-direction:column;gap:8px;background:var(--background-color);border:1.5px solid var(--text-color);border-top:none;padding:10px;opacity:1}.theme-controls.open .dropdown[data-v-a85a6270]{display:flex}.dark-toggle[data-v-a85a6270]{display:none}.dark-btn[data-v-a85a6270]{display:block;background:none;border:1px solid var(--text-color);color:var(--text-color);padding:6px 12px;font-size:12px;width:100%}.colors[data-v-a85a6270]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.colors[data-v-a85a6270]:before{display:none}.dot[data-v-a85a6270]{width:20px;height:20px}.dot[data-v-a85a6270]:hover{transform:none}.dot.active[data-v-a85a6270]{outline-width:2px}}.mobile-header[data-v-e76806d6]{display:none}.mobile-header .title[data-v-e76806d6]{margin:0}.mobile-header .subtitle[data-v-e76806d6]{margin:0;color:var(--text-color-alt)}.mobile-header .meta[data-v-e76806d6]{margin:0;color:var(--text-color-alt);font-size:.875rem}.mobile-header .email[data-v-e76806d6]{display:block;margin:0;font-size:.875rem}.nav[data-v-e76806d6]{text-align:center;display:flex;justify-content:center;align-items:baseline;gap:1ch}.nav a[data-v-e76806d6]{margin:0}.nav a[data-v-e76806d6]:before{content:"["}.nav a[data-v-e76806d6]:after{content:"]"}@media screen and (max-width: 600px){.desktop-header[data-v-e76806d6]{display:none}.mobile-header[data-v-e76806d6]{display:block;margin-bottom:calc(var(--line-height) * 1.5)}.nav[data-v-e76806d6]{display:grid;grid-template-columns:repeat(3,auto);justify-content:center;gap:0 1ch;font-size:.875rem}}.edu[data-v-53b56775]{margin-bottom:calc(var(--line-height) * 2)}.edu-header[data-v-53b56775]{display:flex;justify-content:space-between;align-items:baseline;line-height:var(--line-height)}.edu-header[data-v-53b56775] *{margin:0}.date[data-v-53b56775]{color:var(--text-color-alt)}.edu pre[data-v-53b56775]{margin:0}.bullets[data-v-53b56775]{font-weight:var(--font-weight-normal);color:var(--text-color-alt)}.toggle[data-v-53b56775]{display:inline-block;margin-top:calc(var(--line-height) / 2);cursor:pointer;color:var(--text-color-alt)}.toggle[data-v-53b56775]:hover{color:var(--text-color)}@media screen and (max-width: 600px){.edu-header[data-v-53b56775]{flex-direction:column;gap:0}.edu-header strong[data-v-53b56775]{font-size:.9rem}.date[data-v-53b56775]{font-size:.8rem}.edu pre[data-v-53b56775]{font-size:.8rem;white-space:pre-wrap;word-break:break-word}.toggle[data-v-53b56775]{font-size:.8rem}}.job[data-v-8b6f356b]{margin-bottom:calc(var(--line-height) * 2);position:relative}.job-header[data-v-8b6f356b]{display:flex;justify-content:space-between;align-items:baseline;line-height:var(--line-height)}.job-header[data-v-8b6f356b] *{margin:0}.date[data-v-8b6f356b]{color:var(--text-color-alt)}.job pre[data-v-8b6f356b]{margin:0}.hl[data-v-8b6f356b]{color:var(--text-color)}.dim[data-v-8b6f356b]{color:var(--text-color-alt)}.toggle[data-v-8b6f356b]{display:inline-block;margin-top:calc(var(--line-height) / 2);cursor:pointer;color:var(--text-color-alt)}.toggle[data-v-8b6f356b]:hover{color:var(--text-color)}.tech[data-v-8b6f356b]{color:var(--text-color-alt);font-size:.875rem;margin-top:calc(var(--line-height) / 2)}@media screen and (max-width: 600px){.job-header[data-v-8b6f356b]{flex-direction:column;gap:0}.job-header strong[data-v-8b6f356b]{font-size:.9rem}.date[data-v-8b6f356b]{font-size:.8rem}.job pre[data-v-8b6f356b]{font-size:.75rem;white-space:pre-wrap;word-break:break-word}.tech[data-v-8b6f356b]{font-size:.7rem}.toggle[data-v-8b6f356b]{font-size:.8rem}}.preview-video{position:fixed;width:280px;max-width:40vw;pointer-events:none;z-index:1000;border:2px solid var(--text-color, #fff)}@media (hover: none) and (pointer: coarse){.preview-video{display:none!important}}pre[data-v-7936f80f]{margin:0;color:var(--text-color-alt)}.hl[data-v-7936f80f]{color:var(--text-color);font-weight:var(--font-weight-bold)}@media screen and (max-width: 600px){pre[data-v-7936f80f]{font-size:.8rem;white-space:pre-wrap;word-break:break-word}}pre[data-v-1b4914da]{margin:0}.hl[data-v-1b4914da]{color:var(--text-color)}.dim[data-v-1b4914da]{color:var(--text-color-alt)}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}:root{--font-family: "JetBrains Mono", monospace;--line-height: 1.2rem;--border-thickness: 2px;--text-color: #000;--text-color-alt: #666;--background-color: #fff;--background-color-alt: #eee;--font-weight-normal: 500;--font-weight-medium: 600;--font-weight-bold: 800;font-family:var(--font-family);font-optical-sizing:auto;font-weight:var(--font-weight-normal);font-style:normal;font-variant-numeric:tabular-nums lining-nums;font-size:16px}@media (prefers-color-scheme: dark){:root{--text-color: #fff;--text-color-alt: #aaa;--background-color: #000;--background-color-alt: #111}}*{box-sizing:border-box}*+*{margin-top:var(--line-height)}html{display:flex;width:100%;margin:0;padding:0;flex-direction:column;align-items:center;background:var(--background-color);color:var(--text-color)}body{position:relative;width:100%;margin:0;padding:var(--line-height) 2ch;padding-top:var(--line-height);max-width:min(80ch,round(down,100%,1ch));line-height:var(--line-height);overflow-x:hidden}@media screen and (max-width: 768px){body{padding:var(--line-height) 1.5ch}figure{margin:var(--line-height) 1ch}}@media screen and (max-width: 480px){:root{font-size:14px}body{padding:var(--line-height) 1ch}h1{font-size:1.5rem;line-height:calc(1.5 * var(--line-height))}figure{margin:var(--line-height) 0}pre{font-size:.8rem}details{padding:calc(var(--line-height) - var(--border-thickness)) .5ch}}@media (hover: none) and (pointer: coarse){*{cursor:auto!important}.cursor{display:none!important}}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-bold);margin:calc(var(--line-height) * 2) 0 var(--line-height);line-height:var(--line-height);color:var(--text-color)}h1{font-size:2rem;line-height:calc(2 * var(--line-height));margin-bottom:calc(var(--line-height) * 2);text-transform:uppercase}h2{font-size:1rem;text-transform:uppercase}hr{position:relative;display:block;height:var(--line-height);margin:calc(var(--line-height) * 1.5) 0;border:none;color:var(--text-color)}hr:after{display:block;content:"";position:absolute;top:calc(var(--line-height) / 2 - var(--border-thickness));left:0;width:100%;border-top:calc(var(--border-thickness) * 3) double var(--text-color);height:0}a{text-decoration:none}a:link,a:visited{color:var(--text-color)}a:hover{text-decoration:underline}p{margin-bottom:var(--line-height);word-break:break-word;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}strong{font-weight:var(--font-weight-bold)}em{font-style:italic}table{position:relative;top:calc(var(--line-height) / 2);width:round(down,100%,1ch);border-collapse:collapse;margin:0 0 calc(var(--line-height) * 2)}th,td{border:var(--border-thickness) solid var(--text-color);padding:calc((var(--line-height) / 2)) calc(1ch - var(--border-thickness) / 2) calc((var(--line-height) / 2) - (var(--border-thickness)));line-height:var(--line-height);vertical-align:top;text-align:left}table tbody tr:first-child>*{padding-top:calc((var(--line-height) / 2) - var(--border-thickness))}th{font-weight:700}.width-min{width:0%}.width-auto{width:100%}.header{margin-bottom:calc(var(--line-height) * 2)}.header h1{margin:0}.header tr td:last-child{text-align:right}ul,ol{padding:0;margin:0 0 var(--line-height)}ul{list-style-type:square;padding:0 0 0 2ch}ol{list-style-type:none;counter-reset:item;padding:0}ol ul,ol ol,ul ol,ul ul{padding:0 0 0 3ch;margin:0}ol li:before{content:counters(item,".") ". ";counter-increment:item;font-weight:var(--font-weight-medium)}li{margin:0;padding:0}li::marker{line-height:0}.tree,.tree ul{position:relative;padding-left:0;list-style-type:none;line-height:var(--line-height)}.tree ul{margin:0}.tree ul li{position:relative;padding-left:1.5ch;margin-left:1.5ch;border-left:var(--border-thickness) solid var(--text-color)}.tree ul li:before{position:absolute;display:block;top:calc(var(--line-height) / 2);left:0;content:"";width:1ch;border-bottom:var(--border-thickness) solid var(--text-color)}.tree ul li:last-child{border-left:none}.tree ul li:last-child:after{position:absolute;display:block;top:0;left:0;content:"";height:calc(var(--line-height) / 2);border-left:var(--border-thickness) solid var(--text-color)}pre{white-space:pre;overflow-x:auto;margin:var(--line-height) 0;overflow-y:hidden}figure pre{margin:0}pre,code{font-family:var(--font-family)}code{font-weight:var(--font-weight-medium)}figure{margin:calc(var(--line-height) * 2) 3ch;overflow-x:auto;overflow-y:hidden}figcaption{display:block;font-style:italic;margin-top:var(--line-height)}details{border:var(--border-thickness) solid var(--text-color);padding:calc(var(--line-height) - var(--border-thickness)) 1ch;margin-bottom:var(--line-height)}summary{font-weight:var(--font-weight-medium);cursor:pointer}details[open] summary{margin-bottom:var(--line-height)}details ::marker{display:inline-block;content:"▶";margin:0}details[open] ::marker{content:"▼"}details :last-child{margin-bottom:0}.grid{--grid-cells: 0;display:flex;gap:1ch;width:round(down,100%,(1ch * var(--grid-cells)) - (1ch * var(--grid-cells) - 1));margin-bottom:var(--line-height)}.grid>*,.grid>input{flex:0 0 round(down,(100% - (1ch * (var(--grid-cells) - 1))) / var(--grid-cells),1ch)}.grid:has(>:last-child:nth-child(1)){--grid-cells: 1}.grid:has(>:last-child:nth-child(2)){--grid-cells: 2}.grid:has(>:last-child:nth-child(3)){--grid-cells: 3}.grid:has(>:last-child:nth-child(4)){--grid-cells: 4}.grid:has(>:last-child:nth-child(5)){--grid-cells: 5}.grid:has(>:last-child:nth-child(6)){--grid-cells: 6}img,video{display:block;width:100%;object-fit:contain;overflow:hidden}img{font-style:italic;color:var(--text-color-alt)}*{cursor:none!important}.cursor{position:fixed;top:0;left:0;width:12px;height:12px;margin-left:-6px;margin-top:-6px;border:1.5px solid var(--text-color);border-radius:50%;pointer-events:none;z-index:99999;will-change:transform;transition:width .15s,height .15s,margin .15s,border-width .15s}.cursor:after{content:"";position:absolute;top:50%;left:50%;width:3px;height:3px;background:var(--text-color);border-radius:50%;transform:translate(-50%,-50%);transition:width .15s,height .15s}.cursor.hover{width:20px;height:20px;margin-left:-10px;margin-top:-10px;border-width:2px}.cursor.hover:after{width:4px;height:4px}html{scrollbar-width:thin;scrollbar-color:transparent transparent}html.is-scrolling{scrollbar-color:var(--text-color) transparent}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:transparent;border-radius:2px}html.is-scrolling::-webkit-scrollbar-thumb{background:var(--text-color)}
