body{margin:0;font-family:JetBrains Mono,Fira Code,SF Mono,Menlo,Consolas,Liberation Mono,monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:JetBrains Mono,Fira Code,SF Mono,Menlo,Consolas,Liberation Mono,monospace}:root{--light-grey: rgba(0,0,0,.25);--mobile-breakpoint: 768px;--left-right-margin: 20px}*{margin:0;padding:0;box-sizing:border-box}ul{list-style-type:none}.hide{display:none}.show{display:default}button{cursor:pointer}a,a:visited{color:#333}.landing-page-internal-box{position:relative;margin:0 auto;padding:50px 0}.landing-page-internal-box h2,.landing-page-internal-box p{margin-bottom:10px}.landing-page-internal-box ul{margin-left:25%;position:relative;z-index:2}.landing-page-internal-box ul li{margin:5px 0}.landing-page-internal-box ul li a{font-weight:700;cursor:pointer}.landing-page-internal-box .landing-animation{position:absolute;border-radius:50%;width:500px;height:500px;top:-200px;left:-250px;z-index:-1}.landing-page-internal-box .landing-animation canvas{position:relative;z-index:-1}@media screen and (min-width:768px){.landing-page-internal-box{width:max-content}}.general-layout{margin:0 var(--left-right-margin);min-height:100vh}.general-layout h2{color:#00000080;font-size:1.25rem;position:relative;z-index:10}.general-layout h2.subtitle{margin:10px 0 20px}.general-layout .content-container{margin:50px 0}.general-layout .canvas-pixi-cont{height:100vh}.video-iframe-shell{width:90%;position:relative;z-index:0;margin:20px auto;background:#00000080}.video-iframe-shell .loading{position:absolute;width:100%;margin:30px auto;font-weight:700;font-size:24px;color:#fff;z-index:1;text-align:center}.video-iframe-shell iframe{width:100%;aspect-ratio:560/315;position:relative;z-index:2}#home-page{position:relative;width:100vw;height:calc(100vh - 50px);overflow:hidden;background:#fff;color:#333}#home-page .home-canvas{position:absolute;inset:0;z-index:0}#home-page .home-canvas canvas{width:100%!important;height:100%!important;display:block}#home-page .home-overlay{position:relative;z-index:1;width:100%;height:100%;display:flex;align-items:center;justify-content:flex-start;padding:40px clamp(20px,5vw,80px) 60px;pointer-events:none}#home-page .home-overlay a,#home-page .home-overlay button{pointer-events:auto}#home-page .home-content{width:80%;display:flex;flex-direction:column;gap:22px;text-align:left}@media(min-width:769px){#home-page .home-overlay{justify-content:center}#home-page .home-content{width:60%;margin-left:auto;margin-right:auto}}#home-page .home-intro{font-weight:400;font-size:clamp(13px,1vw,15px);line-height:1.75;color:#333;margin:0;letter-spacing:.01em;text-align:left}#home-page .home-featured-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}#home-page .home-featured-grid li a{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;padding:12px 14px;border-radius:6px;text-decoration:none;color:#333;background:#fff9;border:1px solid rgba(51,51,51,.15);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:transform .22s ease,background .22s ease,border-color .22s ease,box-shadow .22s ease}#home-page .home-featured-grid li a .title{font-weight:500;font-size:14px;letter-spacing:.01em}#home-page .home-featured-grid li a .hint{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#3339}#home-page .home-featured-grid li a:hover{transform:translateY(-2px);background:#ffffffd9;border-color:#33333373;box-shadow:0 8px 28px #3333331a}#home-page .home-featured-grid li a:hover .hint{color:#333}#home-page .home-see-all{position:absolute;right:clamp(16px,4vw,40px);bottom:22px;font-weight:400;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#333;text-decoration:none;transition:color .22s ease,transform .22s ease}#home-page .home-see-all:hover{color:#3339;transform:translate(2px)}@media(max-width:640px){#home-page .home-overlay{padding:24px 16px 56px}#home-page .home-featured-grid{grid-template-columns:repeat(2,1fr)}}@keyframes home-shimmer{0%{background-position:0% 50%}to{background-position:240% 50%}}nav{display:flex;justify-content:space-between;align-items:center;flex-direction:row;background-color:transparent;height:50px;border-bottom:2px solid var(--light-grey)}nav h1{position:relative;z-index:103;margin-left:20px}nav h1 a{text-decoration:none}nav .menu-screen{background-color:#fff;position:absolute;top:0;left:0;z-index:101;width:100vw;height:50px;border-bottom:2px solid var(--light-grey)}nav>ul{display:flex;position:absolute;z-index:100;flex-direction:column;transition:top 1s ease-in-out;top:50px}nav>ul>li{width:100vw;text-align:center;cursor:pointer;padding:5px 0;border-bottom:1px solid var(--light-grey);background-color:#ffffffd9}nav.collapsed>ul{top:-150px}nav.collapsed>.hamburger>span:nth-child(1){top:-5px}nav.collapsed>.hamburger>span:nth-child(3){top:5px}nav>svg{position:relative;z-index:31;height:50px}nav>.hamburger{cursor:pointer;display:flex;justify-content:center;flex-direction:column;margin-right:20px;height:50px;position:relative;z-index:104}nav>.hamburger>span{position:relative;width:50px;display:block;border-bottom:2px solid black;transition:bottom .25s linear,top .25s linear}nav>.hamburger>span:nth-child(1){top:0}nav>.hamburger>span:nth-child(3){top:0}nav #submenu{display:flex;justify-content:flex-end;width:100%}nav #submenu div{display:none;border-bottom:1px solid var(--light-grey);width:100%}nav #submenu div.show{display:flex;justify-content:flex-end;width:100%}@media(min-width:1024px){nav ul{flex-direction:row;position:static;list-style-type:none;z-index:400;align-self:flex-end;padding-bottom:4px}nav ul li{border:none;width:auto;margin:0 20px;cursor:pointer;font-size:.82rem}nav .hamburger{display:none}}.tab-shell .tab-container{display:flex;width:100%}.tab-shell .tab-container li{width:1fr;text-align:center;cursor:pointer;border:1px solid rgba(0,0,0,.25)}.tab-shell .tab-container li.active{border-bottom:none}.tab-body-shell{position:relative;border-left:1px solid rgba(0,0,0,.25);border-right:1px solid rgba(0,0,0,.25);min-height:100vh;overflow:hidden}.tab-body-shell .plt-canvas{min-height:100vh}.back-button{display:block;padding:2px 10px;margin:20px 0;border-radius:5px;border:1px solid rgba(0,0,0,.25);background:#a5fbd3;background:linear-gradient(27deg,#a5fbd3,#a9fcc500)}#solitaire-canvas{display:block;margin:0 auto}.svg-video-iframe-shell{position:relative;padding-bottom:56.25%;height:0;width:80%;margin:iframe;margin-position:absolute;margin-top:0;margin-left:0;margin-width:100%;margin-height:100%}.svg-content{width:90%;position:relative;z-index:0;margin:20px auto;background:#00000080}.svg-content .loading{position:absolute;width:100%;margin:30px auto;font-weight:700;font-size:24px;color:#fff;z-index:1;text-align:center}.svg-content iframe{width:100%;height:100vh;position:relative;z-index:2}.svg-content iframe.loaded{background-color:#fff}.iframe-wrapper{width:90%;position:relative;z-index:0;margin:20px auto;background:#00000080}.iframe-wrapper .loading{position:absolute;width:100%;margin:30px auto;font-weight:700;font-size:24px;color:#fff;z-index:1;text-align:center}.iframe-wrapper iframe{width:100%;height:100vh;position:relative;z-index:2}.iframe-wrapper iframe.loaded{background-color:#fff}canvas.challenge-canvas{border:1px solid black;display:block;margin:10px auto}.soduko-container{text-align:center}.soduko-container .soduko-grid{border:5px solid black;display:grid;width:100%;max-width:455px;margin:10px auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;overflow:hidden;box-shadow:0 10px 10px #00000040}.soduko-container .soduko-grid input{border:1px solid black;width:100%;aspect-ratio:1/1;text-align:center;font-size:1rem;transition:background-color .25s;-moz-appearance:textfield}.soduko-container .soduko-grid input:nth-child(3n){border-right:5px solid black}.soduko-container .soduko-grid input:nth-child(9n){border-right:none}.soduko-container .soduko-grid input:nth-child(18)~input{border-bottom:5px solid black}.soduko-container .soduko-grid input:nth-child(27)~input{border-bottom:none}.soduko-container .soduko-grid input:nth-child(45)~input{border-bottom:5px solid black}.soduko-container .soduko-grid input:nth-child(54)~input{border-bottom:none}.soduko-container .soduko-grid input.red{color:red;font-weight:700}.soduko-container .highlight{background-color:#00000040}.soduko-container input::-webkit-outer-spin-button,.soduko-container input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.three-of-a-kind #three-of-id-canvas{display:block;margin:0 auto}.three-of-a-kind #three-of-id-canvas.over{cursor:pointer}.three-of-a-kind .controls{display:flex;width:100%;justify-content:center}.three-of-a-kind .controls label{font-weight:700;margin:0 5px 0 20px}.pattern-maker>div{display:flex;justify-content:center;flex-direction:column}.pattern-maker>div canvas.over{cursor:pointer}.pattern-maker>div>div{display:flex;flex-direction:column;justify-content:center}.pattern-maker>div>div>button{font-size:15px;margin:10px;padding:2px 10px;border-radius:5px;border:1px solid rgba(0,0,0,.5)}@media(min-width:1024px){.pattern-maker>div{flex-direction:row}}.game-canvas{width:100%;height:100vh}*{padding:0;margin:0}#canvas-div{margin:0 auto}#crystal-ball-unifier{width:100%;min-height:100vh;padding-bottom:40px;margin:0 auto;background-color:#181145;text-align:center}#crystal-ball-unifier canvas{width:100%;height:100%;max-width:750px;max-height:699px;display:block;margin:0 auto}#crystal-ball-unifier #scroll-cover{position:absolute;inset:0;background-color:#000;opacity:.05}#crystal-ball-unifier img{display:block;margin:0 auto;width:80%;max-width:475px}#pink-drawer-cont{position:relative;display:flex;height:400px!important;width:90vw;align-items:center;justify-content:center;margin:0 auto}#pink-drawer-cont #fpsChecker{z-index:999;position:absolute;color:#fff;background-color:#00000080;padding:50px;font-weight:700;outline:10px solid white;min-width:400px;display:flex;flex-direction:column;align-items:center;justify-content:center}#pink-drawer-cont .pink-drawer-canvas-cont{z-index:998;position:absolute;width:90vw;height:400px!important;display:flex;align-items:center;justify-content:center}#geometric-puzzle-cont{position:relative}#geometric-puzzle-cont #geometric-puzzle-button-cont{display:flex;justify-content:space-around;position:relative;z-index:901}#geometric-puzzle-cont #geometric-puzzle-button-cont button{padding:10px 15px;margin-top:20px;font-size:20px}#geometric-puzzle-cont canvas{position:absolute;top:0;z-index:900}#aboutPoems{margin-left:0}#aboutPoems *{margin:2px 0;color:#333;font-size:.85rem;line-height:1.55;letter-spacing:.01em}#aboutPoems dt{font-weight:700;margin-top:14px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:#333333a6}#aboutPoems dd{margin:0 0 0 40px}.about-bio{max-width:80vw}.about-bio p{color:#333;font-size:.9rem;line-height:1.65;margin:0 0 14px}.about-bio em{font-style:italic}.about-meta{margin:22px 0 6px;font-size:.85rem;max-width:80vw}.about-meta dt{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:#333333a6;margin-top:14px}.about-meta dd{margin:4px 0 0;line-height:1.55;color:#333}.about-meta a{color:#333;text-decoration:underline;text-underline-offset:2px}.about-meta a:hover{color:#000}.contact a{color:inherit;text-decoration:underline;text-underline-offset:2px}.about-wrapper{width:85%;margin:0 auto;position:relative}.about-wrapper .general-layout h2{font-size:1rem;letter-spacing:.04em}.about-wrapper .contact{font-size:.85rem}.about-wrapper .contact dt{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:#333333a6;margin-top:14px}.about-wrapper .contact dt:first-child{margin-top:0}.about-wrapper .contact dd{font-weight:700;margin-top:4px;margin-bottom:0}@media(min-width:1024px){#aboutPoems{margin-left:140px}.about-wrapper{width:max-content;margin:0 auto;position:relative}}.about-canvas{height:100vh;width:100px;background-color:#00000040;position:absolute;z-index:-1;top:0;left:-50px;opacity:.25}.site-card{display:grid;grid-template-columns:130px 1fr;gap:16px;align-items:start;padding:18px 0;border-bottom:1px solid rgba(0,0,0,.08)}.site-card:first-child{border-top:1px solid rgba(0,0,0,.08)}.site-card__image-link{display:block;text-decoration:none}.site-card__image-wrap{width:130px;height:74px;border-radius:5px;overflow:hidden;border:1px solid rgba(0,0,0,.08)}.site-card__image-wrap img{display:block;width:100%;height:100%;object-fit:cover;object-position:top left;transition:opacity .2s}.site-card__image-wrap:hover img{opacity:.8}.site-card__content{display:flex;flex-direction:column;gap:4px}.site-card__name{font-size:1rem;font-weight:700;color:#333;text-decoration:none;letter-spacing:.01em}.site-card__name:visited{color:#333}.site-card__name:hover{text-decoration:underline}.site-card__arrow{font-size:.75rem;color:#00000040;margin-left:3px}.site-card__tagline{font-size:.72rem;color:#bbcb50;margin:0;letter-spacing:.02em}.site-card__description{font-size:.75rem;line-height:1.65;color:#00000073;margin:4px 0 0}.site-card__tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.site-card__tag{font-size:.62rem;color:#0000004d;letter-spacing:.03em}@media(max-width:480px){.site-card{grid-template-columns:1fr}.site-card__image-wrap{width:100%;height:120px}}.web-sites-landing{margin:0 auto;max-width:80%}.web-sites-landing .wslp-header{position:relative;left:-50px;padding:50px 0 24px}.web-sites-landing .wslp-header h2{position:relative;z-index:2}.web-sites-landing .wslp-header p{font-size:.875rem;color:#00000073;margin-top:6px;position:relative;z-index:2}.web-sites-landing .wslp-header .landing-animation{position:absolute;border-radius:50%;width:500px;height:500px;top:-200px;left:-250px;z-index:-1}.web-sites-landing .wslp-header .landing-animation canvas{position:relative;z-index:-1}.web-sites-landing .wslp-cards{position:relative;z-index:2;padding-bottom:60px;max-width:calc(100vw - 40px)}@media(min-width:1100px){.web-sites-landing{max-width:45%}.web-sites-landing .wslp-cards{width:100%}}.webdev-content{width:90%;position:relative;z-index:0;margin:20px auto;background:#00000080}.webdev-content .loading{position:absolute;width:100%;margin:30px auto;font-weight:700;font-size:24px;color:#fff;z-index:1;text-align:center}.webdev-content iframe{width:100%;height:100vh;position:relative;z-index:2;background-color:#fff}
