h1{top:0;padding:0;margin:-1px;background-color:var(--h1-color-bg);color:var(--h1-color-text);font-family:satoshiBold;font-size:30px;justify-content:space-between;-webkit-touch-callout:none}h1,h1 span{display:flex}h1 span{justify-content:center;align-items:center;border-right:1px solid var(--border-color-2);padding:10px;padding-bottom:12px;flex-grow:1;flex-basis:0;cursor:default;width:6.25%;height:60px;overflow:hidden}h1 span.dotHover{color:#fff;transition:color 9s ease-in-out}h1 span.dotHover:hover{color:red}h1 span:not(.dotHover){color:#fff;transition:none}.directory,h2.info{border:1px solid var(--border-color)}.directory{display:flex;align-items:center;justify-content:center;padding:1vw;width:calc(100% + 2px);margin:-1px;margin-right:100px;background-color:var(--table-color-bg);color:var(--table-color-text);font-family:satoshiBold;font-size:18px;text-align:left}.bookmarks{display:flex;justify-content:space-between;width:30%}.bookmarks a{cursor:pointer;text-decoration:underline}@media (max-width:600px){.bookmarks{width:100%}h1{font-size:14px}h1 span{height:35px}.directory,h2{font-size:14px}td,th{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;hyphens:auto}}.color-palette[data-v-74969a66]{display:inline-flex}.primary-color[data-v-74969a66]{color:var(--secondary);background-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.secondary-color[data-v-74969a66]{color:var(--primary);background-color:var(--secondary)}.tetriary-color[data-v-74969a66]{color:var(--secondary);background-color:var(--tetriary)}.quaternary-color[data-v-74969a66]{color:var(--primary);background-color:var(--quaternary)}h2[data-v-74969a66]{padding:1vw;background-color:var(--h2-color-bg);color:var(--h2-color-text);font-family:satoshiBold;font-size:18px;text-align:left}.colophon-overlay[data-v-74969a66]{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000}.colophon-popup[data-v-74969a66]{background:#fff;max-width:500px;width:90%;box-shadow:0 4px 6px rgba(0,0,0,.1);position:relative}.colophon-content[data-v-74969a66]{font-family:satoshiRegular;font-size:14px;padding:1vw;padding-left:1vw}.close-btn[data-v-74969a66]{font-family:satoshiRegular;position:absolute;top:.5vw;right:1vw;color:#fff;background:transparent;border:none;font-size:24px;cursor:pointer}.close-btn[data-v-74969a66]:hover{background-color:#fff;color:var(--secondary)}footer[data-v-2800c26a]{position:relative;z-index:1;background-color:var(--footer-color-bg);color:var(--footer-color-text);width:calc(100% + 2px);margin:-1px;padding:.5vw;padding-left:15px;padding-right:15px;border:1px solid var(--border-color);font-family:satoshiRegular;font-size:14px}.footer-content[data-v-2800c26a]{display:flex;justify-content:space-between;align-items:center}.footer-left a[data-v-2800c26a]{margin-right:15px;color:var(--footer-color-text);text-decoration:underline;font-size:14px}.footer-left a[data-v-2800c26a]:hover{background:var(--hover-color-bg);color:var(--hover-color-text)}.footer-right[data-v-2800c26a]{text-align:right}.footer-right a[data-v-2800c26a]{margin-right:10px;color:var(--footer-color-text);text-decoration:underline;cursor:pointer}.footer-right a[data-v-2800c26a]:hover{background:var(--hover-color-bg);color:var(--hover-color-text)}@media (max-width:600px){.footer-content[data-v-2800c26a],.footer-left a[data-v-2800c26a]{font-size:10px}}.navbar-container[data-v-3c576222]{position:sticky;top:0;padding:0;width:100%;z-index:1000}.footer-container[data-v-3c576222]{position:sticky;z-index:1000;bottom:0;width:100%}b[data-v-b7c087f4]{font-family:satoshiBold}td[data-v-b7c087f4]:last-child,th[data-v-b7c087f4]:last-child{width:50%}tr[data-v-b7c087f4]:not(.exclude):not(.clicked-row):nth-child(odd){background-color:var(--every-other-bg-color)}.clicked-row td[data-v-b7c087f4]:first-child,.clicked-row td[data-v-b7c087f4]:not(:first-child):not(:last-child),tr:not(.exclude):not(:has(th)):hover td[data-v-b7c087f4]:first-child:not(.expandable-row),tr:not(.exclude):not(:has(th)):hover td[data-v-b7c087f4]:not(:first-child):not(:last-child):not(.expandable-row){border-right-color:var(--body-color)}.clicked-row td[data-v-b7c087f4]:nth-child(2),tr:not(.exclude):not(:has(th)):hover td[data-v-b7c087f4]:nth-child(2):not(.expandable-row){border-left-color:var(--border-color)}tr:not(.exclude):not(.expandable-row):hover td[data-v-b7c087f4]{border-bottom-color:var(--border-color-2)}.clicked-row[data-v-b7c087f4],tr[data-v-b7c087f4]:not(.exclude):not(:has(th)):hover:not(.expandable-row){background-color:var(--hover-color-bg);color:var(--hover-color-text);cursor:pointer}tr.expanded[data-v-b7c087f4]{padding-bottom:50px}td[data-v-b7c087f4]{font-family:satoshiRegular;font-size:14px;padding:.5vw;padding-left:1vw}.expandable-row:hover td[data-v-b7c087f4]{border:1px solid var(--border-color);border-right:none}td[data-v-b7c087f4],th[data-v-b7c087f4]{border:1px solid var(--border-color)}.expandable-row>td[data-v-b7c087f4]{padding:0;margin:0}.expandable-row[data-v-b7c087f4]{max-height:600px;overflow-y:auto;overflow-x:hidden}.expandable-row td[data-v-b7c087f4]{vertical-align:top}.expanded-content[data-v-b7c087f4]{background-color:var(--table-color-bg);color:var(--table-color-text);padding:20px;max-height:67vh;overflow:-moz-scrollbars-vertical;overflow-y:scroll;overflow-x:hidden;display:grid;grid-template-columns:1fr 1fr;gap:20px}.clicked-row a[data-v-b7c087f4],.clicked-row[data-v-b7c087f4],.project-row:hover a[data-v-b7c087f4],.project-row[data-v-b7c087f4]:hover{background-color:var(--hover-color-bg);color:var(--hover-color-text)}.project-image[data-v-b7c087f4],iframe[data-v-b7c087f4],img[data-v-b7c087f4]{width:100%;align-self:center;align-items:left}.project-text[data-v-b7c087f4]{font-family:satoshiRegular;font-size:14px;padding:.5vw;padding-left:1vw}.view-project-button[data-v-b7c087f4]{cursor:pointer;padding:0 .2vw;color:var(--h2-color-text);background-color:var(--h2-color-bg);font-family:satoshiRegular;font-size:14px;text-decoration:underline;border:none}.view-project-button[data-v-b7c087f4]:hover{color:#000;background-color:var(--h2-color-text)}.iframe-container[data-v-b7c087f4],img[data-v-b7c087f4]{border:1px solid var(--border-color-2)}.iframe-container[data-v-b7c087f4]{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.iframe-container iframe[data-v-b7c087f4]{position:absolute;top:0;left:0;width:100%;height:100%}.video-container[data-v-b7c087f4]{width:100%;border:1px solid var(--border-color-2)}.project-video[data-v-b7c087f4]{width:100%;height:auto;display:block}.caption[data-v-b7c087f4]{font-family:satoshiItalic;font-size:12px;text-align:left}@media (max-width:600px){.expanded-content[data-v-b7c087f4]{max-height:400px;grid-template-columns:1fr}h2[data-v-b7c087f4]{font-size:14px}.caption[data-v-b7c087f4],.project-text[data-v-b7c087f4],td[data-v-b7c087f4],th[data-v-b7c087f4]{font-size:8px}td[data-v-b7c087f4],th[data-v-b7c087f4]{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;hyphens:auto}}h2[data-v-65586573]{padding:1vw;margin-top:1px;background-color:var(--h2-color-bg);color:var(--h2-color-text);font-family:satoshiBold;font-size:18px;text-align:left}table[data-v-65586573]{background-color:var(--table-color-bg);color:var(--table-color-text);width:calc(100% + 2px);border-collapse:collapse;margin:-1px;table-layout:fixed}th[data-v-65586573]{text-align:left;font-family:satoshiBold;font-size:16px;padding:.5vw;padding-left:1vw}td[data-v-65586573]:last-child,th[data-v-65586573]:last-child{width:50%}.clicked-row td[data-v-65586573]:first-child,.clicked-row td[data-v-65586573]:not(:first-child):not(:last-child),tr:not(.exclude):not(:has(th)):hover td[data-v-65586573]:first-child:not(.expandable-row),tr:not(.exclude):not(:has(th)):hover td[data-v-65586573]:not(:first-child):not(:last-child):not(.expandable-row){border-right-color:var(--body-color)}.clicked-row td[data-v-65586573]:nth-child(2),tr:not(.exclude):not(:has(th)):hover td[data-v-65586573]:nth-child(2):not(.expandable-row){border-left-color:var(--border-color)}tr:not(.exclude):not(.expandable-row):hover td[data-v-65586573]{border-bottom-color:var(--border-color-2)}.clicked-row[data-v-65586573],tr[data-v-65586573]:not(.exclude):not(:has(th)):hover:not(.expandable-row){background-color:var(--hover-color-bg);color:var(--hover-color-text);cursor:pointer}tr.expanded[data-v-65586573]{padding-bottom:50px}td[data-v-65586573]{font-family:satoshiRegular;font-size:14px;padding:.5vw;padding-left:1vw}.expandable-row:hover td[data-v-65586573]{border:1px solid var(--border-color);border-right:none}td[data-v-65586573],th[data-v-65586573]{border:1px solid var(--border-color)}.expandable-row>td[data-v-65586573]{padding:0;margin:0}.expandable-row[data-v-65586573]{max-height:600px;overflow-y:auto;overflow-x:hidden}.expandable-row td[data-v-65586573]{vertical-align:top}.expanded-content[data-v-65586573]{padding:20px;max-height:67vh;overflow:-moz-scrollbars-vertical;overflow-y:scroll;overflow-x:hidden;display:grid;grid-template-columns:1fr 1fr;gap:20px}.clicked-row a[data-v-65586573],.clicked-row[data-v-65586573],.project-row:hover a[data-v-65586573],.project-row[data-v-65586573]:hover{background-color:var(--hover-color-bg);color:var(--hover-color-text)}@media (max-width:600px){.expanded-content[data-v-65586573]{max-height:400px;grid-template-columns:1fr}h2[data-v-65586573]{font-size:14px}.caption[data-v-65586573],.project-text[data-v-65586573],td[data-v-65586573],th[data-v-65586573]{font-size:10px}td[data-v-65586573],th[data-v-65586573]{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;hyphens:auto}}b[data-v-ed6ffa32]{font-family:satoshiBold}td[data-v-ed6ffa32]:last-child,th[data-v-ed6ffa32]:last-child{width:50%}tr[data-v-ed6ffa32]:not(.exclude):not(.clicked-row):nth-child(odd){background-color:var(--every-other-bg-color)}.clicked-row td[data-v-ed6ffa32]:first-child,.clicked-row td[data-v-ed6ffa32]:not(:first-child):not(:last-child),tr:not(.exclude):not(:has(th)):hover td[data-v-ed6ffa32]:first-child:not(.expandable-row),tr:not(.exclude):not(:has(th)):hover td[data-v-ed6ffa32]:not(:first-child):not(:last-child):not(.expandable-row){border-right-color:var(--body-color)}.clicked-row td[data-v-ed6ffa32]:nth-child(2),tr:not(.exclude):not(:has(th)):hover td[data-v-ed6ffa32]:nth-child(2):not(.expandable-row){border-left-color:var(--border-color)}tr:not(.exclude):not(.expandable-row):hover td[data-v-ed6ffa32]{border-bottom-color:var(--border-color-2)}.clicked-row[data-v-ed6ffa32],tr[data-v-ed6ffa32]:not(.exclude):not(:has(th)):hover:not(.expandable-row){background-color:var(--hover-color-bg);color:var(--hover-color-text);cursor:pointer}tr.expanded[data-v-ed6ffa32]{padding-bottom:50px}td[data-v-ed6ffa32]{font-family:satoshiRegular;font-size:14px;padding:.5vw;padding-left:1vw}.expandable-row:hover td[data-v-ed6ffa32]{border:1px solid var(--border-color);border-right:none}td[data-v-ed6ffa32],th[data-v-ed6ffa32]{border:1px solid var(--border-color)}.expandable-row>td[data-v-ed6ffa32]{padding:0;margin:0}.expandable-row[data-v-ed6ffa32]{max-height:600px;overflow-y:auto;overflow-x:hidden}.expandable-row td[data-v-ed6ffa32]{vertical-align:top}.expanded-content[data-v-ed6ffa32]{background-color:var(--table-color-bg);color:var(--table-color-text);padding:20px;max-height:67vh;overflow:-moz-scrollbars-vertical;overflow-y:scroll;overflow-x:hidden;display:grid;grid-template-columns:1fr 1fr;gap:20px}.clicked-row[data-v-ed6ffa32],.project-row[data-v-ed6ffa32]:hover{background-color:var(--hover-color-bg);color:var (--hover-color-text)}.clicked-row a[data-v-ed6ffa32],.project-row:hover a[data-v-ed6ffa32]{background-color:var(--hover-color-bg);color:var(--hover-color-text)}.project-image[data-v-ed6ffa32],iframe[data-v-ed6ffa32],img[data-v-ed6ffa32]{width:100%;align-self:center;align-items:left}.project-text[data-v-ed6ffa32]{font-family:satoshiRegular;font-size:14px;padding:.5vw;padding-left:1vw}.iframe-container[data-v-ed6ffa32],img[data-v-ed6ffa32]{border:1px solid var(--border-color-2)}.iframe-container[data-v-ed6ffa32]{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.iframe-container iframe[data-v-ed6ffa32]{position:absolute;top:0;left:0;width:100%;height:100%}.video-container[data-v-ed6ffa32]{width:100%;border:1px solid var(--border-color-2)}.project-video[data-v-ed6ffa32]{width:100%;height:auto;display:block}.caption[data-v-ed6ffa32]{font-family:satoshiItalic;font-size:12px;text-align:left}@media (max-width:600px){.expanded-content[data-v-ed6ffa32]{max-height:400px;grid-template-columns:1fr}.caption[data-v-ed6ffa32],.project-text[data-v-ed6ffa32],td[data-v-ed6ffa32],th[data-v-ed6ffa32]{font-size:10px}td[data-v-ed6ffa32],th[data-v-ed6ffa32]{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;hyphens:auto}}h2[data-v-195644ae]{padding:1vw;margin-top:1px;background-color:var(--h2-color-bg);color:var(--h2-color-text);font-family:satoshiBold;font-size:18px;text-align:left}table[data-v-195644ae]{background-color:var(--table-color-bg);color:var(--table-color-text);width:calc(100% + 2px);border-collapse:collapse;margin:-1px;table-layout:fixed}th[data-v-195644ae]{text-align:left;font-family:satoshiBold;font-size:16px;padding:.5vw;padding-left:1vw}td[data-v-195644ae]:last-child,th[data-v-195644ae]:last-child{width:50%}.clicked-row td[data-v-195644ae]:first-child,.clicked-row td[data-v-195644ae]:not(:first-child):not(:last-child),tr:not(.exclude):not(:has(th)):hover td[data-v-195644ae]:first-child:not(.expandable-row),tr:not(.exclude):not(:has(th)):hover td[data-v-195644ae]:not(:first-child):not(:last-child):not(.expandable-row){border-right-color:var(--body-color)}.clicked-row td[data-v-195644ae]:nth-child(2),tr:not(.exclude):not(:has(th)):hover td[data-v-195644ae]:nth-child(2):not(.expandable-row){border-left-color:var(--border-color)}tr:not(.exclude):not(.expandable-row):hover td[data-v-195644ae]{border-bottom-color:var(--border-color-2)}.clicked-row[data-v-195644ae],tr[data-v-195644ae]:not(.exclude):not(:has(th)):hover:not(.expandable-row){background-color:var(--hover-color-bg);color:var(--hover-color-text);cursor:pointer}tr.expanded[data-v-195644ae]{padding-bottom:50px}td[data-v-195644ae]{font-family:satoshiRegular;font-size:14px;padding:.5vw;padding-left:1vw}.expandable-row:hover td[data-v-195644ae]{border:1px solid var(--border-color);border-right:none}td[data-v-195644ae],th[data-v-195644ae]{border:1px solid var(--border-color)}.expandable-row>td[data-v-195644ae]{padding:0;margin:0}.expandable-row[data-v-195644ae]{max-height:600px;overflow-y:auto;overflow-x:hidden}.expandable-row td[data-v-195644ae]{vertical-align:top}.expanded-content[data-v-195644ae]{padding:20px;max-height:67vh;overflow:-moz-scrollbars-vertical;overflow-y:scroll;overflow-x:hidden;display:grid;grid-template-columns:1fr 1fr;gap:20px}.clicked-row a[data-v-195644ae],.clicked-row[data-v-195644ae],.project-row:hover a[data-v-195644ae],.project-row[data-v-195644ae]:hover{background-color:var(--hover-color-bg);color:var(--hover-color-text)}@media (max-width:600px){.expanded-content[data-v-195644ae]{max-height:400px;grid-template-columns:1fr}h2[data-v-195644ae]{font-size:14px}.caption[data-v-195644ae],.project-text[data-v-195644ae],td[data-v-195644ae],th[data-v-195644ae]{font-size:10px}td[data-v-195644ae],th[data-v-195644ae]{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;hyphens:auto}}h2[data-v-0b11fdc2]{padding:1vw;margin-top:1px;background-color:var(--h2-color-bg);color:var(--h2-color-text);font-family:satoshiBold;font-size:18px;text-align:left}h2.about[data-v-0b11fdc2]{border:1px solid var(--border-color)}.text-overlay .project-text a[data-v-0b11fdc2]{font-size:16px;color:var(--primary)}.about-me[data-v-0b11fdc2]{position:relative;background-color:var(--table-color-bg);color:var(--table-color-text);display:flex;justify-content:center;align-items:center}.background-container[data-v-0b11fdc2]{position:relative;width:100%;height:100%;min-height:80vh;background-image:url(/img/layers-on-layers.c9e5ab82.gif);background-size:cover;background-position:50%;background-repeat:no-repeat}.text-overlay[data-v-0b11fdc2]{position:absolute;top:10%;left:5%;width:33%;color:#fff}.project-text[data-v-0b11fdc2]{font-family:satoshiRegular;font-size:16px;line-height:1.5}.resume-download a[data-v-0b11fdc2]{font-family:satoshiRegular;font-size:16px;text-decoration:none;background-color:var(--secondary);color:var(--primary)}.resume-download a[data-v-0b11fdc2]:hover{background-color:var(--primary);color:var(--secondary)}@media (max-width:600px){h2[data-v-0b11fdc2]{font-size:14px}.project-text[data-v-0b11fdc2],.resume-download a[data-v-0b11fdc2],.text-overlay .project-text a[data-v-0b11fdc2]{font-size:12px}.text-overlay[data-v-0b11fdc2]{width:90%}.background-container[data-v-0b11fdc2]{max-height:50vh}}@font-face{font-family:satoshiRegular;src:url(/fonts/Satoshi-Regular.333ab73b.otf)}@font-face{font-family:satoshiItalic;src:url(/fonts/Satoshi-Italic.bdca3e81.otf)}@font-face{font-family:satoshiBold;src:url(/fonts/Satoshi-Bold.04ca08d0.otf)}@font-face{font-family:satoshiBlack;src:url(/fonts/Satoshi-Black.685a86e3.otf)}@font-face{font-family:satoshiLight;src:url(/fonts/Satoshi-Light.54d173f1.otf)}@font-face{font-family:satoshiLightItalic;src:url(/fonts/Satoshi-LightItalic.07e19355.otf)}*{margin:0;box-sizing:border-box;padding:0}:root{--primary:#fff;--secondary:#1b1b1b;--tetriary:#cfcfcf;--quaternary:#00f;--body-color-bg:var(--primary);--body-color-text:var(--sedondary);--border-color:var(--secondary);--border-color-2:var(--primary);--h1-color-bg:var(--secondary);--h1-color-text:var(--primary);--h2-color-bg:var(--secondary);--h2-color-text:var(--primary);--table-color-bg:var(--primary);--table-color-text:var(--secondary);--every-other-bg-color:var(--tetriary);--footer-color-bg:var(--primary);--footer-color-text:var(--secondary);--hover-color-bg:var(--secondary);--hover-color-text:var(--primary);--hilight-color-bg:var(--quaternary);--hilight-color-text:var(--primary)}body{overscroll-behavior-y:none;margin:0;overflow-x:hidden}a{color:var(--table-color-text)}a:hover{color:var(--hover-color-text);background-color:var(--hover-color-bg);cursor:pointer}.clicked-row,.project-row:hover{background-color:var(--hover-color-bg);color:var (--hover-color-text)}.clicked-row a,.project-row:hover a{background-color:var(--hover-color-bg);color:var(--hover-color-text)}::selection{color:var(--hilight-color-text);background-color:var(--hilight-color-bg)}::-webkit-selection{color:var(--hilight-color-text);background-color:var(--hilight-color-bg)}::-moz-selection{color:var(--hilight-color-text);background-color:var(--hilight-color-bg)}