@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-0: #0f1218;--bg-1: #1b2230;--bg-2: #2a3344;--text: #f2f5ff;--muted: #b8c1d2;--line: rgba(222, 233, 255, .44);--star: #d9e4ff;--star-warm: #fff0cf;--star-glow: rgba(184, 204, 255, .72);--nebula-a: rgba(116, 130, 160, .32);--nebula-b: rgba(85, 98, 124, .22);--nebula-c: rgba(62, 73, 92, .18);--panel-bg: rgba(24, 30, 40, .78);--panel-border: rgba(220, 232, 255, .32);--font-display: "Geist", "Avenir Next", "Segoe UI", sans-serif;--font-mono: "Geist Mono", "SF Mono", "Menlo", monospace}html[data-theme=violet]{--bg-0: #040311;--bg-1: #130936;--bg-2: #2e1464;--text: #f3efff;--muted: #c0b4de;--line: rgba(227, 208, 255, .5);--star: #dfd1ff;--star-warm: #ffedda;--star-glow: rgba(176, 132, 255, .78);--nebula-a: rgba(126, 90, 226, .42);--nebula-b: rgba(84, 50, 174, .3);--nebula-c: rgba(156, 81, 214, .2);--panel-bg: rgba(24, 12, 47, .8);--panel-border: rgba(225, 210, 255, .34)}html[data-theme=dawn]{--bg-0: #14070f;--bg-1: #3a1526;--bg-2: #6b2233;--text: #ffede7;--muted: #dcb8ae;--line: rgba(255, 213, 190, .48);--star: #ffd9bf;--star-warm: #fff7de;--star-glow: rgba(255, 152, 112, .76);--nebula-a: rgba(216, 102, 124, .36);--nebula-b: rgba(178, 82, 70, .26);--nebula-c: rgba(234, 167, 129, .18);--panel-bg: rgba(45, 16, 28, .8);--panel-border: rgba(255, 218, 198, .33)}html[data-theme=cobalt]{--bg-0: #02091a;--bg-1: #0a2458;--bg-2: #123d88;--text: #edf3ff;--muted: #b0bedd;--line: rgba(194, 216, 255, .52);--star: #d4e3ff;--star-warm: #ffefcf;--star-glow: rgba(107, 163, 255, .8);--nebula-a: rgba(74, 123, 224, .38);--nebula-b: rgba(53, 97, 206, .28);--nebula-c: rgba(87, 152, 236, .18);--panel-bg: rgba(8, 29, 71, .8);--panel-border: rgba(199, 220, 255, .33)}html[data-theme=ocean]{--bg-0: #030c13;--bg-1: #0d1c2b;--bg-2: #182c3d;--text: #edf6ff;--muted: #afc1d0;--line: rgba(194, 219, 240, .47);--star: #d6e9ff;--star-warm: #f5efde;--star-glow: rgba(131, 169, 207, .74);--nebula-a: rgba(66, 94, 124, .28);--nebula-b: rgba(49, 78, 106, .21);--nebula-c: rgba(84, 118, 146, .15);--panel-bg: rgba(13, 26, 39, .8);--panel-border: rgba(183, 210, 233, .31)}html[data-theme=ember]{--bg-0: #11080d;--bg-1: #25111d;--bg-2: #3c1f30;--text: #f9edf4;--muted: #ccb2be;--line: rgba(232, 198, 214, .46);--star: #f0dbe9;--star-warm: #f8eedf;--star-glow: rgba(181, 124, 150, .72);--nebula-a: rgba(126, 74, 98, .29);--nebula-b: rgba(95, 52, 77, .22);--nebula-c: rgba(156, 99, 131, .15);--panel-bg: rgba(33, 18, 29, .8);--panel-border: rgba(223, 194, 209, .31)}html[data-theme=midnight]{--bg-0: #050812;--bg-1: #121a31;--bg-2: #232d48;--text: #eff3ff;--muted: #b7bfd6;--line: rgba(196, 208, 237, .46);--star: #d9e0f5;--star-warm: #f4ecd6;--star-glow: rgba(136, 149, 190, .74);--nebula-a: rgba(84, 94, 132, .27);--nebula-b: rgba(60, 71, 110, .21);--nebula-c: rgba(99, 109, 148, .15);--panel-bg: rgba(19, 26, 47, .8);--panel-border: rgba(189, 200, 229, .31)}*{box-sizing:border-box}html,body,#root{margin:0;width:100%;min-height:100%;height:100%}#root{min-height:100vh;min-height:100dvh;padding-bottom:env(safe-area-inset-bottom)}html{background-color:var(--bg-0)}body{position:relative;overflow:hidden;overscroll-behavior:none;color:var(--text);font-family:var(--font-mono);background-color:var(--bg-0)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:-1;background:radial-gradient(circle at 28% 24%,var(--nebula-a),transparent 44%),radial-gradient(circle at 72% 20%,var(--nebula-b),transparent 42%),radial-gradient(circle at 58% 72%,var(--nebula-c),transparent 46%),linear-gradient(145deg,var(--bg-0),var(--bg-1) 56%,var(--bg-2))}a{color:inherit;text-decoration:none}.theme-dock{position:fixed;top:max(calc(env(safe-area-inset-top) + .8rem),1rem);right:1rem;width:max-content;z-index:200}.theme-toggle{display:inline-flex;margin-left:auto;align-items:center;justify-content:center;border:1px solid var(--panel-border);border-radius:8px;background:var(--panel-bg);color:var(--text);font:500 .72rem var(--font-mono);text-transform:lowercase;padding:.3rem .74rem;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.theme-menu{position:absolute;top:calc(100% + .42rem);right:0;display:grid;gap:.15rem;width:max-content;padding:.45rem;border:1px solid var(--panel-border);border-radius:12px;background:var(--panel-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.theme-option{border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text);font:500 .7rem var(--font-mono);text-transform:lowercase;text-align:left;display:flex;align-items:center;gap:.46rem;padding:.24rem .42rem;cursor:pointer;white-space:nowrap}.theme-option[data-active=true]{border-color:color-mix(in srgb,var(--line) 80%,var(--star-warm));background:color-mix(in srgb,var(--panel-bg) 66%,transparent)}.theme-dot{width:.43rem;height:.43rem;border-radius:999px;background:var(--dot);box-shadow:0 0 0 1px color-mix(in srgb,var(--text) 30%,transparent)}.galaxy-home{position:relative;min-height:100dvh;width:100%}.galaxy-nav{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none}.galaxy-nav .page-star{pointer-events:auto}.galaxy-nav.is-page-focus{z-index:10}.galaxy-nav.is-page-focus .starfield,.galaxy-nav.is-page-focus .constellation-lines{z-index:1}.galaxy-nav.is-page-focus .starfield{opacity:1!important;animation:none!important}.galaxy-nav.is-page-focus .constellation-lines .constellation-line{opacity:0;stroke-dasharray:none;stroke-dashoffset:0;animation:none!important;transition:opacity .22s ease}.galaxy-nav.is-page-focus .constellation-lines .constellation-line.focus-line{opacity:.74;stroke-dasharray:none;stroke-dashoffset:0;animation:none!important}.galaxy-nav.is-page-focus .constellation-lines .constellation-line.focus-trace{display:none}.galaxy-nav.is-page-focus .stars-layer{opacity:1;z-index:12;transition:opacity .26s ease}.galaxy-nav.is-page-focus .page-star{opacity:0;transform:translate(-50%,-50%) scale(1);pointer-events:none;animation:none!important;transition:opacity .26s ease}.galaxy-nav.is-page-focus .page-star.is-home-star,.galaxy-nav.is-page-focus .page-star.is-route-star{opacity:1!important;pointer-events:auto}.galaxy-nav.is-page-focus .page-star .star-label{opacity:0}.galaxy-nav.is-page-focus .page-star.is-home-star .star-label,.galaxy-nav.is-page-focus .page-star.is-route-star .star-label{opacity:1}.galaxy-nav.is-returning-home .starfield{animation:none!important;opacity:1!important}.galaxy-nav.is-returning-home .stars-layer{opacity:1;transition:opacity .18s ease}.galaxy-nav.is-returning-home .constellation-lines .constellation-line{opacity:0;stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:return-line .76s cubic-bezier(.22,1,.36,1) forwards!important;animation-delay:calc(var(--enter-delay, 0ms) * .2 + .88s)}.galaxy-nav.is-returning-home .page-star{opacity:0;pointer-events:none;animation:return-bloom .82s cubic-bezier(.22,1,.36,1) forwards!important;animation-delay:calc(var(--enter-delay, 0ms) * .12 + .14s)}.galaxy-nav.is-returning-home .page-star .star-label{opacity:0;transform:translate(-50%) translateY(-2px);animation:label-return .44s cubic-bezier(.22,1,.36,1) forwards!important;animation-delay:calc(var(--enter-delay, 0ms) * .12 + .28s)}.galaxy-nav.is-returning-home .page-star.is-home-star,.galaxy-nav.is-returning-home .page-star.is-return-source{opacity:1!important;animation:none!important;transform:translate(-50%,-50%) scale(1);filter:none;pointer-events:auto}.galaxy-nav.is-returning-home~.galaxy-home .galaxy-core{animation:none!important}.galaxy-nav.is-returning-home~.galaxy-home .typed-name{animation:none!important}.galaxy-nav.is-entered:not(.is-page-focus):not(.is-returning-home):not(.is-initial-intro) .page-star{opacity:1;transform:translate(-50%,-50%) scale(1)}.galaxy-nav.is-entered:not(.is-page-focus):not(.is-returning-home):not(.is-initial-intro) .constellation-lines .constellation-line:not(.constellation-line-trace){opacity:.64;stroke-dasharray:none;stroke-dashoffset:0;animation:none!important}.starfield{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;opacity:0}.bg-star{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);border-radius:999px;opacity:var(--alpha);background:radial-gradient(circle at 44% 42%,#fff 0,#fff 42%,#fff3);box-shadow:0 0 calc(var(--size) * 2.1) #ffffff57}.bg-star.is-cool{background:radial-gradient(circle at 44% 42%,#fff 0,#fff 38%,#cce1ff40)}.bg-star.is-warm{background:radial-gradient(circle at 44% 42%,#fffef5 0,#fffef5 38%,#ffe2b03d)}.bg-star.is-shimmer{animation:twinkle var(--twinkle, 8s) ease-in-out infinite alternate}.constellation-lines{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none}.constellation-lines .constellation-line{stroke:transparent;stroke-width:1.05;stroke-linecap:round;opacity:0}.constellation-lines .constellation-line-glow{stroke:color-mix(in srgb,var(--line) 68%,var(--star));stroke-width:2.3;opacity:0}.constellation-lines .constellation-line-trace{stroke:color-mix(in srgb,var(--star-warm) 68%,var(--line));stroke-width:.92;stroke-dasharray:none;stroke-dashoffset:0;opacity:0!important;animation:none!important}.galaxy-core{position:absolute;left:50%;top:29%;transform:translate(-50%,-50%);text-align:center;z-index:4;width:min(86vw,460px);opacity:1;pointer-events:none}.galaxy-home.is-entered .galaxy-core{opacity:1}.galaxy-core h1{margin:0;font:500 clamp(2.4rem,6vw,4.6rem) / .98 var(--font-display);letter-spacing:-.045em}.typed-name{display:inline-flex;align-items:center}.typed-cursor{width:.09em;height:.88em;margin-inline:.06em;background:var(--text);border-radius:1px}.galaxy-core p{margin:.6rem 0 0;color:var(--muted);font-size:.88rem}.galaxy-core .status{font-size:.8rem}.galaxy-core .status-label{font-weight:700;letter-spacing:.02em;color:var(--text)}.stars-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3}.page-star{position:absolute;left:var(--x);top:var(--y);width:calc(var(--size) * 3.6);height:calc(var(--size) * 3.6);transform:translate(-50%,-50%) scale(.5);display:grid;place-items:center;text-decoration:none;opacity:0;transition:opacity .46s cubic-bezier(.22,1,.36,1),transform .46s cubic-bezier(.22,1,.36,1),filter .26s ease;will-change:opacity,transform}.galaxy-home.is-entered .page-star{animation:star-enter .9s cubic-bezier(.22,1,.36,1) forwards;animation-delay:var(--enter-delay, 0ms)}.star-node{position:absolute;left:50%;top:50%;width:calc(var(--size) * .95);height:calc(var(--size) * .95);transform:translate(-50%,-50%);border-radius:999px;background:radial-gradient(circle at 42% 38%,#ffffff 0 32%,color-mix(in srgb,var(--star) 92%,#ffffff) 56%,color-mix(in srgb,var(--star) 58%,transparent) 82%,transparent 100%);box-shadow:0 0 calc(var(--size) * 1.2) color-mix(in srgb,var(--star-glow) 78%,transparent),0 0 calc(var(--size) * 2.35) color-mix(in srgb,var(--star-glow) 40%,transparent)}.star-node:before,.star-node:after{content:"";position:absolute;left:50%;top:50%}.star-node:before{width:calc(var(--size) * 4.7);height:calc(var(--size) * 4.7);transform:translate(-50%,-50%);border-radius:999px;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--star) 28%,transparent),transparent 72%);filter:blur(1.8px)}.star-node:after{width:calc(var(--size) * 4.3);height:calc(var(--size) * 4.3);transform:translate(-50%,-50%);border-radius:999px;background:radial-gradient(circle at 50% 50%,rgba(255,249,236,.24),transparent 72%);filter:blur(1.8px);opacity:.42}.star-label{position:absolute;top:calc(100% + .42rem);left:50%;transform:translate(-50%);color:var(--muted);font-size:.74rem;white-space:nowrap;text-transform:lowercase;letter-spacing:.02em}.page-star:hover,.page-star:focus-visible{transform:translate(-50%,-50%);filter:brightness(1.06);outline:none}.page-star:hover .star-node,.page-star:focus-visible .star-node{background:radial-gradient(circle at 50% 44%,#ffffff 0 30%,color-mix(in srgb,var(--star-warm) 92%,#ffffff) 58%,color-mix(in srgb,var(--star-warm) 58%,transparent) 82%,transparent 100%)}.page-star:hover .star-label,.page-star:focus-visible .star-label{color:var(--text)}.blog-page{position:relative;width:100%;height:100dvh;overflow-y:auto;padding:clamp(1rem,2.8vw,2.2rem)}.blog-page-inner{width:min(100%,780px);margin:0 auto;padding-top:clamp(4rem,10vh,6.5rem);padding-bottom:3rem;position:relative;z-index:5;pointer-events:none;will-change:opacity,transform}.blog-page-inner>*{position:relative;z-index:1}.blog-header h1,.blog-item h2,.blog-item-date{text-shadow:0 0 14px color-mix(in srgb,var(--bg-0) 90%,transparent)}.blog-page-inner a,.blog-page-inner button{pointer-events:auto}.blog-header{margin:0 auto 1.8rem;width:min(100%,720px);text-align:center;position:relative;padding-bottom:.95rem}.blog-header:after{content:"";display:block;width:min(340px,56vw);margin:.8rem auto 0;border-bottom:1px solid color-mix(in srgb,var(--line) 52%,transparent)}.blog-header h1{margin:0;font:500 clamp(1.75rem,2.4vw,2.2rem) / .97 var(--font-mono);letter-spacing:0;text-transform:lowercase}.blog-list{list-style:none;margin:0 auto;width:min(100%,720px);padding:0;display:grid;gap:.58rem}.blog-item{border:1px solid color-mix(in srgb,var(--panel-border) 76%,transparent);border-radius:12px;background:color-mix(in srgb,var(--panel-bg) 68%,transparent)}.blog-entry-link{display:block;border-radius:12px;pointer-events:auto}.blog-entry-link:hover,.blog-entry-link:focus-visible{outline:none;background:color-mix(in srgb,var(--panel-bg) 76%,transparent)}.blog-entry-link{display:block;padding:1rem 1.1rem;text-decoration:none;color:inherit}.blog-item-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.4rem}.blog-item-meta{display:flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.68rem;font-family:var(--font-mono);text-transform:lowercase;letter-spacing:.02em}.blog-item-format{color:color-mix(in srgb,var(--star) 85%,var(--text));font-weight:520}.blog-item-separator{opacity:.4}.blog-item-time{opacity:.7}.blog-item-date{white-space:nowrap;color:var(--muted);font-size:.72rem;font-family:var(--font-mono);opacity:.7}.blog-item h2{margin:0 0 .5rem;font:520 clamp(1.08rem,1.65vw,1.52rem) / 1.28 var(--font-mono);letter-spacing:-.01em;color:var(--text);transition:color .2s ease}.blog-entry-link:hover h2{color:var(--star)}.blog-item-excerpt{margin:0 0 .7rem;color:color-mix(in srgb,var(--text) 78%,var(--muted));font-size:.82rem;line-height:1.62;max-width:68ch}.blog-item-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.8rem}.blog-tag{display:inline-block;padding:.2rem .5rem;border-radius:4px;background:color-mix(in srgb,var(--star-warm) 12%,transparent);color:color-mix(in srgb,var(--star) 90%,var(--text));font-size:.68rem;font-family:var(--font-mono);font-weight:500;letter-spacing:.01em;text-transform:lowercase;border:1px solid color-mix(in srgb,var(--star-warm) 18%,transparent)}.blog-post-page{position:relative;width:100%;height:100dvh;overflow-y:auto;padding:clamp(1rem,2vw,1.8rem);background:transparent;display:flex;justify-content:center}.blog-post-shell{display:block;width:min(100%,900px);margin-top:clamp(2rem,6vh,3rem);margin-bottom:3rem;padding:0;position:relative;z-index:5;pointer-events:auto;will-change:opacity,transform}.blog-post-header,.blog-post-body,.blog-post-tags{width:100%;display:block;box-sizing:border-box}.blog-post-header{padding:1.5rem 2rem;margin-bottom:.9rem}.blog-post-kicker{margin:0;color:var(--muted);font-size:.62rem;letter-spacing:.04em;text-transform:uppercase}.blog-post-header h1{margin:0 0 .75rem;font:520 clamp(1.2rem,1.95vw,1.62rem) / 1.22 var(--font-display);letter-spacing:-.01em;color:var(--text)}.blog-post-metadata{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.blog-meta-box{display:inline-block;padding:.4rem .75rem;font:500 .7rem/1 var(--font-mono);color:var(--muted);background:color-mix(in srgb,var(--line) 6%,transparent);border:1px solid color-mix(in srgb,var(--line) 20%,transparent);border-radius:6px;text-transform:lowercase}.blog-post-meta{margin:.35rem 0 0;color:var(--muted);font-size:.62rem;letter-spacing:.02em}.blog-post-dek{margin:.9rem 0 0;color:color-mix(in srgb,var(--text) 86%,var(--muted));font-size:.8rem;line-height:1.74}.blog-post-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}.blog-post-body{padding:1.4rem 2rem 2rem;position:relative}.blog-post-body:before{content:"";position:absolute;top:0;left:2rem;right:2rem;border-top:1px solid color-mix(in srgb,var(--line) 48%,transparent);pointer-events:none}.blog-markdown h2{margin:1.7rem 0 0;font:510 clamp(1.08rem,1.68vw,1.34rem) / 1.28 var(--font-display);letter-spacing:-.005em;color:var(--text)}.blog-markdown h2:first-child{margin-top:0}.blog-markdown p{margin:.82rem 0 0;font-size:.81rem;line-height:1.76;color:color-mix(in srgb,var(--text) 88%,var(--muted))}.blog-markdown p:first-child{margin-top:0}.blog-markdown p:first-child:first-letter{font-size:1.2em;line-height:1;font-weight:500}.blog-markdown ul{margin:.86rem 0 0;padding-left:1.06rem;max-width:58ch}.blog-markdown li{margin:.36rem 0 0;font-size:.8rem;line-height:1.74;color:color-mix(in srgb,var(--text) 86%,var(--muted))}.blog-post-tags{margin:1rem 0 0;color:var(--muted);font-size:.66rem}.about-page,.contact-page{position:relative;width:100%;height:100dvh;overflow-y:auto;padding:clamp(1rem,2vw,1.8rem)}.about-shell,.contact-shell{width:min(100%,700px);margin:0 auto;margin-top:clamp(3rem,8vh,4.4rem);margin-bottom:3rem;position:relative;z-index:5;pointer-events:auto}.about-header,.contact-header{margin:0 auto 1.8rem;width:min(100%,720px);text-align:center;position:relative;padding-bottom:.95rem}.about-header:after,.contact-header:after{content:"";display:block;width:min(340px,56vw);margin:.8rem auto 0;border-bottom:1px solid color-mix(in srgb,var(--line) 52%,transparent)}.about-header h1,.contact-header h1{margin:0;font:500 clamp(1.75rem,2.4vw,2.2rem) / .97 var(--font-mono);letter-spacing:0;text-transform:lowercase;text-shadow:0 0 14px color-mix(in srgb,var(--bg-0) 90%,transparent)}.about-header p{display:block;margin:.72rem auto 0;width:min(92%,560px);color:color-mix(in srgb,var(--text) 86%,var(--muted));font-size:.82rem;line-height:1.72}.about-blurb{margin:.85rem auto 0;width:min(92%,560px);color:color-mix(in srgb,var(--text) 86%,var(--muted));font-size:.82rem;line-height:1.72;text-align:center}.contact-header p{display:none}.about-timeline{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.75rem}.about-timeline li{border-left:1px solid color-mix(in srgb,var(--line) 38%,transparent);padding:.2rem 0 .2rem .9rem}.about-year{margin:0;color:var(--muted);font-size:.64rem;letter-spacing:.04em;text-transform:uppercase}.about-timeline h2{margin:.3rem 0 0;font:510 clamp(.98rem,1.5vw,1.2rem) / 1.3 var(--font-mono)}.about-timeline p{margin:.5rem 0 0;max-width:60ch;color:color-mix(in srgb,var(--text) 84%,var(--muted));font-size:.78rem;line-height:1.72}.contact-links{list-style:none;margin:1.15rem 0 0;padding:0;display:grid;gap:.56rem}.contact-links li{border:1px solid color-mix(in srgb,var(--panel-border) 72%,transparent);border-radius:12px;background:color-mix(in srgb,var(--panel-bg) 56%,transparent)}.contact-links a{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:.72rem;padding:.72rem .76rem .68rem}.contact-index{color:color-mix(in srgb,var(--text) 44%,var(--muted));font:500 .62rem/1 var(--font-mono);letter-spacing:.05em}.contact-name{font:510 clamp(.98rem,1.45vw,1.16rem) / 1.2 var(--font-mono);letter-spacing:.01em}.contact-copied{justify-self:end;color:var(--muted);font:520 .62rem/1 var(--font-mono);letter-spacing:.04em;text-transform:lowercase;opacity:0;transform:translateY(4px);transition:opacity .22s ease,transform .22s ease,color .22s ease}.contact-copied.is-visible{opacity:1;transform:translateY(0);color:var(--text)}.tools-page,.media-page,.links-page{position:relative;width:100%;height:100dvh;overflow-y:auto;padding:clamp(1rem,2vw,1.8rem)}.tools-shell,.media-shell,.links-shell{width:min(100%,760px);margin:0 auto;margin-top:clamp(3rem,8vh,4.4rem);margin-bottom:3rem;position:relative;z-index:5;pointer-events:auto}.tools-header,.media-header,.links-header{margin:0 auto 1.8rem;width:min(100%,720px);text-align:center;position:relative;padding-bottom:.95rem}.tools-header:after,.media-header:after,.links-header:after{content:"";display:block;width:min(340px,56vw);margin:.8rem auto 0;border-bottom:1px solid color-mix(in srgb,var(--line) 52%,transparent)}.tools-header h1,.media-header h1,.links-header h1{margin:0;font:500 clamp(1.75rem,2.4vw,2.2rem) / .97 var(--font-mono);letter-spacing:0;text-transform:lowercase;text-shadow:0 0 14px color-mix(in srgb,var(--bg-0) 90%,transparent)}.tools-header p,.media-header p,.links-header p{display:none}.tools-search-wrap{width:min(100%,560px);margin:.2rem auto 0}.tools-search{width:100%;border:1px solid color-mix(in srgb,var(--panel-border) 72%,transparent);border-radius:12px;background:color-mix(in srgb,var(--panel-bg) 62%,transparent);color:var(--text);font:500 .86rem/1.2 var(--font-mono);padding:.76rem .9rem}.tools-search:focus{outline:none;border-color:color-mix(in srgb,var(--star) 54%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--star) 24%,transparent)}.tool-runtime{width:min(100%,560px);margin:.85rem auto 0;border:1px solid color-mix(in srgb,var(--panel-border) 72%,transparent);border-radius:14px;background:color-mix(in srgb,var(--panel-bg) 56%,transparent);padding:.9rem;text-align:center}.tool-runtime h2{margin:0;font:500 clamp(1rem,1.8vw,1.2rem) / 1.2 var(--font-mono);text-transform:lowercase}.tool-mode{margin:.5rem 0 0;color:var(--muted);font-size:.72rem;letter-spacing:.04em;text-transform:lowercase}.tool-clock{margin:.36rem 0 0;font:520 clamp(2.1rem,6vw,2.9rem) / 1 var(--font-mono);letter-spacing:-.02em}.tool-controls{margin-top:.7rem;display:inline-flex;gap:.42rem}.tool-controls button{border:1px solid color-mix(in srgb,var(--line) 40%,transparent);border-radius:999px;background:color-mix(in srgb,var(--panel-bg) 62%,transparent);color:var(--text);font:500 .68rem/1 var(--font-mono);text-transform:lowercase;padding:.38rem .76rem}.tool-empty{width:min(100%,560px);margin:.8rem auto 0;text-align:center;color:var(--muted);font-size:.74rem}.media-grid{margin-top:1rem;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.56rem}.media-tile{border:1px solid color-mix(in srgb,var(--panel-border) 72%,transparent);border-radius:12px;background:color-mix(in srgb,var(--panel-bg) 52%,transparent);padding:.66rem .72rem}.media-tile.tile-1{grid-column:span 4}.media-tile.tile-2{grid-column:span 2}.media-tile.tile-3{grid-column:span 3}.media-kind{margin:0;color:var(--muted);font-size:.62rem;letter-spacing:.04em;text-transform:lowercase}.media-tile h2{margin:.34rem 0 0;font:510 clamp(.94rem,1.45vw,1.16rem) / 1.24 var(--font-mono)}.media-tile p{margin:.44rem 0 0;color:color-mix(in srgb,var(--text) 82%,var(--muted));font-size:.74rem;line-height:1.68}.gallery-state{margin:1rem auto 0;width:min(100%,980px);text-align:center;color:var(--muted);font-size:.74rem}.gallery-grid{margin-top:1rem;column-count:3;gap:.62rem;column-gap:.62rem}.gallery-item{margin:0;margin-bottom:.62rem;border:1px solid color-mix(in srgb,var(--panel-border) 72%,transparent);border-radius:12px;overflow:hidden;background:color-mix(in srgb,var(--panel-bg) 94%,var(--bg-0) 6%);box-shadow:0 6px 20px color-mix(in srgb,var(--bg-0) 62%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--panel-border) 20%,transparent);break-inside:avoid}.gallery-item img{display:block;width:100%;height:auto;object-fit:contain}.gallery-item figcaption{margin:0;padding:.5rem .6rem .62rem;background:color-mix(in srgb,var(--panel-bg) 88%,var(--bg-2) 12%);color:color-mix(in srgb,var(--text) 84%,var(--muted));font-size:.68rem;line-height:1.46;text-align:center;border-top:1px solid color-mix(in srgb,var(--panel-border) 56%,transparent)}.gallery-shell{width:min(100%,1100px);z-index:24}.gallery-sentinel{width:100%;height:2px}.links-columns{margin-top:1rem;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}.links-group{padding:.52rem .72rem 0 0}.links-group+.links-group{border-left:1px solid color-mix(in srgb,var(--line) 36%,transparent);padding-left:1rem}.links-group h2{margin:0;font:500 .8rem/1.2 var(--font-mono);color:var(--muted);text-transform:lowercase}.links-group ul{list-style:none;margin:.64rem 0 0;padding:0;display:grid;gap:.44rem}.links-group a{font:500 clamp(.88rem,1.4vw,1.02rem) / 1.25 var(--font-mono);border-bottom:1px solid color-mix(in srgb,var(--line) 44%,transparent)}.contact-links a:hover,.contact-links a:focus-visible{outline:none;background:color-mix(in srgb,var(--panel-bg) 72%,transparent)}.contact-links a:hover .contact-name,.contact-links a:focus-visible .contact-name{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18rem}.page-shell{min-height:100dvh;display:grid;place-items:center;padding:1.2rem;position:relative}.page-card{width:min(100%,720px);border:1px solid var(--panel-border);border-radius:18px;background:var(--panel-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:1.4rem;position:relative;z-index:5;will-change:opacity,transform}html[data-route-transition=to-home] .blog-page-inner,html[data-route-transition=to-home] .blog-post-shell,html[data-route-transition=to-home] .about-shell,html[data-route-transition=to-home] .contact-shell,html[data-route-transition=to-home] .tools-shell,html[data-route-transition=to-home] .media-shell,html[data-route-transition=to-home] .links-shell,html[data-route-transition=to-home] .page-card{animation:page-content-exit .42s cubic-bezier(.22,1,.36,1) forwards!important;pointer-events:none}.page-card h1{margin:0;font:560 clamp(2rem,5vw,3.2rem) / .96 var(--font-display);letter-spacing:-.04em}.page-card p{margin:.7rem 0 0;color:var(--muted)}.page-card a{display:inline-block;margin-top:1.1rem;border-bottom:1px solid color-mix(in srgb,var(--line) 80%,transparent)}@media (max-width: 720px){.galaxy-core{top:20%}.galaxy-core h1{font-size:clamp(2rem,11vw,3rem)}.galaxy-core p{font-size:.78rem}.theme-dock{top:max(calc(env(safe-area-inset-top) + .4rem),2.6rem);right:.8rem}.blog-page{padding-top:2.9rem}.blog-page-inner{width:min(100%,640px);padding-top:clamp(3.5rem,9vh,4.7rem)}.blog-header h1{font-size:clamp(1.48rem,10vw,1.9rem)}.blog-entry-link{padding:.8rem .9rem}.blog-item-header{flex-direction:column;align-items:flex-start;gap:.3rem;margin-bottom:.5rem}.blog-item h2{font-size:1.02rem;margin-bottom:.4rem}.blog-item-excerpt{font-size:.78rem}.blog-item-date{font-size:.66rem}.blog-tag{font-size:.64rem;padding:.18rem .42rem}.blog-post-page{padding:1rem}.blog-post-shell{width:100%;margin-top:clamp(1.5rem,4vh,2rem);padding:clamp(1.2rem,3vw,1.5rem)}.about-shell,.contact-shell,.tools-shell,.media-shell,.links-shell{width:min(100%,600px);margin-top:clamp(2.6rem,8vh,3.4rem)}.blog-post-header h1{font-size:clamp(1.06rem,5.5vw,1.3rem)}.blog-post-meta{font-size:.6rem}.blog-post-dek,.blog-markdown p,.blog-markdown li{font-size:.76rem;line-height:1.68}.blog-markdown h2{font-size:clamp(1rem,5.2vw,1.24rem)}.about-header h1,.contact-header h1,.tools-header h1,.media-header h1,.links-header h1{font-size:clamp(1.48rem,10vw,1.9rem)}.about-header p,.about-blurb,.contact-header p,.about-timeline p,.tools-header p,.media-header p,.links-header p,.tool-empty,.media-tile p{font-size:.76rem}.tool-clock{font-size:clamp(1.9rem,8vw,2.4rem)}.media-grid{grid-template-columns:1fr}.gallery-grid{column-count:2}.media-tile,.media-tile.tile-1,.media-tile.tile-2,.media-tile.tile-3{grid-column:span 1}.links-columns{grid-template-columns:1fr;gap:.84rem}.links-group{padding:.52rem 0 0}.links-group+.links-group{border-left:0;border-top:1px solid color-mix(in srgb,var(--line) 32%,transparent);padding-left:0;padding-top:.76rem}.contact-name{font-size:.82rem}.contact-index{font-size:.58rem}.contact-copied{font-size:.56rem}}@media (max-width: 560px){.gallery-grid{column-count:1}.tool-controls{display:grid;width:100%;gap:.4rem}.tool-controls button{width:100%}}@media (prefers-reduced-motion: no-preference){.blog-page-inner,.blog-post-shell,.about-shell,.contact-shell,.tools-shell,.media-shell,.links-shell,.page-card{animation:page-content-enter .56s cubic-bezier(.22,1,.36,1) both;animation-delay:.12s}.typed-cursor{animation:blink .9s steps(1,end) infinite}.tool-runtime{opacity:0;transform:translateY(8px) scale(.99);animation:tool-runtime-enter .3s cubic-bezier(.22,1,.36,1) forwards}.tool-empty{opacity:0;animation:tool-empty-enter .2s ease forwards}.galaxy-home.is-entered .starfield,.galaxy-nav.is-entered.is-initial-intro:not(.is-returning-home) .starfield{animation:field-fade .9s ease forwards}.galaxy-nav.is-entered:not(.is-page-focus):not(.is-returning-home):not(.is-initial-intro) .starfield{opacity:1;animation:none!important}.galaxy-home.is-entered .bg-star.is-shimmer,.galaxy-nav.is-entered .bg-star.is-shimmer{animation:twinkle var(--twinkle, 8s) ease-in-out infinite alternate}.constellation-lines .constellation-line:not(.constellation-line-trace){stroke-dasharray:var(--len);stroke-dashoffset:var(--len);opacity:0}.constellation-lines .constellation-line-trace{opacity:0!important;animation:none!important}.galaxy-home.is-entered .constellation-lines .constellation-line:not(.constellation-line-trace),.galaxy-nav.is-entered.is-initial-intro:not(.is-page-focus):not(.is-returning-home) .constellation-lines .constellation-line:not(.constellation-line-trace){animation:line-enter .92s ease forwards;animation-delay:calc(var(--enter-delay, 0ms) + .18s)}.galaxy-home.is-entered .constellation-lines .constellation-line-trace,.galaxy-nav.is-entered .constellation-lines .constellation-line-trace{opacity:0!important;animation:none!important}.galaxy-nav.is-entered.is-initial-intro:not(.is-page-focus):not(.is-returning-home) .page-star{animation:star-enter .9s cubic-bezier(.22,1,.36,1) forwards;animation-delay:var(--enter-delay, 0ms)}@keyframes line-enter{0%{opacity:0;stroke-dashoffset:var(--len)}to{opacity:.64;stroke-dashoffset:0}}@keyframes line-exit{0%{opacity:.64}to{opacity:0}}@keyframes focus-line-enter{0%{opacity:0;stroke-dashoffset:var(--len)}to{opacity:.78;stroke-dashoffset:0}}@keyframes trace-line-enter{0%{opacity:0}to{opacity:.24}}@keyframes focus-trace-enter{0%{opacity:0}to{opacity:.34}}@keyframes trace-line-flow{0%{opacity:0;stroke-dashoffset:0}12%{opacity:.26}to{opacity:.26;stroke-dashoffset:-104}}@keyframes star-enter{0%{opacity:0;transform:translate(-50%,-50%) scale(.64)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes dazzle-away{0%{opacity:1;transform:translate(-50%,-50%) scale(1);filter:brightness(1)}45%{opacity:.52;transform:translate(-50%,-50%) scale(.88);filter:brightness(1.28)}to{opacity:0;transform:translate(-50%,-50%) scale(.62);filter:brightness(.9)}}@keyframes field-fade{0%{opacity:0}to{opacity:1}}@keyframes field-exit{0%{opacity:1}to{opacity:0}}@keyframes return-field{0%{opacity:.35}to{opacity:1}}@keyframes return-line{0%{opacity:0;stroke-dashoffset:var(--len)}to{opacity:.64;stroke-dashoffset:0}}@keyframes return-bloom{0%{opacity:.65;transform:translate(-50%,-50%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes label-return{0%{opacity:.2;transform:translate(-50%) translateY(-2px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes home-copy-return{0%{opacity:.7;transform:translate(-50%,-50%) translateY(3px);filter:brightness(1.02)}to{opacity:1;transform:translate(-50%,-50%) translateY(0);filter:brightness(1)}}@keyframes home-name-return{0%{opacity:.6;letter-spacing:-.01em}to{opacity:1;letter-spacing:normal}}@keyframes page-content-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes tool-runtime-enter{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes tool-empty-enter{0%{opacity:0}to{opacity:1}}@keyframes page-content-exit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(12px)}}@keyframes twinkle{0%{opacity:var(--alpha)}to{opacity:calc(var(--alpha) * .46)}}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}}
