:root{--teal:#e3a79e;--primary:#b3281f;--primary-deep:#841e17;--soft:#f0c9c3;--tint:#f7e4e0;--ink:#1b1b1b;--paper:#fbf6ea;--card:#fffdf8;--white:#fff;--text:#1a1a1a;--muted:#5a5a5a;--line:#2a2a2a;--accent:#9c2b22;--border:#e4dcc8;--cell0:#e4ddc8;--cell1:#e8998d;--cell2:#d4493a;--cell3:#b3261b;--cell4:#ff1a0a;--font-display:"Playfair Display", Georgia, serif;--font-pixel:"Press Start 2P", "Courier New", monospace;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--header-h:3.25rem;--page-w:min(90vw, 82rem)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#0a0a0b;--card:#131315;--white:#f2f2f4;--tint:#1d1d20;--soft:#2a0f0d;--text:#f2f2f4;--muted:#9a9aa2;--line:#4a4a52;--primary:#d9291c;--primary-deep:#a81d13;--accent:#ff3b2e;--border:#232327;--cell0:#1d1d20;--cell1:#3d100c;--cell2:#7a1a12;--cell3:#c4231a;--cell4:#ff1a0a}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--header-h);font-size:clamp(16px,.35vw + 10.4px,22px)}body{font-family:var(--font-body);color:var(--text);background:var(--paper);margin:0;line-height:1.55;overflow-x:clip}a{color:inherit}::selection{background:var(--tint);color:var(--ink)}:focus-visible{outline:3px solid var(--primary);outline-offset:3px}.tag{text-align:center;background:var(--ink);color:#f0fbfc;font-family:var(--font-pixel);letter-spacing:0;border-radius:0;justify-content:center;align-items:center;margin:3px;padding:.72rem .8rem .6rem;font-size:.6rem;font-weight:400;line-height:1;text-decoration:none;transition:background .2s,color .2s;display:inline-flex}a.tag:hover,a.tag.active{background:var(--primary);color:#fff}:root[data-theme=dark] .tag{color:#f2f2f4;background:#232327}:root[data-theme=dark] ::selection{background:var(--primary);color:#fff}:root[data-theme=dark] a.tag:hover,:root[data-theme=dark] a.tag.active{background:var(--primary);color:#fff}.site-header{z-index:50;height:var(--header-h);background:var(--paper);border-bottom:1px solid var(--border);position:sticky;top:0}.header-inner{width:var(--page-w);justify-content:space-between;align-items:center;gap:1rem;height:100%;margin:0 auto;display:flex}.site-header nav{flex-wrap:wrap;align-items:center;display:flex}.site-header button.tag{cursor:pointer;font:inherit;font-family:var(--font-pixel);border:0;font-size:.5rem;font-weight:400}.site-header button.tag:hover{background:var(--primary);color:#fff}.site-header .tag{margin:2px;padding:.55rem .65rem .45rem;font-size:.5rem}.tag-logo,.site-header .tag-logo{padding:.62rem .8rem .5rem;font-size:.62rem}.theme-toggle,.site-header .theme-toggle{padding:.4rem .5rem}.theme-toggle svg{width:1.4em;height:1.4em}.theme-toggle .sun,:root[data-theme=dark] .theme-toggle .moon{display:none}:root[data-theme=dark] .theme-toggle .sun{display:block}.tag-resume{background:var(--soft);color:var(--ink)}:root[data-theme=dark] .tag-resume{color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent);background:0 0}.tag-resume svg{flex:none;width:1.1em;height:1.1em;margin-right:.6em}.hero{min-height:calc(100svh - var(--header-h));align-items:center;padding:1.5rem 0 3rem;display:flex;position:relative}.hero-grid{width:var(--page-w);grid-template-columns:1.15fr 1fr;align-items:center;gap:3rem;margin:0 auto;display:grid;position:relative}.hero-title{--name-fs:clamp(2rem, 5.4vw, 5rem);font-family:var(--font-pixel);color:var(--text);margin:0;font-weight:400;line-height:1.3}.hero-title .line{min-height:1.3em;font-size:clamp(1.4rem,3.4vw,3.2rem);display:block}.hero-title .name{color:var(--primary);font-size:var(--name-fs)}:root[data-theme=dark] .hero-title .name{color:var(--accent)}.role{white-space:pre-line;max-width:26rem;min-height:1.6em;font-family:var(--font-pixel);color:var(--muted);margin:1.2rem 0 1.8rem;font-size:clamp(.65rem,1.1vw,1rem);font-weight:400;line-height:1.5}.cursor{vertical-align:-.12em;background:currentColor;width:.55em;height:1em;margin-left:.12em;animation:1s step-end infinite blink;display:inline-block}.hero-title .cursor{background:var(--primary)}@keyframes blink{50%{opacity:0}}.pixel-glyph{--px:4px;width:var(--px);height:var(--px);box-shadow:calc(var(--px) * 2) 0 0 0 var(--primary), var(--px) var(--px) 0 0 var(--primary), calc(var(--px) * 3) var(--px) 0 0 var(--primary), 0 calc(var(--px) * 2) 0 0 var(--primary), var(--px) calc(var(--px) * 2) 0 0 var(--primary), calc(var(--px) * 2) calc(var(--px) * 2) 0 0 var(--primary), calc(var(--px) * 3) calc(var(--px) * 2) 0 0 var(--primary), calc(var(--px) * 4) calc(var(--px) * 2) 0 0 var(--primary), var(--px) calc(var(--px) * 3) 0 0 var(--primary), calc(var(--px) * 3) calc(var(--px) * 3) 0 0 var(--primary), calc(var(--px) * 2) calc(var(--px) * 4) 0 0 var(--primary);background:0 0;animation:2.4s steps(2,end) infinite twinkle;position:absolute}:root[data-theme=dark] .pixel-glyph{--glyph-color:var(--accent);box-shadow:calc(var(--px) * 2) 0 0 0 var(--accent), var(--px) var(--px) 0 0 var(--accent), calc(var(--px) * 3) var(--px) 0 0 var(--accent), 0 calc(var(--px) * 2) 0 0 var(--accent), var(--px) calc(var(--px) * 2) 0 0 var(--accent), calc(var(--px) * 2) calc(var(--px) * 2) 0 0 var(--accent), calc(var(--px) * 3) calc(var(--px) * 2) 0 0 var(--accent), calc(var(--px) * 4) calc(var(--px) * 2) 0 0 var(--accent), var(--px) calc(var(--px) * 3) 0 0 var(--accent), calc(var(--px) * 3) calc(var(--px) * 3) 0 0 var(--accent), calc(var(--px) * 2) calc(var(--px) * 4) 0 0 var(--accent)}.glyph-1{--px:5px;top:-1.1rem;right:.5rem}.glyph-2{--px:4px;animation-delay:.9s;bottom:-.8rem;left:-.2rem}@keyframes twinkle{50%{opacity:.25}}.box{--frame:var(--ink);background:var(--card);box-shadow:0 -4px 0 0 var(--frame), 0 4px 0 0 var(--frame), -4px 0 0 0 var(--frame), 4px 0 0 0 var(--frame);border-radius:0;margin:4px;padding:1.5rem 1.6rem;position:relative}:root[data-theme=dark] .box{--frame:var(--line)}.about-note{max-width:36rem}.about-note .tag{margin:0 0 .9rem}.about-note p{margin:0 0 .7rem;font-size:1rem;line-height:1.65}.about-note p:last-child{margin-bottom:0}.about-note strong,.summary strong{color:var(--accent)}.hero-media{grid-template-columns:1fr;justify-self:center;gap:1.2rem;width:min(100%,25rem);display:grid;position:relative}.window{--frame:var(--ink);background:var(--card);width:min(100%,19rem);box-shadow:0 -4px 0 0 var(--frame), 0 4px 0 0 var(--frame), -4px 0 0 0 var(--frame), 4px 0 0 0 var(--frame);margin:4px auto}:root[data-theme=dark] .window{--frame:var(--line)}.window-bar{background:var(--primary);color:#fff;font-family:var(--font-pixel);letter-spacing:0;justify-content:space-between;align-items:center;gap:.6rem;padding:.6rem .7rem .5rem;font-size:.5rem;line-height:1;display:flex}.window-bar .dots{gap:4px;display:inline-flex}.window-bar .dots b{background:#fff;width:6px;height:6px}.window-body{padding:.6rem}.frame-pic{aspect-ratio:1;background:var(--teal);box-shadow:0 0 0 2px var(--frame);overflow:hidden}.frame-pic img{object-fit:cover;width:100%;height:100%;display:block}.pixel-wrap{width:100%;height:100%;position:relative}.pixel-wrap img{transform-origin:50% 53.3%;position:absolute;inset:0;transform:scale(1.36)}.pixel-wrap:not(.done) img{visibility:hidden}.pixel-wrap canvas{width:100%;height:100%;image-rendering:pixelated;position:absolute;inset:0}.pixel-wrap.done canvas{display:none}.commit-card{color:var(--text);text-decoration:none;display:block}.commit-head{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.6rem;display:flex}.commit-card .tag{margin:0;font-size:.5rem}.commit-total{color:var(--accent);white-space:nowrap;min-height:1.2em;font-size:.8rem;font-weight:600}.commit-grid{grid-template-rows:repeat(7,auto);grid-template-columns:max-content;grid-auto-columns:1fr;grid-auto-flow:column;gap:3px;display:grid}.commit-grid .day-label{font-family:var(--font-pixel);color:var(--muted);align-self:center;padding-right:.35rem;font-size:.38rem;line-height:1}.commit-grid .cell:not(.blank){transition:transform .12s,box-shadow .12s}.commit-grid .cell:not(.blank):hover{z-index:1;box-shadow:0 0 0 2px var(--primary);position:relative;transform:scale(1.35)}.commit-grid .cell{aspect-ratio:1;background:var(--cell0);box-shadow:inset 0 0 0 1px var(--border);border-radius:22%}.commit-grid .cell.blank{background:0 0}.commit-grid .cell.l1{background:var(--cell1)}.commit-grid .cell.l2{background:var(--cell2)}.commit-grid .cell.l3{background:var(--cell3)}.commit-grid .cell.l4{background:var(--cell4)}.commit-card.loading .cell{animation:1.4s ease-in-out infinite cellpulse}@keyframes cellpulse{0%,to{opacity:.5}50%{opacity:1}}.page{width:var(--page-w);min-height:calc(100svh - var(--header-h));margin:0 auto;padding:3rem 0}.page-title .name{font-size:clamp(1.4rem,3.4vw,3.2rem)}.tag-cta{background:var(--primary);color:#fff;margin:0;padding:.95rem 1.1rem .8rem;font-size:.65rem}:root[data-theme=dark] .tag-cta{background:var(--primary);color:#fff}a.tag.tag-cta:hover{background:var(--primary-deep)}.section{border-top:1px solid var(--border);padding:4rem 0}.section-inner{width:var(--page-w);margin:0 auto}.section-head{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem;display:flex}.section-title{font-family:var(--font-pixel);color:var(--text);margin:0;font-size:clamp(1.1rem,2.4vw,2rem);font-weight:400;line-height:1.3}.tag-archive{margin:0}.entry-grid{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:2rem;display:grid}.entry{margin:4px}.entry-title{font-family:var(--font-pixel);color:var(--primary);margin:0 0 .4rem;font-size:.8rem;font-weight:400;line-height:1.5}:root[data-theme=dark] .entry-title{color:var(--accent)}.entry-title a{text-decoration:none}.entry-title a:hover{text-decoration:underline}.entry-meta{color:var(--muted);margin:0 0 .8rem;font-size:.85rem}.entry-summary{margin:0 0 1rem;line-height:1.65}.entry-tech{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.entry-tech li{background:var(--tint);border:1px solid var(--border);padding:.25rem .55rem;font-size:.75rem}.skill-groups{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1.8rem 2rem;display:grid}.skill-label{font-family:var(--font-pixel);color:var(--muted);margin:0 0 .7rem;font-size:.6rem;font-weight:400;line-height:1.5}.contact{background:var(--card);border-top:1px solid var(--border);padding:1.2rem 0}.contact-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem 1.5rem;display:flex}.contact .section-title{font-size:clamp(.8rem,1.4vw,1.1rem)}.contact-links{flex-wrap:wrap;display:flex}.contact-links .tag{margin:2px 4px 2px 0;padding:.55rem .65rem .45rem;font-size:.5rem}.contact-copy{color:var(--muted);margin:0;font-size:.75rem}.reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(1.5rem)}.reveal.in{opacity:1;transform:none}.reveal-stagger>.reveal:nth-child(2){transition-delay:.12s}.reveal-stagger>.reveal:nth-child(3){transition-delay:.24s}.hero-media.reveal{transition-delay:.15s}html{scrollbar-width:auto;scrollbar-color:var(--primary) var(--tint);overflow-y:scroll}::-webkit-scrollbar{width:14px}::-webkit-scrollbar-track{background:var(--tint);border-left:2px solid var(--line)}::-webkit-scrollbar-thumb{background:var(--primary);border:3px solid var(--tint);border-radius:999px;min-height:3rem}::-webkit-scrollbar-thumb:hover{background:var(--primary-deep)}@media (width<=900px){.hero-grid{grid-template-columns:1fr;gap:2rem}}@media (width<=520px){:root{--header-h:4.4rem}.tag-logo{display:none}.header-inner{flex-wrap:wrap;place-content:center}.site-header nav{justify-content:center}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transition:none;transform:none}.commit-card.loading .cell,.cursor,.pixel-glyph{animation:none}}.section-title{text-shadow:3px 3px 0 color-mix(in srgb, var(--primary) 35%, transparent);clip-path:inset(-6px 100% -6px -6px);display:inline-block;position:relative}.section-title:after{content:"";vertical-align:-.1em;background:var(--primary);width:.5em;height:.9em;margin-left:.25em;animation:1s step-end infinite blink;display:inline-block}:root[data-theme=dark] .section-title:after{background:var(--accent)}.in .section-title,.in.section-title{animation:1s steps(14,end) .15s forwards title-type}@keyframes title-type{to{clip-path:inset(-6px -12px -6px -6px)}}@media (prefers-reduced-motion:reduce){.section-title{clip-path:none}.in .section-title{animation:none}}.section-title:after{opacity:0;animation:none}.in .section-title:after{animation:1s step-end 1.15s 3 cursor-life}@keyframes cursor-life{0%,49%{opacity:1}50%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.in .section-title:after{animation:none}}.hero-title .line{text-shadow:3px 3px 0 color-mix(in srgb, var(--primary) 35%, transparent)}.tag-cta{gap:.7em}.tag-cta span{display:inline-block}.tag-cta{animation:1.1s step-end infinite press-start}.tag-cta:hover,.tag-cta:focus-visible{animation:none}@keyframes press-start{50%{background:var(--card);color:var(--primary);box-shadow:inset 0 0 0 3px var(--primary)}}@media (prefers-reduced-motion:reduce){.tag-cta{animation:none}}.commit-pop{z-index:5;pointer-events:none;white-space:nowrap;background:var(--ink);color:#f2f2f4;box-shadow:0 0 0 2px var(--primary);gap:.15rem;padding:.45rem .6rem;font-size:.7rem;line-height:1.2;display:grid;position:absolute;transform:translate(-50%,calc(-100% - .55rem))}.commit-pop.left{transform:translate(-.6rem,calc(-100% - .55rem))}.commit-pop.right{transform:translate(calc(.6rem - 100%),calc(-100% - .55rem))}.commit-pop b{font-family:var(--font-pixel);color:#ff6b5e;font-size:.55rem;font-weight:400}:root[data-theme=dark] .commit-pop{color:#0a0a0b;background:#f2f2f4}:root[data-theme=dark] .commit-pop b{color:var(--primary)}.hero-actions{flex-wrap:wrap;align-items:center;gap:.9rem 1.2rem;margin:0 0 1.8rem;display:flex}.socials{align-items:center;display:flex;position:relative}.tag-click,.social-tag,:root[data-theme=dark] .tag.tag-click,:root[data-theme=dark] .tag.social-tag{background:var(--primary);color:#fff}a.tag.social-tag:hover,:root[data-theme=dark] a.tag.social-tag:hover,.tag-click:hover,:root[data-theme=dark] .tag.tag-click:hover{color:var(--primary);box-shadow:inset 0 0 0 3px var(--primary);background:#fff}.tag-click{cursor:pointer;border:0;margin:0;padding:.6rem .55rem .5rem;animation:1.1s step-end infinite blink-icon;position:relative}.tag-click .bell{font-size:1.3rem;line-height:1;display:block}.tag-click:hover{animation:none}.badge{min-width:1.15rem;color:var(--primary);font-family:var(--font-pixel);text-align:center;box-shadow:0 0 0 2px var(--primary);background:#fff;padding:.3rem .25rem .2rem;font-size:.5rem;line-height:1;position:absolute;top:-.45rem;right:-.45rem}@keyframes blink-icon{50%{background:var(--card);color:var(--primary);box-shadow:inset 0 0 0 3px var(--primary)}}.social-row{gap:.5rem;display:flex}.social-tag{animation:.5s steps(5,end) both pop-out;animation-delay:calc(var(--i) * .12s + .1s);margin:0;padding:.55rem}.social-tag svg{width:1.3rem;height:1.3rem;display:block}@keyframes pop-out{0%{opacity:0;transform:translate(-1.2rem)scale(.2)}70%{opacity:1;transform:translate(.4rem)scale(1.15)}to{opacity:1;transform:none}}.sparks{pointer-events:none;width:0;height:0;position:absolute;top:50%;left:1.5rem}.sparks i{background:var(--primary);width:6px;height:6px;margin:-3px;animation:.7s steps(7,end) forwards spark;position:absolute}.sparks i:nth-child(3n){box-shadow:0 0 0 1px var(--primary);background:#fff}@keyframes spark{to{transform:translate(var(--dx), var(--dy));opacity:0}}@media (prefers-reduced-motion:reduce){.tag-click,.social-tag,.sparks i{animation:none}.sparks{display:none}}.entry-stats{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.2rem;margin:0 0 1rem;padding:0;font-size:.8rem;list-style:none;display:flex}.entry-stats b{font-family:var(--font-pixel);color:var(--accent);margin-right:.3em;font-size:.65rem;font-weight:400}.entry-tags-label{font-family:var(--font-pixel);color:var(--muted);margin:0 0 .6rem;font-size:.55rem;line-height:1.5}
