@font-face{font-family:battambang;src:url(../media/battambang_regular-s.p.2nynfis91h0oc.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:battambang;src:url(../media/battambang_bold-s.p.29ap4_dd-0dca.woff2)format("woff2");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:battambang Fallback;src:local(Arial);ascent-override:110.51%;descent-override:53.04%;line-gap-override:0.0%;size-adjust:110.46%}.fXhURq_className{font-family:battambang,battambang Fallback}.fXhURq_variable{--font-battambang:"battambang", "battambang Fallback"}
@font-face{font-family:moul;src:url(../media/moul_light-s.p.07n-jitbbu116.woff2)format("woff2");font-display:swap}@font-face{font-family:moul Fallback;src:local(Arial);ascent-override:122.25%;descent-override:58.68%;line-gap-override:1.81%;size-adjust:99.86%}.mycGwW_className{font-family:moul,moul Fallback}.mycGwW_variable{--font-moul:"moul", "moul Fallback"}
:root{--paper:#f3f5f2;--paper-deep:#e7ece8;--sheet:#fbfaf7;--ink:#16232e;--ink-soft:#4d5c66;--jade:#0e7a68;--jade-deep:#0a5f51;--saffron:#e8a317;--saffron-ink:#8a5d00;--danger:#a3361f;--hairline:#d5dcd7;--mono:ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, monospace;--text:var(--font-battambang), "Battambang", system-ui, sans-serif;--display:var(--font-moul), "Moul Light", var(--text);--measure:70ch;--radius:8px}*{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;scroll-padding-top:5rem}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--paper);color:var(--ink);font:400 1.0625rem/1.75 var(--text);margin:0}html[lang=km] body{line-height:1.95}a{color:var(--jade-deep);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--jade);outline-offset:3px;border-radius:4px}.icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:1.15em;height:1.15em}.sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{position:absolute;left:-9999px}.skip:focus{background:var(--ink);color:var(--paper);z-index:10;padding:.5rem 1rem;top:1rem;left:1rem}.wrap{max-width:74rem;margin:0 auto;padding-left:1.5rem;padding-right:1.5rem}h2{margin:0 0 1rem;font-size:1.75rem;line-height:1.45}h3{margin:2rem 0 .5rem;font-size:1.2rem;line-height:1.5}p,ul,ol{margin:0 0 1rem}li{margin-bottom:.35rem}code{font:.9em/1.5 var(--mono);background:var(--paper-deep);border-radius:4px;padding:.1em .35em}.km{font-family:var(--text)}.top{z-index:5;background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--hairline);position:sticky;top:0}.top-inner{align-items:center;gap:1.5rem;padding-top:.65rem;padding-bottom:.65rem;display:flex}.brand{color:var(--ink);white-space:nowrap;align-items:center;gap:.6rem;font-weight:700;text-decoration:none;display:flex}.brand img{border-radius:7px;width:1.85rem;height:1.85rem}.wordmark{letter-spacing:-.005em;font-size:1.05rem}.wordmark span{color:var(--ink-soft);font-weight:400}.top nav{align-items:center;gap:1.25rem;margin-left:auto;display:flex}.top nav a{color:var(--ink);align-items:center;gap:.4rem;font-size:.95rem;text-decoration:none;display:inline-flex}.top nav a:hover{color:var(--jade-deep)}.top nav a[aria-current=page]{color:var(--jade-deep);box-shadow:inset 0 -2px 0 var(--jade);font-weight:700}.top nav a{padding:.2rem 0}html[lang=km] .top nav a{font-size:1rem}.top nav .lang{border:1px solid var(--hairline);border-radius:999px;padding:.1rem .75rem}.top nav .lang:hover{border-color:var(--jade)}.hero{grid-template-columns:minmax(0,1fr) minmax(0,26rem);align-items:start;gap:2.5rem;padding-top:1.75rem;padding-bottom:1.5rem;display:grid}.name{font:400 clamp(2.6rem, 6vw, 4.75rem)/1.55 var(--display);letter-spacing:.01em;margin:0}.detected{padding:0 .22em;display:inline-block;position:relative}.detected .quad{width:calc(100% + .04em);height:calc(100% - .02em);position:absolute;top:.1em;left:-.02em;overflow:visible;transform:rotate(-1.2deg)}.detected .quad rect{fill:color-mix(in srgb, var(--jade) 6%, transparent);stroke:var(--jade);stroke-width:2.5px}.marker{background:var(--saffron);width:2rem;height:2rem;color:var(--ink);font:700 1rem/1 var(--text);box-shadow:0 0 0 3px var(--paper);border-radius:50%;place-items:center;display:grid;position:absolute;top:-.2rem;left:-.9rem}@media (prefers-reduced-motion:no-preference){.hero[data-ready] .quad rect{stroke-dasharray:1;stroke-dashoffset:1px;animation:1s cubic-bezier(.6,0,.3,1) .25s forwards draw}.hero[data-ready] .marker{opacity:0;animation:.35s cubic-bezier(.3,1.6,.5,1) 1.15s forwards pop;transform:scale(.4)}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes pop{to{opacity:1;transform:none}}.reading{color:var(--ink-soft);margin:.6rem 0 0;font-size:.95rem}.lead{max-width:42ch;margin:.9rem 0 1.25rem;font-size:clamp(1.05rem,1.8vw,1.25rem);line-height:1.6}html[lang=km] .lead{max-width:38ch;line-height:1.85}.actions{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;display:flex}.actions a{align-items:center;gap:.45rem;font-size:.95rem;display:inline-flex}.hero-shots{aspect-ratio:1/.9;margin:0;padding:0;list-style:none;position:relative}.shot{outline:none;transition:transform .25s cubic-bezier(.3,0,.2,1);position:absolute}.shot-document{z-index:1;width:56%;top:6%;left:0;transform:rotate(-5deg)}.shot-receipt{z-index:2;width:39%;top:0;right:1%;transform:rotate(4deg)}.shot-sign{z-index:3;width:64%;bottom:0;left:17%;transform:rotate(-1.5deg)}.shot:hover,.shot:focus-within{z-index:5;transform:translateY(-6px)}.shot-link{color:inherit;outline:none;text-decoration:none;display:block}a.shot-link{cursor:pointer}.shot-link:focus-visible figure{outline:3px solid var(--jade);outline-offset:3px}.shot-photo{position:relative}.shot-photo svg{pointer-events:none;border-radius:3px;width:100%;height:100%;position:absolute;inset:0}.shot-photo polygon{fill:color-mix(in srgb, var(--jade) 14%, transparent);stroke:var(--jade);stroke-width:1.5px;vector-effect:non-scaling-stroke;stroke-linejoin:round;transition:fill .2s}.shot:hover .shot-photo polygon,.shot:focus-within .shot-photo polygon{fill:color-mix(in srgb, var(--saffron) 30%, transparent);stroke:var(--saffron-ink)}@media (prefers-reduced-motion:no-preference){.shot-photo polygon{stroke-dasharray:1;stroke-dashoffset:1px;fill-opacity:0}.hero[data-ready] .shot-photo polygon{animation:.45s cubic-bezier(.6,0,.3,1) forwards box-in}}@keyframes box-in{to{stroke-dashoffset:0;fill-opacity:1}}.shot figure{background:var(--sheet);border:1px solid var(--hairline);border-radius:6px;margin:0;padding:.45rem .45rem .15rem;box-shadow:0 14px 30px -16px #16232e73,0 2px 5px #16232e14}.shot img,.shot-placeholder{object-fit:cover;border-radius:3px;width:100%;display:block}.shot-document :is(img,.shot-placeholder){aspect-ratio:3/4}.shot-receipt :is(img,.shot-placeholder){aspect-ratio:9/16}.shot-sign :is(img,.shot-placeholder){aspect-ratio:16/10}.shot-placeholder{text-align:center;border:1px dashed color-mix(in srgb, var(--ink-soft) 45%, transparent);color:var(--ink-soft);background:var(--paper-deep);place-content:center;justify-items:center;gap:.4rem;padding:.75rem;font-size:.85rem;line-height:1.5;display:grid}.shot-placeholder .icon{width:1.75rem;height:1.75rem}.shot-placeholder code{word-break:break-all;background:0 0;font-size:.7rem}.shot figcaption{color:var(--ink-soft);justify-content:space-between;align-items:baseline;gap:.5rem;padding:.35rem .15rem .25rem;font-size:.85rem;display:flex}.shot-meta{color:var(--jade-deep);white-space:nowrap;font-size:.75rem}.hero-side{min-width:0}.shot-credit{color:var(--ink-soft);margin:1.25rem 0 0;font-size:.72rem;line-height:1.55}html[lang=km] .shot-credit{line-height:1.8}a.shot-link:hover .shot-meta{text-decoration:underline}.shot .marker{top:-.7rem;left:-.7rem}@media (prefers-reduced-motion:no-preference){.hero[data-ready] .shot-document .marker{animation-delay:1.3s}.hero[data-ready] .shot-receipt .marker{animation-delay:1.42s}.hero[data-ready] .shot-sign .marker{animation-delay:1.54s}}@media (prefers-reduced-motion:reduce){.shot{transition:none}}.btn{border:1px solid var(--jade-deep);border-radius:var(--radius);background:var(--jade-deep);color:#fff;min-height:2.5rem;font:700 .95rem/1.4 var(--text);cursor:pointer;align-items:center;gap:.45rem;padding:.35rem 1rem;text-decoration:none;display:inline-flex}.btn:hover{background:var(--jade);border-color:var(--jade);text-decoration:none}.btn.quiet{background:var(--paper);color:var(--ink);border-color:var(--hairline);font-weight:400}.btn.quiet:hover{border-color:var(--jade);color:var(--jade-deep)}.btn:disabled{opacity:.55;cursor:progress}.demo{padding-top:0;padding-bottom:4rem}.demo-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;margin-bottom:.5rem;display:flex}.demo-head h2{margin:0}.demo-head p{max-width:60ch;color:var(--ink-soft);margin:0}.status{color:var(--ink-soft);align-items:center;gap:.5rem;font-size:.9rem;display:inline-flex}.status:before{content:"";background:var(--hairline);border-radius:50%;width:.6rem;height:.6rem}.status[data-state=ok]:before{background:var(--jade)}.status[data-state=loading]:before{background:var(--saffron)}.status[data-state=offline]:before{background:var(--danger)}.drop-wrap{margin:0 0 1.25rem}.drop{cursor:pointer;border:1.5px dashed color-mix(in srgb, var(--jade) 40%, var(--hairline));border-radius:var(--radius);background:var(--paper);align-items:center;gap:.85rem;padding:.7rem .75rem .7rem .7rem;transition:border-color .15s,background-color .15s;display:flex;position:relative}.drop:hover,.drop[data-over]{border-color:var(--jade);background:color-mix(in srgb, var(--jade) 6%, var(--paper))}.drop-icon{background:color-mix(in srgb, var(--jade) 12%, var(--paper));width:2.5rem;height:2.5rem;color:var(--jade-deep);border-radius:8px;flex:none;place-items:center;display:grid}.drop-icon .icon{width:1.25rem;height:1.25rem}.drop-text{flex-direction:column;flex:1;min-width:0;line-height:1.35;display:flex}.drop-text strong{font-size:1rem}.drop-text span{color:var(--ink-soft);font-size:.85rem}.drop .btn{border-color:var(--jade-deep);background:var(--jade-deep);color:#fff;flex:none;min-height:2.25rem;padding:.25rem .9rem;font-size:.9rem;font-weight:700}.drop-wrap .limits{color:var(--ink-soft);margin:.4rem .15rem 0;font-size:.78rem;line-height:1.5}@media (max-width:420px){.drop{flex-wrap:wrap}.drop .btn{justify-content:center;width:100%}}.drop input[type=file]{opacity:0;width:1px;height:1px;position:absolute}.drop:focus-within{outline:2px solid var(--jade);outline-offset:3px}.notice{border-left:3px solid var(--saffron);background:color-mix(in srgb, var(--saffron) 9%, var(--paper));border-radius:0 6px 6px 0;margin:0 0 1rem;padding:.75rem 1rem}.notice.error{border-left-color:var(--danger);background:color-mix(in srgb, var(--danger) 7%, var(--paper))}.sample-note{color:var(--ink-soft);margin:0 0 .75rem;font-size:.925rem}.reader{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}.reader-side{flex-direction:column;gap:1rem;min-width:0;display:flex;position:sticky;top:4.5rem}.reader-side .mat{position:static}.reader-side .drop-wrap{margin:0}.mat{background:var(--paper-deep);border:1px solid var(--hairline);border-radius:var(--radius);padding:clamp(.6rem,2vw,1.25rem);position:sticky;top:4.5rem}.viewer{background:var(--sheet);box-shadow:0 1px 0 var(--hairline), 0 12px 28px -18px #16232e73;line-height:0;position:relative}.viewer img{width:100%;height:auto;display:block}.viewer svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.viewer .line polygon{fill:color-mix(in srgb, var(--jade) 9%, transparent);stroke:var(--jade);stroke-width:2px;vector-effect:non-scaling-stroke}.viewer .line.low polygon{stroke:var(--saffron)}.viewer .line.active polygon{fill:color-mix(in srgb, var(--saffron) 24%, transparent);stroke:var(--saffron-ink);stroke-width:3px}.viewer .num{pointer-events:none}.viewer .num circle{fill:var(--saffron);stroke:var(--sheet);stroke-width:2px;vector-effect:non-scaling-stroke}.viewer .num text{fill:var(--ink);font-family:var(--text);text-anchor:middle;dominant-baseline:central;font-weight:700}@media (prefers-reduced-motion:no-preference){.viewer[data-fresh] .line polygon{stroke-dasharray:1;stroke-dashoffset:1px;opacity:0;animation:draw .55s calc(var(--i) * 70ms) cubic-bezier(.6, 0, .3, 1) forwards, show 10ms calc(var(--i) * 70ms) forwards}.viewer[data-fresh] .num{opacity:0;animation:show .2s calc(var(--i) * 70ms + .45s) forwards}}@keyframes show{to{opacity:1}}.pages{flex-wrap:wrap;gap:.4rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.pages button{border:1px solid var(--hairline);background:var(--paper);min-width:2.4rem;color:var(--ink);font:.9rem/1.6 var(--text);cursor:pointer;border-radius:6px;padding:.2rem .6rem}.pages button[aria-pressed=true]{border-color:var(--jade-deep);background:var(--jade-deep);color:#fff}.pages button[data-failed]{border-color:var(--danger);color:var(--danger)}.panel{flex-direction:column;gap:1rem;min-width:0;display:flex}.panel h3{margin:0;font-size:1.05rem}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;display:flex}.panel-head .meta{color:var(--ink-soft);font-size:.875rem}.tools{flex-wrap:wrap;gap:.5rem;display:flex}.tools.exports{grid-template-columns:repeat(auto-fill,minmax(min(100%,11.5rem),1fr));display:grid}.tools.exports .btn{justify-content:center}.lines{border:1px solid var(--hairline);border-radius:var(--radius);background:var(--paper);margin:0;padding:0;list-style:none}.lines li{border-bottom:1px solid var(--hairline);margin:0}.lines li:last-child{border-bottom:0}.lines li.block-start{border-top:2px solid var(--paper-deep)}.lines li:first-child{border-top:0}.line-row{cursor:default;grid-template-columns:2rem minmax(0,1fr);gap:.75rem;padding:.35rem .8rem;display:grid}.line-row[data-active]{background:color-mix(in srgb, var(--saffron) 14%, var(--paper))}.line-row:focus-visible{outline-offset:-2px}.line-num{background:var(--paper-deep);width:1.7rem;height:1.7rem;font:700 .8rem/1 var(--text);border-radius:50%;place-items:center;margin-top:.35rem;display:grid}.line-row[data-active] .line-num{background:var(--saffron)}.line-text{overflow-wrap:anywhere;font-size:1.1rem;line-height:1.85}.line-meta{color:var(--ink-soft);font-size:.8rem;line-height:1.4;display:block}.line-meta .check{color:var(--saffron-ink);font-weight:700}.fulltext{white-space:pre-wrap;background:var(--sheet);border:1px solid var(--hairline);border-radius:var(--radius);max-height:22rem;font:1.05rem/1.95 var(--text);margin:0;padding:.9rem 1rem;overflow:auto}.hint{color:var(--ink-soft);margin:0;font-size:.875rem}.band{border-top:1px solid var(--hairline);padding-top:3rem;padding-bottom:3rem}.features{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 3rem;margin:0;display:grid}.features div{border-left:2px solid var(--jade);padding-left:1rem}.features dt{margin-bottom:.2rem;font-size:1.1rem;font-weight:700}.features dd{color:var(--ink-soft);margin:0}.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:2.5rem;display:grid}.code{margin:0 0 1.25rem;position:relative}.code figcaption{color:var(--ink-soft);margin-bottom:.35rem;font-size:.9rem}pre{background:var(--paper-deep);border:1px solid var(--hairline);border-radius:var(--radius);font:.9rem/1.65 var(--mono);tab-size:4;margin:0;padding:1rem 3.25rem 1rem 1.1rem;overflow-x:auto}pre code{font:inherit;background:0 0;padding:0}pre .p{color:var(--ink-soft);-webkit-user-select:none;user-select:none}pre .km{font-family:var(--text)}.copy{border:1px solid var(--hairline);background:var(--paper);width:2.2rem;height:2.2rem;color:var(--ink);cursor:pointer;border-radius:6px;place-items:center;display:grid;position:absolute;top:.5rem;right:.5rem}.code:has(figcaption) .copy{top:2.15rem}.copy:hover,.copy[data-done]{border-color:var(--jade);color:var(--jade-deep)}.install{min-width:min(100%,17rem);margin:0}.install pre{padding-top:.6rem;padding-bottom:.6rem;padding-right:2.75rem;font-size:.875rem}.install .copy{width:1.9rem;height:1.9rem;top:50%;right:.35rem;transform:translateY(-50%)}.table{border:1px solid var(--hairline);border-radius:var(--radius);margin:0 0 1.25rem;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.95rem;line-height:1.6}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--hairline);padding:.55rem .8rem}tr:last-child td{border-bottom:0}th{background:var(--paper-deep);font-weight:700}td code{white-space:nowrap}td.num{font-variant-numeric:tabular-nums;white-space:nowrap}.note{border-left:3px solid var(--saffron);background:color-mix(in srgb, var(--saffron) 9%, var(--paper));border-radius:0 6px 6px 0;gap:.7rem;margin:0 0 1.25rem;padding:.85rem 1rem;display:flex}.note .icon{color:var(--saffron-ink);margin-top:.4rem}.note p{margin:0}.steps{counter-reset:step;padding:0;list-style:none}.steps li{counter-increment:step;margin-bottom:.9rem;padding-left:2.6rem;position:relative}.steps li:before{content:counter(step);background:var(--saffron);width:1.7rem;height:1.7rem;font:700 .9rem/1 var(--text);border-radius:50%;place-items:center;display:grid;position:absolute;top:.2rem;left:0}.fields{grid-template-columns:max-content 1fr;gap:.4rem 1.25rem;margin:0 0 1.25rem;display:grid}.fields dt code{font-weight:700}.fields dd{margin:0}.doc-hero{padding-top:3rem;padding-bottom:2rem}.doc-hero h1{font:400 clamp(2rem, 5vw, 3rem)/1.6 var(--display);margin:0}html[lang=en] .doc-hero h1{font:700 clamp(2rem, 5vw, 2.75rem)/1.3 var(--text);letter-spacing:-.01em}.doc-hero p{max-width:60ch;color:var(--ink-soft);margin:.5rem 0 0}.layout{grid-template-columns:13rem minmax(0,1fr);gap:3.5rem;padding-bottom:5rem;display:grid}.toc{align-self:start;font-size:.95rem;position:sticky;top:5rem}.toc p{color:var(--ink-soft);margin:0 0 .5rem}.toc ol{border-left:1px solid var(--hairline);margin:0;padding:0;list-style:none}.toc a{color:var(--ink);border-left:2px solid #0000;margin-left:-1px;padding:.3rem 0 .3rem 1rem;text-decoration:none;display:block}.toc a:hover{color:var(--jade-deep)}.toc a[aria-current=true]{border-left-color:var(--jade);color:var(--jade-deep);font-weight:700}.toc-mobile{display:none}.doc{min-width:0;max-width:var(--measure)}.doc section{margin-bottom:3.25rem;padding-top:1rem}footer{border-top:1px solid var(--hairline)}.foot{color:var(--ink-soft);padding-top:2.25rem;padding-bottom:3rem;font-size:.9rem}.foot p{max-width:var(--measure);margin:0 0 .4rem}.foot-top{border-bottom:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;margin-bottom:1.25rem;padding-bottom:1.25rem;display:flex}.foot-links{flex-wrap:wrap;gap:.5rem 1.5rem;display:flex}.foot-links a{color:var(--ink);align-items:center;gap:.4rem;font-size:.95rem;text-decoration:none;display:inline-flex}.foot-links a:hover{color:var(--jade-deep)}@media (max-width:960px){.hero{grid-template-columns:minmax(0,1fr);gap:1.5rem}.hero-shots{aspect-ratio:auto;scroll-snap-type:x mandatory;align-items:flex-start;gap:1.25rem;margin:0 -.75rem;padding:1rem .75rem 1.25rem;scroll-padding-inline:.75rem;display:flex;overflow-x:auto}.shot{scroll-snap-align:start;flex:0 0 min(15rem,62%);position:relative;inset:auto;transform:none}.shot:hover,.shot:focus-visible{transform:none}.reader{grid-template-columns:minmax(0,1fr)}.reader-side{position:static}.two{grid-template-columns:minmax(0,1fr);gap:1rem}}@media (max-width:880px){.layout{grid-template-columns:minmax(0,1fr);gap:0}.toc{display:none}.toc-mobile{border:1px solid var(--hairline);border-radius:var(--radius);background:var(--paper);margin:0 0 2rem;display:block}.toc-mobile summary{cursor:pointer;padding:.7rem 1rem;font-weight:700}.toc-mobile ol{margin:0;padding:0 1rem .8rem 2.2rem}.hero{padding-top:2.75rem}.wrap{padding-left:1.25rem;padding-right:1.25rem}.features{grid-template-columns:minmax(0,1fr)}}@media (max-width:560px){.top nav{gap:.5rem}.top-inner{gap:.75rem}.top nav .lbl{display:none}.top nav a{padding:.35rem}.fields{grid-template-columns:1fr;gap:0}.fields dd{margin-bottom:.7rem}h2{font-size:1.5rem}.marker{width:1.6rem;height:1.6rem;font-size:.85rem;left:-.6rem}}.tools .btn.quiet[aria-pressed=true]{border-color:var(--jade-deep);color:var(--jade-deep);background:color-mix(in srgb, var(--jade) 8%, var(--paper));font-weight:700}
