:root{color-scheme:dark;--site-bg:light-dark(#e5e5e5,#101011);--site-bg-alt:light-dark(#efefef,#242526);--border-color:light-dark(#c0c0c0,#6d6d6d);--divider-color:color-mix(in srgb,var(--border-color) 40%,transparent);--text-color:light-dark(#444,#fff);--text-muted:light-dark(#555,#999);--interactive:light-dark(#b91c1c,#ff4949);--logo-pixel:light-dark(#8a8a84,#95958f);--logo-flips:light-dark(#444,#d3d4d1);--focus-ring:var(--text-muted);--surface-hover:light-dark(#f8f8f8,color-mix(in srgb,var(--site-bg-alt) 94%,var(--text-color)));--radius-2:0.5rem;--radius-pill:999rem;--space-50:0.25rem;--space-100:0.5rem;--space-200:0.75rem;--space-300:1rem;--space-400:1.25rem;--space-500:1.5rem;--space-600:2rem;--space-700:2.5rem;--space-800:3rem;--text-100:0.75rem;--text-200:0.875rem;--text-300:1rem;--text-400:1.125rem;--text-500:1.5rem;--text-section:clamp(1.75rem,3.5vw,2.25rem);--leading-body:1.7;--leading-card:1.55;--leading-title:1.35;--text-h2:clamp(1.25rem,1rem + 1vw,1.5rem);--weight-400:400;--weight-500:500;--weight-600:600;--weight-700:700;--tracking-tight:-0.02em;--tracking-normal:0.02em;--shadow:0 3px 2px rgba(0,0,0,0.3);--border-1:1px;--border-3:3px;--avatar:2.75rem;--transition-fast:0.15s ease;--header-h:4.5rem;@media (prefers-color-scheme:light){color-scheme:light}}@font-face{font-family:"Pixelflips Sans";src:url("assets/fonts/pixelflips-sans.woff2") format("woff2");font-weight:400 700;font-stretch:100% 112.5%;font-display:optional}@font-face{font-family:"Pixelflips Sans";src:url("assets/fonts/pixelflips-sans-italic.woff2") format("woff2");font-weight:400 700;font-stretch:100% 112.5%;font-style:italic;font-display:optional}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;display:flex;flex-direction:column;min-height:100dvh;background:var(--site-bg);color:var(--text-color);font:var(--weight-400) 1rem / var(--leading-body) "Pixelflips Sans",system-ui,sans-serif}a{color:var(--interactive);font-weight:var(--weight-500);&:hover{text-decoration:none}}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}[id]{scroll-margin-top:calc(var(--header-h) + var(--space-300))}h1,h2{color:var(--text-color);font-weight:var(--weight-700);font-stretch:112.5%;letter-spacing:var(--tracking-tight);line-height:1.2}.wrap{width:100%;max-width:68rem;margin:0 auto;padding:0 16px}.page-grid{flex-grow:1;display:grid;grid-template-columns:minmax(0,1fr);align-items:start;@media (min-width:60rem){grid-template-columns:minmax(0,1fr) 17rem;column-gap:var(--space-800)}}.post,.release,.article,.release-rows,.article-rows{background:var(--site-bg-alt);border-radius:var(--radius-2);box-shadow:var(--shadow)}.versions li,.release-rows li,.article-rows li{& + li{border-top:var(--border-1) solid var(--divider-color)}}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}::view-transition-old(root),::view-transition-new(root){animation-duration:0.2s}}.site-header{view-transition-name:site-header;position:sticky;top:0;z-index:10;border-top:var(--border-3) solid var(--interactive);border-bottom:var(--border-1) solid var(--border-color);background:color-mix(in srgb,var(--site-bg) 80%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);.wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-100) var(--space-300);padding-block:var(--space-200)}@media (min-width:60rem){height:var(--header-h);.wrap{height:100%;padding-block:0}}ul{display:flex;gap:var(--space-50);margin:0;padding:0;list-style:none}ul a{display:block;padding:var(--space-100) var(--space-200);border-radius:var(--radius-2);color:var(--text-color);text-decoration:none;transition:background var(--transition-fast);&:hover,&[aria-current="page"]{background:var(--site-bg-alt)}}.nav-menu{display:none}@media (max-width:47.99rem){.nav-wide{display:none}.nav-menu{display:block}}.nav-menu nav{position:absolute;top:calc(100% + var(--border-1));left:0;right:0;padding:var(--space-50) 16px var(--space-300);background:var(--site-bg);border-bottom:var(--border-1) solid var(--border-color);ul{display:block}li{padding-block:var(--space-50)}li + li{border-top:var(--border-1) solid var(--divider-color)}a{padding:var(--space-200) var(--space-300);font-weight:var(--weight-500)}}}.nav-toggle{position:relative;display:block;width:2.75rem;height:2.75rem;border-radius:50%;list-style:none;cursor:pointer;background:var(--site-bg-alt);color:var(--text-color);transition:background var(--transition-fast);&::-webkit-details-marker{display:none}&:hover{background:var(--surface-hover)}span{position:absolute;top:50%;left:50%;width:1.125rem;height:2px;translate:-50% -50%;border-radius:0.125rem;background:currentColor;&:first-child{transform:translateY(-0.375rem)}&:nth-child(3){transform:translateY(0.375rem)}}}.nav-menu[open] .nav-toggle span{&:first-child{transform:rotate(45deg)}&:nth-child(2){opacity:0}&:nth-child(3){transform:rotate(-45deg)}}@media (prefers-reduced-motion:no-preference){.nav-toggle span{transition:transform 0.3s ease-in-out,opacity 0.3s ease-in-out}.nav-menu[open] nav{animation:menu-in 0.3s ease-in-out}}@keyframes menu-in{from{opacity:0;translate:0 calc(-1 * var(--space-100))}}.site-name{display:inline-flex;align-items:center;gap:var(--space-100);color:var(--text-color);font-weight:var(--weight-700);font-stretch:112.5%;letter-spacing:var(--tracking-tight);font-size:var(--text-400);text-decoration:none}.site-mark{flex:none;height:1.625rem;width:auto;.mark-p{fill:var(--logo-pixel)}.mark-f{fill:var(--logo-flips)}}.intro{padding-top:var(--space-700);h1{margin:0;font-size:var(--text-section)}p{margin:var(--space-200) 0 0;max-width:36em;color:var(--text-muted);line-height:var(--leading-card)}@media (max-width:30rem){padding-top:var(--space-600)}}.sidebar{margin-top:var(--space-700);font-size:var(--text-200);color:var(--text-muted);@media (max-width:30rem){margin-top:var(--space-600)}h2{margin:0 0 var(--space-100);font-size:var(--text-300)}* + h2{margin-top:var(--space-500)}strong{color:var(--text-color);font-weight:var(--weight-600)}p{margin:var(--space-200) 0 0}}.sidebar-box{padding:var(--space-300);background:var(--site-bg-alt);border-radius:var(--radius-2)}.suggest-cta{display:grid;justify-items:start;gap:var(--space-100);margin-top:var(--space-200);padding:var(--space-400) var(--space-300);border:var(--border-1) solid color-mix(in srgb,var(--interactive) 35%,transparent);border-radius:var(--radius-2);background:radial-gradient(120% 90% at 100% 0%,color-mix(in srgb,var(--interactive) 22%,transparent),transparent 65%),var(--site-bg-alt);color:var(--text-muted);font-weight:var(--weight-400);text-decoration:none;transition:border-color var(--transition-fast);&:hover{border-color:var(--interactive)}strong{color:var(--text-color);font-size:var(--text-400);font-weight:var(--weight-700);font-stretch:112.5%;letter-spacing:var(--tracking-tight);line-height:1.2}}.works{margin:var(--space-200) 0 0;padding-left:var(--space-400);li + li{margin-top:var(--space-50)}}.suggest-cta-icon{display:grid;place-items:center;width:2.25rem;height:2.25rem;margin-bottom:var(--space-50);border-radius:50%;background:color-mix(in srgb,var(--interactive) 16%,transparent);color:var(--interactive);svg{width:1.125rem;height:1.125rem}}.suggest-cta-button{margin-top:var(--space-100);padding:var(--space-100) var(--space-300);border-radius:var(--radius-2);background:var(--text-color);color:var(--site-bg);font-weight:var(--weight-600);line-height:1.4;span{display:inline-block}}@media (prefers-reduced-motion:no-preference){.suggest-cta-button span{transition:translate var(--transition-fast)}.suggest-cta:hover .suggest-cta-button span{translate:3px 0}}.sidebar>.footnote{margin:var(--space-200) var(--space-300) 0;font-size:var(--text-100);text-align:center}.stat-tiles{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--space-100);margin:var(--space-200) 0 0;padding:0;list-style:none;a,div{display:grid;gap:2px;padding:var(--space-200);border-radius:var(--radius-2);background:var(--site-bg);color:var(--text-muted)}a{text-decoration:none;transition:background var(--transition-fast),color var(--transition-fast);&:hover,&:focus-visible{background:var(--surface-hover);color:var(--text-color)}}svg{color:var(--interactive);margin-bottom:var(--space-50)}strong{font-size:var(--text-500);line-height:1.1;font-weight:var(--weight-700);font-variant-numeric:tabular-nums}a>span,div>span{font-size:var(--text-100)}}.stat-note{font-size:var(--text-100)}.liked{margin:var(--space-200) 0 0;padding:0;list-style:none;li{display:flex;align-items:flex-start;gap:var(--space-200);padding-block:var(--space-100)}li + li{border-top:var(--border-1) solid var(--divider-color)}a{display:grid;gap:2px;min-width:0;flex:1;color:var(--text-muted);text-decoration:none;&:hover span{text-decoration:underline}}span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}strong{color:var(--text-color);font-weight:var(--weight-600)}small{display:inline-flex;align-items:center;gap:var(--space-50);font-size:var(--text-100);svg{width:12px;height:12px}}}.majors{margin:var(--space-200) 0 0;padding:0;list-style:none;li{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--space-100);padding-block:var(--space-100)}li + li{border-top:var(--border-1) solid var(--divider-color)}span{color:var(--text-color)}small{margin-left:auto;font-size:var(--text-100)}}.meter{display:flex;height:0.5rem;margin:var(--space-200) 0 var(--space-100);overflow:hidden;border-radius:var(--radius-pill);background:var(--site-bg);span{background:var(--interactive);border-radius:var(--radius-pill)}}.meter-legend{display:flex;justify-content:space-between;font-size:var(--text-100)}.piles{margin:var(--space-200) 0 0;padding:0;list-style:none;display:grid;gap:var(--space-150,0.625rem);li{display:grid;grid-template-columns:1fr auto;gap:4px var(--space-200);align-items:baseline}i{grid-column:1 / -1;display:block;height:3px;border-radius:var(--radius-pill);background:var(--site-bg)}i::before{content:"";display:block;height:100%;width:var(--share);border-radius:inherit;background:var(--text-muted);opacity:0.6}strong{font-variant-numeric:tabular-nums}}.odo{display:inline-flex;font-variant-numeric:tabular-nums}.reel{display:inline-flex;height:1lh;overflow:hidden;>span{display:flex;flex-direction:column;transform:translateY(calc(var(--d) * -1lh))}}@media (prefers-reduced-motion:no-preference){.reel>span{animation:odo-roll 1.1s cubic-bezier(0.2,0.8,0.2,1) calc(var(--i) * 90ms) both}.meter span{animation:bar-grow 0.9s cubic-bezier(0.2,0.8,0.2,1) 0.2s both}.piles i::before{animation:bar-grow 0.8s cubic-bezier(0.2,0.8,0.2,1) calc(0.3s + var(--i) * 70ms) both}}@keyframes odo-roll{from{transform:translateY(0)}}@keyframes bar-grow{from{width:0}}.section-head{margin:var(--space-700) 0 var(--space-200);h2{margin:0;font-size:var(--text-h2)}.intro + &{margin-top:var(--space-600)}@media (max-width:30rem){margin-top:var(--space-600)}}.see-all{display:block;margin-top:var(--space-200);padding:var(--space-200) var(--space-300);border-radius:var(--radius-2);background:var(--site-bg-alt);box-shadow:var(--shadow);color:var(--text-color);font-size:var(--text-200);font-weight:var(--weight-600);text-align:center;text-decoration:none;transition:background var(--transition-fast);&:hover{background:var(--surface-hover)}:is(.post,.article) + &{margin-top:0}}.sub{margin:0 0 var(--space-300);color:var(--text-muted);font-size:var(--text-200)}.empty{color:var(--text-muted)}.post{display:flex;gap:var(--space-200);padding:var(--space-300);margin:0 0 var(--space-200)}.avatar{width:var(--avatar);height:var(--avatar);border-radius:50%;flex:none;object-fit:cover;background:var(--divider-color);display:grid;place-items:center;color:var(--text-muted);font-weight:var(--weight-700);font-stretch:112.5%}.post-body{min-width:0;flex:1}@media (max-width:30rem){.post{display:grid;grid-template-columns:2.5rem minmax(0,1fr);gap:0 var(--space-200);align-items:center}.post .avatar{width:2.5rem;height:2.5rem}.post-body{display:contents}.post-body>:not(.who){grid-column:1 / -1}.post .text{margin-top:var(--space-200)}.post span.avatar{font-size:var(--text-200)}}.who{display:grid;grid-template-columns:minmax(0,1fr);margin:0;font-size:var(--text-200);line-height:1.45;>a{justify-self:start;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-color);font-weight:var(--weight-600);&:hover{text-decoration:none}}.meta a{color:var(--text-muted);font-weight:var(--weight-400)}.handle{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}}.meta{display:flex;flex-wrap:wrap;column-gap:0.4em;color:var(--text-muted);font-weight:var(--weight-400);>*{flex:none;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}>:not(:last-child)::after{content:"\00b7";display:inline-block;margin-left:0.4em}}.who .meta{flex-wrap:nowrap;min-width:0;>:not(:last-child)::after{content:none}>* + *::before{content:"\00b7";display:inline-block;margin-right:0.4em}}.text{margin:var(--space-100) 0 0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:var(--leading-card)}.link-card{display:flex;gap:var(--space-200);margin-top:var(--space-200);overflow:hidden;line-height:var(--leading-card);border:var(--border-1) solid var(--divider-color);border-radius:var(--radius-2);color:var(--text-color);text-decoration:none;transition:background var(--transition-fast);&:hover{background:var(--surface-hover)}img{width:8.5rem;object-fit:cover;flex:none}span{display:grid;gap:2px;min-width:0;padding:var(--space-200) var(--space-200) var(--space-200) 0;&:first-child{padding-left:var(--space-200)}}strong{font-weight:var(--weight-600);overflow-wrap:anywhere;text-decoration:underline}&:hover strong{text-decoration:none}small{color:var(--text-muted);font-size:var(--text-100)}@media (max-width:30rem){flex-direction:column;gap:0;img{width:100%;aspect-ratio:1.91}span,span:first-child{padding:var(--space-200)}}}.release{padding:var(--space-300);margin:0 0 var(--space-200);h3{margin:0;font-size:var(--text-400);font-weight:var(--weight-600)}h3 a{color:var(--text-color);&:hover{text-decoration:none}}.pre{margin:var(--space-100) 0 0;color:var(--text-muted);font-size:var(--text-200)}}.release-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 var(--space-200);span{color:var(--text-muted);font-size:var(--text-200)}}.versions{margin:var(--space-100) 0 0;padding:0;list-style:none;li{padding-block:var(--space-50)}span{color:var(--text-muted);font-size:var(--text-200)}}:is(.post,.article,.article-rows li):has(>.new-dot){position:relative}.new-dot{width:0.5rem;height:0.5rem;border-radius:50%;background:var(--interactive);:is(.post,.article,.article-rows li)>&{position:absolute;top:var(--space-100);right:var(--space-100)}}.sidebar>.new-legend{display:flex;align-items:center;justify-content:center;gap:var(--space-100);margin-top:var(--space-50);&[hidden]{display:none}}.major{margin-left:var(--space-50);padding:0 var(--space-100);border:var(--border-1) solid var(--interactive);border-radius:var(--radius-pill);color:var(--interactive);font-size:var(--text-100);font-weight:var(--weight-600)}.release-rows{margin:0;padding:0;list-style:none;li{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--space-200);padding:var(--space-200) var(--space-300)}strong{font-weight:var(--weight-600)}span{margin-left:auto;color:var(--text-muted);font-size:var(--text-200)}}.article{display:flex;gap:var(--space-300);padding:var(--space-300);margin:0 0 var(--space-200);h3{margin:0;font-size:var(--text-400);font-weight:var(--weight-600);line-height:var(--leading-title)}h3 a{color:var(--text-color);&:hover{text-decoration:none}}@media (max-width:30rem){gap:var(--space-200)}}.article-thumb{flex:none;align-self:flex-start;width:6rem;aspect-ratio:1;object-fit:cover;object-position:left top;border-radius:var(--radius-2);background:var(--divider-color);display:grid;place-items:center;color:var(--text-muted);font-size:var(--text-500);font-weight:var(--weight-700);font-stretch:112.5%;@media (max-width:30rem){width:4rem;font-size:var(--text-400)}}.article-body{min-width:0;flex:1}@media (max-width:30rem){.article{display:grid;grid-template-columns:4rem minmax(0,1fr);gap:0 var(--space-200)}.article .article-thumb{grid-row:span 2}.article-body{display:contents}.article-body>:is(.article-text,.card-actions){grid-column:1 / -1}.article-text{margin-top:var(--space-200)}}.article-meta{margin:var(--space-50) 0 0;color:var(--text-muted);font-size:var(--text-200);line-height:1.45;a{color:var(--text-muted)}}.article-text{margin:var(--space-100) 0 0;overflow-wrap:anywhere;line-height:var(--leading-card)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-100) var(--space-300);margin-top:var(--space-300);padding-top:var(--space-200);border-top:var(--border-1) solid var(--divider-color);color:var(--text-muted);font-size:var(--text-200);.counts,.share{display:flex;align-items:center;min-height:2rem}.counts{gap:var(--space-300)}.share{border-radius:var(--radius-pill);background:var(--site-bg)}.count{display:inline-flex;align-items:center;gap:var(--space-50)}.share{gap:var(--space-50);padding:0 var(--space-50) 0 var(--space-300);margin-left:auto}@media (max-width:30rem){column-gap:var(--space-100);.counts{gap:var(--space-200)}.share{gap:2px;padding-left:var(--space-50)}.share-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}a{display:grid;place-items:center;width:2rem;height:2rem;border-radius:var(--radius-pill);color:var(--text-muted);transition:color var(--transition-fast),background var(--transition-fast);&:hover,&:focus-visible{color:var(--text-color);background:var(--surface-hover)}}}.article-rows{margin:0;padding:0;list-style:none;li{display:grid;grid-template-columns:3.5rem minmax(0,1fr);gap:var(--space-200);align-items:start;padding:var(--space-200) var(--space-300)}.article-thumb{width:3.5rem;font-size:var(--text-300)}li>div>a{display:block;color:var(--text-color);font-weight:var(--weight-600);line-height:var(--leading-title);&:hover{text-decoration:none}}}.site-footer{margin-top:var(--space-800);padding:var(--space-500) 0;border-top:var(--border-1) solid var(--divider-color);color:var(--text-muted);font-size:var(--text-200);.wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-100) var(--space-300)}p{margin:0}.rss-link svg{display:inline-block;width:0.875rem;height:0.875rem;margin-right:var(--space-50);vertical-align:-0.1em}@media (max-width:30rem){.wrap{justify-content:center;text-align:center}}}.suggest{display:grid;gap:var(--space-300);margin-top:var(--space-600);padding:var(--space-400);border-radius:var(--radius-2);background:var(--site-bg-alt);box-shadow:var(--shadow);label{display:grid;gap:var(--space-50);color:var(--text-color);font-size:var(--text-200);font-weight:var(--weight-600)}small{margin-left:var(--space-50);color:var(--text-muted);font-size:inherit;font-weight:var(--weight-400)}:is(input,select,textarea){width:100%;padding:var(--space-200) var(--space-300);border:var(--border-1) solid var(--border-color);border-radius:var(--radius-2);background:var(--site-bg);color:var(--text-color);font:inherit;font-size:var(--text-300);font-weight:var(--weight-400);&:focus{border-color:var(--text-muted)}}textarea{min-height:5.5rem;resize:vertical}select{appearance:none;padding-right:calc(var(--space-300) * 2 + 0.75rem);background:var(--site-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a8a8a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right var(--space-300) center / 0.875rem}button{justify-self:end;padding:var(--space-200) var(--space-400);border:0;border-radius:var(--radius-2);cursor:pointer;background:var(--text-color);color:var(--site-bg);font:inherit;font-size:var(--text-200);font-weight:var(--weight-500);line-height:1.4;transition:background var(--transition-fast);&:hover{background:color-mix(in srgb,var(--text-color) 85%,var(--site-bg))}}.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}}.prose{max-width:40rem;h2{margin:var(--space-700) 0 var(--space-200);font-size:var(--text-h2)}.intro + &>:first-child{margin-top:var(--space-600)}@media (max-width:30rem){h2{margin-top:var(--space-600)}}p{margin:0 0 var(--space-300)}}