@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}@font-face{font-family:"Fusion Pixel 12px Monospaced SC";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/fusion-pixel-12px-monospaced-sc-latin-400-normal.Byf8uiQ8.woff2)format("woff2")}@font-face{font-family:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/press-start-2p-latin-400-normal._wFEWmAB.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/jetbrains-mono-latin-700-normal.BYuf6tUa.woff2)format("woff2")}:root,:root[data-theme=miku]{--bg:#dde2e1;--bg-soft:#ecefef;--bg-inset:#d2d8d7;--ink:#1c2426;--ink-dim:#5a6668;--accent:#39c5bb;--accent-ink:#0e3a37;--accent-2:#e8467c;--border:#1c2426;--shadow:#1c2426;--check:#1c242609;--code-bg:#232a2c}:root[data-theme=light]{--bg:#e7e7e5;--bg-soft:#f7f7f6;--bg-inset:#dbdbd9;--ink:#17181a;--ink-dim:#606468;--accent:#17181a;--accent-ink:#f7f7f6;--accent-2:#8b9096;--border:#17181a;--shadow:#17181a;--check:#17181a09;--code-bg:#22252a}:root[data-theme=dark]{--bg:#15181b;--bg-soft:#1e2226;--bg-inset:#101316;--ink:#e3e7ea;--ink-dim:#8b949c;--accent:#e3e7ea;--accent-ink:#15181b;--accent-2:#6e7880;--border:#e3e7ea;--shadow:#000;--check:#e3e7ea08;--code-bg:#0d0f12}:root[data-theme=rin]{--bg:#e4e1d8;--bg-soft:#f2efe7;--bg-inset:#d8d4c7;--ink:#242118;--ink-dim:#6b6555;--accent:#ffc500;--accent-ink:#3a2e00;--accent-2:#ff8c42;--border:#242118;--shadow:#242118;--check:#24211809;--code-bg:#2a2618}:root[data-theme=luka]{--bg:#e6dee0;--bg-soft:#f3eced;--bg-inset:#d9ced1;--ink:#261c20;--ink-dim:#6e5c62;--accent:#f2768f;--accent-ink:#4a1220;--accent-2:#5ba8c4;--border:#261c20;--shadow:#261c20;--check:#261c2009;--code-bg:#2b1e24}:root{--font-pixel:"Fusion Pixel 12px Monospaced SC", "Press Start 2P", "Courier New", monospace;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;--cut-lg:polygon(0 9px, 3px 9px, 3px 6px, 6px 6px, 6px 3px, 9px 3px, 9px 0, calc(100% - 9px) 0, calc(100% - 9px) 3px, calc(100% - 6px) 3px, calc(100% - 6px) 6px, calc(100% - 3px) 6px, calc(100% - 3px) 9px, 100% 9px, 100% calc(100% - 9px), calc(100% - 3px) calc(100% - 9px), calc(100% - 3px) calc(100% - 6px), calc(100% - 6px) calc(100% - 6px), calc(100% - 6px) calc(100% - 3px), calc(100% - 9px) calc(100% - 3px), calc(100% - 9px) 100%, 9px 100%, 9px calc(100% - 3px), 6px calc(100% - 3px), 6px calc(100% - 6px), 3px calc(100% - 6px), 3px calc(100% - 9px), 0 calc(100% - 9px));--cut-sm:polygon(0 6px, 3px 6px, 3px 3px, 6px 3px, 6px 0, calc(100% - 6px) 0, calc(100% - 6px) 3px, calc(100% - 3px) 3px, calc(100% - 3px) 6px, 100% 6px, 100% calc(100% - 6px), calc(100% - 3px) calc(100% - 6px), calc(100% - 3px) calc(100% - 3px), calc(100% - 6px) calc(100% - 3px), calc(100% - 6px) 100%, 6px 100%, 6px calc(100% - 3px), 3px calc(100% - 3px), 3px calc(100% - 6px), 0 calc(100% - 6px))}*,:before,:after{box-sizing:border-box;transition:none!important;animation-duration:0s!important}html{scrollbar-gutter:stable;font-size:16px;overflow-y:scroll}body{font-family:var(--font-pixel);color:var(--ink);background-color:var(--bg);background-image:conic-gradient(var(--check) 0 25%, transparent 0 50%, var(--check) 0 75%, transparent 0);background-size:6px 6px;margin:0;font-size:1rem;line-height:1.9}img{max-width:100%;image-rendering:pixelated}a{color:inherit;text-decoration:none}h1,h2,h3,h4{margin:0 0 .75em;line-height:1.5}code,pre{font-family:var(--font-mono)}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.container{max-width:880px;margin:0 auto;padding:0 20px}main{min-height:60vh;padding:40px 0 72px}.pixel-card{background:var(--bg-soft);border:3px solid var(--border);clip-path:var(--cut-lg);filter:drop-shadow(6px 6px 0 var(--shadow))}.pixel-card--hover:hover{filter:drop-shadow(8px 8px 0 var(--accent));transform:translate(-2px,-2px)}.pixel-tag{border:2px solid var(--border);background:var(--bg-inset);color:var(--ink-dim);padding:0 8px;font-size:.78rem;line-height:1.7;display:inline-block}a.pixel-tag:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--border)}.pixel-btn{border:3px solid var(--border);background:var(--bg-soft);color:var(--ink);cursor:pointer;clip-path:var(--cut-sm);filter:drop-shadow(4px 4px 0 var(--shadow));padding:6px 16px;font-family:inherit;font-size:.9rem;display:inline-block}.pixel-btn:hover{background:var(--accent);color:var(--accent-ink)}.pixel-btn:active{filter:none;transform:translate(4px,4px)}.pixel-btn.is-active{background:var(--accent);color:var(--accent-ink)}.site-header{border-bottom:3px solid var(--border);background:var(--bg-soft)}.site-header .container{flex-wrap:wrap;align-items:center;gap:20px;padding-top:14px;padding-bottom:14px;display:flex}.site-logo{background:var(--accent);color:var(--accent-ink);border:3px solid var(--border);clip-path:var(--cut-sm);filter:drop-shadow(4px 4px 0 var(--shadow));padding:6px 12px;font-family:"Press Start 2P","Fusion Pixel 12px Monospaced SC",monospace;font-size:1rem}.site-nav{flex-wrap:wrap;gap:4px;margin-left:auto;display:flex}.site-nav a{color:var(--ink-dim);border:2px solid #0000;padding:4px 12px}.site-nav a:hover,.site-nav a.is-active{color:var(--ink);border-color:var(--border);background:var(--bg-inset)}.theme-switcher{gap:8px;display:flex}.theme-switcher button{place-items:center;width:34px;height:34px;padding:0;font-size:.85rem;display:grid}.hero{margin-bottom:56px;padding:44px 40px;position:relative}.hero__pixels{background:var(--accent);width:12px;height:12px;box-shadow:12px 0 0 var(--accent), 0 12px 0 var(--accent-2), 24px 12px 0 var(--accent), 12px 24px 0 var(--accent-2), 24px 24px 0 var(--accent);position:absolute;top:32px;right:36px}.hero__eyebrow{letter-spacing:3px;color:var(--ink-dim);margin:0 0 14px;font-size:.78rem}.hero__title{margin:0 0 18px;font-family:"Press Start 2P","Fusion Pixel 12px Monospaced SC",monospace;font-size:clamp(1.5rem,5vw,2.2rem)}.hero__title .accent{background:var(--accent);color:var(--accent-ink);margin-left:8px;padding:0 10px}.hero__desc{color:var(--ink-dim);max-width:46ch;margin:0 0 28px}.hero__actions{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.hero__stats{color:var(--ink-dim);font-size:.78rem}.post-list{gap:32px;display:grid}.post-card{padding:24px 28px}.post-card__cover{object-fit:cover;border:3px solid var(--border);width:100%;height:180px;margin:-4px 0 18px;display:block}.post-card__meta{color:var(--ink-dim);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;font-size:.78rem;display:flex}.post-card__title{margin-bottom:.4em;font-size:1.5rem}.post-card__title a:hover{background:var(--accent);color:var(--accent-ink);box-shadow:4px 0 0 var(--accent), -4px 0 0 var(--accent)}.post-card__desc{color:var(--ink-dim);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 16px;display:-webkit-box;overflow:hidden}.post-card__footer{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.post-card__tags{flex-wrap:wrap;gap:8px;display:flex}.post-card__more{border:2px solid var(--border);background:var(--bg-inset);color:var(--ink);margin-left:auto;padding:0 10px;font-size:.78rem;line-height:1.7}.post-card__more:hover{background:var(--accent);color:var(--accent-ink)}.page-title{background:var(--ink);color:var(--bg-soft);border:3px solid var(--border);clip-path:var(--cut-sm);filter:drop-shadow(6px 6px 0 var(--accent));margin-bottom:40px;padding:8px 18px;font-size:1.5rem;display:inline-block}.post-article{padding:36px 40px}.post-article__header{border-bottom:3px dashed var(--border);margin-bottom:24px;padding-bottom:18px}.post-article__header h1{font-size:1.7rem}.post-content{font-family:var(--font-body);letter-spacing:.01em}.post-content h1,.post-content h2,.post-content h3,.post-content h4{font-family:var(--font-pixel);letter-spacing:0}.post-content h2{border-left:8px solid var(--accent);margin-top:1.8em;padding-left:12px}.post-content h3{margin-top:1.5em}.post-content a{color:var(--ink);text-underline-offset:4px;text-decoration:underline 2px}.post-content a:hover{background:var(--accent);color:var(--accent-ink);text-decoration:none}.post-content img{border:3px solid var(--border);clip-path:var(--cut-sm);filter:drop-shadow(6px 6px 0 var(--shadow));background:var(--bg-soft);margin:20px auto;display:block}.post-content blockquote{border:3px solid var(--border);background:var(--bg-inset);color:var(--ink-dim);border-left-width:10px;margin:20px 0;padding:12px 18px}.post-content pre{border:3px solid var(--border);clip-path:var(--cut-sm);filter:drop-shadow(6px 6px 0 var(--shadow));font-family:var(--font-mono);padding:16px;font-size:.85rem;line-height:1.7;overflow-x:auto}.post-content pre code{font-family:var(--font-mono)}.post-content :not(pre)>code{background:var(--bg-inset);border:2px solid var(--border);padding:0 6px;font-size:.85em}.post-content table{border-collapse:collapse;width:100%}.post-content th,.post-content td{border:2px solid var(--border);padding:6px 12px}.post-content th{background:var(--bg-inset)}.post-content hr{border:none;border-top:3px dashed var(--border);margin:32px 0}.chip-wall{flex-wrap:wrap;gap:20px;display:flex}.chip{padding:10px 18px;font-size:1rem}.chip .count{color:var(--accent-2);margin-left:6px}.timeline{border-left:4px solid var(--border);margin-left:14px;padding-left:34px;position:relative}.timeline__year{margin:36px 0 18px;font-family:"Press Start 2P","Fusion Pixel 12px Monospaced SC",monospace;font-size:1.3rem;position:relative}.timeline__year:before{content:"";background:var(--accent);border:3px solid var(--border);width:18px;height:18px;position:absolute;top:4px;left:-46px}.timeline__item{align-items:baseline;gap:14px;padding:8px 0;display:flex;position:relative}.timeline__item:before{content:"";background:var(--bg-soft);border:3px solid var(--border);width:10px;height:10px;position:absolute;top:16px;left:-40px}.timeline__date{color:var(--ink-dim);flex:none;font-size:.8rem}.timeline__item a:hover{background:var(--accent);color:var(--accent-ink);box-shadow:4px 0 0 var(--accent), -4px 0 0 var(--accent)}.gallery__group{margin-bottom:56px}.gallery__month{border-bottom:3px dashed var(--border);align-items:baseline;gap:12px;margin-bottom:8px;padding-bottom:10px;font-family:"Press Start 2P","Fusion Pixel 12px Monospaced SC",monospace;font-size:1.1rem;display:flex}.gallery__count{color:var(--ink-dim);font-size:.75rem}.gallery__intro{color:var(--ink-dim);margin-bottom:8px;font-size:.9rem}.gallery__intro:empty{display:none}.gallery__grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:28px;padding-top:16px;display:grid}.gallery:after{content:"";z-index:40;pointer-events:none;background:#0a0c0e00;position:fixed;inset:0;transition:background .25s ease-out!important}.gallery:has(.photo-item:hover):after{background:#0a0c0e9e}body.gallery-focus .gallery:after{background:0 0}.photo-item{z-index:1;border:3px solid var(--border);clip-path:var(--cut-sm);filter:drop-shadow(6px 6px 0 var(--shadow));transform:rotate(var(--tilt,0deg));background:#f7f5ee;margin:0;padding:12px 12px 0;position:relative;transition:transform .25s ease-out,filter .25s ease-out,opacity .25s ease-out!important}.photo-item img{aspect-ratio:3/2;object-fit:cover;background:#d2d8d7;border:2px solid #1c2426;width:100%;display:block}.photo-item figcaption{color:#1c2426;font-family:var(--font-body);flex-direction:column;gap:2px;padding:10px 4px 14px;display:flex}.photo-item figcaption strong{font-family:var(--font-pixel);font-size:.95rem}.photo-item figcaption span{color:#5a6668;font-size:.78rem}.photo-item__date{font-family:var(--font-mono);letter-spacing:1px;color:#d9704a;opacity:0;font-size:.78rem;position:absolute;bottom:12px;right:16px;transition:opacity .3s ease-out!important}.photo-item.is-settled .photo-item__date{opacity:1}.gallery:has(.photo-item:hover) .photo-item:not(:hover){opacity:.35}.photo-item:hover{z-index:50;filter:drop-shadow(12px 14px 0 var(--accent));transform:rotate(0)translateY(-10px)scale(1.06)}.photo-item{cursor:zoom-in;will-change:transform}#gallery-overlay{z-index:60;opacity:0;pointer-events:none;background:#0a0c0e9e;position:fixed;inset:0;transition:opacity .3s ease-out!important}body.gallery-focus{overflow:hidden}body.gallery-focus #gallery-overlay{opacity:1;pointer-events:auto;cursor:zoom-out}body.gallery-focus .photo-item:not(.is-focused){pointer-events:none}.photo-item.is-focused{z-index:70;cursor:default;filter:drop-shadow(14px 16px 0 var(--shadow))}.photo-item.is-focused.is-settled{transition:transform .12s ease-out!important}body{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='24' shape-rendering='crispEdges'%3E%3Cpolygon points='1,1 1,21 7,15 11,23 15,21 11,13 19,13' fill='%231c2426' stroke='%23ffffff' stroke-width='2'/%3E%3C/svg%3E") 2 2,auto}a,button,[role=button],input[type=search]{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='24' shape-rendering='crispEdges'%3E%3Cpolygon points='1,1 1,21 7,15 11,23 15,21 11,13 19,13' fill='%2339c5bb' stroke='%231c2426' stroke-width='2'/%3E%3C/svg%3E") 2 2,pointer}#boot-loader{z-index:200;background:var(--bg);place-items:center;display:grid;position:fixed;inset:0}html.no-boot #boot-loader{display:none}.boot-box{text-align:center}.boot-title{margin:0 0 20px;font-family:"Press Start 2P","Fusion Pixel 12px Monospaced SC",monospace;font-size:1.2rem}.boot-bar{margin:0 0 12px}.boot-bar i{border:2px solid var(--border);background:0 0;width:14px;height:14px;margin:0 1px;display:inline-block}.boot-bar i.on{background:var(--accent)}.boot-hint{color:var(--ink-dim);letter-spacing:3px;font-size:.75rem}html.konami body{filter:invert()hue-rotate(180deg)}.konami-toast{z-index:300;background:var(--accent);color:var(--accent-ink);border:3px solid var(--border);clip-path:var(--cut-sm);filter:drop-shadow(4px 4px 0 var(--shadow));padding:8px 20px;font-family:"Press Start 2P","Fusion Pixel 12px Monospaced SC",monospace;font-size:.8rem;position:fixed;top:24px;left:50%;transform:translate(-50%)}#search-modal{z-index:100;background:#0a0c0e9e;padding:12vh 20px 20px;position:fixed;inset:0}#search-modal[hidden]{display:none}.search-panel{max-width:560px;margin:0 auto;padding:20px 24px}.search-bar{gap:10px;margin-bottom:12px;display:flex}.search-bar input{color:var(--ink);background:var(--bg-inset);border:3px solid var(--border);outline:none;flex:1;padding:6px 12px;font-family:inherit;font-size:1rem}.search-bar input:focus{border-color:var(--accent)}#search-results{max-height:50vh;margin:0;padding:0;list-style:none;overflow-y:auto}#search-results li+li{border-top:2px dashed var(--border)}#search-results a{padding:10px 6px;display:block}#search-results a:hover{background:var(--bg-inset)}#search-results strong{font-size:.95rem;display:block}#search-results span{font-family:var(--font-body);color:var(--ink-dim);font-size:.8rem;display:block}#search-results mark{background:var(--accent);color:var(--accent-ink);padding:0 2px}#search-status{color:var(--ink-dim);margin:10px 0 0;font-size:.75rem}.post-toc{border:3px solid var(--border);background:var(--bg-inset);margin-bottom:28px;padding:14px 20px}.post-toc__title{color:var(--ink-dim);letter-spacing:2px;margin:0 0 8px;font-size:.85rem}.post-toc ul{margin:0;padding:0;list-style:none}.post-toc__item a{font-family:var(--font-body);color:var(--ink);font-size:.9rem}.post-toc__item a:before{content:"▸ ";color:var(--accent-2)}.post-toc__item--d3{padding-left:20px}.post-toc__item--d3 a{color:var(--ink-dim);font-size:.82rem}.post-pager{border-top:3px dashed var(--border);justify-content:space-between;gap:16px;margin-top:40px;padding-top:24px;display:flex}.post-pager small{color:inherit;opacity:.75;font-size:.75rem}.post-pager__next{text-align:right}.post-content pre{position:relative}.code-copy{color:#e3e7ea;cursor:pointer;background:0 0;border:2px solid #8b949c;padding:1px 8px;font-family:inherit;font-size:.7rem;position:absolute;top:8px;right:8px}.code-copy:hover,.code-copy.is-done{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.pixel-tag--pinned{background:var(--accent-2);color:#fff;border-color:var(--border)}.not-found{text-align:center;padding:64px 40px}.not-found__code{color:var(--accent);margin:0;font-family:"Press Start 2P","Fusion Pixel 12px Monospaced SC",monospace;font-size:4rem}.not-found__title{margin:12px 0 16px;font-family:"Press Start 2P","Fusion Pixel 12px Monospaced SC",monospace;font-size:1.6rem}.not-found__desc{color:var(--ink-dim);margin-bottom:28px}.not-found .hero__actions{justify-content:center}#gallery-hint{z-index:70;color:#e3e7ea;letter-spacing:1px;pointer-events:none;margin:0;font-size:.75rem;display:none;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}body.gallery-focus #gallery-hint{display:block}#img-zoom{z-index:80;cursor:zoom-out;background:#0a0c0e9e;place-items:center;display:grid;position:fixed;inset:0}#img-zoom[hidden]{display:none}#img-zoom img{max-width:90vw;max-height:85vh;clip-path:var(--cut-sm);filter:drop-shadow(10px 10px #00000080);background:#f7f5ee;border:3px solid #1c2426;padding:10px}.site-footer{border-top:3px solid var(--border);background:var(--bg-soft);color:var(--ink-dim);text-align:center;padding:22px 0;font-size:.8rem}.site-footer a{color:inherit}.site-footer a:hover{color:var(--accent-2)}@media (width<=640px){.hero{padding:32px 24px}.hero__pixels{display:none}.post-article{padding:24px 20px}.site-nav{margin-left:0}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
