:root{--text:#14232a;--muted:#3c5058;--link:#0b3a8a;--card:#ffffff4d;--tint:#00000012;--column:42rem}html{font-size:118.75%}@media screen and (width<=600px){html{font-size:106.25%}}html,body{height:100%;margin:0}body{color:var(--text);-webkit-text-size-adjust:100%;font-family:Charter,Bitstream Charter,Iowan Old Style,Sitka Text,Cambria,Georgia,serif;line-height:1.6}a{color:var(--link);text-underline-offset:.15em}div.sidebarcontainer{min-height:100%;display:flex}div.sidebar{background-color:#000;flex-direction:column;flex-shrink:0;width:15%;display:flex}@media screen and (width<=800px){div.sidebar{display:none}}div.pagecontent{background-color:#366c7c87;flex:1;min-width:0;padding:0 1.25rem}div.pagecontent div{border-radius:10px}main,.site-nav{max-width:var(--column);margin:0 auto}main.home{max-width:58rem}main img,main video{max-width:100%}main img:not([height]),main video:not([height]){height:auto}h1,h2,h3,h4{margin:1.8em 0 .5em;line-height:1.25}h1{font-size:2.1rem}h2{font-size:1.55rem}h3{font-size:1.25rem}p,ul,ol{margin:0 0 1em}li+li{margin-top:.25em}hr{border:none;border-top:1px solid #0003;margin:2em 0}blockquote{color:var(--muted);border-left:4px solid #00000040;margin:1.2em 0;padding:.2em 1em}code{background:var(--tint);border-radius:4px;padding:.1em .35em;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.82em}pre{border-radius:10px;margin:1.2em 0;padding:1em 1.2em;font-size:.95rem;line-height:1.5;overflow-x:auto}pre code{background:0 0;padding:0;font-size:.82em}table{border-collapse:collapse;margin:1.2em auto;font-size:.9em}th,td{padding:.4em .7em}.katex-display{padding:.2em 0;overflow:auto hidden}.main-title{text-align:center;margin:.6em 0 .5em;font-size:clamp(1.8rem,5vw,3rem)}.site-nav{padding:1rem 0 0;font-size:1.05rem}.site-nav a{font-weight:700;text-decoration:none}.site-nav a:hover{text-decoration:underline}.post-header{border-bottom:1px solid #0003;margin:1.5rem 0 2rem;padding-bottom:1.2rem}.post-header h1{margin:0 0 .3em}.post-header time{color:var(--muted);font-size:.95rem}footer{border-top:1px solid #0003;margin-top:3rem}.footer{text-align:center;padding:2.5rem 1rem}.hero-photos{grid-template-columns:repeat(2,minmax(0,300px));justify-content:center;gap:1.5rem;display:grid}.hero-photos img{aspect-ratio:3/4;object-fit:cover;border-radius:14px;width:100%}.home-nav{justify-content:center;gap:.75rem;margin:1.5rem 0 0;display:flex}.home-nav a,.card-links a{background:var(--tint);border-radius:999px;padding:.15em .8em;text-decoration:none}.home-nav a:hover,.card-links a:hover{background:#00000024}.section-title{border-bottom:2px solid #00000040;margin:2em 0 .6em;padding-bottom:.2em;font-size:1.55rem;font-weight:700}.card{background:var(--card);border-radius:14px;align-items:start;gap:1.25rem;margin:1rem 0;padding:1.1rem 1.4rem;display:grid}@media screen and (width>=1100px){.card:has(.card-media){grid-template-columns:minmax(0,1fr) minmax(0,300px)}}.card-title{margin:0;font-size:1.25rem}.card-title a{color:inherit;text-decoration:none}.card-title a:hover{text-decoration:underline}.card-year{color:var(--muted);white-space:nowrap;margin-left:.4em;font-size:.75em;font-weight:400}.card-links{flex-wrap:wrap;gap:.4rem;margin-top:.4rem;font-size:.8rem;display:flex}.card-blurb{margin-top:.6rem}.card-blurb p:last-child{margin-bottom:0}.card-media{flex-direction:column;justify-self:center;gap:.5rem;max-width:420px;margin:0;display:flex}.card-media img,.card-media video{border-radius:8px;width:100%;display:block}.card-media figcaption,div.video-description,div.video-box>p{color:var(--muted);font-size:.8rem;line-height:1.45}div.proj-box{padding:10px 0}div.proj-box-inner{background-color:var(--card);padding:1rem 1.25rem}div.video-container,div.video-box{flex-flow:column;justify-content:center;align-items:center;display:flex}div.video-container{margin:1.5em 0}div.video-box{background-color:#acbabf;width:min-content;padding:10px}.resizing-media img,.resizing-media,.resizing-media video{width:auto;max-width:clamp(20px,85vw,560px)}div.video-description{width:80%;padding:10px}div.video-box>p{margin:.4em 0 0}.column{flex-flow:wrap;justify-content:space-evenly;display:flex}.code-verbatim{color:#90ee90;background-color:#000;font-family:monospace;font-size:small;font-style:normal}.rainbow-text-animated{background:linear-gradient(90deg,red,orange,#ff0,green,#00f,purple);color:#0000;background-size:400% 100%;-webkit-background-clip:text;background-clip:text;animation:4s linear infinite rainbow-animation}@keyframes rainbow-animation{0%,to{background-position:0 0}50%{background-position:100% 0}}div.rainbow{--angle:0deg;border:10px solid;border-image:conic-gradient(from var(--angle), red, yellow, lime, aqua, blue, magenta, red) 1;animation:10s linear infinite rotate}.bouncingText span{animation:.9s infinite alternate bounce;display:inline-block;position:relative;top:10px}@keyframes bounce{to{top:-10px}}.bouncingText span:nth-child(2){animation-delay:.1s}.bouncingText span:nth-child(3){animation-delay:.2s}.bouncingText span:nth-child(4){animation-delay:.3s}.bouncingText span:nth-child(5){animation-delay:.4s}.bouncingText span:nth-child(6){animation-delay:.5s}.bouncingText span:nth-child(7){animation-delay:.6s}.bouncingText span:nth-child(8){animation-delay:.7s}.bouncingText span:nth-child(9){animation-delay:.8s}.bouncingText span:nth-child(10){animation-delay:.9s}.bouncingText span:nth-child(11){animation-delay:1s}.bouncingText span:nth-child(12){animation-delay:1.1s}
