@layer reset{*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body,h1,h2,h3,p,ul,ol,figure,blockquote{margin:0}ul,ol{padding:0}img,picture,svg{max-width:100%;display:block}button,input,textarea,select{font:inherit}}@layer base{:root{--paper:#f2efe6;--paper-raised:#faf7ee;--paper-deep:#e5dfd0;--ink:#171914;--muted:#67685f;--line:#17191429;--line-strong:#17191452;--accent:#e5542e;--accent-dark:#b83a1c;--forest:#18382d;--forest-light:#295447;--cream:#fbf8ed;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-display:"Iowan Old Style", "Palatino Linotype", "Songti SC", "Noto Serif SC", Georgia, serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--radius-sm:10px;--radius:18px;--radius-lg:30px;--shell:1180px}html{background:var(--paper);color:var(--ink);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.65}body{background:radial-gradient(circle at 92% 4%, #e5542e1a, transparent 26rem), radial-gradient(circle at 0% 38%, #18382d0f, transparent 30rem), var(--paper);min-width:320px}body:before{z-index:1000;pointer-events:none;opacity:.16;content:"";mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");position:fixed;inset:0}::selection{color:var(--cream);background:var(--accent)}a{color:inherit;text-decoration:none}a,button{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.skip-link{z-index:1100;color:var(--cream);background:var(--ink);border-radius:999px;padding:.65rem 1rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}}@layer layout{.shell{width:min(calc(100% - 3rem), var(--shell));margin-inline:auto}.section{padding-block:clamp(4.5rem,9vw,8rem)}.section--tight{padding-block:clamp(3.5rem,7vw,6rem)}.section-header{grid-template-columns:minmax(0,.8fr) minmax(18rem,1.2fr);align-items:end;gap:2rem;margin-bottom:clamp(2rem,5vw,4rem);display:grid}.section-header h2{max-width:14ch;font-family:var(--font-display);letter-spacing:-.045em;font-size:clamp(2.3rem,5vw,4.8rem);font-weight:500;line-height:1.02}.section-header__aside{max-width:38rem;color:var(--muted);justify-self:end}.page-head{padding-block:clamp(4.5rem,9vw,8rem) clamp(2.5rem,5vw,4.5rem)}.page-head h1{max-width:12ch;font-family:var(--font-display);letter-spacing:-.055em;font-size:clamp(3.2rem,8vw,7rem);font-weight:500;line-height:.98}.page-head__lead{max-width:46rem;color:var(--muted);margin-top:1.5rem;font-size:clamp(1rem,1.5vw,1.18rem)}.page-head__meta{color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;flex-wrap:wrap;gap:.7rem 1.4rem;margin-top:2rem;font-size:.76rem;display:flex}}@layer components{.eyebrow{color:var(--accent-dark);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:.65rem;font-size:.73rem;font-weight:700;line-height:1.2;display:inline-flex}.eyebrow:before{content:"";background:currentColor;width:1.7rem;height:1px}.site-header{z-index:100;border-bottom:1px solid var(--line);backdrop-filter:blur(18px)saturate(140%);background:#f2efe6d6;position:sticky;top:0}.site-header__inner{grid-template-columns:1fr auto 1fr;align-items:center;gap:1.5rem;min-height:5rem;display:grid}.brand{align-items:center;gap:.75rem;width:fit-content;display:inline-flex}.brand__mark{width:2.55rem;height:2.55rem;color:var(--cream);background:var(--forest);font-family:var(--font-mono);letter-spacing:-.02em;border-radius:50%;place-items:center;font-size:.68rem;font-weight:700;transition:transform .2s,background-color .2s;display:grid}.brand:hover .brand__mark{background:var(--accent);transform:rotate(-8deg)}.brand__text{flex-direction:column;line-height:1.06;display:flex}.brand__text strong{letter-spacing:.04em;font-size:.92rem;font-weight:700}.brand__text span{color:var(--muted);font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;margin-top:.28rem;font-size:.62rem}.site-nav{border:1px solid var(--line);border-radius:999px;gap:.28rem;padding:.28rem;display:flex}.site-nav a{color:var(--muted);border-radius:999px;padding:.5rem 1.1rem;font-size:.84rem;font-weight:600;transition:color .16s,background-color .16s}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--ink);background:var(--paper-raised)}.header-github{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;justify-self:end;font-size:.72rem;font-weight:700}.header-github span{color:var(--accent);margin-left:.25rem;transition:transform .16s;display:inline-block}.header-github:hover span{transform:translate(2px,-2px)}.hero{grid-template-columns:minmax(0,1.35fr) minmax(20rem,.65fr);align-items:center;gap:clamp(2.5rem,7vw,7rem);min-height:min(820px,100svh - 5rem);padding-block:clamp(4rem,9vw,8rem);display:grid}.hero__copy{position:relative}.hero h1{max-width:8.6ch;font-family:var(--font-display);letter-spacing:-.07em;margin-top:1.3rem;font-size:clamp(4rem,10.5vw,9rem);font-weight:500;line-height:.92}.hero h1 em{color:var(--accent);white-space:nowrap;font-style:italic;position:relative}.hero h1 em:after{content:"";background:currentColor;height:.06em;position:absolute;bottom:.08em;left:.05em;right:0;transform:rotate(-1.5deg)}.hero__lead{color:#44463f;max-width:39rem;margin-top:2rem;font-size:clamp(1rem,1.6vw,1.18rem);line-height:1.85}.hero__actions{flex-wrap:wrap;gap:.75rem;margin-top:2.2rem;display:flex}.button{border:1px solid var(--ink);min-height:3rem;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border-radius:999px;justify-content:center;align-items:center;gap:.7rem;padding:.72rem 1.25rem;font-size:.74rem;font-weight:700;transition:color .18s,background-color .18s,transform .18s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button--solid{color:var(--cream);background:var(--ink)}.button--solid:hover{background:var(--accent);border-color:var(--accent)}.button--ghost:hover{background:var(--paper-raised)}.hero__stats{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));max-width:35rem;margin-top:clamp(2.5rem,5vw,4.2rem);display:grid}.hero__stat{padding:1.15rem 1rem 0 0}.hero__stat strong{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(1.8rem,3vw,2.65rem);font-weight:500;line-height:1;display:block}.hero__stat span{color:var(--muted);margin-top:.4rem;font-size:.76rem;display:block}.hero-console{isolation:isolate;min-height:31rem;color:var(--cream);background:linear-gradient(145deg, #ffffff12, transparent 42%), var(--forest);border-radius:2rem 2rem .6rem;padding:1.5rem;position:relative;overflow:hidden;transform:rotate(1.5deg);box-shadow:0 32px 80px #18382d33}.hero-console:before{z-index:-1;content:"";border:1px solid #fbf8ed29;border-radius:50%;width:20rem;height:20rem;position:absolute;bottom:-7rem;right:-4rem;box-shadow:0 0 0 3.5rem #fbf8ed06,0 0 0 7rem #fbf8ed05}.hero-console:after{content:"";background:var(--accent);width:34%;height:.32rem;position:absolute;top:0;right:0}.console-top{color:#fbf8eda6;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;justify-content:space-between;font-size:.64rem;display:flex}.console-status{color:#c9e2b5;align-items:center;gap:.4rem;display:inline-flex}.console-status:before{content:"";background:#9fd77d;border-radius:50%;width:.45rem;height:.45rem;box-shadow:0 0 0 4px #9fd77d1f}.console-name{font-family:var(--font-display);letter-spacing:-.06em;margin-top:3.5rem;font-size:clamp(3.8rem,6vw,5.6rem);line-height:.88}.console-name em{color:#fbf8ed85;font-family:var(--font-mono);letter-spacing:.17em;text-transform:uppercase;margin-top:.4rem;font-size:.65rem;font-style:normal;font-weight:400;display:inline-block}.console-rule{background:#fbf8ed2e;height:1px;margin-block:2.25rem 1.3rem}.console-stack{flex-wrap:wrap;gap:.45rem;display:flex}.console-stack span{color:#fbf8edcc;font-family:var(--font-mono);border:1px solid #fbf8ed38;border-radius:999px;padding:.34rem .62rem;font-size:.64rem}.console-meta{color:#fbf8ed8c;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-top:1px solid #fbf8ed2e;justify-content:space-between;padding-top:1rem;font-size:.62rem;display:flex;position:absolute;bottom:1.5rem;left:1.5rem;right:1.5rem}.project-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:1rem;display:grid}.project-card{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius);grid-column:span 4;min-height:23rem;transition:transform .22s,box-shadow .22s,border-color .22s}.project-card--featured{grid-column:span 6;min-height:27rem}.project-card:hover{border-color:var(--line-strong);transform:translateY(-5px);box-shadow:0 18px 44px #17191417}.project-card:first-child{color:var(--cream);background:var(--forest);border-color:var(--forest)}.project-card:first-child:hover{box-shadow:0 24px 54px #18382d38}.project-card__link{height:100%;min-height:inherit;flex-direction:column;padding:clamp(1.35rem,3vw,2.1rem);display:flex}.project-card__top,.project-card__footer{justify-content:space-between;align-items:center;display:flex}.project-card__marker,.project-card__source{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;font-size:.67rem}.project-card__marker{color:var(--accent-dark)}.project-card:first-child .project-card__marker,.project-card:first-child .project-card__source{color:#f0a18b}.project-card__arrow{font-size:1.2rem;transition:transform .18s}.project-card:hover .project-card__arrow{transform:translate(3px,-3px)}.project-card__body{margin-block:auto;padding-block:2.3rem}.project-card h3{overflow-wrap:anywhere;letter-spacing:-.045em;font-size:clamp(1.7rem,3vw,2.8rem);font-weight:600;line-height:1.05}.project-card p{max-width:34rem;color:var(--muted);margin-top:.9rem;font-size:.91rem;line-height:1.75}.project-card:first-child p{color:#fbf8edad}.tag-list{flex-wrap:wrap;gap:.35rem;list-style:none;display:flex}.tag-list li{border:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.03em;border-radius:999px;padding:.22rem .52rem;font-size:.59rem}.project-card:first-child .tag-list li{border-color:#fbf8ed38}.project-card__source{color:var(--muted)}.writing-list{border-top:1px solid var(--line)}.post-row{border-bottom:1px solid var(--line);grid-template-columns:8.5rem minmax(0,1fr) 2rem;align-items:center;gap:1.5rem;min-height:5.2rem;transition:background-color .16s,padding .16s;display:grid}.post-row:hover{background:#faf7eea3;padding-inline:.7rem}.post-row time{color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;font-size:.68rem}.post-row__content{align-items:center;gap:1rem;min-width:0;display:flex}.post-row__content a{text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.95rem,1.4vw,1.1rem);font-weight:600;overflow:hidden}.post-row__content span{color:var(--accent-dark);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;flex:none;font-size:.62rem}.post-row__arrow{color:var(--muted);justify-self:end;transition:color .16s,transform .16s}.post-row:hover .post-row__arrow{color:var(--accent);transform:translate(2px,-2px)}.section-link{border-bottom:1px solid var(--ink);font-family:var(--font-mono);letter-spacing:.07em;text-transform:uppercase;align-items:center;gap:.6rem;margin-top:2rem;padding-bottom:.25rem;font-size:.71rem;font-weight:700;display:inline-flex}.section-link:hover{color:var(--accent-dark);border-color:var(--accent)}.about-grid{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start;gap:clamp(2rem,7vw,7rem);display:grid}.about-number{color:var(--accent);font-family:var(--font-display);letter-spacing:-.1em;font-size:clamp(8rem,20vw,17rem);font-weight:500;line-height:.72}.about-number span{color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin-top:1.5rem;font-size:.7rem;font-weight:400;display:block}.about-copy{max-width:40rem}.about-copy h2{font-family:var(--font-display);letter-spacing:-.045em;font-size:clamp(2rem,4.8vw,4rem);font-weight:500;line-height:1.08}.about-copy p{color:var(--muted);margin-top:1.3rem;font-size:.98rem;line-height:1.9}.skill-grid{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.5rem;margin-top:2rem;display:grid}.skill-grid div{border-bottom:1px solid var(--line);font-family:var(--font-mono);justify-content:space-between;gap:1rem;padding-block:.85rem;font-size:.69rem;display:flex}.skill-grid span:last-child{color:var(--muted);text-align:right}.contact{color:var(--cream);background:var(--accent);border-radius:var(--radius-lg);padding:clamp(2.1rem,6vw,5rem);position:relative;overflow:hidden}.contact:after{content:"";border:1px solid #fbf8ed40;border-radius:50%;width:26rem;height:26rem;position:absolute;top:-9rem;right:-7rem;box-shadow:0 0 0 4rem #fbf8ed0b,0 0 0 8rem #fbf8ed09}.contact__inner{z-index:1;justify-content:space-between;align-items:end;gap:2rem;display:flex;position:relative}.contact h2{max-width:12ch;font-family:var(--font-display);letter-spacing:-.055em;margin-top:1.2rem;font-size:clamp(2.8rem,6vw,6rem);font-weight:500;line-height:.95}.contact .eyebrow{color:#fbf8edbf}.contact__links{flex-direction:column;align-items:flex-start;gap:.7rem;min-width:13rem;padding-bottom:.5rem;display:flex}.contact__links a{width:100%;font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid #fbf8ed6b;justify-content:space-between;padding-bottom:.45rem;font-size:.74rem;font-weight:700;display:flex}.terms{flex-wrap:wrap;gap:.5rem;margin-block:2rem 3rem;display:flex}.terms a{border:1px solid var(--line);font-family:var(--font-mono);background:#faf7ee6b;border-radius:999px;align-items:center;gap:.5rem;padding:.42rem .75rem;font-size:.67rem;transition:color .16s,border-color .16s,background-color .16s;display:inline-flex}.terms a:hover{color:var(--cream);background:var(--forest);border-color:var(--forest)}.terms a span{color:var(--muted);font-size:.59rem}.terms a:hover span{color:#fbf8ed94}.year-group{grid-template-columns:8rem minmax(0,1fr);gap:1rem;display:grid}.year-group+.year-group{margin-top:2rem}.year-group>h2{height:fit-content;color:var(--accent-dark);font-family:var(--font-display);letter-spacing:-.04em;font-size:2rem;font-weight:500;line-height:1;position:sticky;top:6.5rem}.year-group .writing-list{border-top:0}.year-group .post-row{grid-template-columns:7rem minmax(0,1fr) 2rem}.post-header{max-width:58rem;padding-block:clamp(3.5rem,8vw,7rem) clamp(2rem,5vw,3.5rem)}.post-header__back{color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:.5rem;margin-bottom:2rem;font-size:.68rem;display:inline-flex}.post-header__back:hover{color:var(--accent-dark)}.post-header h1{font-family:var(--font-display);letter-spacing:-.05em;font-size:clamp(2.6rem,6vw,5.5rem);font-weight:500;line-height:1.03}.post-header__subtitle{color:var(--muted);font-family:var(--font-display);margin-top:1rem;font-size:clamp(1.25rem,2.5vw,1.8rem);font-style:italic;line-height:1.5}.post-header__meta{color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;flex-wrap:wrap;align-items:center;gap:.65rem 1rem;margin-top:2rem;font-size:.68rem;display:flex}.post-header__meta span+span:before{color:var(--line-strong);content:"/";margin-right:1rem}.post-header__terms{flex-wrap:wrap;gap:.4rem;margin-top:1.2rem;display:flex}.post-header__terms a{border:1px solid var(--line);color:var(--accent-dark);font-family:var(--font-mono);border-radius:999px;padding:.26rem .58rem;font-size:.61rem}.prose{color:#2b2d27;max-width:49rem;font-size:1.02rem;line-height:1.95}.prose>*+*{margin-top:1.25em}.prose h1,.prose h2,.prose h3,.prose h4{color:var(--ink);font-family:var(--font-display);letter-spacing:-.025em;scroll-margin-top:7rem;font-weight:600;line-height:1.25}.prose h1{margin-top:2em;font-size:2.4rem}.prose h2{border-top:1px solid var(--line);margin-top:2.2em;padding-top:.7em;font-size:clamp(1.6rem,3vw,2.15rem)}.prose h3{margin-top:1.8em;font-size:1.38rem}.prose h4{margin-top:1.6em;font-size:1.12rem}.prose p,.prose li{color:#3e4038}.prose strong{color:var(--ink);font-weight:700}.prose a{color:var(--accent-dark);text-underline-offset:.2em;text-decoration:underline #b83a1c59}.prose a:hover{text-decoration-color:currentColor}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.35em}.prose blockquote{border-left:3px solid var(--accent);color:var(--muted);padding:.2rem 0 .2rem 1.3rem}.prose blockquote p{color:inherit}.prose code:not(pre code){color:var(--accent-dark);font-family:var(--font-mono);overflow-wrap:anywhere;background:#e5542e14;border:1px solid #e5542e1f;border-radius:5px;padding:.15em .38em;font-size:.86em}.prose pre{tab-size:2;border:1px solid #ffffff14;border-radius:12px;max-width:100%;padding:1.2rem 1.35rem;font-size:.83rem;line-height:1.72;overflow-x:auto;box-shadow:0 14px 34px #1719141f}.prose pre code{font-family:var(--font-mono)}.prose img{border:1px solid var(--line);border-radius:12px;height:auto;box-shadow:0 16px 40px #17191417}.prose figure{margin-block:2rem}.prose figcaption{color:var(--muted);text-align:center;margin-top:.65rem;font-size:.79rem}.prose table{border-collapse:collapse;width:100%;font-size:.88rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:.65rem .8rem}.prose th{background:var(--paper-deep);font-weight:700}.prose hr{border:0;border-top:1px solid var(--line);margin-block:2.5rem}.post-footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:1rem;max-width:49rem;margin-top:4rem;padding-top:1.5rem;display:flex}.post-footer a{max-width:45%;color:var(--muted);font-size:.85rem}.post-footer a:hover{color:var(--accent-dark)}.post-footer a:last-child{text-align:right}.empty-state{border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--muted);text-align:center;padding:3rem}.site-footer{color:#fbf8edb3;background:var(--ink);margin-top:clamp(4rem,9vw,8rem);padding-block:2.5rem}.site-footer__inner{grid-template-columns:1fr auto;align-items:end;gap:1.4rem 2rem;display:grid}.site-footer__name{color:var(--cream);font-family:var(--font-display);font-size:1.3rem}.site-footer__note{margin-top:.3rem;font-size:.8rem}.site-footer__links{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;gap:1.2rem;font-size:.68rem;display:flex}.site-footer__links a:hover{color:var(--cream)}.site-footer__copy{font-family:var(--font-mono);border-top:1px solid #fbf8ed1f;grid-column:1/-1;padding-top:1.3rem;font-size:.62rem}}@layer utilities{.muted{color:var(--muted)}.not-found{text-align:center;place-items:center;min-height:62vh;display:grid}.not-found h1{font-family:var(--font-display);letter-spacing:-.08em;font-size:clamp(5rem,18vw,13rem);font-weight:500;line-height:.8}.not-found p{color:var(--muted);margin-top:1.5rem}@media (width<=900px){.hero{grid-template-columns:1fr;min-height:auto;padding-block:4.5rem 5.5rem}.hero-console{justify-self:end;width:min(100%,31rem);min-height:28rem;transform:rotate(1deg)}.section-header{grid-template-columns:1fr}.section-header__aside{justify-self:start}.project-card,.project-card--featured{grid-column:span 6}.about-grid{grid-template-columns:1fr}.about-number{font-size:11rem}.contact__inner{flex-direction:column;align-items:start}}@media (width<=680px){.shell{width:min(calc(100% - 2rem), var(--shell))}.site-header__inner{grid-template-columns:1fr auto;gap:.75rem;min-height:4.5rem}.site-nav{order:3;grid-area:2/1/auto/-1;justify-content:space-between;width:100%;margin-bottom:.65rem}.site-nav a{text-align:center;flex:1;padding-inline:.7rem}.header-github{grid-area:1/2}.brand__text span{display:none}.hero h1{font-size:clamp(3.6rem,20vw,6.2rem)}.hero__stats{gap:0}.hero__stat{padding-right:.5rem}.hero__stat span{font-size:.66rem}.hero-console{border-radius:1.5rem 1.5rem .4rem;min-height:25rem}.console-name{margin-top:2.8rem}.project-card,.project-card--featured{grid-column:1/-1;min-height:21rem}.post-row,.year-group .post-row{grid-template-columns:1fr 1.5rem;gap:.45rem .75rem;padding-block:1rem}.post-row time{grid-column:1;font-size:.62rem}.post-row__content{flex-direction:column;grid-column:1;align-items:flex-start;gap:.25rem}.post-row__content a{white-space:normal;overflow:visible}.post-row__arrow{grid-area:1/2/span 2}.year-group{grid-template-columns:1fr}.year-group>h2{border-bottom:1px solid var(--line);padding-bottom:.7rem;position:static}.skill-grid{grid-template-columns:1fr}.contact{border-radius:20px}.post-footer a{flex:100%;max-width:100%}.post-footer a:last-child{text-align:left}.prose{font-size:.98rem}.site-footer__inner{grid-template-columns:1fr}.site-footer__copy{grid-column:1}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}
