@font-face{font-family:Covered By Your Grace;src:url(/fonts/covered-by-your-grace-400.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Google Sans Flex;src:url(/fonts/google-sans-flex-latin-wght-normal.woff2)format("woff2");font-style:normal;font-weight:1 1000;font-display:swap}@font-face{font-family:Space Mono;src:url(/fonts/space-mono-latin-400-normal.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Sans Thai;src:url(/fonts/ibm-plex-sans-thai-thai-400-normal.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap;unicode-range:U+E00-E7F}@font-face{font-family:IBM Plex Sans Thai;src:url(/fonts/ibm-plex-sans-thai-thai-500-normal.woff2)format("woff2");font-style:normal;font-weight:500;font-display:swap;unicode-range:U+E00-E7F}:root{color-scheme:dark;--bg:#0b0908;--surface:#151210;--edge:#2e2822;--ink:#efe9dc;--ink-2:#a9a297;--ink-3:#877f75;--accent:#e4581f;--accent-hover:#f07a45;--shadow:0 0 0;--shadow-a:.6;--shadow-a2:.4;--font-sans:"Google Sans Flex", "IBM Plex Sans Thai", system-ui, sans-serif;--font-mono:"Space Mono", "IBM Plex Sans Thai", ui-monospace, monospace}:root[data-theme=light]{color-scheme:light;--bg:#f1ece3;--surface:#faf7f1;--edge:#ddd5c8;--ink:#1c1814;--ink-2:#564f48;--ink-3:#6d655c;--accent:#b4431a;--accent-hover:#a83e17;--shadow:30 25 20;--shadow-a:.16;--shadow-a2:.08}*{box-sizing:border-box}html{background:var(--bg);color:var(--ink);font-family:var(--font-sans)}body{margin:0;font-size:1rem;line-height:1.7}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}a:hover:active{color:var(--accent-hover)}p a,.prose a{text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--ink-3) 75%, transparent);text-underline-offset:.22em}p a:hover,.prose a:hover{text-decoration-color:currentColor}button{font:inherit;color:inherit;cursor:pointer}kbd{box-sizing:border-box;vertical-align:middle;min-width:20px;height:20px;font-family:var(--font-mono);color:var(--ink-2);background:color-mix(in srgb, var(--ink) 4%, transparent);border:1px solid var(--edge);border-bottom-width:2px;border-radius:4px;place-items:center;padding:0 5px;font-size:11px;line-height:1;display:inline-grid}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}::selection{background:var(--ink-2);color:var(--bg)}.now{color:var(--accent)}:lang(th){letter-spacing:normal}.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}.figure{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.small{color:var(--ink-3);font-size:.875rem}.theme-toggle{width:40px;height:40px;color:var(--ink-3);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:inline-grid}.theme-toggle:hover{color:var(--accent)}.theme-toggle:focus-visible{outline-offset:2px}.theme-toggle svg{display:block;overflow:visible}.theme-toggle .bite{transition:transform .35s cubic-bezier(.3,.8,.25,1)}:root[data-theme=light] .theme-toggle .bite{transform:translate(12px,-12px)}.page{max-width:720px;margin:0 auto;padding:0 24px 96px}.page-top{z-index:3;background:color-mix(in srgb, var(--bg) 82%, transparent);backdrop-filter:blur(2px);justify-content:space-between;align-items:center;gap:16px;min-height:80px;margin:0 -24px 24px;padding:0 24px;display:flex;position:sticky;top:0}[id]{scroll-margin-top:96px}.page-top .theme-toggle{margin-right:-10px}.home-logo{height:40px;color:var(--ink);border-radius:6px;flex-shrink:0;align-items:center;gap:6px;margin-left:-6px;padding:0 6px;display:inline-flex}.home-logo .logo-wordmark{letter-spacing:1px;transform-origin:0;margin-right:8px;font-family:Covered By Your Grace,cursive;font-size:21px;font-weight:400;line-height:1;transform:translateY(2px)scaleX(1.1)}.home-logo:hover,.home-logo:focus-visible{color:var(--ink)}.home-logo .logo-dot{background:var(--accent);border-radius:50%;width:5px;height:5px;margin:12px 0 0 -5px;transition:transform .2s cubic-bezier(.34,1.4,.64,1) 80ms;display:inline-block;transform:scale(0)}.home-logo:hover .logo-dot,.home-logo:focus-visible .logo-dot{transform:scale(1)}a.back{color:var(--ink-3);font-size:.875rem;text-decoration:none}a.back:hover{color:var(--ink)}.menu{gap:20px;margin-left:auto;margin-right:8px;font-size:.875rem;display:flex}.menu a{color:var(--ink-3);padding:8px 0;text-decoration:none}.menu a:hover{color:var(--accent)}.menu a[aria-current=page]{color:var(--ink)}.page h1{text-wrap:balance;margin:0 0 16px;font-size:clamp(2rem,5vw,2.5rem);font-weight:500;line-height:1.15}.page h2{margin:48px 0 12px;font-size:1.375rem;font-weight:500;line-height:1.35}.page h3{margin:28px 0 12px;font-size:1.125rem;font-weight:500;line-height:1.4}.page p{margin:0 0 1em}.lead{color:var(--ink-2);max-width:600px;font-size:1.125rem}.muted{color:var(--ink-3)}.meta{color:var(--ink-3);font-size:.875rem}.rule{border:0;border-top:1px solid var(--edge);margin:40px 0}.rows{margin:0;padding:0;list-style:none}.rows>li{border-bottom:1px solid var(--edge);justify-content:space-between;align-items:baseline;gap:12px 24px;padding:14px 0;display:flex}.rows .what{min-width:0}.rows .what>p{margin:0}.rows .title{color:var(--ink);line-height:1.5}.rows .title a{color:var(--ink);text-decoration:none}.rows .title a:hover{color:var(--accent)}.rows .what>.where{color:var(--ink-3);margin-top:2px;font-size:.875rem}.rows .what>.detail{color:var(--ink-2);max-width:36rem;margin-top:8px;font-size:.9375rem;line-height:1.55}.rows .when{color:var(--ink-3);white-space:nowrap;text-align:right;margin:0;font-size:.875rem}.rows.quiet .title,.rows.quiet .title a{color:var(--ink-2)}.rows.quiet .title a:hover{color:var(--accent)}.chips{flex-wrap:wrap;gap:6px;margin:16px 0 0;padding:0;list-style:none;display:flex}.chips li{color:var(--ink-2);background:color-mix(in srgb, var(--ink) 6%, transparent);border:1px solid color-mix(in srgb, var(--ink) 9%, transparent);border-radius:5px;padding:2px 9px;font-size:.8125rem;line-height:1.4}.prose{font-size:1.0625rem}.prose h2{margin-top:40px}.prose ul,.prose ol{padding-left:1.4em}.prose blockquote{border-left:3px solid var(--ink-3);background:color-mix(in srgb, var(--ink) 4%, transparent);color:var(--ink-2);border-radius:0 8px 8px 0;margin:1.5em 0;padding:.7em 1.1em}.prose blockquote p:last-child{margin-bottom:0}.prose pre{border:1px solid var(--edge);background:color-mix(in srgb, var(--ink) 5%, transparent);border-radius:8px;padding:16px 20px;font-size:.875rem;line-height:1.6;overflow-x:auto}.prose code{font-family:var(--font-mono);font-size:.85em}.prose :not(pre)>code{background:color-mix(in srgb, var(--ink) 7%, transparent);border:1px solid color-mix(in srgb, var(--ink) 10%, transparent);color:var(--ink);white-space:nowrap;border-radius:5px;padding:.12em .45em}.prose li>code:first-child{margin-right:.15em}.prose img{border-radius:8px;max-width:100%;height:auto}.prose figure{margin:2em 0;container-type:inline-size}.prose figcaption{color:var(--ink-3);margin-top:10px;font-size:.8125rem}.prose hr{border:0;border-top:1px solid var(--edge);margin:2.5em 0}.prose table{border-collapse:collapse;width:100%;font-size:.9375rem}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--edge);padding:8px 12px 8px 0}@media (width<=600px){.rows>li{flex-direction:column;align-items:flex-start;gap:6px}.rows .when{text-align:left;order:-1}.page-top{flex-wrap:wrap;row-gap:0;min-height:0;padding-top:12px;padding-bottom:8px}.menu{flex-wrap:wrap;order:3;gap:16px;width:100%;margin:0}}@media (prefers-reduced-motion:no-preference){.page main{animation:.56s cubic-bezier(.16,.84,.24,1) both rise}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation:none!important}}
