:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-canvas:#f6fbef;--color-sky:#dff4ff;--color-grass:#cfe8a6;--color-grass-strong:#b9dc86;--color-path:#f4d88a;--color-panel:#fffaf0;--color-panel-cool:#eef8ff;--color-ink:#2e3440;--color-muted:#5f6f78;--color-line:#2e3440;--color-accent:#8b6bd6;--color-accent-dark:#5c4a94;--color-accent-soft:#ded4ff;--color-water:#9edbe4;--color-cheek:#f0a1b4;--shadow-pixel:4px 4px 0 var(--color-line);--shadow-small:2px 2px 0 var(--color-line);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--font-body:"Microsoft YaHei", "PingFang SC", system-ui, sans-serif;--font-pixel:Consolas, "Lucida Console", "Courier New", monospace}*{box-sizing:border-box}html{background:var(--color-canvas);min-width:320px;color:var(--color-ink);font-family:var(--font-body);letter-spacing:0;scroll-behavior:smooth}body{background:linear-gradient(90deg, #2e34400d 1px, transparent 1px), linear-gradient(#2e34400d 1px, transparent 1px), linear-gradient(180deg, var(--color-sky) 0%, var(--color-canvas) 38%, #f8ffe9 100%);min-height:100vh;color:var(--color-ink);background-size:32px 32px,32px 32px,100% 100%;margin:0}body,button,a,input{font:inherit}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button{cursor:pointer;border:0}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}h1,h2,h3{text-wrap:balance}p,li,dd{text-wrap:pretty}h1,h2,h3,p{margin:0}h1{font-size:4rem;line-height:1}h2{font-size:2rem;line-height:1.15}h3{font-size:1.2rem;line-height:1.25}p{color:var(--color-muted);line-height:1.7}ul,dl,dd{margin:0}ul{padding:0;list-style:none}.app-shell{min-height:100vh}.site-header{z-index:20;padding:var(--space-4) var(--space-5) 0;position:sticky;top:0}.skip-link{left:var(--space-5);z-index:30;border:2px solid var(--color-line);background:var(--color-panel);box-shadow:var(--shadow-small);color:var(--color-ink);padding:var(--space-2) var(--space-3);position:absolute;top:-80px}.skip-link:focus{top:var(--space-4)}.nav-shell{justify-content:space-between;align-items:center;gap:var(--space-4);border:2px solid var(--color-line);width:min(1120px,100%);min-height:64px;box-shadow:var(--shadow-pixel);padding:var(--space-2);background:#fffaf0f0;margin:0 auto;display:flex}.brand-lockup{align-items:center;gap:var(--space-3);min-height:44px;padding:var(--space-2);display:inline-flex}.brand-mark{border:2px solid var(--color-line);background:var(--color-accent-soft);width:40px;height:40px;box-shadow:var(--shadow-small);color:var(--color-accent-dark);font-family:var(--font-pixel);place-items:center;font-weight:700;display:grid}.brand-lockup strong{color:var(--color-ink);font-family:var(--font-pixel);font-size:1rem;display:block}.brand-lockup span span{color:var(--color-muted);font-family:var(--font-pixel);font-size:.78rem;display:block}.nav-menu{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.nav-link{align-items:center;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-3);color:var(--color-muted);font-family:var(--font-pixel);border:2px solid #0000;display:inline-flex}.nav-cursor{border-top:5px solid #0000;border-bottom:5px solid #0000;border-left:8px solid #0000;width:0;height:0}.nav-link.is-active{border-color:var(--color-line);background:var(--color-accent-soft);box-shadow:var(--shadow-small);color:var(--color-ink)}.nav-link.is-active .nav-cursor{border-left-color:var(--color-accent-dark)}.page-main{width:min(1120px,100% - 32px);padding:var(--space-7) 0 var(--space-8);margin:0 auto}.home-page,.content-page{gap:var(--space-8);display:grid}.hero-map{gap:var(--space-6);border:2px solid var(--color-line);min-height:calc(100vh - 160px);box-shadow:var(--shadow-pixel);padding:var(--space-7);background:linear-gradient(90deg,#2e344017 1px,#0000 1px) 0 0/28px 28px,linear-gradient(#2e344017 1px,#0000 1px) 0 0/28px 28px,linear-gradient(135deg,#cfe8a6f2,#dff4fff2 56%,#f4d88ae6) 0 0/100% 100%;grid-template-columns:minmax(0,.95fr) minmax(320px,1.05fr);align-items:center;display:grid;position:relative;overflow:hidden}.hero-copy{z-index:1;gap:var(--space-4);align-content:center;width:min(100%,30rem);display:grid;position:relative}.hero-copy h1{white-space:nowrap;width:100%}.hero-greeting{gap:var(--space-2);width:100%;padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);background:#fffaf047;border-left:2px solid #2e344061;display:grid}.hero-greeting p{color:#35434b;font-size:1.04rem;line-height:1.65}.hero-greeting p:last-child{color:var(--color-ink);font-family:var(--font-pixel);font-size:.95rem}.route-label{color:var(--color-accent-dark);font-family:var(--font-pixel);font-size:.88rem;line-height:1.4}.hero-room-menu{gap:var(--space-2);width:100%;padding-left:var(--space-3);border-left:2px solid #2e344061;display:grid}.hero-room-link{align-items:center;gap:var(--space-3);min-height:56px;color:var(--color-ink);padding:var(--space-2);background:#fffaf04d;border:2px solid #2e344029;grid-template-columns:34px minmax(0,1fr);transition:transform .16s ease-out,border-color .16s ease-out,background-color .16s ease-out;display:grid}.hero-room-link.is-current{box-shadow:var(--shadow-small);background:#fffaf09e;border-color:#2e344061}.hero-room-link>span:last-child{gap:2px;display:grid}.hero-room-link strong{color:var(--color-ink);font-size:1rem}.hero-room-link span span{color:var(--color-muted);font-size:.9rem;line-height:1.45}.hero-room-marker{border:2px solid var(--color-line);background:var(--color-grass);width:26px;height:26px;box-shadow:6px 0 0 var(--color-path), 12px 0 0 var(--color-water), 0 6px 0 var(--color-grass-strong), 6px 6px 0 var(--color-grass)}.hero-room-marker--about{background:var(--color-accent-soft)}.hero-room-marker--knowledge{background:var(--color-water)}.hero-ghostie{z-index:1;place-items:center;width:100%;min-width:0;display:grid;position:relative}.ghostie{justify-items:center;gap:var(--space-4);min-width:0;max-width:100%;display:grid}.ghostie--hero{width:min(100%,440px)}.ghostie-dialog--top{gap:var(--space-3)}.ghostie--companion{place-items:center start;gap:var(--space-3);grid-template-columns:auto minmax(0,1fr)}.ghostie-stage{justify-items:center;gap:var(--space-2);display:grid}.ghostie-artwork{-webkit-user-select:none;user-select:none;height:auto;display:block}.ghostie-artwork--hero{width:min(320px,72vw);animation:1.8s steps(2,end) infinite ghostie-step}.ghostie-artwork--listening.ghostie-artwork--hero{width:min(336px,74vw)}.ghostie-artwork--companion{width:92px}.ghostie-shadow{background:#2e34402e;width:58%;height:12px}.ghostie--companion .ghostie-shadow{height:6px}.ghostie-state--listening .ghostie-shadow{display:none}.dialog-box{border:2px solid var(--color-line);background:var(--color-panel);width:min(100%,410px);max-width:100%;box-shadow:var(--shadow-pixel);padding:var(--space-4);position:relative}.dialog-box:before{content:"";border-right:2px solid var(--color-line);border-bottom:2px solid var(--color-line);background:var(--color-panel);width:18px;height:18px;position:absolute;bottom:-12px;left:28px;transform:rotate(45deg)}.ghostie-dialog--top .dialog-box{width:min(100%,390px)}.ghostie-dialog--top .dialog-box:before{left:50%;transform:translate(-50%)rotate(45deg)}.ghostie-dialog--top .dialog-box p{font-size:1rem;line-height:1.7}.ghostie-dialog-style--caption{gap:var(--space-2)}.ghostie-dialog-style--caption .dialog-box{width:fit-content;min-width:min(100%,18rem);max-width:min(100%,24rem);padding:var(--space-2) var(--space-4);text-align:center;background:#ded4ff2e;border:1px solid #5c4a946b;border-top-color:#5c4a949e;box-shadow:inset 0 -3px #5c4a9414}.ghostie-dialog-style--caption .dialog-box:before,.ghostie-dialog-style--caption .dialog-name{display:none}.ghostie-dialog-style--caption .dialog-box p{color:#3f4658;font-family:var(--font-pixel);font-size:.9rem;line-height:1.7}.ghostie-dialog-style--lyric{gap:var(--space-1)}.ghostie-dialog-style--lyric .dialog-box{width:min(100%,392px);min-height:64px;padding:var(--space-3) 3.4rem;text-align:center;background:#fff4dc;border:2px solid #4f427f;place-items:center;display:grid;overflow:hidden;transform:translateY(-10px);box-shadow:inset 0 0 0 2px #fffaf0,inset 12px 0 #cfc1ff,inset -12px 0 #cfc1ff,4px 4px #3f366970}.ghostie-dialog-style--lyric .dialog-box:before{left:var(--space-4);background:#4f427f;border:0;width:5px;height:5px;top:50%;bottom:auto;transform:translateY(-50%);box-shadow:0 -12px #8b6bd6,0 12px #8b6bd6,9px -5px #2e3440,9px 7px #2e3440,18px -14px #ffd66b,18px 2px #f0a1b4}.ghostie-dialog-style--lyric .dialog-box:after{content:"";top:var(--space-2);right:var(--space-3);background:#4f427f;width:5px;height:5px;position:absolute;box-shadow:9px 0 #8b6bd6,18px 0 #ffd66b,27px 0 #8b6bd6,36px 0 #4f427f}.ghostie-dialog-style--lyric .dialog-name{display:none}.ghostie-dialog-style--lyric .dialog-box p{color:#2f3346;font-family:var(--font-body);z-index:1;text-align:center;text-shadow:1px 1px #fffaf0,2px 2px #4f427f29;white-space:pre-wrap;width:100%;font-size:.98rem;font-weight:700;line-height:1.5;position:relative}.dialog-name{margin-bottom:var(--space-2);color:var(--color-accent-dark);font-family:var(--font-pixel);font-weight:700;display:inline-block}.dialog-box p{color:var(--color-ink)}.ghostie--companion .dialog-box{max-width:220px;padding:var(--space-3);box-shadow:var(--shadow-small)}.ghostie--companion .dialog-name,.ghostie--companion .dialog-box p{font-size:.82rem}.author-page{gap:var(--space-7)}.author-hero,.github-activity,.author-next{border:2px solid var(--color-line);box-shadow:var(--shadow-pixel);background:linear-gradient(90deg,#2e34400d 1px,#0000 1px) 0 0/24px 24px,linear-gradient(#2e34400d 1px,#0000 1px) 0 0/24px 24px,#fffaf0f0 0 0/100% 100%}.author-hero{align-items:center;gap:var(--space-5);padding:var(--space-5);grid-template-columns:minmax(0,1fr) minmax(240px,.42fr);display:grid}.author-hero__copy{gap:var(--space-3);display:grid}.author-hero h1{font-size:3.2rem}.author-title{color:var(--color-ink);font-size:1.12rem;font-weight:700}.author-summary{max-width:42rem}.github-activity{align-items:stretch;column-gap:var(--space-4);row-gap:var(--space-3);padding:var(--space-5);grid-template-rows:auto 1fr;grid-template-columns:minmax(180px,240px) minmax(0,1fr);display:grid}.github-projects{grid-area:2/1;align-content:start;display:grid}.github-projects-label{grid-area:1/1}.github-projects ul{gap:var(--space-3);display:grid}.github-projects li{min-width:0}.github-projects a{gap:var(--space-1);min-height:50px;box-shadow:var(--shadow-small);padding:var(--space-2) var(--space-3);background:#ffffff80;border:2px solid #2e344042;transition:transform .16s ease-out,border-color .16s ease-out,background-color .16s ease-out;display:grid}.github-projects span{color:var(--color-ink);font-family:var(--font-pixel);overflow-wrap:anywhere;font-weight:700}.github-projects small{color:var(--color-muted);font-size:.84rem;line-height:1.4}.github-activity__chart{--github-day-gap:clamp(2px, .2vw, 3px);min-width:0;box-shadow:var(--shadow-small);padding:var(--space-3) var(--space-4);background:#ffffff8f;border:2px solid #2e344047;grid-area:2/2;align-content:center;align-self:stretch;gap:6px;display:grid}.github-chart-head{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.github-chart-head strong{color:var(--color-ink);font-family:var(--font-pixel);font-size:clamp(1.45rem,2.1vw,1.8rem);line-height:1}.github-chart-head span{color:var(--color-muted)}.github-months{grid-template-columns:repeat(var(--github-month-count,12), minmax(0, 1fr));gap:var(--github-day-gap);min-width:0;padding-left:calc(2.35rem + var(--space-2));color:var(--color-muted);font-family:var(--font-pixel);font-size:clamp(.58rem,.9vw,.72rem);display:grid}.github-heatmap-wrap{gap:var(--space-2);grid-template-columns:2.35rem minmax(0,1fr);min-width:0;display:grid;overflow:visible}.github-weekdays{align-self:stretch;gap:var(--github-day-gap);color:var(--color-muted);font-family:var(--font-pixel);grid-template-rows:repeat(7,minmax(0,1fr));font-size:.68rem;line-height:1;display:grid}.github-weekdays span:first-child{grid-row:2}.github-weekdays span:nth-child(2){grid-row:4}.github-weekdays span:nth-child(3){grid-row:6}.github-heatmap{grid-template-columns:repeat(var(--github-week-count,52), minmax(0, 1fr));gap:var(--github-day-gap);width:100%;min-width:0;display:grid}.github-week{gap:var(--github-day-gap);grid-template-rows:repeat(7,auto);min-width:0;display:grid}.github-day{aspect-ratio:1;background:#e1ebe3;border:1px solid #2e34402e;width:100%;height:auto;display:block}.github-day--1{background:#aadfb5}.github-day--2{background:#67c77d}.github-day--3{background:#2e9852}.github-day--4{background:#126633}.github-legend{justify-content:flex-end;align-items:center;gap:var(--space-2);color:var(--color-muted);font-family:var(--font-pixel);font-size:.76rem;display:flex}.github-legend .github-day{flex:0 0 10px;width:10px;height:10px}.github-chart-loading{min-height:164px;color:var(--color-muted);font-family:var(--font-pixel);background:#fffaf07a;border:2px dashed #2e34403d;place-items:center;font-size:.9rem;display:grid}.author-contact{gap:var(--space-2);box-shadow:var(--shadow-small);padding:var(--space-4);background:#eef8ffc7;border:2px solid #2e344047;display:grid}.author-contact div{padding-bottom:var(--space-2);border-bottom:2px dashed #2e34402e;gap:2px;display:grid}.author-contact div:last-child{border-bottom:0;padding-bottom:0}.author-contact dt,.timeline-place,.project-dossier dt{color:var(--color-accent-dark);font-family:var(--font-pixel);font-size:.82rem}.author-contact dd,.author-contact a{color:var(--color-ink);overflow-wrap:anywhere;font-weight:700}.section-heading--inline{grid-template-columns:minmax(0,.65fr) minmax(280px,.35fr);align-items:end}.highlight-grid{gap:var(--space-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.highlight-card{gap:var(--space-2);border:2px solid var(--color-line);background:var(--color-panel);box-shadow:var(--shadow-small);min-height:170px;padding:var(--space-4);display:grid}.highlight-card strong{color:var(--color-ink);font-family:var(--font-pixel);font-size:1.45rem;line-height:1.1}.highlight-card span{color:var(--color-accent-dark);font-weight:700}.focus-grid{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.focus-card{align-content:start;gap:var(--space-3);border:2px solid var(--color-line);box-shadow:var(--shadow-small);padding:var(--space-5);background:#fffaf0f0;display:grid}.focus-card span{color:var(--color-accent-dark);font-family:var(--font-pixel);padding-top:var(--space-3);border-top:2px dashed #2e34403d;font-size:.82rem;display:inline-block}.profile-intro,.room-header,.knowledge-category{border:2px solid var(--color-line);box-shadow:var(--shadow-pixel);background:#fffaf0f0}.room-header{align-items:center;gap:var(--space-5);padding:var(--space-5);grid-template-columns:minmax(180px,260px) minmax(0,1fr);display:grid}.room-header>div:last-child{gap:var(--space-3);display:grid}.room-header h1{font-size:3rem}.profile-intro{gap:var(--space-5);padding:var(--space-6);grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);display:grid}.profile-intro>p{color:var(--color-ink);font-size:1.06rem}.profile-links{gap:var(--space-3);display:grid}.profile-links div{gap:var(--space-3);padding-bottom:var(--space-2);border-bottom:2px dashed #2e344038;grid-template-columns:76px minmax(0,1fr);align-items:baseline;display:grid}.profile-links dt{color:var(--color-accent-dark);font-family:var(--font-pixel)}.profile-links dd{color:var(--color-ink);font-weight:700}.page-section{gap:var(--space-5);display:grid}.page-section--split{grid-template-columns:minmax(200px,.45fr) minmax(0,1fr);align-items:start}.section-heading{gap:var(--space-2);display:grid}.card-grid{gap:var(--space-4);display:grid}.card-grid--three,.card-grid--projects{grid-template-columns:repeat(3,minmax(0,1fr))}.pixel-card{gap:var(--space-3);border:2px solid var(--color-line);background:var(--color-panel);box-shadow:var(--shadow-small);padding:var(--space-5);display:grid}.project-card{background:var(--color-panel-cool)}.tag-list{gap:var(--space-2);flex-wrap:wrap;display:flex}.tag-list li{color:var(--color-ink);font-family:var(--font-pixel);padding:.2rem var(--space-2);background:#ffffff8a;border:2px solid #2e344042;font-size:.78rem}.timeline-list{gap:var(--space-4);display:grid}.timeline-item{gap:var(--space-4);border-left:6px solid var(--color-accent);padding:var(--space-4);background:#fffaf0c2;grid-template-columns:88px minmax(0,1fr);display:grid}.timeline-item>span{color:var(--color-accent-dark);font-family:var(--font-pixel);font-weight:700}.timeline-item div{gap:var(--space-2);display:grid}.timeline-item ul{gap:var(--space-2);margin-top:var(--space-1);display:grid}.timeline-item li{color:var(--color-muted);padding-left:var(--space-4);line-height:1.65;position:relative}.timeline-item li:before{content:"";background:var(--color-accent);width:6px;height:6px;box-shadow:4px 0 0 var(--color-path);position:absolute;top:.72em;left:0}.project-dossier-list{gap:var(--space-4);display:grid}.project-dossier{gap:var(--space-5);border:2px solid var(--color-line);background:var(--color-panel-cool);box-shadow:var(--shadow-small);padding:var(--space-5);grid-template-columns:minmax(0,.9fr) minmax(280px,1.1fr);display:grid}.project-dossier>div:first-child{align-content:start;gap:var(--space-2);display:grid}.project-dossier dl{gap:var(--space-3);display:grid}.project-dossier dl div{gap:var(--space-1);border-left:4px solid var(--color-accent);padding:var(--space-3);background:#ffffff80;display:grid}.project-dossier dd{color:var(--color-ink);font-weight:700;line-height:1.55}.project-dossier .tag-list{grid-column:1/-1}.skill-shelf{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.skill-group{gap:var(--space-3);padding:var(--space-4);background:#ffffff85;border:2px solid #2e344057;display:grid}.skill-group h3{color:var(--color-ink)}.skill-group ul{gap:var(--space-2);flex-wrap:wrap;display:flex}.skill-group li{background:var(--color-panel);color:var(--color-ink);font-family:var(--font-pixel);padding:.2rem var(--space-2);border:2px solid #2e34403d;font-size:.78rem}.author-next{gap:var(--space-5);padding:var(--space-5);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.author-next>div{gap:var(--space-2);display:grid}.author-next__link{border:2px solid var(--color-line);background:var(--color-accent-soft);min-height:48px;box-shadow:var(--shadow-small);color:var(--color-ink);font-family:var(--font-pixel);padding:var(--space-3) var(--space-5);justify-content:center;align-items:center;font-weight:700;transition:transform .16s ease-out,background-color .16s ease-out;display:inline-flex}.knowledge-map{gap:var(--space-5);display:grid}.knowledge-category{gap:var(--space-5);padding:var(--space-5);display:grid}.category-heading{gap:var(--space-4);grid-template-columns:auto minmax(0,1fr);align-items:start;display:grid}.category-marker{border:2px solid var(--color-line);background:var(--color-water);width:32px;height:32px;box-shadow:8px 0 0 var(--color-accent-soft), 0 8px 0 var(--color-path), 8px 8px 0 var(--color-grass)}.category-heading div{gap:var(--space-2);display:grid}.entry-list{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.knowledge-entry{gap:var(--space-3);padding:var(--space-4);background:#ffffff85;border:2px solid #2e344057;display:grid}.entry-title-row{justify-content:space-between;align-items:start;gap:var(--space-3);display:flex}.entry-title-row span{border:2px solid var(--color-line);background:var(--color-path);color:var(--color-ink);font-family:var(--font-pixel);padding:.15rem var(--space-2);flex:none;font-size:.78rem}.site-footer{align-items:center;gap:var(--space-3);width:min(1120px,100% - 32px);color:var(--color-muted);font-family:var(--font-pixel);padding:var(--space-5) 0 var(--space-6);border-top:2px solid #2e34402e;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);margin:0 auto;font-size:.85rem;display:grid}.site-footer>span:last-child{text-align:right;justify-self:end}.footer-beian{color:var(--color-muted);text-align:center;text-underline-offset:3px;justify-self:center;-webkit-text-decoration:underline #5f6f7873;text-decoration:underline #5f6f7873;transition:color .16s ease-out,text-decoration-color .16s ease-out}@media (hover:hover) and (pointer:fine){.hero-room-link:not(.is-current):hover{background:#fffaf06b;border-color:#2e34404d;transform:translate(-2px,-2px)}.nav-link:not(.is-active):hover{color:var(--color-ink);background:#ffffff73;border-color:#2e34404d}.author-next__link:hover{background:#ece3ff;transform:translate(-2px,-2px)}.github-projects a:hover{background:#fffaf0db;border-color:#2e34406b;transform:translate(-2px,-2px)}.footer-beian:hover{color:var(--color-accent-dark);text-decoration-color:currentColor}}@keyframes ghostie-step{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@media (width<=860px){h1{font-size:3rem}h2{font-size:1.7rem}.site-header{padding-inline:var(--space-3)}.nav-shell{flex-direction:column;align-items:stretch}.nav-menu{justify-content:stretch}.nav-menu li,.nav-link{flex:auto}.nav-link{justify-content:center}.page-main{width:min(100% - 24px,680px);padding-top:var(--space-5)}.hero-map,.author-hero,.github-activity,.room-header,.profile-intro,.section-heading--inline,.project-dossier,.page-section--split{grid-template-columns:1fr}.hero-map{min-height:auto;padding:var(--space-5)}.hero-copy{order:2}.hero-ghostie{order:1}.card-grid--three,.card-grid--projects,.focus-grid,.highlight-grid,.entry-list,.skill-shelf{grid-template-columns:1fr}.room-header h1{font-size:2.4rem}.author-hero h1{font-size:2.6rem}.github-projects-label,.github-projects,.github-activity__chart{grid-column:1}.github-projects-label{grid-row:1}.github-projects{grid-row:2}.github-activity__chart{--github-day-gap:clamp(1px, .26vw, 2px);grid-row:3}}@media (width<=520px){h1{font-size:2.45rem}.brand-lockup{align-items:flex-start}.brand-lockup span span{display:none}.nav-menu{grid-template-columns:1fr;display:grid}.hero-map,.author-hero,.github-activity,.author-next,.profile-intro,.room-header,.knowledge-category{padding:var(--space-4)}.ghostie--companion{grid-template-columns:1fr}.ghostie--hero{width:100%}.ghostie-dialog--top .dialog-box{justify-self:start;width:min(300px,100vw - 72px);max-width:100%}.ghostie-artwork--listening.ghostie-artwork--hero{width:min(300px,82vw)}.ghostie-dialog-style--lyric .dialog-box{width:min(280px,100vw - 112px);padding:var(--space-2) 2.75rem}.ghostie-dialog-style--lyric .dialog-box:before{left:var(--space-3)}.ghostie-dialog-style--lyric .dialog-box:after{right:var(--space-2);width:5px}.ghostie-dialog-style--lyric .dialog-box p{white-space:nowrap;font-size:.84rem;line-height:1.45}.ghostie--companion .dialog-box{max-width:100%}.profile-links div,.timeline-item{grid-template-columns:1fr}.author-next{justify-items:stretch}.author-next__link{width:100%}.site-footer{text-align:center;grid-template-columns:1fr;justify-items:center}.site-footer>span:last-child{text-align:center;justify-self:center}.entry-title-row{flex-direction:column;align-items:start}.github-activity__chart{--github-day-gap:1px}.github-heatmap-wrap{gap:var(--space-1);grid-template-columns:1.85rem minmax(0,1fr)}.github-weekdays{font-size:.6rem}.github-months{padding-left:calc(1.85rem + var(--space-1));font-size:.58rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.blog-page{gap:var(--space-6)}.blog-hero{border:2px solid var(--color-line);min-height:300px;box-shadow:var(--shadow-pixel);padding:var(--space-7);background:linear-gradient(90deg,#2e34400e 1px,#0000 1px) 0 0/24px 24px,linear-gradient(#2e34400e 1px,#0000 1px) 0 0/24px 24px,linear-gradient(125deg,#fffaf0fa,#eef8fff5) 0 0/100% 100%;grid-template-columns:minmax(0,1fr) minmax(240px,.38fr);align-items:center;display:grid;position:relative;overflow:hidden}.blog-hero:after{content:"";border:2px solid var(--color-line);background:var(--color-path);width:18px;height:44px;box-shadow:22px 8px 0 -2px var(--color-accent-soft), 22px 8px 0 0 var(--color-line), 44px -4px 0 -2px var(--color-water), 44px -4px 0 0 var(--color-line), 66px 12px 0 -2px var(--color-grass), 66px 12px 0 0 var(--color-line), -8px 48px 0 -1px var(--color-line), 14px 48px 0 -1px var(--color-line), 36px 48px 0 -1px var(--color-line), 58px 48px 0 -1px var(--color-line), 80px 48px 0 -1px var(--color-line);opacity:.52;position:absolute;bottom:32px;right:38px}.blog-hero__copy{z-index:1;gap:var(--space-4);width:min(100%,46rem);display:grid;position:relative}.blog-hero__copy h1{font-size:clamp(2.9rem,7vw,4.4rem);line-height:1}.blog-hero__copy>p:not(.route-label){color:#46545d;max-width:44rem;font-size:1.08rem;line-height:1.8}.blog-hero__stats{margin-top:var(--space-2);flex-wrap:wrap;gap:0;display:flex}.blog-hero__stats div{gap:var(--space-1);min-width:116px;padding:0 var(--space-4);border-left:2px solid #2e34403d;display:grid}.blog-hero__stats div:first-child{border-left:0;padding-left:0}.blog-hero__stats dt{color:var(--color-ink);font-family:var(--font-pixel);font-variant-numeric:tabular-nums;font-size:1.15rem;font-weight:700}.blog-hero__stats dd{color:var(--color-muted);font-size:.82rem}.blog-ghostie{z-index:1;place-items:center;min-width:0;display:grid;position:relative}.blog-ghostie .ghostie--companion{grid-template-columns:1fr;justify-items:center}.blog-ghostie .ghostie-artwork--companion{width:124px}.blog-ghostie .ghostie-dialog-style--caption .dialog-box{background:#fffaf0db;min-width:auto;max-width:220px}.blog-search{border:2px solid var(--color-line);min-height:64px;box-shadow:var(--shadow-small);padding:var(--space-2) var(--space-4);background:#fffaf0f5;grid-template-columns:28px minmax(0,1fr) auto auto;align-items:center;display:grid;position:relative}.blog-search__icon{fill:none;width:22px;height:22px;stroke:var(--color-accent-dark);stroke-linecap:square;stroke-width:2px}.blog-search input{width:100%;min-height:44px;color:var(--color-ink);padding:0 var(--space-3);background:0 0;border:0;outline:0;font-size:1rem}.blog-search input::placeholder{color:#5f6f78c7}.blog-search input::-webkit-search-cancel-button{display:none}.blog-search__clear{background:var(--color-panel);min-height:40px;color:var(--color-ink);font-family:var(--font-pixel);padding:var(--space-2) var(--space-3);border:2px solid #2e344052;font-size:.8rem}.blog-search__hint{margin-left:var(--space-3);color:var(--color-muted);font-family:var(--font-pixel);font-size:.78rem}.blog-layout{align-items:start;gap:var(--space-6);grid-template-columns:248px minmax(0,1fr);display:grid}.blog-sidebar{gap:var(--space-4);display:grid;position:sticky;top:112px}.blog-sidebar__section,.blog-source-preview{border:2px solid var(--color-line);box-shadow:var(--shadow-small);background:#fffaf0f0}.blog-sidebar__section{gap:var(--space-3);padding:var(--space-4);display:grid}.blog-sidebar__heading{justify-content:space-between;align-items:baseline;gap:var(--space-3);padding-bottom:var(--space-2);border-bottom:2px dashed #2e344038;display:flex}.blog-sidebar__heading h2{font-size:1rem}.blog-sidebar__heading span{color:var(--color-muted);font-family:var(--font-pixel);font-variant-numeric:tabular-nums;font-size:.76rem}.blog-category-nav{gap:var(--space-1);display:grid}.blog-category-nav button{align-items:center;gap:var(--space-2);min-height:44px;color:var(--color-muted);padding:var(--space-2);text-align:left;background:0 0;border:2px solid #0000;grid-template-columns:10px minmax(0,1fr) auto;font-size:.9rem;display:grid}.blog-category-nav button strong{color:inherit;font-family:var(--font-pixel);font-variant-numeric:tabular-nums;font-size:.76rem}.blog-category-nav button.is-active{border-color:var(--color-line);background:var(--color-accent-soft);color:var(--color-ink);font-weight:700;box-shadow:2px 2px #2e344073}.blog-category-cursor{border-top:4px solid #0000;border-bottom:4px solid #0000;border-left:7px solid #0000;width:0;height:0}.blog-category-nav button.is-active .blog-category-cursor{border-left-color:var(--color-accent-dark)}.blog-archive ul{gap:var(--space-2);display:grid}.blog-archive li{color:var(--color-ink);font-family:var(--font-pixel);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;font-size:.84rem;display:flex}.blog-archive li strong{color:var(--color-muted);font-size:.74rem;font-weight:400}.blog-source-preview{gap:var(--space-3);padding:var(--space-4);grid-template-columns:auto minmax(0,1fr);display:grid}.blog-source-preview__light{border:2px solid var(--color-line);background:var(--color-path);width:10px;height:10px;margin-top:.35rem;box-shadow:2px 2px #2e344047}.blog-source-preview div{gap:var(--space-1);display:grid}.blog-source-preview strong{font-size:.86rem}.blog-source-preview p{font-size:.78rem;line-height:1.55}.blog-feed{border-top:2px solid var(--color-line);min-width:0}.blog-feed__header{justify-content:space-between;align-items:end;gap:var(--space-5);padding:var(--space-5) var(--space-2) var(--space-4);display:flex}.blog-feed__header>div{gap:var(--space-2);display:grid}.blog-feed__header h2{font-size:1.75rem}.blog-feed__header>p{font-family:var(--font-pixel);font-variant-numeric:tabular-nums;flex:none;font-size:.78rem}.blog-article-list{border-bottom:2px solid var(--color-line);display:grid}.blog-article-row{align-items:start;gap:var(--space-5);padding:var(--space-5) var(--space-4);background:#fffaf080;border-top:2px solid #2e344042;grid-template-columns:92px minmax(0,1fr) 32px;transition:transform .16s ease-out,background-color .16s ease-out,box-shadow .16s ease-out;display:grid;position:relative}.blog-article-row:first-child{border-top-color:var(--color-line)}.blog-article-row time{color:var(--color-muted);font-family:var(--font-pixel);font-variant-numeric:tabular-nums;font-size:.76rem;line-height:1.5}.blog-article-row__body{gap:var(--space-2);min-width:0;display:grid}.blog-article-row__category{width:fit-content;color:var(--color-accent-dark);font-family:var(--font-pixel);font-size:.75rem;font-weight:700}.blog-article-row h3{font-size:clamp(1.15rem,2vw,1.42rem);line-height:1.35}.blog-article-row p{max-width:56rem;font-size:.94rem;line-height:1.7}.blog-article-row__meta{gap:var(--space-2);color:var(--color-muted);font-family:var(--font-pixel);flex-wrap:wrap;font-size:.72rem;line-height:1.5;display:flex}.blog-article-row__arrow{color:var(--color-accent-dark);font-family:var(--font-pixel);align-self:center;font-size:1.4rem;transition:transform .16s steps(2,end)}.blog-empty{align-content:center;place-items:center;gap:var(--space-3);border:2px solid var(--color-line);min-height:360px;box-shadow:var(--shadow-small);padding:var(--space-7);text-align:center;background:#fffaf0b8;display:grid}.blog-empty__marker,.article-not-found__marker{border:2px solid var(--color-line);background:var(--color-panel);width:40px;height:32px;box-shadow:6px 6px 0 var(--color-accent-soft), 8px 8px 0 var(--color-line)}.blog-empty h3{margin-top:var(--space-2);font-size:1.3rem}.blog-empty button,.article-not-found>a{border:2px solid var(--color-line);background:var(--color-accent-soft);min-height:44px;box-shadow:var(--shadow-small);color:var(--color-ink);font-family:var(--font-pixel);padding:var(--space-2) var(--space-4);font-weight:700}.article-page{gap:var(--space-6);display:grid}.article-breadcrumbs{align-items:center;gap:var(--space-2);color:var(--color-muted);font-family:var(--font-pixel);flex-wrap:wrap;font-size:.82rem;display:flex}.article-breadcrumbs a{color:var(--color-accent-dark);text-underline-offset:3px;text-decoration:underline}.article-header{gap:var(--space-4);border:2px solid var(--color-line);box-shadow:var(--shadow-pixel);background-color:#fffaf0f5;background-image:linear-gradient(90deg,#2e34400a 1px,#0000 1px),linear-gradient(#2e34400a 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:24px 24px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;padding:clamp(1.5rem,4vw,3.5rem);display:grid;position:relative;overflow:hidden}.article-header:after{content:"";border-right:2px solid var(--color-line);border-bottom:2px solid var(--color-line);border-left:2px solid var(--color-line);background:var(--color-accent-soft);width:24px;height:76px;position:absolute;top:0;right:56px;box-shadow:4px 4px #2e34404d}.article-header:before{content:"";z-index:1;border-right:2px solid var(--color-line);border-bottom:2px solid var(--color-line);background:var(--color-panel);width:10px;height:10px;position:absolute;top:62px;right:62px;transform:rotate(45deg)}.article-header>*{z-index:2;position:relative}.article-header h1{max-width:18ch;font-size:clamp(2.2rem,6vw,4.25rem);line-height:1.12}.article-header__summary{color:#46545d;max-width:50rem;font-size:1.08rem;line-height:1.8}.article-header__meta,.article-header__tags{gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.article-header__meta{color:var(--color-muted);font-family:var(--font-pixel);font-variant-numeric:tabular-nums;font-size:.76rem}.article-header__meta span+span:before{content:"·";margin-right:var(--space-4)}.article-header__tags li{color:var(--color-ink);font-family:var(--font-pixel);padding:var(--space-1) var(--space-2);background:#eef8ffb3;border:2px solid #2e344040;font-size:.72rem}.article-reading-layout{align-items:start;gap:var(--space-7);grid-template-columns:minmax(0,1fr) 236px;display:grid}.article-toc{grid-area:1/2;min-width:0;position:sticky;top:112px}.article-toc__inner{gap:var(--space-3);padding-left:var(--space-4);border-left:2px solid #2e34403d;display:grid}.article-toc__inner>p{color:var(--color-ink);font-family:var(--font-pixel);font-size:.82rem;font-weight:700}.article-toc ol{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.article-toc a{gap:var(--space-2);color:var(--color-muted);grid-template-columns:26px minmax(0,1fr);font-size:.82rem;line-height:1.55;display:grid}.article-toc a span{color:var(--color-accent-dark);font-family:var(--font-pixel);font-size:.7rem}.article-source-path{gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:2px dashed #2e344033;display:grid}.article-source-path span{color:var(--color-muted);font-family:var(--font-pixel);font-size:.7rem}.article-source-path code{overflow-wrap:anywhere;color:var(--color-ink);font-family:var(--font-pixel);font-size:.7rem;line-height:1.55}.article-prose{grid-area:1/1;justify-self:center;min-width:0;max-width:74ch}.article-prose__lead{margin-bottom:var(--space-7);border-left:4px solid var(--color-accent);color:#3f4850;padding:var(--space-3) 0 var(--space-3) var(--space-5);font-size:1.08rem;font-weight:700;line-height:1.85}.article-section{gap:var(--space-4);padding:var(--space-3) 0 var(--space-7);scroll-margin-top:120px;display:grid}.article-section__heading{align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-2);grid-template-columns:36px minmax(0,1fr);display:grid}.article-section__heading>span{color:var(--color-accent-dark);font-family:var(--font-pixel);font-size:.8rem;font-weight:700}.article-section h2{font-size:clamp(1.55rem,3vw,2.05rem);line-height:1.35}.article-section>p,.article-section>ul{color:#3f4850;font-size:1.08rem;line-height:1.9}.article-section>ul{gap:var(--space-2);padding-left:1.5rem;list-style:square;display:grid}.article-section>ul li::marker{color:var(--color-accent-dark)}.article-note{gap:var(--space-2);border:2px solid var(--color-line);background:var(--color-accent-soft);box-shadow:var(--shadow-small);padding:var(--space-4) var(--space-5);display:grid}.article-note>span{color:var(--color-accent-dark);font-family:var(--font-pixel);font-size:.76rem;font-weight:700}.article-note p{color:var(--color-ink);font-size:.96rem;line-height:1.75}.article-code{min-width:0;margin:var(--space-2) 0 0;border:2px solid var(--color-line);box-shadow:var(--shadow-pixel);background:#242a34}.article-code figcaption{justify-content:space-between;align-items:center;gap:var(--space-3);color:#eef8ff;min-height:44px;font-family:var(--font-pixel);padding:var(--space-2) var(--space-3);background:#39414d;border-bottom:2px solid #151a21;font-size:.72rem;display:flex}.article-code button{color:#fffaf0;min-height:32px;font-family:var(--font-pixel);padding:var(--space-1) var(--space-2);background:#ffffff14;border:1px solid #ffffff6b;font-size:.7rem}.article-code pre{color:#eef8ff;max-width:100%;font-family:var(--font-pixel);padding:var(--space-5);tab-size:2;margin:0;font-size:.84rem;line-height:1.75;overflow-x:auto}.article-endnote{align-items:center;gap:var(--space-5);margin-top:var(--space-5);border-top:2px solid var(--color-line);border-bottom:2px solid var(--color-line);padding:var(--space-5);background:#fffaf0ad;grid-template-columns:minmax(0,1fr) 120px;display:grid}.article-endnote>div:first-child{gap:var(--space-2);display:grid}.article-endnote h2{font-size:1.35rem}.article-endnote__ghostie .ghostie-artwork--companion{width:82px}.article-pagination{gap:var(--space-4);padding-top:var(--space-5);border-top:2px solid #2e34403d;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.article-pagination a{align-content:start;gap:var(--space-2);border:2px solid var(--color-line);min-height:112px;box-shadow:var(--shadow-small);padding:var(--space-4);background:#fffaf0e6;display:grid}.article-pagination a>span{color:var(--color-accent-dark);font-family:var(--font-pixel);font-size:.75rem}.article-pagination a>strong{font-size:.96rem;line-height:1.55}.article-pagination__next{text-align:right}.article-not-found{align-content:center;place-items:center;gap:var(--space-4);border:2px solid var(--color-line);min-height:540px;box-shadow:var(--shadow-pixel);padding:var(--space-7);text-align:center;background:#fffaf0e6;display:grid}.article-not-found h1{font-size:clamp(2rem,6vw,3.6rem)}@media (hover:hover) and (pointer:fine){.blog-category-nav button:not(.is-active):hover{color:var(--color-ink);background:#eef8ffb3}.blog-search__clear:hover,.blog-empty button:hover,.article-not-found>a:hover{background:var(--color-accent-soft)}.blog-article-row:hover{z-index:1;background:#fffaf0f5;transform:translate(4px);box-shadow:4px 4px #2e34402e}.blog-article-row:hover .blog-article-row__arrow{transform:translate(4px)}.article-toc a:hover,.article-breadcrumbs a:hover{color:var(--color-accent-dark)}.article-code button:hover{background:#ffffff29}.article-pagination a:hover{background:var(--color-panel-cool);transform:translate(-2px,-2px)}}@media (width<=900px){.blog-hero{padding:var(--space-6);grid-template-columns:minmax(0,1fr) 190px}.blog-layout{grid-template-columns:1fr}.blog-sidebar{grid-template-columns:minmax(0,1fr) minmax(180px,.38fr);position:static}.blog-sidebar__section:first-child{grid-row:span 2}.blog-category-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.article-reading-layout{gap:var(--space-5);grid-template-columns:1fr}.article-toc,.article-prose{grid-area:auto/1;position:static}.article-toc__inner{border:2px solid var(--color-line);box-shadow:var(--shadow-small);padding:var(--space-4);background:#eef8ffa3;position:static}.article-toc ol{grid-template-columns:repeat(2,minmax(0,1fr))}.article-source-path{display:none}}@media (width<=620px){.blog-page,.article-page{gap:var(--space-5)}.blog-hero{min-height:auto;padding:var(--space-5);grid-template-columns:1fr}.blog-hero:after{opacity:.28;bottom:22px;right:24px}.blog-hero__copy h1{font-size:2.65rem}.blog-hero__copy>p:not(.route-label){font-size:1rem}.blog-hero__stats div{min-width:92px;padding-inline:var(--space-3)}.blog-ghostie{justify-items:start}.blog-ghostie .ghostie--companion{grid-template-columns:auto minmax(0,1fr)}.blog-ghostie .ghostie-artwork--companion{width:86px}.blog-search{grid-template-columns:28px minmax(0,1fr) auto}.blog-search__hint{display:none}.blog-search input{min-width:0;font-size:1rem}.blog-sidebar{grid-template-columns:1fr}.blog-sidebar__section:first-child{grid-row:auto}.blog-category-nav{grid-template-columns:1fr}.blog-feed__header{flex-direction:column;align-items:start}.blog-article-row{gap:var(--space-3);padding:var(--space-4) var(--space-3);grid-template-columns:minmax(0,1fr) 24px}.blog-article-row time{grid-column:1/-1}.blog-article-row__body{grid-column:1}.blog-article-row__arrow{grid-column:2}.article-header:after,.article-header:before{display:none}.article-header h1{font-size:2.3rem}.article-header__meta{display:grid}.article-header__meta span+span:before{display:none}.article-toc ol{grid-template-columns:1fr}.article-prose__lead,.article-section>p,.article-section>ul{font-size:1rem}.article-section__heading{gap:var(--space-2);grid-template-columns:28px minmax(0,1fr)}.article-code figcaption{flex-direction:column;align-items:start}.article-code button{min-height:36px}.article-code pre{padding:var(--space-4);font-size:.76rem}.article-endnote{grid-template-columns:1fr}.article-endnote__ghostie{justify-self:start}.article-pagination{grid-template-columns:1fr}.article-pagination__next{text-align:left}}
