@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/fraunces-vietnamese-600-normal.BjlAJixd.woff2)format("woff2"),url(/_astro/fraunces-vietnamese-600-normal.DlAl5EAR.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:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/fraunces-latin-ext-600-normal.BtzmzP0X.woff2)format("woff2"),url(/_astro/fraunces-latin-ext-600-normal.B0Dy4lqi.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:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/fraunces-latin-600-normal.BFCDtZfi.woff2)format("woff2"),url(/_astro/fraunces-latin-600-normal.DL5QCzvS.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:Fraunces;font-style:italic;font-display:swap;font-weight:300;src:url(/_astro/fraunces-vietnamese-300-italic.DRw_6I9J.woff2)format("woff2"),url(/_astro/fraunces-vietnamese-300-italic.DShBZDFq.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:Fraunces;font-style:italic;font-display:swap;font-weight:300;src:url(/_astro/fraunces-latin-ext-300-italic.DeKB9Eki.woff2)format("woff2"),url(/_astro/fraunces-latin-ext-300-italic.IfNxATye.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:Fraunces;font-style:italic;font-display:swap;font-weight:300;src:url(/_astro/fraunces-latin-300-italic.Ck6y_GI5.woff2)format("woff2"),url(/_astro/fraunces-latin-300-italic.BHRYWiFF.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}:root{--pine:#2d4a3e;--pine-2:#7ec89b;--amber:#c8873a;--amber-2:#e8b44c;--cream:#f7f3ec;--paper:#fffdf9;--sand:#e8dcc8;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--section-y:clamp(3rem, 8vw, 6rem);--fs-sm:.875rem;--fs-base:1rem;--fs-lg:clamp(1.125rem, .9rem + .9vw, 1.375rem);--fs-xl:clamp(1.5rem, 1rem + 2vw, 2.25rem);--fs-2xl:clamp(2rem, 1.2rem + 3.4vw, 3.25rem);--fs-display:clamp(2.4rem, 1.3rem + 4.6vw, 4rem);--radius-card:16px;--radius-feature:24px;--radius-pill:999px;--shadow-sm:0 1px 2px #1e28200f, 0 2px 8px #1e28200f;--shadow-md:0 4px 12px #1e28201a, 0 12px 28px #1e28201a;--duration-fast:.18s;--duration-base:.26s;--ease-out-curve:cubic-bezier(.23, 1, .32, 1);--ease-in-out-curve:cubic-bezier(.77, 0, .175, 1);--ease:var(--duration-fast) var(--ease-out-curve);--ease-out:var(--duration-base) var(--ease-out-curve);--measure:66ch;--bp-guide:64rem;--header-height:4.25rem;--sticky-offset:calc(var(--header-height) + var(--space-3));--surface:#f7f3ec;--surface-card:#fffdf9;--surface-pine:#2d4a3e;--on-surface:#1e2820;--on-surface-muted:#4a5750;--on-pine:#f2eee6;--border:#e8dcc8;--action-bg:#e8b44c;--action-fg:#1e2820;--focus-ring:#1e5a3e;--focus-ring-invert:#e8b44c;--wordmark:#2d4a3e;--wordmark-on-pine:#f2eee6;--header-bg:color-mix(in srgb, var(--surface) 88%, transparent);--card-bg:var(--surface-card);--card-border:var(--border);--home-ink:#17332a;--home-paper:#fbf7ef;--home-on-dark:#fffaf1;--home-on-dark-muted:#fffaf1bd;--home-on-dark-subtle:#fffaf19e;--home-dark:#203b31;--home-dark-strong:#191d1b;--home-muted:#54665f;--home-muted-2:#617169;--home-feature-bg:#efe8da;--home-bento-bg:#fffaf2;--home-free-bg:#dcece2;--home-free-fg:#23473a;--home-countdown-bg:#f7dfd4;--home-custom-bg:#e3efe7;--home-accent-coral:#ac4e36;--device-shell:#171917;--home-cta-bg:#fffaf2;--home-cta-ink:#17332a;--tint-forest:#e8f0ed;--tint-forest-fg:#2d4a3e;--tint-purple:#f5eef5;--tint-purple-fg:#8b5e8b;--tint-blue:#e8f2f8;--tint-blue-fg:#3a6b8b;--tint-amber:#fbf0dc;--tint-amber-fg:#936229;--tint-brown:#f5ede8;--tint-brown-fg:#7a3d2e;--tint-teal:#e8f4f5;--tint-teal-fg:#2d5e6b;--tint-olive:#f5f0e8;--tint-olive-fg:#6b5e2d;--tint-green:#e8f5ec;--tint-green-fg:#3a6b4a;--tint-indigo:#eeeef5;--tint-indigo-fg:#5e5e8b}@media (prefers-color-scheme:dark){:root{--pine:#7ec89b;--amber:#e8b44c;--surface:#1a1a1a;--surface-card:#2a2a2a;--surface-pine:#24382f;--on-surface:#e8e0d8;--on-surface-muted:#b8b0a6;--on-pine:#f2eee6;--border:#3a3a3a;--action-bg:#e8b44c;--action-fg:#1e2820;--focus-ring:#7ec89b;--focus-ring-invert:#e8b44c;--wordmark:#7ec89b;--wordmark-on-pine:#f2eee6;--header-bg:color-mix(in srgb, var(--surface) 88%, transparent);--home-ink:#f3eee6;--home-paper:#191d1b;--home-muted:#b8c2bc;--home-muted-2:#b8c2bc;--home-feature-bg:#202522;--home-bento-bg:#292f2b;--home-countdown-bg:#443129;--home-custom-bg:#263b32;--home-cta-bg:#f6efe4;--home-accent-coral:#e08a70}}html{color-scheme:light dark}body{background:var(--surface);color:var(--on-surface)}*,:before,:after{box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:var(--fs-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.65}img{max-width:100%;height:auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}h1,h2,h3,.t-display,.t-h1,.t-h2,.t-h3{letter-spacing:-.035em;text-wrap:balance;overflow-wrap:normal;word-break:normal;hyphens:none;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,system-ui,sans-serif;font-weight:760;line-height:1.04}.t-display{font-size:var(--fs-display);line-height:1.05}h1,.t-h1{font-size:var(--fs-2xl)}h2,.t-h2{font-size:var(--fs-xl)}h3,.t-h3{font-size:var(--fs-lg)}.t-body{font-size:var(--fs-base);line-height:1.65}.t-caption{font-size:var(--fs-sm);color:var(--on-surface-muted)}p{line-height:1.65}.wordmark{color:var(--wordmark);letter-spacing:-.01em;white-space:nowrap;font-family:Fraunces,Georgia,serif;font-weight:600}.wordmark i{font-style:italic;font-weight:300}.wordmark--on-pine{color:var(--wordmark-on-pine)}a{color:var(--wordmark);text-underline-offset:2px;text-decoration-thickness:1px}@media (hover:hover){a:hover{text-decoration-color:var(--action-bg)}}a:active{opacity:.85}a:visited{color:var(--wordmark)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:3px}[disabled],.is-disabled{opacity:.5;pointer-events:none}[disabled]{cursor:not-allowed}.skip-link{z-index:100;top:var(--space-3);left:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-pill);background:var(--action-bg);color:var(--action-fg);transform:translateY(calc(-100% - var(--space-5)));transition:transform var(--ease);font-weight:700;text-decoration:none;position:fixed}.skip-link:focus{transform:translateY(0)}.container{max-width:72rem;padding:0 var(--space-5);margin:0 auto}.measure{max-width:var(--measure)}.tint-forest{--tint:var(--tint-forest);--tint-fg:var(--tint-forest-fg)}.tint-blue{--tint:var(--tint-blue);--tint-fg:var(--tint-blue-fg)}.tint-amber{--tint:var(--tint-amber);--tint-fg:var(--tint-amber-fg)}.tint-teal{--tint:var(--tint-teal);--tint-fg:var(--tint-teal-fg)}.tint-green{--tint:var(--tint-green);--tint-fg:var(--tint-green-fg)}.tint-purple{--tint:var(--tint-purple);--tint-fg:var(--tint-purple-fg)}.tint-brown{--tint:var(--tint-brown);--tint-fg:var(--tint-brown-fg)}.tint-olive{--tint:var(--tint-olive);--tint-fg:var(--tint-olive-fg)}.tint-indigo{--tint:var(--tint-indigo);--tint-fg:var(--tint-indigo-fg)}.section{padding-block:var(--section-y)}.section--cream{background:var(--surface);color:var(--on-surface)}.section--pine{background:var(--surface-pine);color:var(--on-pine);--focus-ring:var(--focus-ring-invert)}.section--pine :is(h1,h2,h3),.section--pine a:not(.cta-pill){color:var(--on-pine)}.section--pine .t-caption{color:#f2eee6c7}.card{background:var(--card-bg);color:var(--on-surface);border:1px solid var(--card-border);border-radius:var(--radius-card);box-shadow:var(--shadow-sm);padding:var(--space-5)}.section--pine .card,.section--pine .card :is(h1,h2,h3){color:var(--on-surface)}.section--pine .card a:not(.cta-pill){color:var(--wordmark)}@media (hover:hover) and (pointer:fine){.card--interactive{transition:transform var(--ease), box-shadow var(--ease)}.card--interactive:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}}.cta-pill{border-radius:var(--radius-pill);background:var(--action-bg);min-height:44px;color:var(--action-fg);font-weight:600;font-size:var(--fs-base);cursor:pointer;box-shadow:var(--shadow-sm);transition:transform var(--ease), box-shadow var(--ease);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.6rem;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.cta-pill:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}}.cta-pill:active{box-shadow:var(--shadow-sm);transform:scale(.97)}.site-header{z-index:20;min-height:var(--header-height);background:var(--header-bg);backdrop-filter:saturate(1.1)blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.site-header-inner{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:var(--header-height);padding-block:.7rem;display:flex}.site-header .logo{min-height:44px;font-size:var(--fs-lg);align-items:center;text-decoration:none;display:inline-flex}.site-header nav{justify-content:flex-end;align-items:center;gap:var(--space-2) clamp(var(--space-2), 3vw, var(--space-5));flex-wrap:wrap;display:flex}.site-header nav>*{white-space:nowrap;flex-shrink:0}.site-header nav a:not(.cta-pill){color:var(--on-surface);align-items:center;min-height:44px;font-weight:500;text-decoration:none;display:inline-flex}.site-header nav a[aria-current=page]:not(.cta-pill){text-decoration:underline;text-decoration-color:var(--action-bg);text-underline-offset:.35rem;text-decoration-thickness:2px}.language-switch{color:var(--on-surface);font-weight:500;font-size:var(--fs-base);justify-content:center;align-items:center;min-width:44px;min-height:44px;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.language-switch:hover{text-decoration:underline}}.site-footer{background:var(--surface-pine);color:var(--on-pine);--focus-ring:var(--focus-ring-invert)}.site-footer .logo{font-size:var(--fs-lg);margin-bottom:var(--space-4);text-decoration:none;display:inline-flex}.site-footer nav{gap:var(--space-5);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.site-footer a{color:var(--on-pine);opacity:.9;align-items:center;min-height:44px;text-decoration:none;display:inline-flex}.site-footer .t-caption{color:#f2eee6c7}@media (hover:hover){.site-footer a:hover{opacity:1;text-decoration:underline}}.legal{max-width:54rem;margin:var(--section-y) auto;background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-sm);padding:clamp(1.5rem,4vw,3rem)}.legal>h1{margin-top:0}.legal h2{margin-top:var(--space-6);font-size:var(--fs-lg)}.legal dl dt{margin-top:var(--space-4);font-weight:600}.legal dl dd{margin:var(--space-1) 0 0;color:var(--on-surface-muted)}.legal table{border-collapse:collapse;width:100%;margin:var(--space-3) 0}.legal th,.legal td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);vertical-align:top}.legal code{background:var(--surface);border-radius:6px;padding:.1em .4em;font-size:.9em}.legal img{border:1px solid var(--border);border-radius:12px}.legal :is(a,code){overflow-wrap:anywhere}.legal .asset-grid{gap:var(--space-3);padding-left:1.2rem;display:grid}.legal .changelog-meta{color:var(--on-surface-muted);font-size:var(--fs-sm);margin:0}.legal .changelog-body{margin-top:var(--space-2)}.legal .changelog-body p{margin:var(--space-2) 0;white-space:pre-line}@media (width<=36rem){.container{padding-inline:var(--space-4)}.site-header nav a:not(.cta-pill),.language-switch{font-size:var(--fs-sm)}.site-header .cta-pill{padding-inline:var(--space-4)}.legal{margin-block:var(--space-4);border-inline:0;border-radius:0}.legal>h1{font-size:clamp(1.75rem,9vw,2rem)}.legal table,.legal tbody,.legal tr,.legal th,.legal td{width:100%;display:block}.legal thead{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.legal tr{padding-block:var(--space-3);border-bottom:1px solid var(--border)}.legal td{padding:var(--space-1) 0;border:0}}.grain{isolation:isolate;position:relative}.grain:before{content:"";z-index:-1;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.contours{isolation:isolate;position:relative;overflow:hidden}.contours>.contour-art{z-index:-1;width:110%;height:auto;color:color-mix(in srgb, var(--on-pine) 14%, transparent);pointer-events:none;position:absolute;inset:-10% -5% auto}.ridge{z-index:1;width:100%;height:clamp(36px,5vw,60px);display:block;position:absolute;bottom:-1px;left:0;right:0}.sticker{background:var(--action-bg);color:var(--action-fg);font-family:inherit;font-weight:700;font-size:var(--fs-sm);box-shadow:var(--shadow-sm);letter-spacing:.01em;border-radius:7px;padding:.4rem .85rem;display:inline-block;transform:rotate(-3deg)}.tick{color:var(--action-bg);font-weight:800}@keyframes pl-float{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}.floaty{animation:6.5s ease-in-out infinite pl-float}@keyframes pl-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.reveal{animation:pl-rise .7s var(--ease-out) both}.reveal.d1{animation-delay:80ms}.reveal.d2{animation-delay:.16s}.reveal.d3{animation-delay:.24s}.reveal.d4{animation-delay:.32s}.js .sr{opacity:0;will-change:opacity, transform;transform:translateY(22px)}.js .sr.is-visible{opacity:1;transition:opacity .6s var(--ease-out-curve), transform .6s var(--ease-out-curve);transition-delay:var(--sr-delay,0s);transform:none}.js .sr-group>*{opacity:0;will-change:opacity, transform;transform:translateY(18px)}.js .sr-group.is-visible>*{opacity:1;transition:opacity .55s var(--ease-out-curve), transform .55s var(--ease-out-curve);transform:none}.js .sr-group.is-visible>:first-child{transition-delay:0s}.js .sr-group.is-visible>:nth-child(2){transition-delay:60ms}.js .sr-group.is-visible>:nth-child(3){transition-delay:.12s}.js .sr-group.is-visible>:nth-child(4){transition-delay:.18s}.js .sr-group.is-visible>:nth-child(5){transition-delay:.24s}.js .sr-group.is-visible>:nth-child(6){transition-delay:.3s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.js .sr,.js .sr.is-visible,.js .sr-group>*,.js .sr-group.is-visible>*{will-change:auto;opacity:1!important;transform:none!important}}
