@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}}.loading-indicator{z-index:100;pointer-events:none;opacity:0;height:2px;transition:opacity .12s;position:fixed;inset:0 0 auto;overflow:hidden}.site-nav>.loading-indicator{position:absolute;inset:auto 0 -1px}.loading-indicator span{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{opacity:1}html[data-loading] .loading-indicator span{animation:1.2s ease-in-out infinite loading-line}@keyframes loading-line{0%{transform:translate(-100%)}to{transform:translate(386%)}}@media (prefers-reduced-motion:reduce){html[data-loading] .loading-indicator span{background:var(--color-brand);width:100%;animation:none!important}}.page-preview{--preview-gap:10px;--preview-tether-x:1.25rem;--preview-enter-y:-4px;z-index:1000;inline-size:min(23rem, calc(100vw - 2 * var(--page-padding)));color:var(--color-text-primary);opacity:0;translate:var(--preview-x,0px) var(--preview-y,0px);pointer-events:none;transition:opacity .11s cubic-bezier(.3, 0, .35, 1), display .2s allow-discrete, overlay .2s allow-discrete;background:0 0;border:0;margin:0;padding:0;position:fixed;inset:0 auto auto 0;overflow:visible}.page-preview[hidden]{display:none}.page-preview:popover-open{opacity:1}@starting-style{.page-preview:popover-open{opacity:0}}.page-preview--glide{transition:opacity .11s cubic-bezier(.3, 0, .35, 1), translate .26s cubic-bezier(.2, .72, .25, 1), display .2s allow-discrete, overlay .2s allow-discrete}.page-preview:before{content:"";inline-size:1px;block-size:var(--preview-gap);background:linear-gradient(to bottom, transparent, var(--color-rule-strong));transform-origin:top;transition:transform .15s cubic-bezier(.2,.72,.25,1);position:absolute;inset-block-start:calc(-1 * var(--preview-gap));inset-inline-start:var(--preview-tether-x);transform:scaleY(0)}.page-preview:popover-open:before{transition-delay:70ms;transform:scaleY(1)}.page-preview[data-placement=above]{--preview-enter-y:4px}.page-preview[data-placement=above]:before{background:linear-gradient(to top, transparent, var(--color-rule-strong));transform-origin:bottom;inset-block-start:auto;inset-block-end:calc(-1 * var(--preview-gap))}.page-preview__frame{box-sizing:content-box;block-size:var(--preview-block-size,auto);border:1px solid var(--color-rule-strong);border-radius:var(--radius-md);background:var(--color-surface-raised);transform:translateY(var(--preview-enter-y));transition:transform .18s cubic-bezier(.2,.72,.25,1);overflow:clip}.page-preview:popover-open .page-preview__frame{transform:none}.page-preview--glide .page-preview__frame{transition:transform .18s cubic-bezier(.2,.72,.25,1),block-size .24s cubic-bezier(.2,.72,.25,1)}.page-preview__sheet{gap:.55rem;padding:.8rem .95rem .7rem;display:grid}.page-preview--settling .page-preview__sheet{animation:.2s cubic-bezier(.2,.72,.25,1) both page-preview-settle}@keyframes page-preview-settle{0%{opacity:.3;transform:translateY(3px)}to{opacity:1;transform:none}}.page-preview__body{gap:.4rem;display:grid}.page-preview__title{color:var(--color-text-primary);font-family:var(--font-body);letter-spacing:-.025em;text-wrap:pretty;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:clamp(1.05rem,2vw,1.18rem);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:0;line-height:1.55;display:-webkit-box;overflow:hidden}.page-preview__excerpt[hidden]{display:none}.page-preview__meta{border-block-start:1px solid var(--color-rule);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:0;padding-block-start:.55rem;overflow:hidden}.page-preview__skeleton{gap:.45rem;padding-block:.1rem .15rem;display:grid}.page-preview__bar{border-radius:var(--radius-sm);background:var(--color-overlay-strong);block-size:.6rem;animation:1.9s ease-in-out infinite page-preview-breathe}.page-preview__bar--title{background:color-mix(in srgb, var(--color-brand) 20%, transparent);block-size:.85rem;inline-size:58%}.page-preview__bar:nth-child(2){animation-delay:.12s}.page-preview__bar:nth-child(3){inline-size:76%;animation-delay:.24s}@keyframes page-preview-breathe{0%,to{opacity:.45}50%{opacity:.9}}.page-preview:not([data-state=loading]) .page-preview__skeleton,.page-preview[data-state=loading] .page-preview__body,.page-preview:not([data-state=ready]) .page-preview__meta{display:none}.page-preview[data-state=empty] .page-preview__title{color:var(--color-text-muted);font-size:var(--text-sm);letter-spacing:0;font-weight:500}.page-preview-link{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}}
