@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2)format("woff2")}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/m-plus-rounded-1c-latin-400-normal.woff2)format("woff2")}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-display:swap;font-weight:500;src:url(/fonts/m-plus-rounded-1c-latin-500-normal.woff2)format("woff2")}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-display:swap;font-weight:700;src:url(/fonts/m-plus-rounded-1c-latin-700-normal.woff2)format("woff2")}:root{--font-body:"M PLUS Rounded 1c", system-ui, sans-serif;--font-prose:var(--font-body);--font-mono:"JetBrains Mono", "Courier New", monospace;--text-sm:.875rem;--text-base:1.125rem;--text-lg:1.25rem;--text-xl:1.5rem;--text-2xl:2rem;--text-2xs:.65rem;--text-xs:.75rem;--leading-body:1.75;--leading-tight:1.3;--space-quarter:.25rem;--space-half:.5rem;--space-xs:.5rem;--space-sm:1rem;--space-1-5:1.5rem;--space-md:2rem;--space-2-5:2.5rem;--space-lg:4rem;--space-xl:6rem;--radius-sm:4px;--radius-sm-2:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:999px;--max-width:38rem;--max-width-wide:70rem;--page-padding:1.5rem}:root,[data-theme],[data-theme=dark]{--color-brand:#7aa7ff;--color-brand-strong:#adcaff;--color-text-primary:#f5f5f5;--color-text-secondary:#d6d6d6;--color-text-muted:#b0b0b0;--color-text-disabled:#858585;--color-text-accent:#adcaff;--color-text-interactive:#adcaff;--color-text-interactive-hover:#d6e4ff;--color-text-success:#91e3bf;--color-text-warning:#f5d08c;--color-text-error:#ffa3ad;--color-text-on-accent:#0a0f14;--color-on-danger:#160a0a;--color-surface:#000;--color-surface-raised:#0a0a0a;--color-surface-elevated:#111;--color-surface-glass:color-mix(in srgb, var(--color-surface-elevated) 84%, transparent);--color-surface-overlay:color-mix(in srgb, var(--color-surface-raised) 95%, transparent);--color-accent:var(--color-text-accent);--color-accent-soft:var(--color-text-interactive);--color-accent-hover:var(--color-text-interactive-hover);--color-rule:color-mix(in srgb, var(--color-text-primary) 16%, transparent);--color-rule-strong:color-mix(in srgb, var(--color-text-primary) 28%, transparent);--color-overlay-soft:color-mix(in srgb, var(--color-brand) 10%, transparent);--color-overlay-strong:color-mix(in srgb, var(--color-brand) 18%, transparent);--color-shadow:color-mix(in srgb, var(--color-brand) 10%, transparent);--color-focus-ring:var(--color-brand-strong);--color-selection:color-mix(in srgb, var(--color-brand) 24%, transparent);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background-color:var(--color-surface,#000);scrollbar-gutter:stable;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;font-size:100%}::selection{background:var(--color-selection);color:var(--color-text-primary)}@view-transition{navigation:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{isolation:isolate;font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);color:var(--color-text-primary);background-color:var(--color-surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}a{color:var(--color-text-interactive);text-decoration:none;transition:color .15s}a:hover{color:var(--color-text-interactive-hover)}h1,h2,h3,h4{font-family:var(--font-body);line-height:var(--leading-tight);color:var(--color-text-primary);letter-spacing:-.02em}h1{font-size:var(--text-2xl);margin-bottom:var(--space-sm);font-weight:700}h2{font-size:var(--text-xl);margin-top:var(--space-lg);margin-bottom:var(--space-sm);font-weight:600}h3{font-size:var(--text-lg);margin-top:var(--space-md);margin-bottom:var(--space-xs);font-weight:600}hr{border:none;border-top:1px solid var(--color-rule);margin:var(--space-lg) 0}.page{max-width:var(--max-width);padding:0 var(--page-padding);flex-direction:column;min-height:100vh;margin:0 auto;display:flex}.page--wide{max-width:var(--max-width-wide)}.body--immersive{overscroll-behavior:none;overflow:hidden}.page--immersive{width:100%;max-width:none;height:100dvh;min-height:0;padding:0;overflow:hidden}.page>main{padding-top:var(--space-md);padding-bottom:var(--space-lg);flex-direction:column;flex:1;display:flex}.page--immersive>main{min-height:0;padding:0;overflow:hidden}.skip-link{z-index:100;background:var(--color-surface-raised,#13161b);color:var(--color-text-primary,#e4e8ee);font-family:var(--font-mono);font-size:var(--text-sm);border-radius:6px;padding:.5rem 1rem;text-decoration:none;position:absolute;top:1rem;left:-9999px}.skip-link:focus{outline:2px solid var(--color-focus-ring,#5f92bd);outline-offset:3px;left:1rem}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.site-footer{padding:var(--space-md) 0;text-align:center;color:var(--color-text-muted)}.site-footer__nav{margin-bottom:var(--space-xs);font-family:var(--font-mono);flex-wrap:wrap;justify-content:center;gap:.5rem 1.1rem;font-size:.8rem;display:flex}.site-footer__nav a{color:var(--color-text-muted);text-decoration:none;transition:color .15s}.site-footer__nav a:hover,.site-footer__nav a:focus-visible{color:var(--color-text-interactive-hover)}.site-footer__colophon{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.8rem}@media (width<=640px){:root{--text-base:1rem;--text-lg:1.125rem;--text-xl:1.35rem;--text-2xl:1.65rem;--page-padding:1.25rem}.page>main{padding-top:var(--space-sm);padding-bottom:var(--space-md)}.home{padding:var(--space-md) 0}.intro{padding:var(--space-md) 0;text-align:center;flex-direction:column;align-items:center;display:flex}.intro-image{float:none;margin:0 auto var(--space-md) auto;width:120px;height:120px;display:block}.intro p{margin:0 auto}.post-item__link,.project-item__link{flex-direction:column;align-items:flex-start;gap:.2rem}.post-item__meta,.project-item__meta{text-align:left;white-space:normal}.project-item{flex-direction:column;align-items:flex-start;gap:.2rem}.project-item__meta{text-align:left;justify-content:flex-start}.guestbook__meta{flex-wrap:wrap}hr{margin:var(--space-md) 0}}@media (width<=480px){:root{--text-base:.9375rem;--text-lg:1.05rem;--text-xl:1.2rem;--text-2xl:1.45rem;--page-padding:1rem;--space-md:1.5rem;--space-lg:2.5rem}.post-item__link,.project-item__link{padding-left:.35rem;padding-right:.35rem}.post-item__title,.project-item__title{word-break:break-word}.project-item__title{flex-wrap:wrap;gap:.35rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html:not([data-home-awakening]) .loading-indicator[data-initial]{display:none}html[data-home-awakening] .page{visibility:hidden}.loading-indicator{z-index:100;pointer-events:none;height:2px;color:var(--color-accent);opacity:0;visibility:hidden;transition:opacity .24s,visibility 0s .24s;position:fixed;inset:0 0 auto;overflow:hidden}.site-nav>.loading-indicator{position:absolute;inset:auto 0 -1px}.loading-indicator__composition{width:100%}.loading-indicator svg{stroke:currentColor;stroke-width:8px;stroke-linecap:round;width:100%;display:block;overflow:visible}.loading-indicator__orbit{transform-origin:500px 400px;transform:rotate(-18deg)}.loading-indicator__orbit ellipse{opacity:.15}.loading-indicator__arc{stroke-width:10px}.loading-indicator__arc--echo{opacity:.4}.loading-indicator__star,.loading-indicator circle{fill:currentColor;stroke:none}.loading-indicator__island{fill:#05080e;stroke-opacity:.2}.loading-indicator__trace{stroke-dasharray:740 260;stroke-width:10px}.loading-indicator__whiskers{opacity:.55;transform-origin:500px 400px}.loading-indicator[data-site-loader]:not([data-intro]){display:none}.loading-indicator__line{background:linear-gradient(90deg, transparent, var(--color-brand), var(--color-brand-strong));border-radius:2px;width:35%;height:100%;display:block}html[data-loading] .loading-indicator__line{animation:1.2s ease-in-out infinite loading-line}@keyframes loading-line{0%{transform:translate(-100%)}to{transform:translate(386%)}}html[data-loading] .loading-indicator:not([data-site-loader]),.loading-indicator[data-awakening]{opacity:1;visibility:visible;transition-delay:0s}:is(html[data-loading] .loading-indicator:not([data-site-loader]),.loading-indicator[data-awakening]) .loading-indicator__orbit{animation:9s ease-in-out infinite alternate loading-orbit}:is(html[data-loading] .loading-indicator:not([data-site-loader]),.loading-indicator[data-awakening]) .loading-indicator__trace{animation:4.8s ease-in-out infinite loading-trace}:is(html[data-loading] .loading-indicator:not([data-site-loader]),.loading-indicator[data-awakening]) .loading-indicator__whiskers{animation:3.6s ease-in-out infinite alternate loading-whiskers}.loading-indicator[data-intro]{background:var(--color-surface);place-items:center;width:auto;height:auto;transition:opacity .65s cubic-bezier(.22,1,.36,1),visibility 0s .65s;display:grid;inset:0}.loading-indicator[data-intro][data-awakening]{transition:none}.loading-indicator[data-intro] svg{stroke-width:2px}.loading-indicator[data-intro] .loading-indicator__trace{stroke-width:3px}.loading-indicator[data-intro] .loading-indicator__arc{stroke-width:4px}.loading-indicator[data-intro] .loading-indicator__composition{width:min(390px,82vw);position:relative}@keyframes loading-orbit{to{transform:rotate(18deg)}}@keyframes loading-trace{0%{stroke-dashoffset:1000px;opacity:.35}45%,65%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-1000px;opacity:.35}}@keyframes loading-whiskers{to{opacity:.9;transform:scaleX(1.035)}}@media (prefers-reduced-motion:reduce){.loading-indicator,.loading-indicator[data-intro]{transition:none}.loading-indicator *{animation:none!important}.loading-indicator__trace{stroke-dasharray:none}.loading-indicator__line{background:var(--color-brand);width:100%}}.page-preview{--preview-gap:8px;--preview-origin-x:1.5rem;--preview-ease:cubic-bezier(.2, .8, .2, 1);z-index:1000;inline-size:min(22rem, calc(100vw - 2 * var(--page-padding)));color:var(--color-text-primary);cursor:pointer;translate:var(--preview-x,0px) var(--preview-y,0px);transform-origin:var(--preview-origin-x) 0;opacity:0;pointer-events:none;transition:opacity .12s ease-out, scale .12s ease-out, display .12s allow-discrete, overlay .12s allow-discrete;background:0 0;border:0;margin:0;padding:0;position:fixed;inset:0 auto auto 0;overflow:visible;scale:.98}.page-preview[hidden]{display:none}.page-preview[data-placement=above]{transform-origin:var(--preview-origin-x) 100%}.page-preview:popover-open{opacity:1;pointer-events:auto;transition:opacity .15s ease-out, scale .2s var(--preview-ease), display .15s allow-discrete, overlay .15s allow-discrete;scale:1}@starting-style{.page-preview:popover-open{opacity:0;scale:.97}}.page-preview--glide{transition:opacity .15s ease-out, scale .2s var(--preview-ease), translate .22s var(--preview-ease), display .15s allow-discrete, overlay .15s allow-discrete}.page-preview:before{content:"";block-size:var(--preview-gap);position:absolute;inset-block-end:100%;inset-inline:0}.page-preview[data-placement=above]:before{inset-block:100% auto}.page-preview__frame{box-sizing:content-box;block-size:var(--preview-block-size,auto);border:1px solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-surface-raised);transition:border-color .15s;overflow:clip;box-shadow:inset 0 1px #ffffff0a,0 2px 6px #0006,0 14px 36px -10px #000000b3}.page-preview:hover .page-preview__frame{border-color:var(--color-rule-strong)}.page-preview--glide .page-preview__frame{transition:border-color .15s ease, block-size .22s var(--preview-ease)}.page-preview__sheet{padding:.85rem 1rem .9rem;display:grid}.page-preview--swap .page-preview__sheet{animation:.18s ease-out both page-preview-swap}@keyframes page-preview-swap{0%{opacity:0}}.page-preview__title,.page-preview__excerpt,.page-preview__meta{margin:0}.page-preview__title{color:var(--color-text-primary);font-family:var(--font-body);letter-spacing:-.015em;text-wrap:balance;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:1.0625rem;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.page-preview__excerpt{color:var(--color-text-secondary);font-family:var(--font-body);font-size:var(--text-sm);text-wrap:pretty;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-block-start:.4rem;line-height:1.6;display:-webkit-box;overflow:hidden}.page-preview__meta{color:var(--color-text-muted);font:500 .7rem / 1.4 var(--font-mono);letter-spacing:.02em;text-overflow:ellipsis;text-transform:lowercase;white-space:nowrap;margin-block-start:.7rem;overflow:hidden}.page-preview__title[hidden],.page-preview__excerpt[hidden],.page-preview__meta[hidden]{display:none}.page-preview__skeleton{gap:.6rem;padding-block:.25rem .35rem;display:none}.page-preview[data-state=loading] .page-preview__skeleton{display:grid}.page-preview__bar{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--color-text-primary) 9%, transparent);block-size:.55rem;animation:1.6s ease-in-out infinite page-preview-wait}.page-preview__bar--title{block-size:.8rem;inline-size:55%;margin-block-end:.15rem}.page-preview__bar--short{inline-size:70%}@keyframes page-preview-wait{0%,to{opacity:.6}50%{opacity:1}}.page-preview[data-state=missing] .page-preview__title{color:var(--color-text-muted);font-size:var(--text-sm);letter-spacing:0;font-weight:500}@media (prefers-reduced-motion:reduce){.page-preview{transition:opacity .12s ease-out, display .12s allow-discrete, overlay .12s allow-discrete;scale:none}.page-preview:popover-open{transition:opacity .12s ease-out, display .12s allow-discrete, overlay .12s allow-discrete;scale:none}@starting-style{.page-preview:popover-open{scale:none}}.page-preview__bar{animation:none}}main a[data-previewable]{border-radius:var(--radius-sm);color:var(--color-text-interactive);-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-color:color-mix(in srgb, var(--color-brand) 50%, transparent);text-decoration-color:color-mix(in srgb, var(--color-brand) 50%, transparent);text-underline-offset:.26em;-webkit-box-decoration-break:clone;box-decoration-break:clone;margin:0 -.12em;padding:0 .12em;text-decoration-thickness:1.5px;transition:background-color .15s,color .15s,text-decoration-color .15s}main a[data-previewable]:is(:hover,:focus-visible,.page-preview-link){color:var(--color-text-primary);-webkit-text-decoration-color:var(--color-brand);text-decoration-color:var(--color-brand);background-color:var(--color-overlay-soft)}.page-preview-link:not([data-previewable]){text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--color-accent) 45%, transparent);text-decoration-color:color-mix(in srgb, var(--color-accent) 45%, transparent);text-underline-offset:.22em;text-decoration-thickness:1px}@media (width<=720px),(hover:none),(pointer:coarse){.page-preview{display:none}}.site-nav{width:min(100%,44rem);padding:var(--space-md) 0 var(--space-sm);border-bottom:1px solid var(--color-rule);align-items:center;gap:1rem;margin:0 auto;display:flex;position:relative}.site-nav__wordmark{font-family:var(--font-body);letter-spacing:.02em;color:var(--color-brand);text-transform:lowercase;font-size:2.25rem;font-weight:700;line-height:1;text-decoration:none}@media (width<=640px){.site-nav__wordmark{font-size:1.9rem}}@media (width<=480px){.site-nav__wordmark{font-size:1.6rem}}.note-search__trigger{border-radius:var(--radius-sm);width:2rem;height:2rem;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;margin-left:auto;padding:0;display:inline-flex}.note-search__trigger:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:4px}.note-search__trigger svg{fill:none;stroke:currentColor;stroke-width:1.35px;stroke-linecap:round;stroke-linejoin:round;width:1.4rem;height:1.4rem}@media (width<=480px){.note-search__trigger :is(span,kbd){display:none}}.note-search__layer{z-index:50;padding:clamp(1rem, 8vh, 4rem) var(--page-padding);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overscroll-behavior:contain;background:#000000a8;justify-content:center;align-items:flex-start;animation:.22s cubic-bezier(.22,1,.36,1) both note-search-fade-in;display:flex;position:fixed;inset:0}.note-search__layer.is-closing{animation:.18s cubic-bezier(.4,0,1,1) both note-search-fade-out}.note-search__panel{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#f2f2f2;-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);transform-origin:top;background:linear-gradient(145deg,#ffffff08,#0000 45%),#050505f0;border:1px solid #ffffff1f;border-radius:20px;flex-direction:column;width:min(38rem,100%);max-height:min(72dvh,36rem);animation:.26s cubic-bezier(.22,1,.36,1) both note-search-in;display:flex;overflow:hidden;box-shadow:0 32px 100px #000000a6,0 8px 24px #0006,inset 0 1px #ffffff0d}.note-search__panel.is-closing{animation:.18s cubic-bezier(.4,0,1,1) both note-search-out}@keyframes note-search-fade-in{0%{opacity:0}to{opacity:1}}@keyframes note-search-fade-out{0%{opacity:1}to{opacity:0}}@keyframes note-search-in{0%{opacity:0;transform:translateY(-10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes note-search-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-6px)scale(.99)}}.note-search__field{color:#929292;border-bottom:1px solid #ffffff12;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;min-height:4.5rem;padding:1rem 1.25rem;transition:border-color .22s cubic-bezier(.22,1,.36,1);display:grid;position:relative}.note-search__field:focus-within{border-bottom-color:color-mix(in srgb, var(--color-brand) 55%, transparent)}.note-search__field svg{fill:none;stroke:currentColor;stroke-width:1.35px;stroke-linecap:round;stroke-linejoin:round;width:1.4rem;height:1.4rem;transition:color .22s cubic-bezier(.22,1,.36,1)}.note-search__field:focus-within svg{color:var(--color-brand-strong)}.note-search__field input{color:#f2f2f2;width:100%;min-width:0;font:1rem / 1.5 var(--font-mono);caret-color:var(--color-brand-strong);background:0 0;border:0;outline:0;padding:0}.note-search__field input::placeholder{color:#858585;opacity:1}.note-search__results{scrollbar-width:thin;scrollbar-color:#333 transparent;overscroll-behavior:contain;min-height:0;margin:0;padding:0 .5rem .5rem;list-style:none;overflow:auto}.note-search__results>li{animation:.26s cubic-bezier(.22,1,.36,1) both note-search-result-in}@keyframes note-search-result-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.note-search__result{color:inherit;cursor:pointer;border:1px solid #0000;border-radius:10px;grid-template-columns:minmax(0,1fr);padding:.9rem .85rem;text-decoration:none;transition:background .18s cubic-bezier(.22,1,.36,1),color .18s cubic-bezier(.22,1,.36,1),border-color .18s cubic-bezier(.22,1,.36,1);display:grid}.note-search__result:hover,.note-search__result.is-active{background:var(--color-overlay-soft);border-color:color-mix(in srgb, var(--color-brand) 18%, transparent)}.note-search__result.is-active{color:var(--color-text-primary)}.note-search__result-title{font-family:var(--font-mono);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;grid-column:1;overflow:hidden}.note-search__result-summary{text-overflow:ellipsis;white-space:nowrap;color:#999;font-size:var(--text-xs);margin-top:.3rem;line-height:1.5;overflow:hidden}.note-search__result mark{color:var(--color-brand-strong);background:color-mix(in srgb, var(--color-brand) 12%, transparent);border-radius:2px}body.note-search-open{overflow:hidden}.note-search__status{color:#999;font-family:var(--font-mono);font-size:var(--text-xs);margin:0;padding:1rem 1.25rem}.note-search__loading{pointer-events:none;height:2px;animation:.12s .14s both note-search-loading-reveal;position:absolute;inset:auto 0 -1px;overflow:hidden}.note-search__loading>span{background:linear-gradient(90deg, transparent, var(--color-brand), var(--color-brand-strong));border-radius:2px;width:35%;height:100%;animation:1.2s ease-in-out infinite note-search-loading-line;display:block}@keyframes note-search-loading-reveal{0%{opacity:0}to{opacity:1}}@keyframes note-search-loading-line{0%{transform:translate(-100%)}to{transform:translate(386%)}}.note-search__result:focus-visible{outline:1px solid var(--color-focus-ring);outline-offset:-2px}@media (width<=480px){.note-search__layer{padding:max(1rem, env(safe-area-inset-top)) .75rem}.note-search__panel{max-height:calc(100dvh - 2rem - env(safe-area-inset-top));border-radius:16px}}@media (prefers-reduced-motion:reduce){.note-search__layer,.note-search__panel,.note-search__panel *{transition:none!important;animation:none!important}.note-search__loading>span{background:var(--color-brand-strong);width:100%;animation:none!important}}
