@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-wght-normal.DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#fff;--paper-2:#f4f4f6;--card:#fff;--ink:#0f0f12;--ink-2:#3f3f46;--ink-3:#71717a;--line:#e4e4e7;--line-2:#d4d4d8;--accent:#e5461a;--accent-ink:#fff4ee;--mint:#dcfce7;--mint-ink:#166534;--amber:#fef3c7;--amber-ink:#92400e;--rose:#fee2e2;--rose-ink:#991b1b;--serif:"Bricolage Grotesque Variable", "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--sans:"Bricolage Grotesque Variable", "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--mono:"Geist Mono Variable", ui-monospace, "SFMono-Regular", monospace;--r:14px;--wrap:1240px;--ease:cubic-bezier(.2, .7, .1, 1)}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}html,body{overflow-x:clip}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:15.5px;line-height:1.55}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button,input,select{font:inherit;color:inherit}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}@media (width<=640px){.wrap{padding:0 18px}}.mono{font-family:var(--mono);font-feature-settings:"zero"}.kicker{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:11.5px}.serif{font-family:var(--serif);letter-spacing:-.03em;font-weight:700}.serif em,.word em{font-style:normal}.strike{white-space:nowrap;position:relative}.strike:after{content:"";background:var(--accent);transform-origin:0;height:.09em;min-height:2px;position:absolute;top:52%;left:-4%;right:-4%;transform:rotate(-4deg)}.tile{--s:40px;width:var(--s);height:var(--s);border-radius:calc(var(--s) * .27);font-family:var(--serif);font-weight:700;font-size:calc(var(--s) * .44);letter-spacing:-.02em;flex:none;place-items:center;line-height:1;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #0000000f}.tile img{object-fit:contain;width:68%;height:68%;margin:auto;position:absolute;inset:0}.tile.fav{box-shadow:inset 0 0 0 1px var(--line);background:#fff!important}.badge{height:22px;font-family:var(--mono);letter-spacing:.02em;white-space:nowrap;border:1px solid var(--line);color:var(--ink-2);background:var(--card);border-radius:6px;align-items:center;gap:6px;padding:0 8px;font-size:11px;display:inline-flex}.badge.oss{background:var(--mint);color:var(--mint-ink);border-color:#0000}.badge.free{background:var(--amber);color:var(--amber-ink);border-color:#0000}.badge.v-yes{background:var(--mint);color:var(--mint-ink);border-color:#0000}.badge.v-kinda{background:var(--amber);color:var(--amber-ink);border-color:#0000}.badge.v-no{background:var(--rose);color:var(--rose-ink);border-color:#0000}.dot{background:currentColor;border-radius:50%;width:6px;height:6px}.btn{border:1px solid var(--ink);background:var(--ink);height:38px;color:var(--paper);cursor:pointer;transition:transform .2s var(--ease), background .2s;border-radius:10px;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:500;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn.ghost{color:var(--ink);border-color:var(--line-2);background:0 0}.btn.ghost:hover{border-color:var(--ink)}@media (prefers-reduced-motion:no-preference){.rise{animation:rise .8s var(--ease) both;animation-delay:calc(var(--d,0) * 70ms)}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}}.pagination{user-select:none;flex-direction:column;align-items:center;gap:14px;margin:44px 0 24px;display:flex}.pg-info{font-family:var(--mono);color:var(--ink-3);letter-spacing:-.01em;font-size:13px}.pg-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.pg-btn{border:1px solid var(--line);background:var(--paper);min-width:38px;height:38px;color:var(--ink);font-family:var(--mono);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13.5px;font-weight:500;transition:all .15s;display:inline-flex}.pg-btn:hover:not(:disabled):not(.on){border-color:var(--ink);background:var(--paper-2)}.pg-btn.on{background:var(--ink);border-color:var(--ink);color:var(--paper);cursor:default;font-weight:600}.pg-btn:disabled{opacity:.35;cursor:not-allowed;border-color:var(--line)}.pg-ellipsis{min-width:28px;height:38px;color:var(--ink-3);font-family:var(--mono);justify-content:center;align-items:center;font-size:14px;display:inline-flex}@media (width<=640px){.pagination{gap:12px;margin:32px 0 16px}.pg-controls{gap:4px}.pg-btn{min-width:34px;height:34px;padding:0 8px;font-size:12.5px}}.top{z-index:40;background:color-mix(in oklab, var(--paper) 86%, transparent);-webkit-backdrop-filter:blur(10px)saturate(1.2);border-bottom:1px solid var(--line);position:sticky;top:0}.top-in{justify-content:space-between;align-items:center;gap:16px;height:62px;display:flex}.brand{align-items:center;gap:10px;display:flex}.mark{width:30px;height:30px;transition:transform .4s var(--ease)}.brand:hover .mark{transform:rotate(-8deg)scale(1.04)}.word{letter-spacing:-.02em;font-size:17px;font-weight:600}.word em{font-family:var(--serif);color:var(--accent);letter-spacing:0;padding:0 1px;font-size:1.22em;font-weight:400}.nav{align-items:center;gap:4px;display:flex}.nav>a{color:var(--ink-2);border-radius:8px;padding:7px 11px;font-size:14px;transition:color .15s,background .15s}.nav>a:hover{color:var(--ink);background:var(--paper-2)}.search-btn{border:1px solid var(--line);background:var(--card);height:34px;color:var(--ink-3);cursor:pointer;border-radius:9px;align-items:center;gap:8px;min-width:170px;margin-left:6px;padding:0 8px 0 11px;font-size:13.5px;transition:border-color .15s;display:flex}.search-btn:hover{border-color:var(--line-2)}.search-btn kbd{margin-left:auto}kbd{font-family:var(--mono);border:1px solid var(--line);color:var(--ink-3);background:var(--paper);border-bottom-width:2px;border-radius:5px;padding:0 5px;font-size:11px}.stack-btn{background:var(--ink);height:34px;color:var(--paper);cursor:pointer;border:0;border-radius:9px;align-items:center;gap:8px;margin-left:6px;padding:0 6px 0 13px;font-size:13.5px;font-weight:500;display:flex}.stack-count{background:#ffffff24;border-radius:6px;place-items:center;min-width:22px;height:22px;padding:0 6px;font-size:12px;transition:background .2s;display:grid}.stack-count.on{background:var(--accent)}.stack-btn.bump{animation:bump .45s var(--ease)}@keyframes bump{40%{transform:scale(1.08)rotate(-2deg)}}.mob-nav{display:none}@media (width<=860px){.nav>a{display:none}.search-btn{min-width:0}.search-btn .sb-label,.search-btn kbd{display:none}.mob-nav{scrollbar-width:none;border-top:1px solid var(--line);align-items:center;gap:6px;padding-top:8px;padding-bottom:10px;display:flex;overflow-x:auto}.mob-nav::-webkit-scrollbar{display:none}.mob-nav a{color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line);white-space:nowrap;border-radius:999px;flex:none;padding:5px 12px;font-size:13px;font-weight:500}.mob-nav a:hover,.mob-nav a:active{color:var(--ink);border-color:var(--ink)}}@media (width<=420px){.sb-l{display:none}}.foot{background:var(--ink);color:var(--paper);margin-top:120px;padding:72px 0 26px}.foot-in{grid-template-columns:1.3fr 1fr;gap:48px;display:grid}.foot-big{letter-spacing:-.02em;font-size:clamp(44px,6vw,84px);line-height:.95}.foot-big em{color:var(--accent)}.foot-cols{grid-template-columns:1fr 1.4fr;gap:32px;display:grid}.foot-cols a{color:#d9d5cb;padding:3px 0;display:block}.foot-cols a:hover{color:#fff}.foot .kicker{color:#8c897f;margin:0 0 10px}.foot-note{color:#b9b5aa;margin:0 0 10px;font-size:14px}.foot-note .u{text-underline-offset:3px;text-decoration:underline;display:inline}.foot-base{color:#8c897f;border-top:1px solid #2c2b27;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:64px;padding-top:20px;font-size:12px;display:flex}@media (width<=760px){.foot-in,.foot-cols{grid-template-columns:1fr}}.pal{z-index:80;place-items:start center;padding:12vh 16px 0;display:grid;position:fixed;inset:0}.pal[hidden],.drawer[hidden]{display:none}.pal-scrim,.drawer-scrim{background:#15151352;animation:.2s fade;position:absolute;inset:0}@keyframes fade{0%{opacity:0}}.pal-box{background:var(--card);border:1px solid var(--line);width:min(640px,100%);animation:pop .25s var(--ease);border-radius:16px;position:relative;overflow:hidden;box-shadow:0 30px 80px -20px #15151373,inset 0 2px #fff9}@keyframes pop{0%{opacity:0;transform:translateY(-8px)scale(.98)}}.pal-head{border-bottom:1px solid var(--line);color:var(--ink-3);align-items:center;gap:12px;padding:0 16px;display:flex}.pal-head input{height:58px;color:var(--ink);background:0 0;border:0;outline:0;flex:1;font-size:17px}.pal-list{max-height:55vh;margin:0;padding:6px;list-style:none;overflow:auto}.pal-list a{border-radius:10px;grid-template-columns:44px 1fr auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.pal-list a.sel,.pal-list a:hover{background:var(--paper-2)}.pl-kind{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-size:10.5px}.pl-name{font-weight:500}.pl-meta{color:var(--ink-3);font-size:12px}.pl-none{color:var(--ink-3);padding:22px 14px;font-size:14px}.drawer{z-index:80;position:fixed;inset:0}.receipt{--zig:10px;width:min(380px,100% - 32px);max-height:calc(100% - 40px);animation:print .55s var(--ease);-webkit-mask:conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(var(--zig) * 2) 100%;mask:conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(var(--zig) * 2) 100%;background:#fff;padding:34px 26px 36px;position:absolute;top:0;right:28px;overflow:auto;box-shadow:0 30px 60px -20px #15151373}@keyframes print{0%{transform:translateY(-100%)}}@media (width<=520px){.receipt{width:auto;left:16px;right:16px}.pal{padding-top:6vh}.pal-list a{grid-template-columns:38px 1fr;row-gap:2px}.pl-meta{grid-column:2;font-size:11px}}.r-close{cursor:pointer;width:30px;height:30px;color:var(--ink-3);background:0 0;border:0;border-radius:8px;font-size:22px;line-height:1;position:absolute;top:14px;right:14px}.r-close:hover{background:var(--paper-2);color:var(--ink)}.r-kick{text-align:center;margin:0}.r-title{text-align:center;margin:6px 0 18px;font-size:30px;line-height:1.05}.r-lines{border-top:1px dashed var(--line-2);margin:0;padding:14px 0;font-size:13px;list-style:none}.r-lines li{align-items:baseline;gap:8px;padding:4px 0;display:flex}.r-lines a:hover{color:var(--accent)}.r-dots{border-bottom:1px dotted var(--line-2);flex:1;transform:translateY(-3px)}.r-lines button{color:var(--ink-3);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:15px}.r-lines button:hover{color:var(--accent)}.r-empty{color:var(--ink-3);text-align:center;margin:0 0 16px;font-size:14px}.r-tot{border-top:1px dashed var(--line-2);padding-top:14px}.r-tot div{color:var(--ink-2);justify-content:space-between;align-items:baseline;font-size:13px;display:flex}.r-tot .r-year{flex-direction:column;align-items:flex-start;gap:2px;margin-top:8px}.r-year b{font-family:var(--serif);color:var(--accent);font-size:54px;font-weight:400;line-height:1}.r-foot{text-align:center;color:var(--ink-3);margin:18px 0 14px;font-size:11.5px}.r-clear{justify-content:center;width:100%;height:34px}
