:root{--bg:var(--nf-beige);--surface:var(--nf-paper);--text:var(--nf-ink);--muted:var(--nf-walnut-soft);--faint:var(--nf-walnut-pale);--border:var(--nf-hair-soft);--border-strong:var(--nf-hair);--accent:var(--nf-walnut);--hl-keyword:#9a3b2e;--hl-string:#5f6e38;--hl-number:#9a6a2e;--hl-title:#3c5a78;--content-reading:780px;--content-wide:1000px;--serif:var(--nf-font-serif);--display:var(--nf-font-display);--mono:var(--nf-font-mono);--sans:"Inter", "Pretendard", -apple-system, BlinkMacSystemFont, sans-serif}[data-theme=dark]{--bg:#201a13;--surface:#2a2018;--text:var(--nf-beige);--muted:var(--nf-walnut-pale);--faint:var(--nf-walnut-soft);--border:#f0eee614;--border-strong:#f0eee629;--accent:var(--nf-walnut-pale);--hl-keyword:#e0937a;--hl-string:#aec083;--hl-number:#d8a96b;--hl-title:#8fb0d0}[data-theme=dark] .nf-lockup .n{color:var(--nf-beige)}[data-theme=dark] .nf-lockup .f{color:var(--nf-walnut-pale)}.public{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh;line-height:1.6;transition:background-color .25s,color .25s}::selection{background:var(--text);color:var(--bg)}.wrap-wide{max-width:var(--content-wide);margin:0 auto;padding:0 32px}.site-header{z-index:50;background:color-mix(in oklab, var(--bg) 90%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid #0000;transition:border-color .2s;position:sticky;top:0}.site-header.scrolled{border-bottom-color:var(--border)}.site-header .inner{max-width:var(--content-wide);justify-content:space-between;align-items:center;gap:24px;height:60px;margin:0 auto;padding:0 32px;display:flex}.site-header .brand-nav{align-items:center;gap:32px;display:flex}.site-header .logo{font-family:var(--serif);letter-spacing:-.01em;color:var(--text);font-size:18px;font-weight:600;text-decoration:none}.site-header .pages{gap:24px;display:flex}.site-header .pages a{color:var(--muted);font-size:14px;text-decoration:none;transition:color .15s;position:relative}.site-header .pages a:hover,.site-header .pages a.active{color:var(--text)}.site-header .pages .disabled{color:var(--faint);cursor:not-allowed;opacity:.55;font-size:14px}.site-header .pages .apps-nav-link{align-items:center;gap:6px;display:inline-flex}.site-header .actions{align-items:center;gap:6px;display:flex}.site-header .icon{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:36px;height:36px;text-decoration:none;transition:color .15s,background .15s;display:inline-flex;position:relative}.site-header .icon:hover{color:var(--text);background:var(--border)}.site-header .icon svg{width:18px;height:18px}.site-header .notify .dot{border:2px solid var(--bg);background:#ef4444;border-radius:50%;width:7px;height:7px;position:absolute;top:8px;right:8px}.site-header .posts-btn{background:var(--text);color:var(--bg);font-family:var(--sans);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:8px;margin-left:4px;padding:8px 14px;font-size:13px;font-weight:500;transition:opacity .15s;display:inline-flex}.site-header .posts-btn:hover{opacity:.85}.site-header .posts-btn svg{width:14px;height:14px}.site-header .login-link{color:var(--muted);border:1px solid var(--border-strong);white-space:nowrap;border-radius:999px;margin-left:4px;padding:7px 14px;font-size:13px;text-decoration:none;transition:color .15s,border-color .15s}.site-header .login-link:hover{color:var(--text);border-color:var(--text)}.home-hero{border-bottom:1px solid var(--border);text-align:center;padding:76px 0 64px}.home-hero p{margin:0}.recent{border-bottom:1px solid var(--border);padding:32px 0 24px}.recent .head{justify-content:space-between;align-items:baseline;margin-bottom:16px;display:flex}.recent .head h2{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);margin:0;font-size:11px;font-weight:600}.recent .head a{color:var(--muted);cursor:pointer;font-size:12px;font-family:var(--sans);background:0 0;border:0;align-items:center;gap:4px;text-decoration:none;transition:color .15s,gap .15s;display:inline-flex}.recent .head a:hover{color:var(--text);gap:8px}.recent ol{margin:0;padding:0;list-style:none}.recent ol li{border-bottom:1px dashed var(--border)}.recent ol li:last-child{border-bottom:0}.recent ol a{color:inherit;align-items:baseline;gap:16px;padding:10px 0;text-decoration:none;transition:padding-left .15s;display:flex}.recent ol a:hover{padding-left:6px}.recent .num{font-family:var(--mono);color:var(--faint);font-variant-numeric:tabular-nums;flex-shrink:0;width:20px;font-size:11px}.recent .title{font-family:var(--serif);color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:15px;line-height:1.4;overflow:hidden}.recent .meta{color:var(--faint);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px}.recent .meta .now-tag{background:var(--text);color:var(--bg);letter-spacing:.06em;border-radius:3px;margin-right:6px;padding:1px 6px;font-size:9px;display:inline-block}.apps-page{padding-top:64px;padding-bottom:72px}.apps-hero{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-end;gap:40px;padding:8px 0 42px;display:flex}.apps-hero-copy .nf-eyebrow{color:var(--faint);margin:0 0 18px}.apps-hero h1{font-family:var(--display);letter-spacing:-.035em;margin:0;font-size:clamp(38px,6vw,66px);font-weight:560;line-height:1.08}.apps-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;padding:32px 0 0;display:grid}.app-card{min-width:0;color:inherit;border:1px solid var(--border-strong);background:var(--surface);border-radius:16px;text-decoration:none;transition:transform .2s,border-color .2s,box-shadow .2s;display:block;overflow:hidden}.app-card:hover{color:inherit;border-color:var(--text);box-shadow:0 18px 38px color-mix(in srgb, var(--text) 9%, transparent);transform:translateY(-3px)}.app-poster{aspect-ratio:2;border-bottom:1px solid var(--border);background:#15191d;position:relative;overflow:hidden}.app-poster img{object-fit:cover;border:0;border-radius:0;width:100%;height:100%;transition:transform .35s;display:block}.app-card:hover .app-poster img{transform:scale(1.015)}.app-index{color:#f4f5f1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:34px;height:28px;font-family:var(--mono);letter-spacing:.08em;background:#0a0c0db8;border:1px solid #ffffff2e;border-radius:7px;place-items:center;font-size:10px;font-weight:600;display:grid;position:absolute;top:14px;left:14px}.app-card-body{padding:22px 23px 24px}.app-eyebrow{font-family:var(--mono);color:var(--faint);letter-spacing:.13em;margin:0 0 8px;font-size:9.5px;font-weight:600}.app-title-row{justify-content:space-between;align-items:center;gap:20px;display:flex}.app-title-row h2{font-family:var(--sans);letter-spacing:-.02em;margin:0;font-size:25px;font-weight:600;line-height:1.2}.app-open{color:var(--muted);font-size:20px;transition:transform .18s,color .18s}.app-card:hover .app-open{color:var(--text);transform:translate(3px,-3px)}.app-description{min-height:3.2em;color:var(--muted);font-family:var(--serif);margin:13px 0 20px;font-size:14.5px;line-height:1.6}.app-tags{flex-wrap:wrap;gap:6px;display:flex}.app-tags span{border:1px solid var(--border);color:var(--faint);font-family:var(--mono);letter-spacing:.025em;border-radius:999px;padding:4px 8px;font-size:9px}.crumb{font-family:var(--mono);color:var(--muted);letter-spacing:.02em;padding:24px 0 0;font-size:11.5px}.crumb a{color:var(--muted);text-decoration:none;transition:color .15s}.crumb a:hover{color:var(--text)}.crumb .sep{color:var(--faint);margin:0 8px}article.featured{grid-template-columns:minmax(0,1fr);gap:32px;padding:32px 0 80px;display:grid}article.featured>*,article.featured .main{min-width:0}@media (min-width:1100px){article.featured:has(>aside){grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:80px}article.featured:has(>aside)>*{min-width:0}article.featured:has(>aside) .main{max-width:var(--content-reading)}}.featured-aside{font-family:var(--sans);flex-direction:column;align-self:start;gap:28px;display:flex;position:sticky;top:88px}@media (max-width:1099px){.featured-aside{display:none}}.featured-aside .aside-meta{border-bottom:1px solid var(--border);padding-bottom:16px}.featured-aside .aside-cat{background:var(--text);color:var(--bg);letter-spacing:.08em;text-transform:uppercase;border-radius:4px;margin-bottom:10px;padding:3px 8px;font-size:10px;font-weight:500;display:inline-block}.featured-aside .aside-time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.featured-aside .aside-section{flex-direction:column;gap:8px;display:flex}.featured-aside .aside-label{text-transform:uppercase;letter-spacing:.12em;color:var(--faint);font-size:11px;font-weight:500}.featured-aside .aside-reactions{grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.featured-aside .aside-reactions button{border:1px solid var(--border-strong);background:var(--bg);cursor:pointer;border-radius:8px;flex-direction:column;align-items:center;gap:2px;padding:8px 0;transition:background .15s;display:flex}.featured-aside .aside-reactions button:hover:not(:disabled){background:var(--border)}.featured-aside .aside-reactions button.did{background:var(--border);opacity:.7;cursor:default}.featured-aside .aside-reactions .emoji{font-size:16px}.featured-aside .aside-reactions .count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:10px}.featured-aside .aside-total{color:var(--faint);text-align:center;font-size:11px}.featured-aside .aside-others{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.featured-aside .aside-others li{border-top:1px solid var(--border)}.featured-aside .aside-others li:first-child{border-top:0}.featured-aside .aside-others a{color:var(--text);font-family:var(--serif);justify-content:space-between;align-items:baseline;gap:12px;padding:8px 0;text-decoration:none;transition:padding-left .15s;display:flex}.featured-aside .aside-others a:hover{padding-left:4px}.featured-aside .aside-others .title{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;line-height:1.4;display:-webkit-box;overflow:hidden}.featured-aside .aside-others .date{color:var(--faint);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px}.featured-aside .aside-subscribe{background:var(--text);color:var(--bg);border:0;border-radius:8px;justify-content:center;align-items:center;gap:6px;margin-top:4px;padding:10px 14px;font-size:13px;font-weight:500;text-decoration:none;display:inline-flex}.featured-aside .aside-subscribe:hover{opacity:.85}.featured-aside .aside-subscribe svg{width:14px;height:14px}.article-meta{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.article-meta .meta-left{color:var(--faint);letter-spacing:.02em;font-variant-numeric:tabular-nums;align-items:center;gap:12px;font-size:12px;display:flex}.article-meta .cat{background:var(--text);color:var(--bg);letter-spacing:.08em;text-transform:uppercase;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:500}.article-meta .subscribe{border:1px solid var(--border-strong);color:var(--text);font-family:var(--sans);background:0 0;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:500;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.article-meta .subscribe:hover{background:var(--text);color:var(--bg);border-color:var(--text)}.article-meta .subscribe svg{width:14px;height:14px}.article-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}h1.title{font-family:var(--display);letter-spacing:-.018em;margin:0 0 16px;font-size:clamp(32px,4vw,44px);font-weight:600;line-height:1.15}p.lead{font-family:var(--serif);color:var(--muted);margin:0 0 32px;font-size:19px;line-height:1.55}.body{min-width:0;max-width:100%;font-family:var(--serif);color:var(--text);font-size:18px;line-height:1.75}.body p{margin:0 0 24px}.body p,.body li,.body blockquote,.body figcaption,.body a{overflow-wrap:anywhere}.body h1{font-family:var(--display);letter-spacing:-.01em;margin:48px 0 18px;font-size:28px;font-weight:600;line-height:1.25}.body h2{font-family:var(--display);letter-spacing:-.005em;margin:48px 0 16px;font-size:24px;font-weight:600;line-height:1.3}.body h3{font-family:var(--display);margin:32px 0 12px;font-size:19px;font-weight:600}.body h4{font-family:var(--display);margin:28px 0 10px;font-size:16px;font-weight:600}.body h5{font-family:var(--sans);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:24px 0 8px;font-size:14px;font-weight:600}.body h6{font-family:var(--sans);letter-spacing:.02em;color:var(--faint);margin:24px 0 8px;font-size:13px;font-weight:600}.body h1>a,.body h2>a,.body h3>a,.body h4>a,.body h5>a,.body h6>a{color:inherit;text-decoration:none}.body .heading-anchor{color:var(--faint);opacity:0;margin-left:8px;font-weight:400;text-decoration:none;transition:opacity .15s}.body h1:hover .heading-anchor,.body h2:hover .heading-anchor,.body h3:hover .heading-anchor,.body h4:hover .heading-anchor,.body h5:hover .heading-anchor,.body h6:hover .heading-anchor{opacity:1}.body a{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:3px;transition:text-decoration-color .15s}.body a:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.body code{background:var(--border);border-radius:4px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,JetBrains Mono,monospace;font-size:.88em}.body pre{background:var(--border);-webkit-overflow-scrolling:touch;border-radius:8px;max-width:100%;margin:24px 0;padding:16px 20px;font-size:13px;line-height:1.6;overflow-x:auto}.body pre code{font-size:inherit;background:0 0;padding:0}.body blockquote{border-left:3px solid var(--text);color:var(--muted);margin:24px 0;padding:4px 0 4px 20px;font-style:italic}.body figure,.body p>img{margin:32px auto}:is(.body figure,.body p:has(>img:only-child)){text-align:center}.body img{border:1px solid var(--border);border-radius:8px;max-width:100%;height:auto}.body video,.body iframe{max-width:100%}.body p>img:only-child,.body figure img{margin-left:auto;margin-right:auto;display:block}.body figcaption{color:var(--muted);margin-top:8px;font-size:13px;line-height:1.5}.body ul{margin:0 0 24px;padding-left:24px;list-style:outside}.body ol{margin:0 0 24px;padding-left:24px;list-style:decimal}.body ul ul{list-style:circle}.body ul ul ul{list-style:square}.body li{margin-bottom:6px}.body li>ul,.body li>ol{margin:6px 0 0}.body ul:has(>li.task-list-item){padding-left:4px;list-style:none}.body li.task-list-item{list-style:none}.body li.task-list-item input[type=checkbox]{vertical-align:middle;width:15px;height:15px;accent-color:var(--text);margin:0 8px 0 0}.body hr{border:0;border-top:1px solid var(--border);margin:32px 0}.body .nf-blank-line{height:1.4em}.body table{border-collapse:collapse;width:max-content;max-width:100%;font-family:var(--sans);border:1px solid var(--border-strong);overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;border-radius:8px;margin:28px 0;font-size:14px;line-height:1.5;display:block;overflow-x:auto}.body table th,.body table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:9px 16px}.body table th:last-child,.body table td:last-child{border-right:0}.body table tbody tr:last-child td{border-bottom:0}.body table thead th{background:var(--border);color:var(--text);border-bottom:1px solid var(--border-strong);font-weight:600}.body table tbody tr:nth-child(2n){background:color-mix(in srgb, var(--border) 35%, transparent)}.body sup a,.body [data-footnote-ref]{padding:0 1px;font-size:.75em;font-weight:600;text-decoration:none}.body .footnotes{border-top:1px solid var(--border-strong);font-family:var(--sans);color:var(--muted);margin-top:56px;padding-top:20px;font-size:14px;line-height:1.6}.body .footnotes h2{font-family:var(--sans);text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin:0 0 12px;font-size:13px}.body .footnotes ol{margin:0;padding-left:20px}.body .footnotes li{margin-bottom:8px}.body .footnotes p{margin:0}.body .hljs-comment,.body .hljs-quote{color:var(--faint);font-style:italic}.body .hljs-keyword,.body .hljs-selector-tag,.body .hljs-built_in,.body .hljs-type,.body .hljs-literal{color:var(--hl-keyword)}.body .hljs-string,.body .hljs-attr,.body .hljs-regexp,.body .hljs-meta .hljs-string,.body .hljs-addition{color:var(--hl-string)}.body .hljs-number,.body .hljs-symbol,.body .hljs-bullet{color:var(--hl-number)}.body .hljs-title,.body .hljs-title.function_,.body .hljs-title.class_,.body .hljs-section,.body .hljs-name{color:var(--hl-title)}.body .hljs-tag,.body .hljs-template-tag,.body .hljs-deletion{color:var(--muted)}.body .hljs-emphasis{font-style:italic}.body .hljs-strong{font-weight:700}aside.toc{font-family:var(--sans);flex-direction:column;align-self:start;min-height:0;max-height:calc(100dvh - 112px);display:flex;position:sticky;top:88px}@media (max-width:1099px){aside.toc{display:none}}aside.toc .label{text-transform:uppercase;letter-spacing:.12em;color:var(--faint);border-bottom:1px solid var(--border);flex:none;margin-bottom:14px;padding-bottom:10px;font-size:11px}aside.toc ul{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;scrollbar-gutter:stable;flex-direction:column;gap:4px;min-height:0;margin:0;padding:0 6px 0 0;list-style:none;display:flex;overflow-y:auto}aside.toc ul::-webkit-scrollbar{width:6px}aside.toc ul::-webkit-scrollbar-track{background:0 0}aside.toc ul::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}aside.toc a{color:var(--muted);border-left:2px solid #0000;padding:6px 10px 6px 14px;font-size:13px;line-height:1.4;text-decoration:none;transition:color .15s,border-color .15s;display:block}aside.toc a:hover{color:var(--text)}aside.toc a.active{color:var(--text);border-left-color:var(--text);font-weight:500}aside.toc a.sub{padding-left:28px;font-size:12px}aside.toc .progress{border-top:1px solid var(--border);color:var(--faint);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:8px;margin-top:24px;padding-top:16px;font-size:11px;display:flex}aside.toc .progress-bar{background:var(--border);border-radius:999px;flex:1;height:2px;overflow:hidden}aside.toc .progress-bar>div{background:var(--text);width:0%;height:100%;transition:width .15s}.post-tags{flex-wrap:wrap;gap:8px;margin-top:40px;display:flex}.tag-chip{font-family:var(--mono);letter-spacing:.04em;color:var(--muted);border:1px solid var(--border-strong);border-radius:999px;padding:4px 12px;font-size:11px;text-decoration:none;transition:color .15s,border-color .15s,background .15s}.tag-chip:hover{color:var(--text);border-color:var(--text);background:var(--border)}hr.end-rule{border:0;border-top:1px solid var(--border);margin:56px 0 24px}.reactions{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:48px;display:flex}.reactions button{border:1px solid var(--border-strong);background:var(--bg);cursor:pointer;color:var(--text);font-size:14px;font-family:var(--sans);border-radius:999px;align-items:center;gap:6px;padding:8px 14px;transition:background .15s,transform .15s;display:inline-flex}.reactions button:hover{background:var(--border)}.reactions button:active{transform:scale(.96)}.reactions .count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.reactions .total{color:var(--faint);margin-left:auto;font-size:12px}.comments-section{border-top:1px solid var(--border-strong);padding-top:48px}.comments-section h2{font-family:var(--display);letter-spacing:-.005em;margin:0 0 4px;font-size:22px;font-weight:600}.comments-section .hint{color:var(--faint);margin-bottom:28px;font-size:13px}.site-footer{border-top:1px solid var(--border);margin-top:80px;padding:32px 0 48px}.site-footer .inner{max-width:var(--content-wide);color:var(--muted);justify-content:space-between;align-items:center;margin:0 auto;padding:0 32px;font-size:13px;display:flex}.site-footer a{color:var(--muted);margin-left:20px;text-decoration:none;transition:color .15s}.site-footer a:hover{color:var(--text)}.backdrop{z-index:60;pointer-events:none;background:0 0;transition:background-color .25s;position:fixed;inset:0}.backdrop.open{pointer-events:auto;background:#00000040}[data-theme=dark] .backdrop.open{background:#00000080}.drawer{background:var(--bg);border-left:1px solid var(--border);z-index:70;flex-direction:column;width:min(480px,92vw);transition:transform .25s ease-out;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.drawer.open{transform:translate(0)}.drawer header{border-bottom:1px solid var(--border);-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.drawer h3{font-family:var(--serif);margin:0;font-size:18px;font-weight:500}.drawer-title-mobile,.drawer-page-nav{display:none}.drawer .icon{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;transition:color .15s,background .15s;display:inline-flex}.drawer .icon:hover{color:var(--text);background:var(--border)}.drawer .icon svg{width:16px;height:16px}.drawer .search{border:1px solid var(--border-strong);color:var(--muted);border-radius:8px;align-items:center;gap:10px;margin:16px 24px 0;padding:10px 14px;display:flex}.drawer .search input{font-family:var(--sans);color:var(--text);background:0 0;border:0;outline:0;flex:1;font-size:14px}.drawer .filters{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px;padding:16px 24px;display:flex}.drawer .filters button{border:1px solid var(--border-strong);color:var(--muted);cursor:pointer;font-size:12px;font-family:var(--sans);letter-spacing:.01em;background:0 0;border-radius:999px;padding:5px 12px;transition:background .15s,color .15s,border-color .15s}.drawer .filters button:hover{color:var(--text);border-color:var(--text)}.drawer .filters button.active{background:var(--text);color:var(--bg);border-color:var(--text)}.drawer .list{flex:1;padding:16px 0 32px;overflow-y:auto}.drawer .year-label{text-transform:uppercase;letter-spacing:.12em;color:var(--faint);padding:16px 24px 8px;font-size:11px}.drawer .item{cursor:pointer;color:inherit;align-items:baseline;gap:16px;padding:10px 24px;text-decoration:none;transition:background .12s;display:flex}.drawer .item:hover{background:var(--border)}.drawer .item .date{color:var(--faint);font-variant-numeric:tabular-nums;flex-shrink:0;width:48px;font-size:12px}.drawer .item .title{font-family:var(--serif);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:15px;overflow:hidden}.drawer .item .read{color:var(--faint);font-variant-numeric:tabular-nums;font-size:11px}@media (max-width:800px){.site-header .pages,.site-header .drawer-search-trigger,.site-header .posts-btn span.text{display:none}.site-header .posts-btn{padding:8px 10px}.drawer-title-desktop{display:none}.drawer-title-mobile{display:inline}.drawer-page-nav{border-bottom:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:16px 24px;display:grid}.drawer-page-nav a,.drawer-page-nav .disabled{border:1px solid var(--border-strong);min-height:42px;color:var(--muted);border-radius:8px;align-items:center;padding:8px 12px;font-size:14px;text-decoration:none;display:flex}.drawer-page-nav a.active{background:var(--text);border-color:var(--text);color:var(--bg)}.drawer-page-nav .disabled{color:var(--faint);opacity:.55}.site-footer .inner{flex-direction:column;align-items:flex-start;gap:12px;padding:0 20px}.site-footer a{margin:0 16px 0 0}.wrap-wide,.site-header .inner{padding:0 20px}.apps-page{padding-top:42px;padding-bottom:48px}.apps-hero{flex-direction:column;align-items:flex-start;gap:28px;padding-bottom:32px}.apps-gallery{grid-template-columns:1fr;gap:18px;padding-top:24px}.app-description{min-height:0}.about-page{padding:44px 20px 56px!important}}@media (max-width:640px){.crumb{overflow-wrap:anywhere;padding-top:18px;line-height:1.7}article.featured{gap:24px;padding-top:24px;padding-bottom:56px}.article-meta{flex-wrap:wrap;align-items:flex-start;gap:12px;margin-bottom:18px}.article-meta .meta-left{flex-wrap:wrap;gap:8px;line-height:1.6}.article-actions{flex-wrap:wrap;gap:8px;display:flex}h1.title{letter-spacing:-.015em;font-size:30px;line-height:1.2}p.lead{margin-bottom:28px;font-size:17px;line-height:1.65}.body{font-size:17px;line-height:1.78}.body h1{margin-top:40px;font-size:25px}.body h2{margin-top:40px;font-size:22px}.body h3{margin-top:28px;font-size:18px}.body figure,.body p>img{margin-top:24px;margin-bottom:24px}.body blockquote{padding-left:16px}.body table{margin:24px 0;font-size:12.5px}.body table th,.body table td{padding:8px 12px}hr.end-rule{margin-top:44px}.reactions{margin-bottom:40px}.comments-section{padding-top:40px}}@media (max-width:480px){.site-header .inner{gap:8px;padding:0 12px}.site-header .actions{gap:2px}.site-header .login-link{margin-left:0;padding:6px 10px}.site-header .admin-write{display:none!important}.wrap-wide{padding-left:16px;padding-right:16px}.home-hero{padding-top:56px;padding-bottom:48px}.recent ol a{gap:10px}.recent .meta{font-size:10px}.apps-page{padding-top:34px}.apps-hero h1{font-size:36px}.app-card-body{padding:19px 18px 21px}.app-title-row h2{font-size:22px}.drawer{width:100vw}.drawer header,.drawer-page-nav,.drawer .filters{padding-left:18px;padding-right:18px}.drawer .search{margin-left:18px;margin-right:18px}.drawer .item{padding-left:18px;padding-right:18px}.about-page{padding-left:16px!important;padding-right:16px!important}}
