@import"https://fonts.googleapis.com/css2?family=Montserrat:wght@100&display=swap";@import"https://fonts.googleapis.com/css2?family=Inconsolata:wdth,wght@87.5,200..900&family=Nanum+Gothic+Coding&display=swap";body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@font-face{font-family:bit;src:url(/assets/basis33-DugSl8Fb.otf) format("opentype")}@font-face{font-family:RobotoSlab;src:url(/assets/RobotoSlab-lsYfCJE0.ttf) format("opentype")}:root{--color-primary: white;--color-secondary: #7288a2;--color-background: #282c34;--color-background-dark: #0F0F0C}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}.Hills{width:100%;left:0;bottom:0;margin-left:0;padding-left:0;pointer-events:none;vertical-align:bottom}.House{position:absolute;z-index:2}.App-header{background-color:var(--color-background);min-height:100vh;font-size:calc(10px + 2vmin)}.App-link{color:#61dafb}[role=menu]{font-size:15px;color:var(--color-background)}.Appbar-Common{height:5vh;position:fixed;float:top;width:100%;text-align:left}.Appbar{background-color:#5e687a;font-family:Montserrat,sans-serif;z-index:4}.Appbar-Common>button{cursor:pointer;border:0px;background-color:transparent;height:100%;min-width:10%}.Appbar>button{font-size:1em;font-family:Montserrat,sans-serif}.Appbar>button:hover{background-color:var(--color-background-dark)!important}.Appbar>[aria-selected=true]{border-bottom:solid var(--color-background-dark)}.App-content{min-height:50vh;align-items:center;justify-content:center;vertical-align:center;display:flex;flex-direction:column;font-family:Montserrat,sans-serif}.Project-Panel{display:flex;flex-direction:column}.Project-Row{display:flex;margin-bottom:50px}.Projects>p{font-size:24px;margin-left:50px;margin-right:50px}.Sun{height:50px;width:50px;top:50px;position:absolute;background-color:#e0b834;border-radius:50%;display:inline-block;z-index:0}.Moon{height:25px;width:25px;top:50px;position:absolute;background-color:#bbb;border-radius:50%;display:inline-block;z-index:0}.Dropdown-Common{position:absolute;width:56;z-index:6;border-radius:50;transform-origin:top left;border-top-width:1px;border-bottom-width:0px;border-color:#f3f4f6;border-radius:.375rem;filter:drop-shadow(0 10px 8px rgb(0 0 0 / .04)) drop-shadow(0 4px 3px rgb(0 0 0 / .1));--tw-ring-color: rgb(0 0 0);box-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.Dropdown{font-family:Montserrat,sans-serif}.DropdownItem{padding:.25rem;position:relative;z-index:6}.DropdownItem>a{text-decoration:none}.mainfont{font-family:Montserrat,sans-serif}.bitfont{font-family:bit!important}.astext{background:none;border:none;margin:0;padding:0;cursor:pointer}.image-box{position:relative;overflow:hidden;display:flex;justify-content:center}.image-box img{max-width:100%;transition:all .3s;display:block;width:100%;height:auto;border-radius:20px;transform:scale(1)}.image-box:hover img{transform:scale(1.1)}.example-text{font-size:calc(9px + 1vmin);margin:0;font-weight:700}.bounce{animation-name:bounce;animation-duration:2s;animation-iteration-count:infinite}@keyframes bounce{0%{transform:translateY(0)}50%{transform:translateY(-10px)}to{transform:translateY(0)}}.pulse-text{opacity:.25;animation:pulse 2s linear alternate infinite}@keyframes pulse{to{opacity:1}}.HomeContainer{align-content:center;justify-content:center;display:flex}.HomeContainerContent{height:100vh;width:100vw;margin-left:50;margin-right:50;z-index:3}.stars{position:fixed;top:0;left:0;width:100%;height:120%;transform:rotate(-45deg)}.star{--star-color: var(--primary-color);--star-tail-length: 6em;--star-tail-height: 2px;--star-width: calc(var(--star-tail-length) / 6);--fall-duration: 9s;--tail-fade-duration: var(--fall-duration);position:absolute;top:var(--top-offset);left:0;width:var(--star-tail-length);height:var(--star-tail-height);color:var(--star-color);background:linear-gradient(45deg,currentColor,transparent);border-radius:50%;filter:drop-shadow(0 0 6px currentColor);transform:translate3d(104em,0,0);animation:fall var(--fall-duration) var(--fall-delay) linear infinite,tail-fade var(--tail-fade-duration) var(--fall-delay) ease-out infinite}@media screen and (max-width: 750px){.star{animation:fall var(--fall-duration) var(--fall-delay) linear infinite}}.star:nth-child(1){--star-tail-length: 6.53em;--top-offset: 39.51vh;--fall-duration: 10.645s;--fall-delay: 8.869s}.star:nth-child(2){--star-tail-length: 5.76em;--top-offset: 98.63vh;--fall-duration: 7.212s;--fall-delay: 9.651s}.star:nth-child(3){--star-tail-length: 5.07em;--top-offset: 45.82vh;--fall-duration: 6.152s;--fall-delay: .508s}.star:nth-child(4){--star-tail-length: 5.06em;--top-offset: 32.99vh;--fall-duration: 11.32s;--fall-delay: 5.004s}.star:nth-child(5){--star-tail-length: 5.38em;--top-offset: 25.84vh;--fall-duration: 10.858s;--fall-delay: 7.033s}.star:nth-child(6){--star-tail-length: 5.73em;--top-offset: 22.06vh;--fall-duration: 10.229s;--fall-delay: 7.509s}.star:nth-child(7){--star-tail-length: 6.91em;--top-offset: 47.25vh;--fall-duration: 10.504s;--fall-delay: 3.091s}.star:nth-child(8){--star-tail-length: 6.34em;--top-offset: 85.75vh;--fall-duration: 8.778s;--fall-delay: 3.997s}.star:nth-child(9){--star-tail-length: 7.28em;--top-offset: 8.29vh;--fall-duration: 7.708s;--fall-delay: 2.616s}.star:nth-child(10){--star-tail-length: 6.88em;--top-offset: 13.31vh;--fall-duration: 6.516s;--fall-delay: .325s}.star:nth-child(11){--star-tail-length: 5.64em;--top-offset: 33.83vh;--fall-duration: 10.299s;--fall-delay: 7.216s}.star:nth-child(12){--star-tail-length: 6.28em;--top-offset: 35.77vh;--fall-duration: 11.124s;--fall-delay: 8.018s}.star:nth-child(13){--star-tail-length: 7.49em;--top-offset: 66.92vh;--fall-duration: 9.509s;--fall-delay: 7.475s}.star:nth-child(14){--star-tail-length: 6.25em;--top-offset: 66.36vh;--fall-duration: 8.678s;--fall-delay: 5.124s}.star:nth-child(15){--star-tail-length: 6.58em;--top-offset: 33.62vh;--fall-duration: 9.159s;--fall-delay: 9.548s}.star:nth-child(16){--star-tail-length: 5.99em;--top-offset: .71vh;--fall-duration: 11.442s;--fall-delay: 3.724s}.star:nth-child(17){--star-tail-length: 6.7em;--top-offset: 69.13vh;--fall-duration: 7.462s;--fall-delay: 5.606s}.star:nth-child(18){--star-tail-length: 7.03em;--top-offset: 72.82vh;--fall-duration: 10.239s;--fall-delay: 2.11s}.star:nth-child(19){--star-tail-length: 5.26em;--top-offset: 31.88vh;--fall-duration: 9.495s;--fall-delay: 3.763s}.star:nth-child(20){--star-tail-length: 7.45em;--top-offset: 81.37vh;--fall-duration: 6.275s;--fall-delay: 2.18s}.star:nth-child(21){--star-tail-length: 5.64em;--top-offset: 3.69vh;--fall-duration: 6.702s;--fall-delay: 4.319s}.star:nth-child(22){--star-tail-length: 5.28em;--top-offset: 4.93vh;--fall-duration: 9.846s;--fall-delay: 8.016s}.star:nth-child(23){--star-tail-length: 6.26em;--top-offset: 2.19vh;--fall-duration: 8.547s;--fall-delay: 4.545s}.star:nth-child(24){--star-tail-length: 5.97em;--top-offset: 70.36vh;--fall-duration: 7.572s;--fall-delay: 6.175s}.star:nth-child(25){--star-tail-length: 5.67em;--top-offset: 48.87vh;--fall-duration: 8.753s;--fall-delay: 6.338s}.star:nth-child(26){--star-tail-length: 5.44em;--top-offset: 62.51vh;--fall-duration: 8.371s;--fall-delay: 7.754s}.star:nth-child(27){--star-tail-length: 6.44em;--top-offset: 10.6vh;--fall-duration: 9.558s;--fall-delay: 2.64s}.star:nth-child(28){--star-tail-length: 7.24em;--top-offset: 30.01vh;--fall-duration: 8.133s;--fall-delay: 3.275s}.star:nth-child(29){--star-tail-length: 5.29em;--top-offset: 8.08vh;--fall-duration: 7.477s;--fall-delay: 5.82s}.star:nth-child(30){--star-tail-length: 6.36em;--top-offset: 2.53vh;--fall-duration: 8.897s;--fall-delay: 3.541s}.star:nth-child(31){--star-tail-length: 5.13em;--top-offset: 86.56vh;--fall-duration: 6.481s;--fall-delay: .664s}.star:nth-child(32){--star-tail-length: 6.99em;--top-offset: 80.8vh;--fall-duration: 10.142s;--fall-delay: 8.845s}.star:nth-child(33){--star-tail-length: 7.19em;--top-offset: 1.4vh;--fall-duration: 10.997s;--fall-delay: .12s}.star:nth-child(34){--star-tail-length: 5.81em;--top-offset: 90.76vh;--fall-duration: 10.959s;--fall-delay: 2.752s}.star:nth-child(35){--star-tail-length: 7.03em;--top-offset: 35.84vh;--fall-duration: 8.965s;--fall-delay: 3.678s}.star:nth-child(36){--star-tail-length: 6.85em;--top-offset: 6.82vh;--fall-duration: 7.447s;--fall-delay: 3.914s}.star:nth-child(37){--star-tail-length: 5.75em;--top-offset: 52.7vh;--fall-duration: 9.217s;--fall-delay: .663s}.star:nth-child(38){--star-tail-length: 7.44em;--top-offset: 22.62vh;--fall-duration: 6.366s;--fall-delay: .305s}.star:nth-child(39){--star-tail-length: 7.1em;--top-offset: 11.74vh;--fall-duration: 7.802s;--fall-delay: 9.792s}.star:nth-child(40){--star-tail-length: 5.17em;--top-offset: 89.01vh;--fall-duration: 8.847s;--fall-delay: 4.274s}.star:nth-child(41){--star-tail-length: 7.3em;--top-offset: 40.88vh;--fall-duration: 8.601s;--fall-delay: 7.35s}.star:nth-child(42){--star-tail-length: 6.81em;--top-offset: 4.82vh;--fall-duration: 8.277s;--fall-delay: 4.281s}.star:nth-child(43){--star-tail-length: 5.8em;--top-offset: 68.63vh;--fall-duration: 7.087s;--fall-delay: 2.916s}.star:nth-child(44){--star-tail-length: 6.13em;--top-offset: 14.6vh;--fall-duration: 10.363s;--fall-delay: 2.353s}.star:nth-child(45){--star-tail-length: 6.08em;--top-offset: 82.59vh;--fall-duration: 9.431s;--fall-delay: .665s}.star:nth-child(46){--star-tail-length: 6.96em;--top-offset: 65.52vh;--fall-duration: 9.737s;--fall-delay: 3.792s}.star:nth-child(47){--star-tail-length: 6.59em;--top-offset: 37.48vh;--fall-duration: 9.236s;--fall-delay: 3.853s}.star:nth-child(48){--star-tail-length: 6.29em;--top-offset: 38.89vh;--fall-duration: 11.651s;--fall-delay: 8.996s}.star:nth-child(49){--star-tail-length: 5.04em;--top-offset: 48.26vh;--fall-duration: 7.878s;--fall-delay: .534s}.star:nth-child(50){--star-tail-length: 5.99em;--top-offset: 91.29vh;--fall-duration: 8.232s;--fall-delay: 6.502s}.star:before,.star:after{position:absolute;content:"";top:0;left:calc(var(--star-width) / -2);width:var(--star-width);height:100%;background:linear-gradient(45deg,transparent,currentColor,transparent);border-radius:inherit;animation:blink 2s linear infinite}.star:before{transform:rotate(45deg)}.star:after{transform:rotate(-45deg)}@keyframes fall{to{transform:translate3d(-30em,0,0)}}@keyframes tail-fade{0%,50%{width:var(--star-tail-length);opacity:1}70%,80%{width:0;opacity:.4}to{width:0;opacity:0}}@keyframes blink{50%{opacity:.6}}#background-wrap{bottom:0;left:0;padding-top:50px;position:fixed;right:0;top:0;z-index:-1}@-webkit-keyframes animateCloud{0%{margin-left:-1000px}to{margin-left:100%}}@-moz-keyframes animateCloud{0%{margin-left:-1000px}to{margin-left:100%}}@keyframes animateCloud{0%{margin-left:-1000px}to{margin-left:100%}}.x1{-webkit-animation:animateCloud 35s linear infinite;-moz-animation:animateCloud 35s linear infinite;animation:animateCloud 35s linear infinite;-webkit-transform:scale(.65);-moz-transform:scale(.65);transform:scale(.65)}.x2{-webkit-animation:animateCloud 20s linear infinite;-moz-animation:animateCloud 20s linear infinite;animation:animateCloud 20s linear infinite;-webkit-transform:scale(.3);-moz-transform:scale(.3);transform:scale(.3)}.x3{-webkit-animation:animateCloud 30s linear infinite;-moz-animation:animateCloud 30s linear infinite;animation:animateCloud 30s linear infinite;-webkit-transform:scale(.5);-moz-transform:scale(.5);transform:scale(.5)}.x4{-webkit-animation:animateCloud 18s linear infinite;-moz-animation:animateCloud 18s linear infinite;animation:animateCloud 18s linear infinite;-webkit-transform:scale(.4);-moz-transform:scale(.4);transform:scale(.4)}.x5{-webkit-animation:animateCloud 25s linear infinite;-moz-animation:animateCloud 25s linear infinite;animation:animateCloud 25s linear infinite;-webkit-transform:scale(.55);-moz-transform:scale(.55);transform:scale(.55)}.cloud{height:120px;position:relative}.cloud:after,.cloud:before{background:#ffffff8e;content:"";position:absolute;z-indeX:-1}.cloud:after{-webkit-border-radius:100px;-moz-border-radius:100px;border-radius:100px;height:100px;left:50px;top:-50px;width:100px}.cloud:before{-webkit-border-radius:200px;-moz-border-radius:200px;border-radius:200px;width:180px;height:180px;right:50px;top:-90px}@font-face{font-family:Nunito;src:url(/assets/Nunito-VariableFont_wght-D2sADkEI.ttf) format("truetype");font-weight:200 1000;font-display:swap}.Scryportal{--sp-bg: #222831;--sp-bg-deep: #1c2128;--sp-surface-2: #393e46;--sp-heading: #dfd0b8;--sp-muted: #948979;--sp-body: #c9bda9;--sp-border: rgba(148, 137, 121, .15);--sp-border-strong: rgba(148, 137, 121, .3);background-color:var(--sp-bg);min-height:100vh;font-family:Nunito,sans-serif;font-size:calc(10px + 2vmin);color:var(--sp-heading)}.Scryportal-Appbar{background-color:var(--sp-bg-deep);color:var(--sp-heading);box-shadow:0 1px 0 var(--sp-border-strong)}.Scryportal-Appbar a:link,.Scryportal-Appbar a:visited{color:var(--sp-heading)}.Scryportal-Appbar a:hover{color:var(--sp-muted)}.Scryportal-Appbar>button{font-size:1em;transition:background-color .18s ease,color .18s ease}.Scryportal-Appbar>button:hover{background-color:var(--sp-heading);color:var(--sp-bg)}.Scryportal-Appbar>[aria-selected=true]{background:var(--sp-heading);color:var(--sp-bg)}.Scryportal-Appbar>[aria-selected=false]{color:var(--sp-bg)!important}.Scryportal-Appbar [aria-selected=false] button{color:var(--sp-heading)}.Scryportal-Appbar [aria-selected=true] button,.Scryportal-Appbar button:hover button{color:var(--sp-bg)}.Scryportal-Appbar :focus-visible{outline:2px solid var(--sp-heading);outline-offset:-2px}.Scryportal-App-content{display:flex;flex-direction:column;align-items:center;color:var(--sp-heading);background-color:var(--sp-bg);padding:clamp(24px,5vw,56px) clamp(16px,5vw,40px) 80px;box-sizing:border-box}.Scryportal-Title{font-size:clamp(2rem,6vw,3.25rem);font-weight:700;letter-spacing:-.01em;margin:0 0 28px;text-align:center;color:var(--sp-heading)}.Scryportal-Title:after{content:"";display:block;width:64px;height:3px;margin:16px auto 0;border-radius:2px;background-color:var(--sp-muted)}.Scryportal-Panel{width:100%;max-width:780px;box-sizing:border-box;color:var(--sp-heading);background:linear-gradient(135deg,#3a414b,#2f353e 45%,#262c34);border:1px solid var(--sp-border);padding:clamp(24px,4vw,44px);border-radius:12px;box-shadow:0 18px 40px #0000004d}.Scryportal-Panel>p{font-size:1rem;line-height:1.7;margin:0 0 28px;color:var(--sp-body)}.Scryportal-Panel>*:last-child{margin-bottom:0}.Scryportal-Shot{margin:0 0 28px;border-radius:10px;overflow:hidden;border:1px solid var(--sp-border-strong);line-height:0}.Scryportal-Shot img{display:block;width:100%;height:auto}.Scryportal-Cta{display:inline-block;margin:0 0 32px;padding:12px 28px;border-radius:30px;background-color:var(--sp-muted);color:var(--sp-bg);font-size:.95rem;font-weight:700;text-decoration:none;transition:background-color .18s ease,transform .18s ease}.Scryportal-Cta:visited{color:var(--sp-bg)}.Scryportal-Cta:hover{background-color:var(--sp-heading);color:var(--sp-bg);transform:translateY(-1px)}.Scryportal-Cta:focus-visible{outline:2px solid var(--sp-heading);outline-offset:3px}.Scryportal-Video{position:relative;width:100%;aspect-ratio:16 / 9;border-radius:10px;overflow:hidden;border:1px solid var(--sp-border-strong);background-color:var(--sp-bg-deep)}.Scryportal-Video iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.Scryportal-Dropdown{background-color:var(--sp-surface-2)}@media (prefers-reduced-motion: reduce){.Scryportal-Cta:hover{transform:none}}.Weaponsmith{--ws-deep: #1d2a52;--ws-muted: #bdb6c6;--ws-purple: #943ca6;--ws-parchment: #f4ce9f;background-color:var(--ws-deep);min-height:100vh;font-size:calc(10px + 2vmin);color:#2b2b27}.Weaponsmith-Appbar{background-color:var(--ws-deep);color:var(--ws-muted);font-family:bit;box-shadow:0 3px #00000059}.Weaponsmith-Appbar a:link,.Weaponsmith-Appbar a:visited{color:var(--ws-muted)}.Weaponsmith-Appbar>a:hover{color:var(--ws-deep)}.Weaponsmith-Appbar>button{font-size:1em;color:#2b2b27;font-family:bit!important;transition:background-color .12s steps(2),color .12s steps(2)}.Weaponsmith-Appbar>button:hover{background-color:var(--ws-muted);color:var(--ws-deep)}.Weaponsmith-Appbar>[aria-selected=true]{background:var(--ws-muted);color:var(--ws-deep)}.Weaponsmith-Appbar>[aria-selected=false]{color:var(--ws-deep)!important}.Weaponsmith-Appbar [aria-selected=false] button{color:var(--ws-muted)}.Weaponsmith-Appbar [aria-selected=true] button,.Weaponsmith-Appbar button:hover button{color:var(--ws-deep)}.Weaponsmith-Appbar :focus-visible{outline:2px solid var(--ws-muted);outline-offset:-2px}.Weaponsmith-App-content{min-height:95vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:32px;color:var(--ws-muted);padding:clamp(32px,6vw,72px) clamp(16px,5vw,40px) 80px;box-sizing:border-box;background-color:var(--ws-deep);background-image:linear-gradient(#1d2a5259,#1d2a5259),url(/assets/WeaponsmithBackground-CJKIQCDY.png);background-repeat:no-repeat,no-repeat;background-position:center,center bottom;background-size:cover,cover;background-attachment:fixed,fixed;image-rendering:pixelated}.Weaponsmith-Title{font-family:bit;font-size:clamp(1.75rem,6vw,3rem);font-weight:400;line-height:1.15;letter-spacing:.02em;text-align:center;color:var(--ws-parchment);text-shadow:4px 4px 0 rgba(0,0,0,.6);margin:0}.Weaponsmith-Panel{width:100%;max-width:560px;box-sizing:border-box;color:var(--ws-deep);padding:8px clamp(12px,3vw,24px);border:20px solid transparent;border-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAABABAMAAACuDul1AAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAA9QTFRFAAAAlDym31Ke9Jyu9M6fde7aoAAAAAV0Uk5TAP////8c0CZSAAAAUElEQVR4nO2VwRHAIAzDzAaQDQgbNGzQ7D9T+RPfdQDrGZ2/CtBGQQdgXjCB5lHgHbZ2XrzPhMV9z4wjisGZSEhISEj8EzSvLMg04TT67E18HAxrTi+tIpcAAAAASUVORK5CYII=) 5 fill / 20px / 0 stretch;image-rendering:pixelated}.Weaponsmith-Panel>p{font-size:1rem;line-height:1.7;margin:0}.Weaponsmith-Cta{display:inline-block;font-family:bit;font-size:clamp(1.1rem,2.5vw,1.4rem);color:var(--ws-deep)!important;text-decoration:none;padding:4px 20px;border:12px solid transparent;border-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAABABAMAAACuDul1AAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAA9QTFRFAAAAlDym31Ke9Jyu9M6fde7aoAAAAAV0Uk5TAP////8c0CZSAAAAUElEQVR4nO2VwRHAIAzDzAaQDQgbNGzQ7D9T+RPfdQDrGZ2/CtBGQQdgXjCB5lHgHbZ2XrzPhMV9z4wjisGZSEhISEj8EzSvLMg04TT67E18HAxrTi+tIpcAAAAASUVORK5CYII=) 5 fill / 12px / 0 stretch;image-rendering:pixelated;transition:transform .12s steps(2),filter .12s steps(2)}.Weaponsmith-Cta:hover{transform:translateY(-3px);filter:brightness(1.08)}.Weaponsmith-Cta:active{transform:translateY(0)}.Weaponsmith-Cta:focus-visible{outline:3px solid var(--ws-parchment);outline-offset:4px}.Weaponsmith-Dropdown{background-color:var(--ws-muted);font-family:bit!important}.Weaponsmith-Dropdown a:link,.Weaponsmith-Dropdown a:visited{color:var(--ws-deep);font-family:bit!important}@media (prefers-reduced-motion: reduce){.Weaponsmith-Cta:hover{transform:none}}:root{--blog-color-primary: #7288a2;--blog-color-secondary: #1d2a52;--blog-color-background: #e6eef9;--blog-color-background-secondary: #bdb6c6;--blog-color-background-dark: #7288a2;--blog-card-bg: #f4f8ff;--blog-card-border: rgba(114, 136, 162, .3)}.Blog{background-color:var(--blog-color-background);color:var(--blog-color-secondary);min-height:100vh}.BlogContent{max-width:820px;margin:0 auto;padding:24px 20px 48px;font-family:bit}.blog-page-title{font-size:2rem;color:var(--blog-color-secondary);margin:0 0 12px}.blog-entries{margin-top:24px}.blog-year-header{font-family:bit;font-size:1.6rem;color:var(--blog-color-secondary);text-align:center;margin:40px 0 20px;display:flex;align-items:center;gap:16px}.blog-year-header:before,.blog-year-header:after{content:"";flex:1;height:2px;background-color:var(--blog-color-primary);opacity:.5}.blog-entry-card{background:var(--blog-card-bg);border:1px solid var(--blog-card-border);border-radius:10px;padding:24px 32px;margin-bottom:20px;box-shadow:0 2px 10px #1d2a5214}.blog-entry-card h1{font-size:1.35rem;color:var(--blog-color-secondary);margin:0 0 16px;padding-bottom:10px;border-bottom:2px solid var(--blog-color-primary)}.blog-entry-card h3{font-size:.95rem;color:var(--blog-color-secondary);border-left:3px solid var(--blog-color-primary);padding:4px 10px;margin:18px 0 8px;background:#7288a21a;border-radius:0 4px 4px 0}.blog-entry-card ul{margin:4px 0 6px;padding-left:22px}.blog-entry-card li{margin:5px 0;color:var(--blog-color-secondary);opacity:.85;line-height:1.5}.blog-entry-card a{color:var(--blog-color-primary);text-decoration:underline}.blog-entry-card a:visited{color:var(--blog-color-primary)}.BlogContent a:visited{color:var(--blog-color-primary)!important}.Blog-Appbar{background-color:var(--blog-color-background-dark);color:var(--blog-color-secondary);font-family:bit}.Blog-Appbar>button{font-family:bit;font-size:1em;color:var(--color-secondary)}.Blog-Appbar a:link,.Blog-Appbar a:visited,.Blog-Appbar a:hover{color:var(--blog-color-secondary)}.Blog-Appbar>button{font-size:1em;color:var(--blog-color-secondary);font-family:bit}.Blog-Appbar button:hover{background-color:var(--blog-color-background-secondary);color:var(--blog-color-secondary)}.Blog-Appbar [aria-selected=true]{background:var(--blog-color-background-secondary);color:var(--blog-color-secondary)}.Blog-Appbar [aria-selected=false]{color:var(--blog-color-secondary)!important}.Blog-Dropdown{background-color:var(--blog-color-background-secondary);color:var(--blog-color-secondary)}.blog-font{font-family:bit}:root{--color-primary: #282c34;--color-secondary: #7288a2;--color-background: #1A1A14;--color-background-dark: #0F0F0C}.About-Me-Appbar{background-color:var(--color-background-dark);color:var(--color-primary)}.About-Me-Appbar>button{font-family:Nanum Gothic Coding,monospace;font-size:1em;color:var(--color-secondary)}.About-Me-Appbar>button:hover{background-color:var(--color-background)!important;color:var(--color-secondary)}.About-Me-Appbar>[aria-selected=true]{border-bottom:solid var(--color-secondary)}.About-Me-Appbar>[aria-selected=false]{color:var(--color-primary)!important}.About-Me-App-content{min-height:50vh;display:flex;flex-direction:column;color:var(--color-secondary);margin-left:30px;margin-right:30px}.About-Me{background-color:var(--color-background);min-height:100vh;font-size:calc(10px + 2vmin);color:var(--color-secondary)}.About-Me>p{margin-left:50px;margin-right:50px;text-align:left;position:relative}.Me-Photo{width:300px;height:auto;float:left;margin-left:50px;margin-right:50px;border:3px solid white}.About-Me-Dropdown{background-color:var(--color-background);z-index:6}.typewriter p,.typewriter h3{font-family:Nanum Gothic Coding,monospace;font-weight:300;overflow:hidden}.typewriter-caret{border-right:.15em solid var(--color-secondary);animation:blink-caret .75s step-end infinite}.aboutme-font{font-family:Nanum Gothic Coding,monospace;font-weight:300}@keyframes blink-caret{0%,to{border-color:transparent}50%{border-color:var(--color-secondary)}}.Contact{background-color:#e6eef9;min-height:100vh;color:#7288a2}.ContactContent{font-family:bit}.ContactContent a:visited{color:#7288a2!important}.contact-inner{max-width:560px;margin:40px auto;padding:0 24px 60px}.contact-heading{font-size:2rem;color:#1d2a52;margin-bottom:20px}.contact-body{display:flex;flex-direction:column;gap:40px;margin-top:32px}.contact-section-title{font-size:.85rem;font-family:bit;color:#7288a2;text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px}.contact-social-links{display:flex;gap:12px;flex-wrap:wrap}.contact-social-card{display:flex;align-items:center;gap:10px;padding:12px 20px;background-color:#fff;border:2px solid #bdb6c6;border-radius:8px;text-decoration:none;color:#1d2a52;font-family:bit;font-size:.95rem;transition:background-color .15s,border-color .15s}.contact-social-card:hover{background-color:#bdb6c6;border-color:#7288a2}.contact-social-icon{width:26px;height:26px;object-fit:contain}.contact-intro{color:#7288a2;font-size:1rem;line-height:1.65;margin-top:20px;margin-bottom:0}.contact-form-wrapper{background-color:#fff;border:2px solid #bdb6c6;border-radius:8px;padding:28px 24px}.contact-form{display:flex;flex-direction:column;gap:20px}.contact-field{display:flex;flex-direction:column;gap:6px}.contact-field-label{font-family:bit;font-size:.8rem;color:#7288a2;text-transform:uppercase;letter-spacing:.08em}.contact-field-input{font-family:bit;font-size:.95rem;background-color:#f3f7fd;border:2px solid #bdb6c6;border-radius:6px;color:#1d2a52;padding:10px 12px;width:100%;box-sizing:border-box;transition:border-color .15s,box-shadow .15s}.contact-field-input:focus{border-color:#7288a2;outline:none;box-shadow:0 0 0 3px #7288a226}.contact-field-input--error{border-color:#c0392b}.contact-field-textarea{resize:vertical;min-height:120px}.contact-field-error{font-family:bit;font-size:.8rem;color:#c0392b}.contact-form-success{font-family:bit;font-size:.9rem;color:#2e8f44;margin:0}.contact-form-error{font-family:bit;font-size:.9rem;color:#c0392b;margin:0}.contact-form-actions{display:flex;justify-content:flex-end}.contact-form-submit{font-family:bit;font-size:.95rem;background-color:#7288a2;color:#fff;border:none;border-radius:6px;padding:10px 28px;cursor:pointer;transition:background-color .15s}.contact-form-submit:hover:not(:disabled){background-color:#1d2a52}.contact-form-submit:disabled{opacity:.6;cursor:not-allowed}.Contact-Appbar{height:5vh;position:fixed;float:top;width:100%;text-align:left;background-color:#7288a2;color:#1d2a52;font-family:bit}.Contact-Appbar a:link,.Contact-Appbar a:visited,.Contact-Appbar a:hover{color:#1d2a52}.Contact-Appbar>button{cursor:pointer;border:0px;background-color:transparent;height:100%;min-width:150px;font-size:1em;transition-duration:.2s;color:#1d2a52;font-family:bit}.Contact-Appbar button:hover{background-color:#bdb6c6;color:#1d2a52}.Contact-Appbar [aria-selected=true]{background:#bdb6c6;color:#1d2a52}.Contact-Appbar [aria-selected=false]{color:#1d2a52!important}.Contact-Dropdown{background-color:#bdb6c6;color:#1d2a52;position:absolute;width:56;border-radius:50;transform-origin:top left;border-top-width:1px;border-bottom-width:0px;border-color:#f3f4f6;border-radius:.375rem;filter:drop-shadow(0 10px 8px rgb(0 0 0 / .04)) drop-shadow(0 4px 3px rgb(0 0 0 / .1));--tw-ring-color: rgb(0 0 0);box-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.Raytracer{--rt-bg: #e6eef9;--rt-fg: #7288a2;--rt-ink: #1d2a52;--rt-accent: #bdb6c6;--rt-card: #ffffff;--rt-track: #d7e2f2;--rt-line: rgba(114, 136, 162, .28);background-color:var(--rt-bg);min-height:100vh;color:var(--rt-fg)}.Raytracer-Appbar{background-color:var(--rt-fg);color:var(--rt-ink);font-family:bit}.Raytracer-Appbar a:link,.Raytracer-Appbar a:visited,.Raytracer-Appbar a:hover{color:var(--rt-ink)}.Raytracer-Appbar>button{font-size:1em;color:var(--rt-ink);font-family:bit;transition:background-color .18s ease,color .18s ease}.Raytracer-Appbar button:hover{background-color:var(--rt-accent);color:var(--rt-ink)}.Raytracer-Appbar [aria-selected=true]{background:var(--rt-accent);color:var(--rt-ink)}.Raytracer-Appbar [aria-selected=false]{color:var(--rt-ink)!important}.Raytracer-Appbar [aria-selected=false] button,.Raytracer-Appbar [aria-selected=true] button,.Raytracer-Appbar button:hover button{color:var(--rt-ink)}.Raytracer-Appbar :focus-visible{outline:2px solid var(--rt-ink);outline-offset:-2px}.Raytracer-App-content{font-family:bit;max-width:1040px;margin:0 auto;padding:clamp(20px,4vw,40px) clamp(16px,4vw,32px) 72px;box-sizing:border-box;color:var(--rt-fg);text-align:left}.Raytracer-App-content a:visited{color:var(--rt-fg)}.Raytracer-Intro{max-width:60ch}.Raytracer-Title{font-size:2rem;color:var(--rt-ink);margin:0 0 16px}.Raytracer-Intro p{font-size:1rem;line-height:1.6;margin:0 0 10px}.Raytracer-Note{opacity:.75;font-size:.9rem!important}.Raytracer-Source{display:inline-block;margin-top:6px;font-size:.9rem;color:var(--rt-fg);text-decoration:underline;text-underline-offset:3px;transition:color .15s ease}.Raytracer-Source:hover{color:var(--rt-ink)}.Raytracer-Layout{display:flex;flex-wrap:wrap;align-items:flex-start;gap:28px;margin-top:32px}.Raytracer-Stage{flex:1 1 340px;min-width:0;padding:14px;background-color:var(--rt-card);border:1px solid var(--rt-line);border-radius:10px;box-shadow:0 2px 12px #1d2a5214;line-height:0}.Raytracer-Stage canvas{display:block;width:100%;height:auto;border-radius:6px;background-color:#020202;image-rendering:pixelated}.Raytracer-Controls{flex:0 1 280px;display:flex;flex-direction:column;gap:18px;box-sizing:border-box;padding:22px 24px;background-color:var(--rt-card);border:1px solid var(--rt-line);border-radius:10px;box-shadow:0 2px 12px #1d2a5214}.Raytracer-Controls-Title{font-size:.8rem;text-transform:uppercase;letter-spacing:.12em;color:var(--rt-fg);margin:0 0 2px;padding-bottom:12px;border-bottom:1px solid var(--rt-line)}.range-slider{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:12px;row-gap:8px}.range-slider__label{grid-area:1 / 1;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--rt-fg)}.range-slider__value{grid-area:1 / 2;min-width:4ch;text-align:right;font-size:.85rem;color:var(--rt-ink)}.range-slider__input{grid-area:2 / 1 / 3 / 3;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;margin:0;border-radius:3px;background-color:var(--rt-track);cursor:pointer}.range-slider__input:focus-visible{outline:2px solid var(--rt-ink);outline-offset:4px}.range-slider__input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;border:2px solid var(--rt-card);background-color:var(--rt-fg);box-shadow:0 1px 3px #1d2a5259;cursor:pointer;transition:background-color .15s ease}.range-slider__input::-webkit-slider-thumb:hover{background-color:var(--rt-ink)}.range-slider__input::-moz-range-thumb{width:18px;height:18px;border-radius:50%;border:2px solid var(--rt-card);background-color:var(--rt-fg);box-shadow:0 1px 3px #1d2a5259;cursor:pointer;transition:background-color .15s ease}.range-slider__input::-moz-range-thumb:hover{background-color:var(--rt-ink)}.range-slider__input::-moz-range-track{height:6px;border-radius:3px;background-color:var(--rt-track)}.raytracer-font{font-family:bit}.Raytracer-Dropdown{background-color:var(--rt-accent);color:var(--rt-ink)}@media (max-width: 760px){.Raytracer-Controls{flex:1 1 100%}}.DndAi{--dnd-bg: #282c34;--dnd-bg-deep: #21252b;--dnd-fg: #bdb6c6;--dnd-ink: #1d2a52;--dnd-ink-soft: #313a5c;--dnd-ink-lift: #2c3f79;--dnd-panel: #ffffff;background-color:var(--dnd-bg);min-height:100vh;font-size:calc(10px + 2vmin);color:var(--dnd-fg)}.DndAi-Appbar{background-color:var(--dnd-bg-deep);color:var(--dnd-fg);box-shadow:0 1px #bdb6c624}.DndAi-Appbar a:link,.DndAi-Appbar a:visited{color:var(--dnd-fg)}.DndAi-Appbar a:hover{color:#49505f}.DndAi-Appbar>button{font-size:1em;transition:background-color .18s ease,color .18s ease}.DndAi-Appbar>button:hover{background-color:var(--dnd-fg);color:var(--dnd-bg)}.DndAi-Appbar>[aria-selected=true]{background:var(--dnd-fg);color:var(--dnd-bg)}.DndAi-Appbar>[aria-selected=false]{color:var(--dnd-bg)!important}.DndAi-Appbar [aria-selected=false] button{color:var(--dnd-fg)}.DndAi-Appbar [aria-selected=true] button,.DndAi-Appbar button:hover button{color:var(--dnd-bg)}.DndAi-Appbar :focus-visible{outline:2px solid var(--dnd-fg);outline-offset:-2px}.DndAi-App-content{min-height:100vh;display:flex;flex-direction:column;align-items:center;color:var(--dnd-fg);background-color:var(--dnd-bg);padding:clamp(24px,5vw,56px) clamp(16px,5vw,40px) 80px;box-sizing:border-box}.DndAi-Title{font-size:clamp(2rem,6vw,3.25rem);font-weight:600;letter-spacing:-.015em;margin:0 0 28px;text-align:center;color:#fff}.DndAi-Title:after{content:"";display:block;width:64px;height:3px;margin:16px auto 0;border-radius:2px;background-color:var(--dnd-fg);opacity:.6}.DndAi-Panel{width:100%;max-width:780px;box-sizing:border-box;color:var(--dnd-ink);background-color:var(--dnd-panel);padding:clamp(24px,4vw,44px);border-radius:14px;box-shadow:0 18px 40px #00000057}.DndAi-Panel>p{font-size:1rem;line-height:1.7;margin:0 0 20px;color:var(--dnd-ink-soft)}.DndAi-Panel>*:last-child{margin-bottom:0}.DndAi-Audio{display:flex;flex-direction:column;gap:10px;margin:28px 0;padding:18px 20px;border-radius:10px;background-color:#f3f5fa;border:1px solid rgba(29,42,82,.12)}.DndAi-Audio-Label{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--dnd-ink-soft);opacity:.75}.DndAi-Audio audio{width:100%}.DndAi-Cta{display:inline-block;padding:12px 26px;border-radius:8px;background-color:var(--dnd-ink);color:#fff;font-size:.95rem;text-decoration:none;transition:background-color .18s ease,transform .18s ease}.DndAi-Cta:visited{color:#fff}.DndAi-Cta:hover{background-color:var(--dnd-ink-lift);transform:translateY(-1px)}.DndAi-Cta:focus-visible{outline:2px solid #ffffff;outline-offset:3px}.DndAi-Shot{width:100%;max-width:780px;margin:40px 0 0;box-sizing:border-box}.DndAi-Shot img{display:block;width:100%;height:auto;border-radius:12px;border:1px solid rgba(189,182,198,.2);box-shadow:0 18px 40px #00000057}.DndAi-Shot figcaption{margin-top:12px;font-size:.75rem;text-align:center;letter-spacing:.08em;text-transform:uppercase;color:var(--dnd-fg);opacity:.6}.DndAi-Dropdown{background-color:var(--dnd-bg-deep)}@media (prefers-reduced-motion: reduce){.DndAi-Cta:hover{transform:none}}
