.header{position:sticky;top:0;z-index:10;background:#fbfafcd9;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.header__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1.5rem;max-width:var(--site-width);margin:0 auto;padding:1.1rem var(--gutter)}.header__brand{display:inline-flex;align-items:center;gap:.65rem;font-family:var(--font-serif);font-size:1.4rem;line-height:1;color:var(--text);text-decoration:none}.header__moon{width:15px;height:15px;border-radius:50%;box-shadow:inset 4px -3px 0 0 var(--accent);transform:rotate(-15deg)}.header__nav{display:flex;gap:1.75rem;list-style:none}.header__link{position:relative;font-family:var(--font-mono);font-size:.8125rem;color:var(--text-muted);text-decoration:none;transition:color var(--transition)}.header__link:hover,.header__link--active{color:var(--text)}.header__link--active:after{content:"";position:absolute;left:0;right:0;bottom:-.4rem;height:1.5px;background:var(--accent)}.article{max-width:var(--measure);margin:0 auto}.article__back{display:inline-block;margin-bottom:2.5rem;font-family:var(--font-mono);font-size:.8125rem;color:var(--text-muted);text-decoration:none;transition:color var(--transition)}.article__back:hover{color:var(--accent)}.article__header{margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--border)}.article__title{font-size:clamp(2.75rem,7vw,4rem);line-height:1;letter-spacing:-.02em;margin-top:.75rem}.pager{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:4rem}.pager__link{display:block;padding:1rem 1.25rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);text-decoration:none;transition:border-color var(--transition),background-color var(--transition)}.pager__link:hover{border-color:var(--border-strong);background:var(--surface-tint)}.pager__link--older{grid-column:2;text-align:right}.pager__label{display:block;font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.pager__title{display:block;margin-top:.25rem;color:var(--text);font-family:var(--font-serif);font-size:1.3rem;line-height:1.2}@media(max-width:520px){.pager{grid-template-columns:1fr}.pager__link--older{grid-column:auto}}.tiny-cat{position:absolute;right:var(--gutter);bottom:calc(100% + 1px);overflow:visible}.tiny-cat__body{fill:var(--text)}.tiny-cat__tail{fill:none;stroke:var(--text);stroke-width:3.5;stroke-linecap:round;transform-origin:28px 37px;animation:tail-swish 3.2s ease-in-out infinite alternate}.tiny-cat__eye{fill:#d9caff;transform-box:fill-box;transform-origin:center;animation:blink 6s infinite}@keyframes tail-swish{0%{transform:rotate(-8deg)}to{transform:rotate(12deg)}}@keyframes blink{0%,92%,97%,to{transform:scaleY(1)}94.5%{transform:scaleY(.1)}}@media(prefers-reduced-motion:reduce){.tiny-cat__tail,.tiny-cat__eye{animation:none}}.feed{list-style:none}.feed__item{display:grid;grid-template-columns:10rem minmax(0,1fr);gap:.5rem 2rem;padding:2rem 0;border-bottom:1px solid var(--border)}.feed__item>.meta{flex-direction:column;align-items:flex-start;gap:.2rem;padding-top:.6rem}.feed__item>.meta>*+*:before{content:none}.feed__body{max-width:62ch}.feed__title{font-size:2rem;line-height:1.1}.feed__title a{color:var(--text);text-decoration:none;transition:color var(--transition)}.feed__title a:hover{color:var(--accent)}.feed__excerpt{margin-top:.6rem;color:var(--text-muted)}.feed__note{font-size:1.0625rem}@media(max-width:640px){.feed__item{grid-template-columns:1fr}.feed__item>.meta{flex-direction:row;gap:0;padding-top:0}.feed__item>.meta>*+*:before{content:"·"}}.sleeping-cat-container{display:flex;justify-content:center;align-items:center;margin:2rem 0;padding:1rem}.sleeping-cat-svg{max-width:100%;height:auto;border-radius:20px;box-shadow:0 10px 30px #4c2c6933;background:linear-gradient(135deg,#2d1b45,#4c2c69)}.moon-glow{animation:moonPulse 4s ease-in-out infinite;transform-origin:center}@keyframes moonPulse{0%,to{filter:drop-shadow(0 0 10px rgba(248,244,255,.3));transform:scale(1)}50%{filter:drop-shadow(0 0 20px rgba(248,244,255,.6));transform:scale(1.02)}}.twinkle-1{animation:twinkle1 3s ease-in-out infinite}.twinkle-2{animation:twinkle2 2.5s ease-in-out infinite .5s}.twinkle-3{animation:twinkle3 4s ease-in-out infinite 1s}@keyframes twinkle1{0%,to{opacity:.3}50%{opacity:1}}@keyframes twinkle2{0%,to{opacity:.2}50%{opacity:.8}}@keyframes twinkle3{0%,to{opacity:.4}50%{opacity:.9}}.cat-body-fluffy{animation:fluffyBreathe 4s ease-in-out infinite;transform-origin:center}@keyframes fluffyBreathe{0%,to{transform:scale(1);filter:blur(0px)}50%{transform:scale(1.08);filter:blur(.5px)}}@keyframes catToCloudMorph{0%{opacity:1;transform:scale(1) rotate(0)}15%{opacity:1;transform:scale(1.05) rotate(0)}25%{opacity:.8;transform:scale(1.1) rotate(1deg)}40%{opacity:.3;transform:scale(1.2) rotate(2deg)}50%{opacity:0;transform:scale(1.3) rotate(3deg)}60%{opacity:.3;transform:scale(1.2) rotate(2deg)}75%{opacity:.8;transform:scale(1.1) rotate(1deg)}85%{opacity:1;transform:scale(1.05) rotate(0)}to{opacity:1;transform:scale(1) rotate(0)}}.cloud-shapes{animation:cloudAppear 8s ease-in-out infinite;transform-origin:center}@keyframes cloudAppear{0%{opacity:0;transform:scale(.5) translateY(10px)}15%{opacity:.1;transform:scale(.6) translateY(8px)}25%{opacity:.3;transform:scale(.7) translateY(5px)}40%{opacity:.7;transform:scale(.9) translateY(2px)}50%{opacity:1;transform:scale(1) translateY(0)}60%{opacity:.7;transform:scale(.9) translateY(2px)}75%{opacity:.3;transform:scale(.7) translateY(5px)}85%{opacity:.1;transform:scale(.6) translateY(8px)}to{opacity:0;transform:scale(.5) translateY(10px)}}.cloud-main{animation:cloudMainFloat 8s ease-in-out infinite}@keyframes cloudMainFloat{0%,to{transform:scale(1) translate(0)}25%{transform:scale(1.05) translate(-2px,-3px)}50%{transform:scale(1.1) translateY(-5px)}75%{transform:scale(1.05) translate(2px,-3px)}}.cloud-puff-1{animation:cloudPuff1Float 8s ease-in-out infinite .5s}@keyframes cloudPuff1Float{0%,to{transform:scale(1) translate(0)}25%{transform:scale(1.15) translate(-5px,-2px)}50%{transform:scale(1.2) translate(-8px,-6px)}75%{transform:scale(1.1) translate(-3px,-4px)}}.cloud-puff-2{animation:cloudPuff2Float 8s ease-in-out infinite 1s}@keyframes cloudPuff2Float{0%,to{transform:scale(1) translate(0)}25%{transform:scale(1.1) translate(3px,-4px)}50%{transform:scale(1.25) translate(6px,-8px)}75%{transform:scale(1.15) translate(4px,-5px)}}.cloud-puff-3{animation:cloudPuff3Float 8s ease-in-out infinite 1.5s}@keyframes cloudPuff3Float{0%,to{transform:scale(1) translate(0) rotate(0)}25%{transform:scale(1.2) translate(-3px,-8px) rotate(5deg)}50%{transform:scale(1.3) translate(-6px,-12px) rotate(10deg)}75%{transform:scale(1.15) translate(-2px,-6px) rotate(3deg)}}.cloud-puff-4{animation:cloudPuff4Float 8s ease-in-out infinite 2s}@keyframes cloudPuff4Float{0%,to{transform:scale(1) translate(0) rotate(0)}25%{transform:scale(1.1) translate(4px,-6px) rotate(-3deg)}50%{transform:scale(1.2) translate(8px,-10px) rotate(-8deg)}75%{transform:scale(1.05) translate(2px,-4px) rotate(-2deg)}}.cloud-puff-5{animation:cloudPuff5Float 8s ease-in-out infinite 2.5s}@keyframes cloudPuff5Float{0%,to{transform:scale(1) translate(0)}25%{transform:scale(1.15) translate(6px,2px)}50%{transform:scale(1.25) translate(12px,4px)}75%{transform:scale(1.1) translate(4px,1px)}}.cloud-particle-1{animation:cloudParticle1Float 8s ease-in-out infinite .3s}@keyframes cloudParticle1Float{0%,to{transform:translate(0) scale(1);opacity:.7}25%{transform:translate(-10px,-15px) scale(1.5);opacity:.9}50%{transform:translate(-20px,-25px) scale(2);opacity:1}75%{transform:translate(-8px,-12px) scale(1.3);opacity:.8}}.cloud-particle-2{animation:cloudParticle2Float 8s ease-in-out infinite .8s}@keyframes cloudParticle2Float{0%,to{transform:translate(0) scale(1);opacity:.6}25%{transform:translate(15px,-20px) scale(1.8);opacity:.8}50%{transform:translate(25px,-35px) scale(2.5);opacity:1}75%{transform:translate(12px,-18px) scale(1.5);opacity:.7}}.cloud-particle-3{animation:cloudParticle3Float 8s ease-in-out infinite 1.2s}@keyframes cloudParticle3Float{0%,to{transform:translate(0) scale(1) rotate(0);opacity:.8}25%{transform:translate(-8px,8px) scale(1.4) rotate(45deg);opacity:.9}50%{transform:translate(-15px,15px) scale(1.8) rotate(90deg);opacity:1}75%{transform:translate(-5px,6px) scale(1.2) rotate(30deg);opacity:.85}}.bed-base{animation:bedFloat 6s ease-in-out infinite;transform-origin:center}@keyframes bedFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.dream-elements{animation:dreamFloat 8s ease-in-out infinite}@keyframes dreamFloat{0%,to{transform:translateY(0);opacity:.3}25%{transform:translateY(-5px);opacity:.7}50%{transform:translateY(-8px);opacity:.9}75%{transform:translateY(-5px);opacity:.7}}.dream-text{animation:dreamPulse 3s ease-in-out infinite}@keyframes dreamPulse{0%,to{opacity:.4}50%{opacity:.8}}.magical-effects{animation:magicalFloat 12s ease-in-out infinite}@keyframes magicalFloat{0%,to{transform:translateY(0);opacity:.8}33%{transform:translateY(-3px);opacity:1}66%{transform:translateY(2px);opacity:.9}}.sparkle-1,.sparkle-2,.sparkle-3,.sparkle-4,.sparkle-5{animation:sparkleFloat 6s ease-in-out infinite}.sparkle-2{animation-delay:1s}.sparkle-3{animation-delay:2s}.sparkle-4{animation-delay:.5s}.sparkle-5{animation-delay:1.5s}@keyframes sparkleFloat{0%,to{transform:translate(0) scale(1)}25%{transform:translate(2px,-4px) scale(1.2)}50%{transform:translate(-1px,-6px) scale(1.4)}75%{transform:translate(1px,-3px) scale(1.1)}}.dream-mist-1,.dream-mist-2,.dream-mist-3{animation:mistFloat 10s ease-in-out infinite}.dream-mist-2{animation-delay:2s}.dream-mist-3{animation-delay:4s}@keyframes mistFloat{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(-5px,-8px) rotate(15deg)}66%{transform:translate(3px,-12px) rotate(-10deg)}}.shooting-star-1{animation:shootingStar1 12s ease-in-out infinite;opacity:0}.shooting-star-2{animation:shootingStar2 15s ease-in-out infinite 3s;opacity:0}.shooting-star-3{animation:shootingStar3 18s ease-in-out infinite 6s;opacity:0}@keyframes shootingStar1{0%,85%{opacity:0;transform:translate(-50px) translateY(10px)}90%{opacity:1;transform:translate(-20px) translateY(5px)}95%{opacity:.8;transform:translate(20px) translateY(-5px)}to{opacity:0;transform:translate(50px) translateY(-10px)}}@keyframes shootingStar2{0%,80%{opacity:0;transform:translate(50px) translateY(-20px)}85%{opacity:1;transform:translate(30px) translateY(-10px)}90%{opacity:.9;transform:translate(-10px) translateY(5px)}to{opacity:0;transform:translate(-40px) translateY(15px)}}@keyframes shootingStar3{0%,75%{opacity:0;transform:translate(-60px) translateY(-10px)}80%{opacity:1;transform:translate(-30px) translateY(-5px)}88%{opacity:.7;transform:translate(30px) translateY(10px)}to{opacity:0;transform:translate(60px) translateY(20px)}}@media(max-width:768px){.sleeping-cat-container{margin:1rem 0;padding:.5rem}.sleeping-cat-svg{width:100%;max-width:350px}}@media(max-width:480px){.sleeping-cat-svg{max-width:300px}}@media(prefers-reduced-motion:reduce){.moon-glow,.cat-body-fluffy,.cloud-shapes,.cloud-main,.cloud-puff-1,.cloud-puff-2,.cloud-puff-3,.cloud-puff-4,.cloud-puff-5,.cloud-particle-1,.cloud-particle-2,.cloud-particle-3,.bed-base,.dream-elements,.twinkle-1,.twinkle-2,.twinkle-3,.dream-text,.magical-effects,.sparkle-1,.sparkle-2,.sparkle-3,.sparkle-4,.sparkle-5,.dream-mist-1,.dream-mist-2,.dream-mist-3,.shooting-star-1,.shooting-star-2,.shooting-star-3{animation:none}.cat-body-shape{opacity:1;transform:none}.cloud-shapes{opacity:0;transform:none}.magical-effects animate{animation-duration:0s}}.hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:center;gap:4rem;margin-bottom:6rem}.hero__title{font-size:clamp(2.75rem,6.5vw,4.75rem);line-height:1;letter-spacing:-.02em}.hero__lede{margin-top:1.5rem;max-width:36ch;font-size:1.125rem;color:var(--text-muted)}.hero__art{margin:0}.hero__art .sleeping-cat-container{display:block;margin:0;padding:0}.hero__art .sleeping-cat-svg{display:block;width:100%;max-width:none;border-radius:var(--radius-lg);box-shadow:var(--shadow-art)}.hero__caption{margin-top:1rem;font-family:var(--font-mono);font-size:.75rem;color:var(--text-faint)}.home__empty{padding-top:2rem;color:var(--text-muted)}@media(max-width:760px){.hero{grid-template-columns:1fr;gap:2.5rem;margin-bottom:4rem}}.projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem;list-style:none}.project-card{position:relative;padding:1.75rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);transition:border-color var(--transition),box-shadow var(--transition),transform var(--transition)}.project-card:hover{border-color:var(--border-strong);box-shadow:0 20px 40px -28px #2d1b4559;transform:translateY(-2px)}.project-card__top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1rem}.project-card__title{font-size:1.75rem;line-height:1.1}.project-card__title a{color:var(--text);text-decoration:none}.project-card__title a:after{content:"";position:absolute;inset:0;border-radius:inherit}.project-card:hover .project-card__title a{color:var(--accent)}.project-card__summary{margin-top:.6rem;color:var(--text-muted)}.project-links{position:relative;z-index:1;display:flex;gap:1.25rem;margin-top:1.25rem;list-style:none;font-family:var(--font-mono);font-size:.8125rem}.project-links a{color:var(--accent);text-decoration:none}.project-links a:hover{text-decoration:underline;text-underline-offset:3px}.article .project-links{margin-top:2.5rem}@media(prefers-reduced-motion:reduce){.project-card:hover{transform:none}}.app{display:flex;flex-direction:column;min-height:100vh}.app__main{flex:1;width:100%;max-width:var(--site-width);margin:0 auto;padding:5rem var(--gutter) 6rem}.footer{border-top:1px solid var(--border)}.footer__inner{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;max-width:var(--site-width);margin:0 auto;padding:1.75rem var(--gutter);font-family:var(--font-mono);font-size:.75rem;color:var(--text-faint)}.footer__inner a{color:var(--text-muted);text-decoration:none}.footer__inner a:hover{color:var(--accent)}@media(max-width:640px){.app__main{padding-top:3rem}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{color-scheme:light;--bg: #fbfafc;--surface: #ffffff;--surface-tint: #f5f2f9;--border: #e7e2ee;--border-strong: #d2c9de;--text: #1d1726;--text-muted: #574f66;--text-faint: #736a82;--accent: #6644c8;--accent-strong: #4b2d9e;--accent-soft: #f0eafc;--accent-line: rgba(102, 68, 200, .35);--night: #2d1b45;--shadow-art: 0 30px 60px -30px rgba(45, 27, 69, .5);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif: "Instrument Serif", Georgia, serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--gutter: 1.5rem;--site-width: calc(1040px + 2 * var(--gutter));--measure: 680px;--radius: 8px;--radius-lg: 14px;--transition: .2s ease}@media(max-width:640px){:root{--gutter: 1.25rem}}body{font-family:var(--font-sans);font-size:1rem;line-height:1.65;color:var(--text);background:radial-gradient(900px 480px at 85% -160px,rgba(124,92,220,.08),transparent 70%) no-repeat,var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3{font-family:var(--font-serif);font-weight:400;letter-spacing:-.01em;color:var(--text)}a{color:var(--accent)}::selection{background:#6644c829}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.page{animation:page-in .5s ease both}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}}@media(prefers-reduced-motion:reduce){.page{animation:none}}.page-header{margin-bottom:3rem}.page-title{font-size:clamp(2.75rem,7vw,4rem);line-height:1;letter-spacing:-.02em}.page-lede{margin-top:1rem;font-size:1.125rem;color:var(--text-muted)}.section-label{display:flex;align-items:center;gap:1rem;font-family:var(--font-mono);font-size:.75rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.section-label:after{content:"";flex:1;height:1px;background:var(--border)}.meta{display:flex;flex-wrap:wrap;align-items:center;font-family:var(--font-mono);font-size:.75rem;color:var(--text-faint)}.meta>*+*:before{content:"·";margin:0 .6em}.meta a{color:inherit;text-decoration:none}.meta a:hover{color:var(--accent)}.meta__note{font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.badge{color:var(--accent-strong)}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem;list-style:none}.tag,.status{padding:.2rem .6rem;border:1px solid var(--border);border-radius:999px;font-family:var(--font-mono);font-size:.6875rem;white-space:nowrap;color:var(--text-muted);background:var(--surface)}.tag:before{content:"#";color:var(--text-faint)}.status{border-color:transparent;color:var(--accent-strong);background:var(--accent-soft)}.prose{font-size:1.0625rem;line-height:1.75}.prose>*+*{margin-top:1.2em}.prose h2{margin-top:2em;font-size:2rem;line-height:1.15}.prose h3{margin-top:1.75em;font-size:1.5rem;line-height:1.25}.prose a{text-decoration:underline;text-decoration-color:var(--accent-line);text-underline-offset:3px;transition:text-decoration-color var(--transition)}.prose a:hover{text-decoration-color:currentColor}.prose strong{font-weight:600}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--accent)}.prose blockquote{padding-left:1.25rem;border-left:2px solid var(--accent);font-family:var(--font-serif);font-size:1.375rem;line-height:1.45;font-style:italic;color:var(--text-muted)}.prose code{padding:.15em .4em;border-radius:6px;font-family:var(--font-mono);font-size:.85em;color:var(--accent-strong);background:var(--accent-soft)}.prose pre{padding:1rem 1.25rem;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-tint);line-height:1.6}.prose pre code{padding:0;color:inherit;background:none}.prose img,.prose video{display:block;max-width:100%;height:auto;border-radius:var(--radius-lg)}.prose hr{border:0;margin:2.5em 0;text-align:center;color:var(--text-faint)}.prose hr:after{content:"✦"}
