@font-face{font-family:Patrick Hand;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/patrick-hand-vietnamese-400-normal-65jA92mZ.woff2)format("woff2"),url(/assets/patrick-hand-vietnamese-400-normal-CZjY324Y.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:Patrick Hand;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/patrick-hand-latin-ext-400-normal-Dno5CMlI.woff2)format("woff2"),url(/assets/patrick-hand-latin-ext-400-normal-C2ywpnn3.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:Patrick Hand;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/patrick-hand-latin-400-normal-B7HHA2Vw.woff2)format("woff2"),url(/assets/patrick-hand-latin-400-normal-Df9_VoRQ.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:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-cyrillic-ext-400-normal-CuPM9foi.woff2)format("woff2"),url(/assets/nunito-cyrillic-ext-400-normal-xaE7D4Sw.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-cyrillic-400-normal-xAOo5cBP.woff2)format("woff2"),url(/assets/nunito-cyrillic-400-normal-D1j0u8EH.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-vietnamese-400-normal-BHkVbP3T.woff2)format("woff2"),url(/assets/nunito-vietnamese-400-normal-DtOtW02z.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:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-latin-ext-400-normal-i-8OOpdj.woff2)format("woff2"),url(/assets/nunito-latin-ext-400-normal-CjMJVfGn.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:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-latin-400-normal-r8SDr6Up.woff2)format("woff2"),url(/assets/nunito-latin-400-normal-DKg4f3fz.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:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-cyrillic-ext-700-normal-BuR0mlCG.woff2)format("woff2"),url(/assets/nunito-cyrillic-ext-700-normal-DfoqN4Gs.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-cyrillic-700-normal-DP36NgGt.woff2)format("woff2"),url(/assets/nunito-cyrillic-700-normal-DfHRUDv-.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-vietnamese-700-normal-Ch8EUCfz.woff2)format("woff2"),url(/assets/nunito-vietnamese-700-normal-C9SQsXvj.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:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-latin-ext-700-normal-BWeMsAzO.woff2)format("woff2"),url(/assets/nunito-latin-ext-700-normal-D4woHhbd.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:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-latin-700-normal-Dort48En.woff2)format("woff2"),url(/assets/nunito-latin-700-normal-OcDqTBcA.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-ext-400-normal-C_uLvvQ5.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-ext-400-normal-Bh0R7Dhr.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-vietnamese-400-normal-ByoDsISC.woff2)format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.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{--ui-bg:#fff;--ui-fg:#1b1b1f;--ui-muted:#6b7280;--ui-border:#e3e5e8;--ui-hover:#f1f3f5;--accent:#0d9488;--accent-soft:#0d948824;--shadow:0 1px 2px #10182814, 0 4px 14px #1018281a;--radius:12px;--checker:repeating-conic-gradient(#d1d5db 0 25%, #fff 0 50%) 0 0 / 8px 8px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--ui-bg:#25252b;--ui-fg:#ececf0;--ui-muted:#9ca3af;--ui-border:#3a3a43;--ui-hover:#31313a;--accent:#2dd4bf;--accent-soft:#2dd4bf2e;--shadow:0 1px 2px #0006, 0 4px 14px #00000073;--checker:repeating-conic-gradient(#4b5563 0 25%, #1f2937 0 50%) 0 0 / 8px 8px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--ui-fg);overscroll-behavior:none;-webkit-font-smoothing:antialiased;background:#fff;font-family:Nunito,system-ui,sans-serif;font-size:14px;overflow:hidden}:root[data-theme=dark] body{background:#121212}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{position:fixed;inset:0}.canvas-wrap{isolation:isolate;position:absolute;inset:0;overflow:hidden}.static-canvas,.interactive-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}:root[data-theme=dark] .static-canvas,:root[data-theme=dark] .text-editor{filter:invert(93%)hue-rotate(180deg)}.dom-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.text-editor{pointer-events:auto;resize:none;white-space:pre;transform-origin:50%;background:0 0;border:0;outline:none;margin:0;padding:0;position:absolute;overflow:hidden}.island{background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--radius);box-shadow:var(--shadow)}.brand{color:var(--accent);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex;position:absolute;top:18px;left:18px}.brand span{color:var(--ui-fg)}.toolbar{align-items:center;gap:2px;padding:4px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.btn{width:36px;height:36px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;padding:0;display:grid;position:relative}.btn:hover:not(:disabled){background:var(--ui-hover)}.btn[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.btn:disabled{opacity:.35;cursor:default}.btn:focus-visible,.choice:focus-visible,.swatch:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.btn kbd{color:var(--ui-muted);font:600 9px Nunito,sans-serif;position:absolute;bottom:2px;right:4px}.sep{background:var(--ui-border);width:1px;height:22px;margin:0 4px}.topright{position:absolute;top:12px;right:12px}.footer{gap:8px;display:flex;position:absolute;bottom:12px;left:12px}.group{align-items:center;padding:2px;display:flex}.zoom-label{font-variant-numeric:tabular-nums;width:56px;font-size:13px;font-weight:600}.panel{flex-direction:column;gap:14px;width:232px;max-height:calc(100% - 136px);padding:12px;display:flex;position:absolute;top:64px;left:12px;overflow-y:auto}.panel h3{letter-spacing:.02em;color:var(--ui-muted);margin:0 0 6px;font-size:12px;font-weight:700}.panel .muted{margin-left:4px;font-weight:600}.choices{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.choice{border:1px solid var(--ui-border);min-width:34px;height:32px;color:var(--ui-fg);cursor:pointer;background:0 0;border-radius:8px;place-items:center;padding:0 6px;display:grid}.choice:hover{background:var(--ui-hover)}.choice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.text-choice{font-size:12px;font-weight:700}.w-sample{background:currentColor;border-radius:2px;width:20px;display:block}.fill-sample{border:1.5px solid;border-radius:3px;width:20px;height:18px;display:block}.fill-hachure{background:repeating-linear-gradient(-45deg,currentColor 0 1.2px,#0000 1.2px 4px)}.fill-cross-hatch{background:repeating-linear-gradient(-45deg,currentColor 0 1px,#0000 1px 5px),repeating-linear-gradient(45deg,currentColor 0 1px,#0000 1px 5px)}.fill-solid{background:currentColor}.fill-zigzag{background:repeating-linear-gradient(90deg,currentColor 0 1.2px,#0000 1.2px 4px)}.swatch{background:var(--ui-bg);cursor:pointer;border:1px solid #0000002e;border-radius:6px;width:24px;height:24px;padding:0}:root[data-theme=dark] .swatch{border-color:#ffffff38}.swatch.transparent{background:var(--checker)}.swatch[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px}.swatch.current{width:28px;height:28px}.color-field{position:relative}.footer .btn-text{border:0;height:36px}.popover{z-index:40;max-width:calc(100vw - 16px);padding:10px;position:fixed}.palette{min-width:230px}.arrowhead-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.choice.wide{min-width:58px;height:34px}.btn.small{width:32px;height:32px}.choices.actions{gap:2px}.btn-text{border:1px solid var(--ui-border);height:34px;color:var(--ui-fg);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:6px;padding:0 12px;font:600 13px Nunito,system-ui,sans-serif;display:inline-flex}.btn-text:hover{background:var(--ui-hover)}.btn-text.danger{color:#fff;background:#dc2626;border-color:#0000}.btn-text.danger:hover{background:#b91c1c}.backdrop{z-index:50;background:#00000059;place-items:center;display:grid;position:fixed;inset:0}.dialog{width:min(380px,100vw - 32px);padding:20px}.dialog h2{margin:0 0 8px;font-size:17px}.dialog p{color:var(--ui-muted);margin:0 0 18px;line-height:1.45}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}.eyedropper-chip{border:1px solid var(--ui-border);background:var(--ui-bg);color:var(--ui-fg);box-shadow:var(--shadow);pointer-events:none;border-radius:8px;align-items:center;gap:6px;padding:4px 8px;font:600 12px JetBrains Mono,monospace;display:flex;position:absolute}.eyedropper-chip span{border:1px solid #00000040;border-radius:4px;width:16px;height:16px}.palette{grid-template-columns:repeat(11,1fr);gap:3px;display:grid}.palette .swatch{aspect-ratio:1;border-radius:4px;width:100%;height:auto}.hex-row{align-items:center;gap:8px;margin-top:10px;display:flex}.hex-input{border:1px solid var(--ui-border);background:var(--ui-bg);width:100%;height:30px;color:var(--ui-fg);border-radius:8px;padding:0 8px;font:600 13px JetBrains Mono,monospace}.hex-input.invalid{border-color:#dc2626}input[type=range]{width:100%;accent-color:var(--accent)}@media (prefers-reduced-motion:no-preference){.btn,.choice{transition:background-color .12s}}.canvas-wrap>.static-canvas{z-index:0}.embed-layer{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.embed-layer.has-active{z-index:4}.interactive-canvas{z-index:2}.dom-layer{z-index:3}.embed{pointer-events:none;background:#fff;border-radius:8px;position:absolute;overflow:hidden;box-shadow:0 0 0 1px #0000001f}.embed.active{pointer-events:auto;box-shadow:0 0 0 2px var(--accent)}.embed iframe{border:0;width:100%;height:100%;display:block}.embed-interact{pointer-events:auto;border:1px solid var(--ui-border);background:var(--ui-bg);height:30px;color:var(--ui-fg);box-shadow:var(--shadow);cursor:pointer;border-radius:8px;padding:0 12px;font:700 12px Nunito,system-ui,sans-serif;position:absolute;transform:translate(-100%)}.embed-interact:hover{background:var(--ui-hover)}.frame-name-editor{pointer-events:auto;border:1px solid var(--accent);background:var(--ui-bg);height:24px;color:var(--ui-fg);border-radius:6px;outline:none;padding:0 6px;font:600 12px Nunito,system-ui,sans-serif;position:absolute}.tool-slot{gap:2px;display:inline-flex}.tool-menu{grid-template-columns:repeat(2,minmax(150px,1fr));gap:4px;display:grid}.menu-item{height:36px;color:var(--ui-fg);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:0 10px;font:600 13px Nunito,system-ui,sans-serif;display:flex}.menu-item:hover{background:var(--ui-hover)}.menu-item[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.menu-item span{flex:1}.menu-item kbd{color:var(--ui-muted);font:700 10px Nunito,sans-serif}.url-input,.text-input{border:1px solid var(--ui-border);background:var(--ui-bg);width:100%;height:36px;color:var(--ui-fg);border-radius:8px;padding:0 10px;font:600 13px Nunito,system-ui,sans-serif}.url-input[aria-invalid=true]{border-color:#dc2626}.form-error{font-size:13px;color:#dc2626!important;margin:8px 0 0!important}.dialog .url-input{margin-bottom:4px}.btn-text.primary{background:var(--accent);color:#fff;border-color:#0000}:root[data-theme=dark] .btn-text.primary{color:#0b1f1d}.toast{max-width:min(480px,100vw - 32px);padding:10px 16px;font-weight:600;line-height:1.4;position:absolute;bottom:74px;left:50%;transform:translate(-50%)}
