:root{--bg:#262f43;--bg-raised:#2e3850;--bg-sunken:#1f2738;--text:#e2e8f0;--text-muted:#a3b1c6;--accent:#4fd1c5;--accent-soft:#4fd1c524;--brand:#3e1e67;--brand-hover:#55308a;--blob-from:#48fcc0;--blob-to:#8042fb;--border:#e2e8f01f;--danger:#f87171;--radius:8px;--x:50vw;--y:50vh;color-scheme:dark;font-feature-settings:"ss03", "cv02", "cv11";-webkit-text-size-adjust:100%;font-family:Inter var,Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Noto Color Emoji;line-height:1.6}*,:before,:after{box-sizing:border-box}html{background-color:var(--bg);scroll-behavior:smooth}body{min-height:100vh;color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}h1,h2,h3,p,ul{margin:0}ul{padding:0;list-style:none}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.noscript{border-radius:var(--radius);color:#721c24;background:#f8d7da;max-width:32rem;margin:2rem auto;padding:1rem 1.25rem}.btn{border-radius:var(--radius);background:var(--brand);color:#fff;border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.7rem 1.4rem;font-weight:500;transition:background-color .2s,border-color .2s,transform .1s;display:inline-flex}.btn:hover{background:var(--brand-hover)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{border-color:var(--border);color:var(--text);background:0 0}.btn-ghost:hover{background:var(--bg-raised);border-color:var(--accent)}.page{flex-direction:column;align-items:center;gap:1.5rem;min-height:100vh;padding:6rem 1rem 3rem;display:flex}.page-title{letter-spacing:-.025em;font-size:clamp(2rem,5vw,2.75rem);line-height:1.1}.back-link{color:var(--text-muted);align-items:center;gap:.4rem;font-size:.95rem;display:inline-flex}.back-link:hover{color:var(--accent)}.toastify{font-family:inherit;font-weight:500;border-radius:var(--radius)!important;box-shadow:0 10px 30px #00000059!important}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root.party .blob{opacity:.6;height:36vmax;animation:6s infinite blob-spin,4s linear infinite party-blob;display:block}:root.party .intro-name,:root.party .page-title{background:linear-gradient(90deg,#48fcc0,#8042fb,#f472b6,#facc15,#48fcc0) 0 0/200%;color:#0000;-webkit-background-clip:text;background-clip:text;animation:3s linear infinite party-text}:root.party .chip,:root.party .btn,:root.party .segmented button.active{animation:4s linear infinite party-hue}:root.party .logo{animation:.8s ease-in-out infinite party-wiggle}@keyframes party-blob{0%{filter:blur(1.5vmax)hue-rotate()}to{filter:blur(1.5vmax)hue-rotate(360deg)}}@keyframes party-text{to{background-position:200%}}@keyframes party-hue{to{filter:hue-rotate(360deg)}}@keyframes party-wiggle{25%{transform:rotate(-8deg)scale(1.05)}75%{transform:rotate(8deg)scale(1.05)}}.toastify{color:#fff;opacity:0;cursor:pointer;z-index:2147483647;background:-webkit-linear-gradient(315deg,#73a5ff,#5477f5);background:linear-gradient(135deg,#73a5ff,#5477f5);border-radius:2px;max-width:calc(50% - 20px);padding:12px 20px;text-decoration:none;transition:all .4s cubic-bezier(.215,.61,.355,1);display:inline-block;position:fixed;box-shadow:0 3px 6px -1px #0000001f,0 10px 36px -4px #4d60e84d}.toastify.on{opacity:1}.toast-close{color:#fff;cursor:pointer;opacity:.4;background:0 0;border:0;padding:0 5px;font-family:inherit;font-size:1em}.toastify-right{right:15px}.toastify-left{left:15px}.toastify-top{top:-150px}.toastify-bottom{bottom:-150px}.toastify-rounded{border-radius:25px}.toastify-avatar{border-radius:2px;width:1.5em;height:1.5em;margin:-7px 5px}.toastify-center{max-width:-moz-fit-content;margin-left:auto;margin-right:auto;left:0;right:0}@media only screen and (width<=360px){.toastify-right,.toastify-left{max-width:fit-content;margin-left:auto;margin-right:auto;left:0;right:0}}.overlay{z-index:90;backdrop-filter:blur(4px);background:#0a0e1899;justify-content:center;align-items:flex-start;padding:12vh 1rem 1rem;animation:.15s overlay-in;display:flex;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0}}@keyframes panel-in{0%{opacity:0;transform:translateY(-8px)scale(.98)}}kbd{border:1px solid var(--border);background:var(--bg);text-align:center;border-bottom-width:2px;border-radius:4px;min-width:1.4em;padding:.05rem .35rem;font-family:inherit;font-size:.75rem;display:inline-block}.icon-button{color:var(--text-muted);background:0 0;border:0;border-radius:6px;place-items:center;padding:.35rem;display:grid}.icon-button:hover{background:var(--bg-raised);color:var(--text)}.palette{border:1px solid var(--border);background:var(--bg-sunken);border-radius:12px;width:min(36rem,100%);animation:.18s panel-in;overflow:hidden;box-shadow:0 30px 80px #0000008c}.palette-input{border:0;border-bottom:1px solid var(--border);background:0 0;width:100%;padding:1rem 1.15rem;font-size:1.05rem}.palette-input:focus{outline:none}.palette-list{max-height:min(22rem,55vh);padding:.4rem;overflow-y:auto}.palette-list li{border-radius:var(--radius);cursor:pointer;align-items:center;gap:.75rem;padding:.6rem .75rem;display:flex}.palette-list li.active{background:var(--bg-raised);box-shadow:inset 2px 0 0 var(--accent)}.palette-icon{text-align:center;width:1.5rem}.palette-group{color:var(--text-muted);margin-left:auto;font-size:.75rem}.palette-empty{color:var(--text-muted);cursor:default!important}.palette-hints{border-top:1px solid var(--border);color:var(--text-muted);gap:1.25rem;padding:.6rem 1rem;font-size:.75rem;display:flex}.palette-hints kbd+kbd{margin-left:.2rem}.trophy-button{z-index:40;border:1px solid var(--border);backdrop-filter:blur(6px);font-variant-numeric:tabular-nums;background:#0f1420d9;border-radius:999px;padding:.45rem .85rem;font-size:.85rem;font-weight:600;transition:border-color .2s,transform .2s;animation:.4s panel-in;position:absolute;top:29px;left:92px}.trophy-button:hover{border-color:#a78bfa;transform:translateY(-2px)}@media (width<=1024px){.trophy-button{top:19px;left:70px}}.trophies{border:1px solid var(--border);background:var(--bg-sunken);border-radius:12px;flex-direction:column;width:min(30rem,100%);max-height:76vh;padding:1.25rem 1.4rem;animation:.18s panel-in;display:flex;box-shadow:0 30px 80px #0000008c}.trophies-header,.trophies-progress,.trophies-count,.trophies-reset{flex-shrink:0}.trophies-header{justify-content:space-between;align-items:center;display:flex}.trophies-header h2{font-size:1.25rem}.trophies-progress{background:var(--bg-raised);border-radius:999px;height:6px;margin-top:1rem;overflow:hidden}.trophies-progress span{border-radius:inherit;background:linear-gradient(90deg,#6d28d9,#db2777);height:100%;transition:width .4s;display:block}.trophies-count{color:var(--text-muted);margin-top:.4rem;font-size:.85rem}.trophies-list{flex-direction:column;gap:.5rem;min-height:0;margin-top:1rem;display:flex;overflow-y:auto}.trophies-list li{border:1px solid var(--border);border-radius:var(--radius);opacity:.6;flex-shrink:0;align-items:flex-start;gap:.75rem;padding:.6rem .75rem;display:flex}.trophies-list li.earned{opacity:1;background:#6d28d91f;border-color:#a78bfa73}.trophy-icon{font-size:1.2rem;line-height:1.4}.trophy-tag{background:var(--bg-raised);color:var(--text-muted);vertical-align:middle;border-radius:999px;margin-left:.5rem;padding:.05rem .45rem;font-size:.7rem;font-weight:600;display:none}@media (hover:none){.trophy-tag{display:inline-block}.trophies-list li.computer-only{order:1}}.trophy-text{color:var(--text-muted);font-size:.85rem;display:block}.trophies-reset{color:var(--text-muted);background:0 0;border:0;margin-top:1rem;padding:0;font-size:.8rem;text-decoration:underline}.trophies-reset:hover{color:var(--danger)}.confetti-canvas{z-index:100;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.logo-link{z-index:50;border-radius:22%;position:absolute;top:16px;left:16px}.logo{border-radius:22%;width:64px;height:64px}.logo.logo-animated{animation:1.4s cubic-bezier(.5,-.55,.3,1) .8s both logo-intro}.logo-link:hover .logo{box-shadow:0 0 0 2px var(--accent)}@keyframes logo-intro{0%{transform:translate(calc(50vw - 48px),calc(50vh - 48px))scale(4)}to{transform:none}}@media (width<=1024px){.logo,.logo.logo-animated{width:44px;height:44px;animation:none}}.found-message{z-index:60;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);background:#0f1420f0;max-width:300px;padding:1rem 1.25rem 1.1rem;animation:.5s slide-in;position:fixed;top:1rem;right:1rem;box-shadow:0 12px 30px #00000059}.found-eyebrow{color:var(--danger);letter-spacing:.08em;text-transform:uppercase;font-size:.8rem;font-weight:700}.found-title{margin:.25rem 0 .4rem;font-size:1.1rem;font-weight:600;line-height:1.35}.found-hint{color:var(--text-muted);font-size:.9rem}.found-close{color:var(--text-muted);background:0 0;border:0;border-radius:4px;place-items:center;padding:.25rem;display:grid;position:absolute;top:.6rem;right:.6rem}.found-close:hover{color:var(--danger)}.found-tab{z-index:60;border:1px solid var(--border);background:#0f1420d9;border-radius:999px;padding:.45rem .9rem;font-size:.85rem;position:fixed;top:1rem;right:1rem}.found-tab:hover{border-color:var(--accent);color:var(--accent)}@keyframes slide-in{0%{opacity:0;transform:translate(110%)}to{opacity:1;transform:none}}@media (width<=640px){.found-message{max-width:none;left:1rem}}.found-progress{border-top:1px solid var(--border);flex-direction:column;gap:.15rem;margin-top:.75rem;padding-top:.6rem;font-size:.85rem;display:flex}.found-progress strong{color:var(--accent)}.found-tease{color:var(--text-muted);font-style:italic}.playground-more{margin-top:1.5rem}.playground-more a{color:var(--text);align-items:center;gap:.4rem;font-size:.9rem;font-weight:600;transition:color .2s;display:inline-flex}.playground-more a:hover,.playground-more a:focus-visible{color:var(--accent)}.playground-more .arrow{margin:0}.playground-more a:hover .arrow{transform:translate(3px)}.home{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:4rem;max-width:1180px;margin:0 auto;padding:0 3rem;display:grid}.intro{flex-direction:column;justify-content:space-between;height:100vh;padding:6rem 0 3rem;display:flex;position:sticky;top:0}.content{padding:6rem 0 3rem}.intro-name{letter-spacing:-.03em;font-size:clamp(2.5rem,4.5vw,3.25rem);font-weight:700;line-height:1.05}.intro-title{letter-spacing:-.01em;margin-top:.75rem;font-size:1.35rem;font-weight:600}.intro-tagline{max-width:22rem;color:var(--text-muted);margin-top:1rem}.section-nav{margin-top:2.5rem}.section-nav a{color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:1rem;padding:.45rem 0;font-size:.75rem;font-weight:700;transition:color .2s;display:inline-flex}.nav-line{background:currentColor;width:2rem;height:1px;transition:width .2s;display:inline-block}.section-nav a:hover,.section-nav a.active{color:var(--text)}.section-nav a:hover .nav-line,.section-nav a.active .nav-line{width:4rem}.intro-actions{flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;margin-top:2rem;display:flex}.palette-hint{color:var(--text-muted);background:0 0;border:0;padding:0;font-size:.85rem}.palette-hint:hover{color:var(--text)}.palette-hint kbd{margin:0 .15rem}.secret-links{flex-direction:column;flex:1;justify-content:center;align-items:flex-start;gap:1.25rem;padding:1.5rem 0 1.5rem 7rem;display:flex}.secret-link{color:#0000;background-image:radial-gradient(circle 10vmax at var(--sx,-100vmax) var(--sy,-100vmax), #f0fffc 0%, #b7f3e8 35%, #b7f3e800 75%);-webkit-background-clip:text;background-clip:text;font-weight:500}.secret-link:focus-visible{color:var(--accent)}.blob{z-index:-1;aspect-ratio:1;background:linear-gradient(var(--blob-from), var(--blob-to));opacity:.4;filter:blur(1.5vmax);pointer-events:none;height:22vmax;translate:calc(var(--x) - 50%) calc(var(--y) - 50%);border-radius:50%;animation:20s infinite blob-spin;position:fixed;top:0;left:0}@keyframes blob-spin{0%{rotate:0deg}50%{scale:1 1.1}to{rotate:360deg}}.socials{gap:1.5rem;display:flex}.socials a{opacity:.85;transition:opacity .2s,transform .2s;display:block}.socials a:hover{opacity:1;transform:translateY(-3px)}.socials img{object-fit:contain;width:32px;height:32px}.section{margin-bottom:6rem;scroll-margin-top:6rem}.section>p{color:var(--text-muted)}.section>p+p{margin-top:1rem}.section-heading{letter-spacing:.12em;text-transform:uppercase;margin-bottom:1.5rem;font-size:.8rem;font-weight:700}.section-lede{margin-bottom:1.5rem}.card-list{flex-direction:column;gap:1rem;display:flex}.card{border-radius:var(--radius);border:1px solid #0000;padding:1.25rem;transition:background-color .2s,border-color .2s,opacity .2s;display:grid;position:relative}.card:hover,.card:focus-within{border-color:var(--border);background:#2e385099;box-shadow:inset 0 1px #94a3b814}@media (hover:hover){.card-list:hover .card:not(:hover){opacity:.55}}.card-title{font-size:1.1rem;font-weight:600;line-height:1.3;transition:color .2s;display:block}.card:hover .card-title{color:var(--accent)}.arrow{margin-left:.35rem;transition:transform .2s;display:inline-block}.card:hover .arrow{transform:translate(2px,-2px)}.stretched-link:after{content:"";border-radius:var(--radius);position:absolute;inset:0}.project-card{grid-template-columns:9rem 1fr;align-items:start;gap:1.25rem}.project-image{aspect-ratio:16/9;object-fit:cover;object-position:top;border:2px solid var(--border);border-radius:6px;width:100%;height:auto;margin-top:.25rem}.project-body p{color:var(--text-muted);margin-top:.5rem;font-size:.95rem}.chips{flex-wrap:wrap;gap:.5rem;margin-top:.9rem;display:flex}.chip{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.2rem .75rem;font-size:.75rem;font-weight:500;line-height:1.25rem}.card-links{gap:1.25rem;margin-top:.9rem;font-size:.85rem;font-weight:600;display:flex}.card-links a{z-index:1;color:var(--text);position:relative}.card-links a:after{content:" ↗"}.card-links a:hover{color:var(--accent)}.game-card{grid-template-columns:2.5rem 1fr;align-items:start;gap:1rem}.game-icon{border-radius:var(--radius);background:var(--bg-raised);place-items:center;width:2.5rem;height:2.5rem;font-size:1.25rem;display:grid}.game-description{color:var(--text-muted);margin-top:.3rem;font-size:.95rem;display:block}.site-footer{color:var(--text-muted);letter-spacing:.06em;font-size:.75rem}@media (width>=1025px) and (height<=760px){.section-nav{display:none}}@media (width<=1024px){.home{max-width:680px;padding:0 1.25rem;display:block}.intro{height:auto;padding:5.5rem 0 2rem;position:static}.section-nav,.palette-hint{display:none}.secret-links{flex-flow:wrap;gap:.5rem 1.5rem;padding:2.5rem 0}.content{padding-top:1rem}.section{margin-bottom:4rem}.section-heading{z-index:2;backdrop-filter:blur(8px);background:#262f43d9;margin:0 -1.25rem 1rem;padding:1rem 1.25rem;position:sticky;top:0}.card{padding:1rem 0}.card:hover,.card:focus-within{box-shadow:none;background:0 0;border-color:#0000}}@media (width<=560px){.project-card{grid-template-columns:1fr}.project-image{order:2;max-width:16rem}}@media (hover:none){.blob,.secret-links,.hover-only{display:none}.socials{margin-top:2.5rem}}.game-card[href=\/neon-ricochet]{background:linear-gradient(115deg, #6de0ec0d, #b994ff0d), var(--bg-sunken);border-color:#6de0ec70}.game-card[href=\/neon-ricochet] .game-icon{color:#6de0ec}
