@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-cyrillic-ext-wght-normal.lLTsRRxN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-vietnamese-wght-normal.qRpaaN48.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-ext-wght-normal.DmpS2jIq.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-wght-normal.eXO_dkmS.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--color-bg: light-dark(#fffcf4, #171713);--color-text: light-dark(#20211f, #f4f1e8);--color-muted: light-dark(#585850, #b9b5a6);--color-surface: light-dark(#ffffff, #22221e);--color-surface-2: light-dark(#f6f1e2, #2b2b26);--color-border: light-dark(#e6dfca, #37372f);--color-accent: light-dark(#f5c928, #ffd84d);--color-accent-soft: light-dark(#fdeea6, #4a4220);--color-accent-strong: light-dark(#7a5c00, #ffd84d);--color-on-accent: #20211f;--color-leaf: light-dark(#438b3d, #7bc474);--color-link: light-dark(#20211f, #f4f1e8);--color-focus: light-dark(#20211f, #ffd84d);--tone-yellow: #f8d649;--tone-pink: #f9bcc9;--tone-blue: #b8dcf5;--tone-green: #d4eb94;--tone-lilac: #dccbf5;--tone-peach: #fbd2b0;--tone-mint: #bfe8d6;--tone-apple: linear-gradient(to bottom, #a8dc7e 0 16.67%, #fbe56a 0 33.33%, #fbbf6e 0 50%, #f68f85 0 66.67%, #c79be0 0 83.33%, #84c3f0 0);--font: "Plus Jakarta Sans Variable", ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--radius: 1rem;--radius-sm: .5rem;--gutter: clamp(1.25rem, 5vw, 3rem);--page: 70rem;--measure: 44rem}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:1.5rem}body{margin:0;background:var(--color-bg);color:var(--color-text);font:400 clamp(1rem,.95rem + .25vw,1.125rem) / 1.65 var(--font);min-height:100vh;display:flex;flex-direction:column}main{flex:1;outline:none}img,svg{max-width:100%;display:block}img{height:auto}h1,h2,h3,h4,h5,h6{line-height:1.2;letter-spacing:-.02em;font-weight:800;text-wrap:balance;margin:0}p{text-wrap:pretty}a{color:var(--color-link);text-decoration-color:var(--color-accent);text-decoration-thickness:.15em;text-underline-offset:.2em}a:hover{text-decoration-color:currentColor}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px;border-radius:4px}ul{margin:0;padding:0;list-style:none}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:-1px;padding:0;border:0}.skip-link{position:absolute;left:1rem;top:-4rem;z-index:100;background:var(--color-accent);color:var(--color-on-accent);padding:.75rem 1.25rem;border-radius:var(--radius-sm);font-weight:700}.skip-link:focus{top:1rem}.wrap{width:min(100% - 2 * var(--gutter),var(--page));margin-inline:auto}.wrap-article{width:min(100% - 2 * var(--gutter),var(--measure));margin-inline:auto}.with-icon{display:inline-flex;align-items:center;gap:.35rem}.site-header{border-bottom:1px solid var(--color-border)}.bar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:1rem 2rem;padding-block:clamp(1.1rem,2.5vw,1.6rem)}.brand{display:block;border-radius:6px}.site-header{--logo-h: 2.5rem}.site-footer{--logo-h: 2.1rem}.logo{height:var(--logo-h);width:auto;color:var(--color-text)}.site-header nav,.site-footer nav{justify-self:center}.site-header nav ul,.site-footer nav ul{position:relative;top:calc(var(--logo-h) * .095)}.site-header nav ul,.site-footer nav ul{display:flex;gap:clamp(.5rem,3vw,2rem)}.site-header nav a,.site-footer nav a{display:inline-flex;min-height:2.75rem;align-items:center;padding-inline:.35rem;text-decoration:none;font-weight:500;position:relative}.site-header nav a:hover,.site-footer nav a:hover{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:.15em;text-underline-offset:.3em}.site-header nav .label{display:inline-grid}.site-header nav .label:after{content:attr(data-label);font-weight:700;height:0;visibility:hidden;overflow:hidden}.site-header nav a:is(:hover,[aria-current=page]){font-weight:700;text-decoration:none}.site-header nav a:is(:hover,[aria-current=page]):after{content:"";position:absolute;inset:auto .35rem .35rem;height:3px;border-radius:3px;background:var(--color-accent)}.tools{justify-self:end}.site-footer{margin-top:clamp(4rem,10vw,7rem);border-top:1px solid var(--color-border);position:relative;overflow:hidden}.site-footer .bar{padding-top:clamp(1.75rem,4vw,2.5rem)}.site-footer .social{display:flex;gap:.25rem;justify-self:end}.site-footer .social a{display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:50%}.wave{position:relative;height:7rem;margin-top:1rem;color:var(--color-accent-soft)}.wave-shape{position:absolute;inset:0;z-index:2;width:100%;height:100%;fill:currentColor;pointer-events:none}.peek{--w: clamp(5.5rem, 9vw, 7.5rem);position:absolute;z-index:1;right:6%;bottom:calc(4.3rem - var(--w) * .4946);width:var(--w)}.mini-lemon{width:100%;height:auto}.bubble{position:absolute;right:0;bottom:calc(100% + .1rem);white-space:nowrap;padding:.3rem .8rem;border-radius:1rem;background:var(--color-surface);color:var(--color-text);border:1.5px solid var(--color-border);box-shadow:0 2px 6px #00000014;font-weight:700;font-size:.95rem;line-height:1.5;opacity:0;scale:.85;transform-origin:70% 100%;pointer-events:none}.bubble:after{content:"";position:absolute;right:2.4rem;bottom:-.38rem;width:.65rem;height:.65rem;background:inherit;border:inherit;border-width:0 1.5px 1.5px 0;rotate:45deg;border-radius:0 0 3px}.peek:hover .bubble{opacity:1;scale:1}.badge{display:inline-block;padding:.1rem .7rem;border-radius:999px;background:var(--tone, var(--tone-yellow));color:#20211f;font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1.6}.badge-link{position:relative;z-index:1;text-decoration:none}.badge-link,.chips a,.button{transition:background-color .15s,color .15s}.badge-link:hover,.chips a:hover,.button:hover{background:var(--tone-deep);color:#20211f;text-decoration:underline;text-underline-offset:.2em}:where(.badge,.chips a,.button){--tone-deep: oklch(from var(--tone, var(--tone-yellow)) calc(l - .1) calc(c*1.6) h)}.tone-yellow{--tone: var(--tone-yellow)}.tone-pink{--tone: var(--tone-pink)}.tone-blue{--tone: var(--tone-blue)}.tone-green{--tone: var(--tone-green)}.tone-lilac{--tone: var(--tone-lilac)}.tone-peach{--tone: var(--tone-peach)}.tone-mint{--tone: var(--tone-mint)}.tone-apple{--tone: var(--tone-apple)}.badge-link.tone-apple:hover{background:var(--tone-apple);filter:saturate(1.4) brightness(.92)}.meta{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;margin:0;color:var(--color-muted);font-size:.9rem;font-weight:500}.meta-item{display:inline-flex;align-items:center;gap:.4rem}.featured{position:relative;margin-top:clamp(2rem,6vw,4.5rem)}.featured>*{min-width:0}.featured{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem clamp(3rem,6vw,5rem)}.featured .media img{width:100%;height:auto;border-radius:var(--radius);background:var(--color-surface-2)}.featured .content{position:relative;display:flex;flex-direction:column;justify-content:center;gap:1.25rem;padding-block:.5rem}.featured h2{font-size:clamp(2rem,1.2rem + 3.2vw,3.4rem)}.featured .excerpt{margin:0;font-size:1.15rem;max-width:34ch}.featured .eyebrow{margin:0}.featured .foot{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.5rem}.go{display:grid;place-items:center;width:3.25rem;height:3.25rem;border-radius:50%;background:var(--color-accent-soft);color:var(--color-text);transition:background-color .2s}.featured:hover .go,.featured:focus-within .go{background:var(--color-accent);color:var(--color-on-accent)}.sparkles{position:absolute;top:-.5rem;right:0;width:5.5rem;color:var(--color-accent);pointer-events:none;overflow:visible}.sparkles .ray{transition:transform .35s ease}.featured:hover .r1,.featured:focus-within .r1{transform:translate(.6px,-2.5px)}.featured:hover .r2,.featured:focus-within .r2{transform:translate(2px,-2px)}.featured:hover .r3,.featured:focus-within .r3{transform:translate(2.5px,-.8px)}@media(min-width:52rem){.featured{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center}}.stretched{text-decoration:none}.stretched:after{content:"";position:absolute;inset:0}.stretched:focus-visible{outline:none}.stretched:focus-visible:after{outline:3px solid var(--color-focus);outline-offset:4px;border-radius:var(--radius)}.stretched:hover{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:.15em;text-underline-offset:.2em}.latest{margin-top:clamp(4rem,10vw,7.5rem)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}.section-head h2{font-size:clamp(1.9rem,1.4rem + 2vw,2.6rem)}.more{display:flex;justify-content:center;margin-top:clamp(2.5rem,5vw,3.5rem)}.accent-link{font-weight:700;font-size:.95rem;min-height:2.75rem}.accent-link svg{color:var(--color-accent-strong)}.post-row{border-bottom:1px solid var(--color-border)}.post-row:last-child{border-bottom:0}.post-row article{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:1.1rem clamp(1.5rem,4vw,2.5rem);padding-block:clamp(1.75rem,3.5vw,2.5rem)}.post-row .thumb img{width:100%;height:auto;border-radius:var(--radius-sm);background:var(--color-surface-2)}.post-row .body{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;min-width:0}.post-row .row-title{font-size:clamp(1.25rem,1.1rem + .7vw,1.6rem)}.post-row .desc{margin:0}.post-row .meta{margin-top:.6rem}.post-row:hover .row-title a{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:.15em;text-underline-offset:.2em}@media(min-width:40rem){.post-row article{grid-template-columns:14.5rem minmax(0,1fr);align-items:start}}.page-title{font-size:clamp(2.2rem,1.5rem + 3vw,3.4rem);margin-block:clamp(2rem,6vw,4rem) 1.5rem}.chips ul{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2.5rem}.button{display:inline-flex;align-items:center;gap:.5rem;min-height:3rem;padding-inline:1.5rem;border-radius:999px;background:var(--tone);color:#20211f;text-decoration:none;font-weight:700}.chips a{display:inline-flex;align-items:center;gap:.35rem;min-height:2.5rem;padding-inline:1rem;border-radius:999px;background:var(--tone);color:#20211f;text-decoration:none;font-weight:600;font-size:.95rem}.chips a[aria-current=page]{background:var(--tone-deep);font-weight:700}.article-head{padding-top:clamp(2rem,6vw,4rem);display:flex;flex-direction:column;gap:1.25rem}.article-head h1{font-size:clamp(2.1rem,1.4rem + 3.4vw,3.4rem)}.crumbs{display:flex;align-items:center;gap:.6rem;margin:0;font-weight:600;font-size:.95rem}.lede{margin:0;font-size:1.2rem;color:var(--color-muted)}.updated{margin:0;font-size:.9rem;color:var(--color-muted)}.hero{margin-block:2.5rem}.wrap-article.hero{width:min(100% - 2 * var(--gutter),var(--page))}.article-head+.prose{margin-top:clamp(3rem,7vw,4.5rem)}.article-head+.hero+.prose{margin-top:clamp(3rem,7vw,4.5rem)}.hero img{width:100%;height:auto;border-radius:var(--radius);background:var(--color-surface-2)}.pager{display:grid;gap:1rem;margin-top:clamp(4rem,8vw,5.5rem);padding-top:2rem;border-top:1px solid var(--color-border)}.pager a{display:flex;flex-direction:column;gap:.15rem;text-decoration:none;padding:.75rem 0}.pager .dir{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted)}.pager .t{font-weight:700;font-size:1.1rem}.pager a:hover .t{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:.15em}.pager .next{text-align:end}@media(min-width:40rem){.pager{grid-template-columns:1fr 1fr;gap:2rem}}.page-simple{padding-bottom:3rem}.prose{font-size:clamp(1.05rem,1rem + .25vw,1.175rem);line-height:1.8;overflow-wrap:break-word}.prose>*+*{margin-top:1.6rem}.prose h2{font-size:1.75rem;margin-top:3.4rem}.prose h3{font-size:1.4rem;margin-top:2.6rem}.prose h4,.prose h5,.prose h6{font-size:1.15rem;margin-top:2rem}.prose h2+*,.prose h3+*{margin-top:1rem}.prose :is(h2,h3,h4,h5,h6){scroll-margin-top:1.5rem}.prose ul,.prose ol{padding-inline-start:1.5rem}.prose ul{list-style:disc}.prose li+li{margin-top:.5rem}.prose li::marker{color:var(--color-leaf);font-weight:700}.prose blockquote{margin-inline:0;padding:.25rem 0 .25rem 1.25rem;border-inline-start:4px solid var(--color-accent);font-size:1.2rem;font-weight:600;line-height:1.5}.prose blockquote p{margin:0}.prose hr{border:0;height:1px;background:var(--color-border);margin-block:2.5rem}.prose a{text-decoration-thickness:.15em;text-decoration-color:var(--color-accent-strong);transition:color .15s,text-decoration-color .15s}.prose a:hover{color:var(--color-accent-strong);text-decoration-color:currentColor}.prose :not(pre)>code{font:.88em var(--mono);background:var(--color-surface-2);padding:.12em .4em;border-radius:.4em;overflow-wrap:anywhere}.prose pre,.astro-code{font:.9rem / 1.6 var(--mono);padding:1.1rem 1.25rem;border-radius:var(--radius-sm);overflow-x:auto;tab-size:2;background:var(--color-surface-2);border:1px solid var(--color-border)}.prose pre:focus-visible{outline-offset:2px}.astro-code,.astro-code span{color:light-dark(var(--shiki-light),var(--shiki-dark))}.astro-code{background:var(--color-surface-2)!important}.prose pre code{font:inherit;background:none;padding:0}.code-block{position:relative}.code-block pre{padding-top:2.6rem}.copy-btn{position:absolute;top:.5rem;right:.5rem;min-height:2rem;padding:.15rem .8rem;border-radius:999px;border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font:600 .8rem var(--font);cursor:pointer}.copy-btn:hover{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent)}.figure{margin-inline:0}.article{overflow-x:clip}.prose>.figure,.prose>.embed,.prose>video,.prose>.table-scroll,.prose>p:has(>img:only-child),.prose>p:has(>video:only-child){--bleed: min(100vw - 2 * var(--gutter), var(--page));width:var(--bleed);max-width:none;margin-inline:calc(50% - var(--bleed) / 2)}.prose>p>img{display:block;max-width:100%;border-radius:var(--radius-sm)}.prose>p:has(>img:only-child)>img,.prose>.figure img{display:block;width:100%;height:auto}.figure img{border-radius:var(--radius-sm);width:100%}.figure figcaption,.embed+figcaption{margin-top:.6rem;font-size:.9rem;color:var(--color-muted);line-height:1.5}.table-scroll{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-sm)}.table-scroll table{border-collapse:collapse;width:100%;min-width:30rem;font-size:.95rem;line-height:1.5}.prose th,.prose td{padding:.7rem 1rem;text-align:start;border-bottom:1px solid var(--color-border)}.prose th{background:var(--color-surface-2);font-weight:700}.prose tr:last-child td{border-bottom:0}.embed{margin-inline:0}.embed iframe,.embed-link{display:block;width:100%;aspect-ratio:16 / 9;border:0;border-radius:var(--radius-sm)}.embed-link{display:grid;place-content:center;justify-items:center;gap:.6rem;padding:1rem;text-align:center;text-decoration:none;background:#1c1d1b;color:#f4f1e8}.embed-ifixit iframe,.embed-ifixit .embed-link{aspect-ratio:4 / 5;max-height:44rem}.prose video{width:100%;height:auto;border-radius:var(--radius-sm);background:#1c1d1b}.embed-link:hover .embed-play{background:var(--color-accent)}.embed-play{width:4rem;height:4rem;border-radius:50%;background:#f4f1e8;position:relative;transition:background-color .2s}.embed-play:after{content:"";position:absolute;inset:50% auto auto 54%;translate:-50% -50%;border:.65rem solid transparent;border-left:1.1rem solid #20211f;border-right:0}.embed-title{font-weight:700}.embed-note{font-size:.8rem;opacity:.75}@media(prefers-reduced-motion:no-preference){.go,.bubble{transition:opacity .2s ease,scale .25s cubic-bezier(.3,1.6,.5,1)}@starting-style{.sparkles{opacity:0}}.sparkles{transition:opacity .6s ease}.site-header .logo :is(.leaf,.leaf-wrap){transform-box:fill-box;transform-origin:0% 100%}.site-header .logo .leaf{animation:leaf-sprout .7s cubic-bezier(.3,1.5,.5,1) .15s both}.site-header .brand:hover .logo .leaf-wrap{animation:leaf-sprout .7s cubic-bezier(.3,1.5,.5,1)}}@keyframes leaf-sprout{0%{transform:scale(0) rotate(-35deg);opacity:0}40%{opacity:1}to{transform:scale(1) rotate(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}@media(prefers-contrast:more){:root{--color-border: light-dark(#6b6757, #a9a594);--color-muted: light-dark(#33332e, #e0dccd)}.badge{outline:1px solid currentColor}}@media(prefers-reduced-transparency:reduce){.site-header{backdrop-filter:none}}@media(forced-colors:active){.badge,.chips a,.button,.copy-btn,.go{border:1px solid CanvasText}.site-header nav a:is(:hover,[aria-current=page]):after{background:Highlight}.wave,.sparkles{display:none}.logo .leaf{fill:currentColor}}@media(max-width:38rem){.bar{grid-template-columns:minmax(0,1fr) auto}.site-header nav{grid-column:1 / -1;grid-row:2;justify-self:start;margin-inline:-.35rem}.site-header nav ul,.site-footer nav ul{top:0}.site-footer nav{justify-self:start;margin-inline:-.35rem}.site-footer .bar{grid-template-columns:1fr}.site-footer .social{justify-self:start}}@media print{@page{margin:1.8cm 2.5cm}:root{color-scheme:light;--color-bg: #fff;--color-text: #000;--color-muted: #333;--gutter: 0px;font-size:9.5pt}body{background:#fff;color:#000;font-size:9.5pt;display:block}.site-header nav,.site-footer,.skip-link,.pager,.copy-btn,.sparkles{display:none!important}.wrap-article.hero{width:auto}.prose>.figure,.prose>.embed,.prose>video,.prose>.table-scroll,.prose>p:has(>img:only-child),.prose>p:has(>video:only-child){width:auto;margin-inline:0}.article img,.article video{display:block;width:100%!important;height:auto!important;max-width:none;max-height:none;object-fit:contain}h1,h2,h3,h4{break-after:avoid}pre,figure,table,blockquote{break-inside:avoid}pre,.astro-code{background:#fff!important;border:1px solid #999;white-space:pre-wrap;overflow:visible}.astro-code,.astro-code span{color:#000!important}.prose a{text-decoration:underline}.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:.85em;word-break:break-all}.embed-link{background:#fff;color:#000;border:1px solid #999;aspect-ratio:auto}.embed-play{display:none}}
