@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-wght-normal.DLoelf7F.woff2)format("woff2-variations");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:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-next-latin-ext-wght-normal.C6vrW8VD.woff2)format("woff2-variations");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:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-next-latin-wght-normal.BcXVPD7q.woff2)format("woff2-variations");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{--brand:oklch(42% .2 290);--brand-deep:oklch(27% .13 290);--brand-soft:oklch(94% .035 290);--brand-line:oklch(86% .06 290);--signal:oklch(80% .15 75);--signal-ink:oklch(30% .08 60);--rose:oklch(60% .19 5);--teal:oklch(56% .11 180);--bg:oklch(98.5% 0 0);--surface:oklch(100% 0 0);--ink:oklch(22% .03 290);--ink-2:oklch(40% .03 290);--rule:oklch(90% .01 290);--display:"Bricolage Grotesque Variable", "Arial Narrow", system-ui, sans-serif;--body:"Atkinson Hyperlegible Next Variable", system-ui, sans-serif;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--s9:96px;--r:10px;--ease:cubic-bezier(.2, .7, .2, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html.noscroll{overflow:hidden}body{background:var(--bg);color:var(--ink);font:400 1.0625rem/1.6 var(--body);margin:0}img,svg{max-width:100%;display:block}a{color:var(--brand);text-underline-offset:3px;text-decoration-thickness:1.5px}a:hover{color:var(--brand-deep)}h1,h2,h3{font-family:var(--display);letter-spacing:-.02em;text-wrap:balance;margin:0 0 var(--s4);font-weight:750;line-height:1.08}h1{font-variation-settings:"wdth" 88;font-size:clamp(2.1rem,1.4rem + 3.4vw,3.9rem)}h2{margin-top:var(--s7);font-size:clamp(1.55rem,1.2rem + 1.5vw,2.3rem)}h3{margin-top:var(--s5);letter-spacing:-.01em;font-size:1.25rem;font-weight:700}li,p{text-wrap:pretty}p{margin:0 0 var(--s4)}:focus-visible{outline:3px solid var(--signal);outline-offset:2px;border-radius:4px}.skip{background:var(--ink);color:#fff;z-index:50;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.num{font-variant-numeric:tabular-nums}.site-head{z-index:20;background:var(--brand-deep);color:#fff;position:sticky;top:0}.site-head .in{gap:var(--s4);max-width:1240px;padding:0 var(--s4);min-height:60px;margin:0 auto}.logo,.site-head .in{align-items:center;display:flex}.logo{font:800 1.3rem/1 var(--display);letter-spacing:-.02em;gap:10px;text-decoration:none}.logo,.logo:hover{color:#fff}.logo svg{width:30px;height:30px}.nav{gap:2px;margin-left:auto;display:flex}.nav,.nav a{align-items:center}.nav a{color:oklch(93% .03 290);border-radius:999px;min-height:44px;padding:10px 12px;font-size:.95rem;text-decoration:none;display:inline-flex}.nav a.router-link-exact-active,.nav a:hover{color:#fff;background:oklch(36% .15 290)}.menu-btn{color:#fff;background:0 0;border:0;border-radius:8px;min-width:44px;min-height:44px;margin-left:auto;display:none}.menu-btn svg{stroke:currentColor;stroke-width:2px;fill:none;width:26px;height:26px;margin:auto}@media (width<=900px){.menu-btn{display:block}.nav{display:none}.nav.open{background:var(--brand-deep);padding:var(--s2) var(--s4) var(--s4);border-top:1px solid oklch(36% .12 290);flex-direction:column;align-items:stretch;display:flex;position:absolute;top:60px;left:0;right:0}.nav.open a{border-radius:8px}}.rail{background:var(--bg);height:10px;position:relative}.rail:before{content:"";background:linear-gradient(90deg,var(--brand) 0 38%,var(--rose) 38% 64%,var(--teal) 64% 100%);height:5px;position:absolute;top:0;left:0;right:0}.wrap{max-width:1240px;padding:0 var(--s4);margin:0 auto}.prose{max-width:70ch}.prose ol,.prose ul{padding-left:1.3em}.prose li{margin-bottom:var(--s2)}.muted{color:var(--ink-2)}.small{font-size:.92rem}.lede{color:var(--ink-2);max-width:60ch;font-size:clamp(1.08rem,1rem + .4vw,1.3rem)}.stop{align-items:baseline;gap:14px;display:flex}.stop:before{content:"";border:4px solid var(--c,var(--brand));background:var(--bg);border-radius:50%;flex:none;width:16px;height:16px;transform:translateY(1px)}.hero{padding:var(--s6) 0 var(--s5);gap:var(--s4);display:grid}.hero p{margin:0}.crumbs{margin:var(--s4) 0 0;font-size:.9rem}.crumbs,.crumbs a{color:var(--ink-2)}.btn{border:2px solid var(--brand);background:var(--brand);color:#fff;min-height:44px;font:700 .98rem/1 var(--body);cursor:pointer;transition:background .15s var(--ease),transform .15s var(--ease);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;text-decoration:none;display:inline-flex}.btn:hover{background:var(--brand-deep);border-color:var(--brand-deep);color:#fff}.btn:active{transform:translateY(1px)}.btn.ghost{color:var(--brand);background:0 0}.btn.ghost:hover{background:var(--brand-soft);color:var(--brand-deep)}.btn.signal{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.btn:disabled{opacity:.5;cursor:not-allowed}.linkbtn{color:var(--brand);font:inherit;cursor:pointer;background:0 0;border:0;min-height:24px;padding:0;text-decoration:underline}.err{color:oklch(50% .2 25)}.editor{background:var(--surface);border:2px solid var(--ink);border-radius:14px;flex-direction:column;display:flex;position:relative;overflow:hidden}.editor.full{z-index:100;border:0;border-radius:0;position:fixed;inset:0}.ed-bar{justify-content:space-between;gap:var(--s2);background:var(--ink);flex-wrap:wrap;padding:6px;display:flex}.ed-bar .grp{gap:4px;display:flex}.tb{min-width:44px;min-height:44px;color:inherit;font:600 .92rem/1 var(--body);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 12px;display:inline-flex}.tb svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}.ed-bar .tb{color:#fff}.ed-bar .tb:hover:not(:disabled){background:oklch(35% .04 290)}.ed-bar .tb.primary{background:var(--signal);color:var(--signal-ink)}.ed-bar .tb.primary:hover{background:oklch(85% .14 75)}.tb:disabled{opacity:.4;cursor:default}.ed-panel{z-index:5;background:var(--surface);border:2px solid var(--ink);padding:var(--s4);gap:var(--s3);border-radius:12px;max-height:calc(100% - 70px);display:grid;position:absolute;top:56px;left:6px;right:6px;overflow:auto;box-shadow:0 12px 30px -12px oklch(20% .05 290/.35)}@media (width>=720px){.ed-panel{width:440px;left:auto}}.ed-panel .row,.exports{gap:var(--s2);flex-wrap:wrap;display:flex}.ed-panel fieldset{border:0;margin:0;padding:0}.ed-panel legend{margin-bottom:6px;font-size:.9rem;font-weight:700}.seg{flex-wrap:wrap;gap:4px;display:flex}.seg button,.theme{border:1.5px solid var(--rule);background:var(--surface);min-height:44px;font:600 .9rem/1 var(--body);color:var(--ink);cursor:pointer;border-radius:8px;padding:0 12px}.seg button[aria-pressed=true],.theme[aria-pressed=true]{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-deep);box-shadow:inset 0 0 0 1px var(--brand)}.themes{grid-template-columns:repeat(auto-fill,minmax(min(128px,100%),1fr));gap:6px;display:grid}.theme{text-align:left;gap:8px;min-width:0;padding:6px 8px}.sw,.theme{align-items:center;display:flex}.sw{border:1px solid var(--rule);border-radius:6px;flex:none;gap:2px;padding:4px}.sw i{border-radius:3px;width:6px;height:16px}.maplist{gap:4px;margin:0;padding:0;list-style:none;display:grid}.maplist li{border:1.5px solid var(--rule);border-radius:8px;align-items:center;gap:4px;display:flex}.maplist li.cur{border-color:var(--brand)}.maplist .open{text-align:left;cursor:pointer;min-width:0;font:inherit;color:inherit;background:0 0;border:0;flex:1;padding:8px 10px;display:grid}.maplist .open strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.maplist small{color:var(--ink-2)}.ed-canvas{height:var(--ed-h);touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;outline:none;position:relative;overflow:hidden;background-image:radial-gradient(var(--grid) 1.3px,transparent 1.4px)!important;background-size:22px 22px!important}.editor.full .ed-canvas{flex:1;height:auto}.ed-canvas:focus-visible{box-shadow:inset 0 0 0 3px var(--signal)}.ed-svg{position:absolute;inset:0}.ed-svg .badge,.ed-svg .link,.ed-svg .node{cursor:pointer}.ed-input{z-index:3;resize:none;border:3px solid var(--signal);font-family:var(--body);text-align:center;color:#111;field-sizing:content;background:#fff;border-radius:10px;padding:6px 10px;line-height:1.28;position:absolute;box-shadow:0 8px 24px -8px #00000059}.drag-ghost{pointer-events:none;background:var(--ink);color:#fff;white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:60vw;padding:6px 12px;font-size:.9rem;font-weight:700;position:absolute;overflow:hidden;transform:translate(-50%,-130%)}.zoom{background:var(--surface);border:1.5px solid var(--ink);border-radius:10px;display:flex;position:absolute;bottom:8px;right:8px}.zoom .tb{color:var(--ink);font-size:1.3rem}.zoom .tb:hover{background:var(--brand-soft)}.hint,.toast{background:var(--ink);color:#fff;white-space:nowrap;border-radius:999px;margin:0;padding:8px 16px;font-size:.9rem;font-weight:600;position:absolute;left:50%;transform:translate(-50%)}.hint{top:10px}.hint .linkbtn{color:var(--signal)}.toast{bottom:64px}.ed-actions{border-top:2px solid var(--ink);background:var(--surface);flex-wrap:wrap;align-items:center;gap:4px;min-height:58px;padding:6px;display:flex}.ed-actions .tb{color:var(--ink)}.ed-actions .tb:hover:not(:disabled){background:var(--brand-soft)}.ed-actions .tb.ai{background:var(--brand);color:#fff}.ed-actions .tb.ai:hover:not(:disabled){background:var(--brand-deep)}.ed-actions .muted{margin:0 8px}.ed-actions .err{flex-basis:100%;margin:0 8px}.lbl{align-items:center;gap:6px;padding:0 6px;font-size:.88rem;font-weight:600;display:inline-flex}.lbl input{border:1.5px solid var(--rule);width:9.5em;min-height:40px;font:inherit;border-radius:8px;padding:0 8px;font-weight:400}.colors{gap:2px;padding:0 4px;display:flex}.dot{border:2px solid var(--surface);width:26px;height:26px;box-shadow:0 0 0 1px var(--rule);cursor:pointer;border-radius:50%;padding:0;position:relative}.dot:after{content:"";position:absolute;inset:-9px}.dot[aria-pressed=true]{box-shadow:0 0 0 2.5px var(--ink)}@media (width<=640px){.ed-actions .tb span,.ed-bar .tb span{font-size:.82rem}.ed-bar .grp:first-child .tb span,.ed-bar .lt{display:none}.ed-bar{flex-wrap:nowrap}.colors{flex-basis:100%;order:5;gap:10px;padding:4px}}.map-preview{border:1.5px solid var(--rule);border-radius:12px;width:100%;height:auto}.section{padding:var(--s7) 0 0}.cols{gap:var(--s6);grid-template-columns:minmax(0,1fr);display:grid}.cols>*{min-width:0}@media (width>=900px){.cols{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start}}.keys{border-collapse:collapse;width:100%;font-size:.98rem}.keys td,.keys th{text-align:left;border-bottom:1px solid var(--rule);vertical-align:top;padding:10px 8px}.keys th{color:var(--ink-2);font-size:.85rem;font-weight:700}kbd{font:600 .85rem/1 var(--body);border:1.5px solid var(--ink-2);background:var(--surface);white-space:nowrap;border-bottom-width:3px;border-radius:6px;padding:4px 7px}.tpl-grid{gap:var(--s5);grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));display:grid}.tpl{gap:var(--s2);color:inherit;min-width:0;text-decoration:none;display:grid}.tpl .map-preview{transition:transform .2s var(--ease),border-color .2s;aspect-ratio:16/10;-o-object-fit:contain;object-fit:contain}.tpl:hover .map-preview{border-color:var(--brand);transform:translateY(-3px)}.tpl strong{font:700 1.15rem/1.2 var(--display)}.tpl span{color:var(--ink-2);font-size:.95rem}.lines-list{gap:0;margin:0;padding:0;list-style:none;display:grid}.lines-list li{padding:0 0 var(--s5) 36px;margin:0;position:relative}.lines-list li:before{content:"";background:var(--c,var(--brand));width:4px;position:absolute;top:8px;bottom:-8px;left:7px}.lines-list li:last-child:before{display:none}.lines-list li:after{content:"";border:4px solid var(--c,var(--brand));background:var(--bg);border-radius:50%;width:18px;height:18px;position:absolute;top:4px;left:0}.lines-list strong{font-family:var(--display);font-size:1.12rem;display:block}.faq details{border-bottom:1.5px solid var(--rule);padding:var(--s3) 0}.faq summary{cursor:pointer;align-items:center;gap:12px;min-height:44px;font-size:1.05rem;font-weight:700;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:before{content:"+";font:700 1.3rem/1 var(--display);color:var(--brand);flex:none;width:20px}.faq details[open] summary:before{content:"−"}.faq details p{margin:var(--s2) 0 var(--s2) 32px}.panel{background:var(--brand-soft);padding:var(--s5);border-radius:14px}.panel.dark{background:var(--brand-deep);color:#fff}.panel.dark a{color:var(--signal)}.chips{gap:var(--s2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.chips a{background:var(--surface);border:1.5px solid var(--brand-line);min-height:44px;color:var(--ink);border-radius:999px;align-items:center;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.chips a:hover{border-color:var(--brand);color:var(--brand-deep)}input.big,select.big,textarea.big{width:100%;font:1rem/1.5 var(--body);border:2px solid var(--ink);background:var(--surface);color:var(--ink);border-radius:10px;padding:12px 14px}textarea.big{resize:vertical;min-height:220px;font-size:.98rem}.field{gap:6px;font-weight:700;display:grid}.field small{color:var(--ink-2);font-weight:400}.bar{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.site-foot{margin-top:var(--s9);background:var(--ink);color:oklch(88% .02 290);padding:var(--s7) 0 var(--s6)}.site-foot a{color:#fff}.site-foot .cols3{gap:var(--s5);grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));display:grid}.site-foot h2{margin:0 0 var(--s3);color:#fff;font-size:1rem}.site-foot ul{gap:2px;margin:0;padding:0;list-style:none;display:grid}.site-foot li a{align-items:center;min-height:36px;text-decoration:none;display:inline-flex}.site-foot li a:hover{text-decoration:underline}.site-foot .base{margin-top:var(--s6);color:oklch(78% .02 290);font-size:.9rem}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (width<=640px){.ed-canvas{height:min(var(--ed-h),62vh)}}
