@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/barlow-vietnamese-400-normal.Dpl4UHAZ.woff2)format("woff2"),url(/_astro/barlow-vietnamese-400-normal.BFeobeCK.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/barlow-latin-ext-400-normal.HxX4XjxC.woff2)format("woff2"),url(/_astro/barlow-latin-ext-400-normal.CvBsJvxq.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/barlow-latin-400-normal.qiz4-Cze.woff2)format("woff2"),url(/_astro/barlow-latin-400-normal.fsAxiSwU.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/barlow-vietnamese-500-normal.zTViEIzf.woff2)format("woff2"),url(/_astro/barlow-vietnamese-500-normal.GNfB7rCE.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/barlow-latin-ext-500-normal.DOaysfXq.woff2)format("woff2"),url(/_astro/barlow-latin-ext-500-normal.CJPcKP2Q.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/barlow-latin-500-normal.BPAOfeC8.woff2)format("woff2"),url(/_astro/barlow-latin-500-normal.C1h8hMer.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/barlow-vietnamese-700-normal.D6euyNzi.woff2)format("woff2"),url(/_astro/barlow-vietnamese-700-normal.4Jt4k04K.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/barlow-latin-ext-700-normal.BLuWmldJ.woff2)format("woff2"),url(/_astro/barlow-latin-ext-700-normal.CctuGmmz.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/barlow-latin-700-normal.A9pxMQ4z.woff2)format("woff2"),url(/_astro/barlow-latin-700-normal.__SGTsZ1.woff)format("woff");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:Maple Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/maple-mono-latin-400-normal.WIx2rg0p.woff2)format("woff2"),url(/_astro/maple-mono-latin-400-normal.OcfaEJ46.woff)format("woff")}@font-face{font-family:Maple Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/maple-mono-latin-500-normal.DArLj6fy.woff2)format("woff2"),url(/_astro/maple-mono-latin-500-normal.CeaAlHyl.woff)format("woff")}@font-face{font-family:Maple Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/maple-mono-latin-700-normal.B_sC0Ion.woff2)format("woff2"),url(/_astro/maple-mono-latin-700-normal.DeN56mtg.woff)format("woff")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f2ea;--surface:#fffdf8;--surface-strong:#f0ece2;--text:#17171b;--muted:#66636d;--faint:#7c7884;--border:#17171b21;--border-strong:#17171b40;--accent:#5b57d9;--accent-contrast:#fff;--accent-soft:#5b57d91a;--gold:#a9782f;--gold-soft:#a9782f14;--header-bg:#f5f2ead1;--shadow:0 24px 60px #17171b1a;--dot-live:#2f9e63;--dot-wip:#a9761c;--dot-archived:#6f6a78;--radius:20px;--header-h:64px;--footer-h:74px;--gutter:clamp(20px, 5vw, 56px);--font-sans:"Barlow", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Maple Mono", ui-monospace, SFMono-Regular, Menlo, monospace}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0c13;--surface:#11141e;--surface-strong:#181c28;--text:#f1eff7;--muted:#a6a2b5;--faint:#8a8699;--border:#f1eff71f;--border-strong:#f1eff73d;--accent:#8f8bff;--accent-contrast:#0a0c13;--accent-soft:#8f8bff1f;--gold:#d7a85a;--gold-soft:#d7a85a0f;--header-bg:#0a0c13cc;--shadow:0 26px 70px #00000073;--dot-live:#6ee7a8;--dot-wip:#f4c56a;--dot-archived:#c7c3d0}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px)}html,body{margin:0;padding:0}body{background:radial-gradient(1100px 700px at 88% -12%, var(--accent-soft), transparent 62%), radial-gradient(900px 600px at -10% 110%, var(--gold-soft), transparent 60%), var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;line-height:1.6}::selection{background:var(--accent);color:var(--accent-contrast)}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}[hidden]{display:none!important}.skip-link{z-index:100;background:var(--text);color:var(--bg);font:500 .72rem/1 var(--font-mono);letter-spacing:.06em;border-radius:999px;padding:9px 14px;transition:transform .18s;position:fixed;top:8px;left:8px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:80;height:var(--header-h);background:var(--header-bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(16px)saturate(1.2);position:sticky;top:0}.header-inner{width:100%;max-width:1180px;height:100%;padding:0 var(--gutter);justify-content:space-between;align-items:center;gap:20px;margin:0 auto;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand img{border:1px solid var(--border);object-fit:cover;border-radius:50%;width:34px;height:34px}.brand-name{font:700 .72rem/1 var(--font-mono);letter-spacing:.13em;white-space:nowrap}.brand-handle{color:var(--faint);white-space:nowrap;font-size:.72rem}.nav{color:var(--muted);align-items:center;gap:clamp(12px,2vw,22px);font-size:.84rem;display:flex}.nav a{transition:color .16s}.nav a:hover,.nav a[aria-current=page]{color:var(--text)}.nav a[aria-current=page]{text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:6px}.nav-blog-short{display:none}.theme-toggle{border:1px solid var(--border);width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border-radius:50%;place-items:center;padding:0;transition:color .16s,border-color .16s,background .16s;display:grid}.theme-toggle:hover{border-color:var(--border-strong);background:var(--surface);color:var(--text)}html.dark .icon-moon,html:not(.dark) .icon-sun{display:none}.screen{min-height:calc(100dvh - var(--header-h));padding:clamp(24px, 4vh, 56px) var(--gutter);scroll-margin-top:var(--header-h);position:relative}.eyebrow{color:var(--muted);font:500 .66rem/1.2 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;margin:0 0 14px}.display{letter-spacing:-.045em;text-wrap:balance;text-transform:uppercase;margin:0;font-weight:700;line-height:.98}h1.display{font-size:clamp(2.6rem,5.2vw,4.6rem)}h2.display{font-size:clamp(2.2rem,4.2vw,3.6rem)}.lede{max-width:54ch;color:var(--muted);text-wrap:pretty;margin:18px 0 0;font-size:clamp(.98rem,1.1vw,1.05rem);line-height:1.6}.text-link{border-bottom:1px solid var(--border-strong);font:500 .7rem/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:8px;margin-top:14px;padding-bottom:6px;transition:color .16s,border-color .16s;display:inline-flex}.text-link span{transition:transform .16s}.text-link:hover{border-color:var(--accent);color:var(--accent)}.text-link:hover span{transform:translate(3px)}.writing-screen{flex-direction:column;display:flex}.writing-grid{flex:1;grid-template-columns:minmax(0,1.08fr) minmax(300px,.92fr);align-items:center;gap:clamp(36px,6vw,84px);width:100%;max-width:1180px;margin:0 auto;display:grid}.writing-copy{min-width:0;container-type:inline-size}.coop-pill{text-wrap:nowrap;border:1px solid var(--border);background:var(--surface);width:fit-content;color:var(--muted);font:500 .6rem/1.2 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;border-radius:8px;flex-wrap:nowrap;justify-content:center;align-items:center;gap:5px 7px;margin:0 0 16px;padding:7px 11px 7px 28px;display:inline-flex;position:relative}.coop-pill-row{white-space:nowrap;align-items:center;gap:7px;display:inline-flex}@container (width<=470px){.coop-pill{flex-direction:column}.coop-sep--inline{display:none}}.coop-pill strong{color:var(--text);font-weight:500}.coop-dot{background:#3f9d6c;border-radius:50%;flex:none;width:6px;height:6px;position:absolute;left:10px;box-shadow:0 0 0 3px #3f9d6c29}.coop-sep{color:var(--faint)}a.coop-pill{transition:border-color .16s,background .16s}a.coop-pill:hover{border-color:var(--accent);background:var(--accent-soft)}.writing-list-block{margin-top:clamp(20px,3vh,34px)}.list-label{color:var(--faint);font:500 .62rem/1.2 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 10px}.writing-list{border-top:1px solid var(--border);margin:0;padding:0;list-style:none}.writing-row{border-bottom:1px solid var(--border);grid-template-columns:5.4rem minmax(0,1fr) auto 1.1rem;align-items:baseline;gap:14px;padding:10px 0;transition:color .16s,padding-left .16s;display:grid}.writing-row:hover{color:var(--accent);padding-left:4px}.writing-row time{color:var(--faint);font:400 .64rem/1.2 var(--font-mono);letter-spacing:.02em;white-space:nowrap}.writing-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.94rem;font-weight:500;line-height:1.3;display:block;overflow:hidden}.writing-meta{color:var(--faint);font:400 .6rem/1.2 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.writing-arrow{color:var(--faint);font-size:.9rem;transition:transform .16s,color .16s}.writing-row:hover .writing-arrow{color:var(--accent);transform:translate(3px,-3px)}.writing-art{border:1px solid var(--border);background:var(--surface);height:clamp(280px,48vh,520px);box-shadow:var(--shadow);border-radius:26px;margin:0;position:relative;overflow:hidden}.writing-art img{object-fit:cover;width:100%;height:100%}html.dark .writing-art img{filter:brightness(.82)saturate(.95)}.writing-art:after{content:"";background:linear-gradient(#0000 38%,#000000a3 100%);position:absolute;inset:0}.art-caption{z-index:1;color:#ffffffdb;font:500 .6rem/1.2 var(--font-mono);letter-spacing:.12em;text-shadow:0 1px 10px #0000008c;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;display:flex;position:absolute;bottom:18px;left:20px;right:20px}.art-caption span:last-child{text-align:right;margin-left:auto}.scroll-cue{color:var(--muted);font:500 .62rem/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;align-self:center;align-items:center;gap:9px;margin-top:clamp(14px,2vh,24px);display:inline-flex}.scroll-cue span{animation:2.2s ease-in-out infinite nudge;display:inline-block}@keyframes nudge{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.apps-screen{flex-direction:column;justify-content:center;padding-top:clamp(52px,7vh,88px);display:flex}.apps-screen--full{justify-content:flex-start;padding-top:24px!important;padding-bottom:8px!important}.apps-head{justify-content:space-between;align-items:flex-end;gap:28px;width:100%;max-width:1180px;margin:0 auto;display:flex}.apps-head-copy{max-width:760px}.apps-head .lede{margin-top:16px}.view-switch{border:1px solid var(--border);background:var(--surface);border-radius:999px;flex:none;gap:2px;padding:3px;display:inline-flex}.view-switch button{color:var(--muted);font:500 .64rem/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:8px 12px}.view-switch button[aria-pressed=true]{background:var(--text);color:var(--bg)}.filter-row{flex-wrap:wrap;gap:8px;width:100%;max-width:1180px;margin:28px auto 20px;display:flex}.featured-row{flex-wrap:wrap;align-items:center;gap:10px 16px;width:100%;max-width:1180px;margin:28px auto 20px;display:flex}.featured-label{min-width:0;color:var(--muted);font:500 .66rem/1 var(--font-mono);letter-spacing:.16em;white-space:nowrap;text-transform:uppercase;flex:1;align-items:center;gap:14px;margin:0;display:flex}.featured-row .text-link{margin-top:0}.featured-label:after{background:var(--border);content:"";flex:1;height:1px}.chip{border:1px solid var(--border);color:var(--muted);font:500 .64rem/1 var(--font-mono);letter-spacing:.04em;cursor:pointer;text-transform:uppercase;background:0 0;border-radius:999px;padding:7px 12px;transition:color .16s,border-color .16s,background .16s}.chip:hover{border-color:var(--border-strong);color:var(--text)}.chip[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--accent-contrast)}.apps{grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:16px;width:100%;max-width:1180px;margin:0 auto;padding-top:8px;display:grid}.app-item{min-width:0}.apps-screen--preview .apps{grid-template-columns:repeat(auto-fit,minmax(235px,1fr))}.app-card{--card-text:#17171b;--card-muted:#4b4954;--card-tag-text:#3f3d49;--card-tag-border:hsl(var(--app-hue) 30% 40% / .3);--card-dot:#17171b1f;--card-border:hsl(var(--app-hue) 35% 55% / .35);--card-border-hover:hsl(var(--app-hue) 45% 45% / .55);--card-arrow:#17171b66;--card-status-bg:#ffffffb8;--card-status-border:hsl(var(--app-hue) 30% 40% / .25);--card-status-text:#2b2933;border:1px solid var(--card-border);border-radius:var(--radius);background:radial-gradient(circle at 18% 18%, hsl(var(--app-hue) 80% 92% / .9), transparent 46%), linear-gradient(135deg, hsl(var(--app-hue) 58% 95%), hsl(calc(var(--app-hue) + 32) 52% 88%));height:100%;color:var(--card-text);align-items:stretch;gap:12px;padding:18px;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;position:relative;overflow:hidden}html.dark .app-card{--card-text:#fff;--card-muted:#ffffffe0;--card-tag-text:#ffffffe6;--card-tag-border:#ffffff42;--card-dot:#fff6;--card-border:hsl(var(--app-hue) 40% 62% / .22);--card-border-hover:hsl(var(--app-hue) 55% 70% / .45);--card-arrow:#ffffff9e;--card-status-bg:#00000059;--card-status-border:#ffffff38;--card-status-text:#fff;background:linear-gradient(180deg, #00000042, #00000057), radial-gradient(circle at 18% 18%, hsl(var(--app-hue) 62% 46% / .14), transparent 42%), linear-gradient(135deg, hsl(var(--app-hue) 50% 34%), hsl(calc(var(--app-hue) + 32) 42% 18%))}.app-card:after{background-image:radial-gradient(var(--card-dot) 1px, transparent 1px);content:"";opacity:.28;pointer-events:none;background-size:16px 16px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 70%);mask-image:linear-gradient(#000,#0000 70%)}.app-card>:not(.app-icon){z-index:1;position:relative}.app-card:hover{border-color:var(--card-border-hover);box-shadow:var(--shadow);transform:translateY(-4px)}.app-icon{z-index:0;object-fit:contain;opacity:.5;filter:blur(2px);pointer-events:none;width:auto;max-width:58%;height:100%;position:absolute;top:-12%;left:-6%;-webkit-mask-image:radial-gradient(closest-side,#000 10%,#0000 85%);mask-image:radial-gradient(closest-side,#000 10%,#0000 85%)}html.dark .app-icon{opacity:.1}.app-status{border:1px solid var(--card-status-border);background:var(--card-status-bg);color:var(--card-status-text);font:500 .55rem/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;padding:5px 8px}.app-status:before{background:var(--dot-live);content:"";vertical-align:1px;border-radius:50%;width:5px;height:5px;margin-right:5px;display:inline-block}.app-status.is-wip:before{background:var(--dot-wip)}.app-status.is-archived:before{background:var(--dot-archived)}.app-body{z-index:1;flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.app-card-foot{flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;display:flex}.app-card-foot .tag-list{margin:0}.app-card-foot .app-status{margin-left:auto}.app-title-row{align-items:flex-start;gap:8px;display:flex}.app-title-row h3{min-width:0;color:var(--card-text);flex:1}.app-title-row h3,.app-row-head h3{letter-spacing:-.01em;margin:0;font-size:1.02rem;font-weight:700;line-height:1.3}.app-arrow{color:var(--card-arrow);flex:none;margin-top:3px;transition:transform .16s,color .16s}.app-card:hover .app-arrow{color:var(--card-text);transform:translate(3px,-3px)}.app-body p{color:var(--card-muted);margin:7px 0 14px;font-size:.86rem;line-height:1.5}.tag-list{flex-wrap:wrap;gap:5px;margin:auto 0 0;padding:0;list-style:none;display:flex}.tag-list li{border:1px solid var(--border);color:var(--muted);font:500 .55rem/1 var(--font-mono);letter-spacing:.05em;text-transform:uppercase;border-radius:6px;padding:4px 7px}.app-card .tag-list li{border-color:var(--card-tag-border);color:var(--card-tag-text)}.app-row{border:1px solid var(--border);background:var(--surface);border-radius:16px;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:18px;padding:16px 18px;display:none}.app-row-cover{border:1px solid hsl(var(--app-hue) 30% 55% / .2);background:radial-gradient(circle at 20% 20%, hsl(var(--app-hue) 60% 96%), transparent 55%), linear-gradient(135deg, hsl(var(--app-hue) 42% 92%), hsl(calc(var(--app-hue) + 32) 38% 84%));border-radius:14px;grid-column:1;place-items:center;width:64px;height:64px;display:grid}html.dark .app-row-cover{background:radial-gradient(circle at 20% 20%, hsl(var(--app-hue) 62% 52% / .55), transparent 45%), linear-gradient(135deg, hsl(var(--app-hue) 50% 40%), hsl(calc(var(--app-hue) + 32) 42% 22%));border-color:#0000}.app-row-icon{object-fit:contain;filter:drop-shadow(0 1px 2px #17171b47);width:28px;height:28px}html.dark .app-row-icon{filter:none}.app-row-body{grid-column:2;min-width:0}.app-row-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.app-row-head .app-status{border-color:var(--border);color:var(--muted);-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;padding:3px 6px;position:static}.app-row-body p{max-width:70ch;color:var(--muted);margin:4px 0 8px;font-size:.84rem;line-height:1.5}.app-row>.button{grid-column:3}.app-row--no-icon{grid-template-columns:minmax(0,1fr) auto}.app-row--no-icon>.app-row-body{grid-column:1;padding-left:8px}.app-row--no-icon>.button{grid-column:2}.button{border:1px solid var(--border-strong);font:500 .62rem/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:999px;align-items:center;gap:7px;padding:9px 14px;transition:color .16s,background .16s,border-color .16s;display:inline-flex}.button:hover{border-color:var(--text);background:var(--text);color:var(--bg)}html[data-apps-view=list] .apps{flex-direction:column;gap:10px;display:flex}html[data-apps-view=list] .app-card{display:none}html[data-apps-view=list] .app-row{display:grid}.apps-empty{width:100%;max-width:1180px;color:var(--muted);margin:24px auto 0;font-size:.9rem}.site-footer{height:var(--footer-h);padding:0 var(--gutter);border-top:1px solid var(--border);align-items:center;display:flex}.footer-inner{width:100%;max-width:1180px;color:var(--faint);font:400 .64rem/1.6 var(--font-mono);letter-spacing:.03em;justify-content:space-between;gap:16px;margin:0 auto;display:flex}.footer-inner p{margin:0}.footer-inner nav{flex-wrap:nowrap;gap:16px;display:flex}.footer-inner a:hover{color:var(--text)}@media (width>=900px) and (height>=640px){.screen{height:calc(100dvh - var(--header-h));min-height:0;overflow:hidden}.apps-screen--full{height:calc(100dvh - var(--header-h) - var(--footer-h))}.writing-grid{grid-template-rows:minmax(0,1fr);align-items:stretch;min-height:0}.writing-copy{flex-direction:column;justify-content:center;height:100%;min-height:0;display:flex}.writing-list-block{flex-direction:column;flex:0 auto;min-height:0;display:flex}.writing-list-wrap{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex:1;min-height:0;overflow:hidden auto}.writing-art{align-self:center;max-height:100%}.apps-screen,.apps-screen--preview{justify-content:flex-start}.apps-head,.filter-row,.featured-row,.apps-empty{flex:none}.apps{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex:1;align-content:start;min-height:0;overflow:hidden auto}}.apps::-webkit-scrollbar{width:8px}.writing-list-wrap::-webkit-scrollbar{width:8px}.apps::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}.writing-list-wrap::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}@media (width<=1080px){.brand-handle{display:none}}@media (width<=899px){.writing-grid{grid-template-columns:1fr;gap:32px}.writing-art{order:-1;height:clamp(180px,30vh,280px)}.apps-head{flex-direction:column;align-items:flex-start}.view-switch{align-self:flex-start}}@media (width<=640px){:root{--footer-h:100px}.nav-blog-full{display:none}.nav-blog-short{display:inline}.nav-github,.nav-linkedin{display:none}.brand-name{letter-spacing:.1em;font-size:.66rem}.header-inner{gap:10px}.nav{gap:12px;font-size:.8rem}.writing-row{grid-template-columns:4.6rem minmax(0,1fr) 1rem;gap:10px}.writing-meta{display:none}.writing-title{font-size:.92rem}.writing-art{border-radius:20px}html[data-apps-view=list] .app-row{grid-template-columns:48px minmax(0,1fr);align-items:start}.app-row-cover{border-radius:12px;width:48px;height:48px}.app-row-icon{width:24px;height:24px}.app-row .button{grid-column:2;justify-self:start}html[data-apps-view=list] .app-row--no-icon{grid-template-columns:minmax(0,1fr)}.app-row--no-icon>.app-row-body,.app-row--no-icon .button{grid-column:1}.footer-inner{flex-direction:column;gap:10px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
