@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.woff2)format("woff2");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-weight:400;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.woff2)format("woff2");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-weight:400;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.woff2)format("woff2");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-weight:400;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.woff2)format("woff2");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-weight:400;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.woff2)format("woff2");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-weight:400;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.woff2)format("woff2");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-weight:500;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.woff2)format("woff2");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-weight:500;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.woff2)format("woff2");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-weight:500;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.woff2)format("woff2");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-weight:500;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.woff2)format("woff2");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-weight:500;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.woff2)format("woff2");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-weight:500;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.woff2)format("woff2");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-weight:700;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.woff2)format("woff2");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-weight:700;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.woff2)format("woff2");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-weight:700;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.woff2)format("woff2");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-weight:700;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.woff2)format("woff2");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-weight:700;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.woff2)format("woff2");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-weight:700;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.woff2)format("woff2");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 Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_90e65c15-module__6l-iWq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_90e65c15-module__6l-iWq__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--paper:#f3f1fb;--paper-2:#fff;--grid:#786ebe1a;--ink:#2b2450;--ink-soft:#6a6396;--line:#e2ddf5;--radius:18px;--shadow:0 6px 0 #786ebe24;--brand:#7d55c9;--brand-strong:#6b46b8;--accent-weak:#e6dbfa;--highlight:#ffd84d;--highlight-ink:#5a4200;--focus-ring:#7d55c9}*{box-sizing:border-box}html,body{max-width:100vw;overflow-x:hidden}body{min-height:100%;color:var(--ink);background-color:var(--paper);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);line-height:1.6;font-family:var(--font-body), system-ui, sans-serif;background-size:26px 26px;margin:0}h1,h2,h3{font-family:var(--font-heading), sans-serif}.playground-page{max-width:1000px;margin:0 auto;padding:24px 16px 70px}.playground-page__header{text-align:center;margin-bottom:22px}.playground-page__top-bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-bottom:12px;display:flex}.playground-page__kicker{letter-spacing:.14em;color:#7d55c9;box-shadow:var(--shadow);background:#fff;border:2px solid #e6dbfa;border-radius:999px;padding:5px 14px;font-size:.8rem;font-weight:700;display:inline-block}.playground-page__title{margin:.1em 0 .2em;font-size:clamp(1.8rem,5.5vw,2.8rem);font-weight:900;line-height:1.3}.playground-page__zap{color:#5a4200;background:#c99400;border-radius:12px;margin:.15em 0 .15em .3em;padding:0 .28em;display:inline-block;transform:rotate(-3deg);box-shadow:3px 3px #b48c0040}.playground-page__lead{color:var(--ink-soft);max-width:40em;margin:0 auto 10px;font-weight:500}.github-actions{z-index:20;align-items:center;gap:8px;display:inline-flex;position:fixed;top:16px;right:16px}.github-link{color:#fff;background:#24292f;border:2px solid #24292f;border-radius:999px;align-items:center;gap:7px;padding:7px 14px;font-size:.85rem;font-weight:700;text-decoration:none;transition:transform .1s,box-shadow .1s;display:inline-flex;box-shadow:0 4px #0000002e}.github-link:hover{transform:translateY(-2px);box-shadow:0 6px #0000002e}.github-link:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.github-link__icon{fill:currentColor;flex:none}.github-star{background:#fff;border:2px solid #24292f;border-radius:999px;align-items:center;padding:3px 6px;line-height:0;transition:transform .1s,box-shadow .1s;display:inline-flex}.github-star:hover{transform:translateY(-2px)}.github-star:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.github-star img{width:auto;height:20px;display:block}@media (max-width:560px){.github-actions{position:static}}.card{background:var(--paper-2);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:16px;padding:18px}.card__title{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;font-size:1.05rem;font-weight:700;display:flex}.card__emoji{font-size:1.25rem}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.share-link{font-family:var(--font-mono), ui-monospace, monospace;border:2px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:999px;margin-left:auto;padding:5px 12px;font-size:.8rem;font-weight:700;transition:all .1s}.share-link:hover{background:#f6f1ff;border-color:#c9b8f2}.share-link:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.modes{background:#efe9fb;border:2px solid #ddd0f5;border-radius:999px;padding:3px;display:inline-flex}.mode-btn{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 16px;font-family:inherit;font-size:.9rem;font-weight:700;transition:all .15s}.mode-btn--active{color:var(--ink);background:#fff;box-shadow:0 2px 6px #5a3c962e}.mode-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.opt{color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:.85rem;font-weight:600;display:inline-flex}.opt input{accent-color:#8b5cf6;width:16px;height:16px}.badge{color:#1c7a4a;background:#e4f7ec;border:2px solid #b9e8cd;border-radius:999px;align-items:center;gap:7px;padding:5px 13px;font-size:.8rem;font-weight:700;display:inline-flex}.badge__dot{background:#197a54;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 3px #25b47c33}.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}.editor__surface{min-height:150px;font-family:var(--font-mono), ui-monospace, monospace;color:var(--ink);tab-size:4;background:repeating-linear-gradient(#0000,#0000 27px,#eee8fb 27px 28px);border:2px dashed #c9c0ef;border-radius:14px;font-size:1rem;line-height:28px}.editor__surface:focus-within{border-color:#9b7ce6;box-shadow:0 0 0 4px #ece2fb}.editor__textarea{outline:none}.editor-tok--keyword{color:#9635d9;font-weight:700}.editor-tok--string{color:#197a54}.editor-tok--number{color:#a25a12}.editor-tok--op{color:#ce1616}.editor-tok--bracket{color:#8d6800;font-weight:700}.editor-tok--comment{color:#616a8b;font-style:italic}.editor__error{color:#a9540b;font-weight:600}.keybar{-webkit-overflow-scrolling:touch;background:linear-gradient(to right, var(--paper-2) 30%, #fff0), linear-gradient(to left, var(--paper-2) 30%, #fff0) right, linear-gradient(to right, #786ebe47, #fff0), linear-gradient(to left, #786ebe47, #fff0) right;background-repeat:no-repeat;background-color:var(--paper-2);background-size:24px 100%,24px 100%,8px 100%,8px 100%;background-attachment:local,local,scroll,scroll;gap:6px;margin-top:8px;padding:4px 2px;display:none;overflow-x:auto}@media (hover:none) and (pointer:coarse){.keybar{display:flex}}.keybar__group{align-items:center;gap:6px;display:flex}.keybar__divider{background:var(--line);flex:none;width:2px;height:28px;margin:0 4px}.keybar__key{min-width:40px;min-height:40px;color:var(--ink);font-family:var(--font-mono), ui-monospace, monospace;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#fff;border:2px solid #c9c0ef;border-radius:10px;flex:none;padding:0 10px;font-size:1.05rem}.keybar__key:active{background:#ece2fb;border-color:#9b7ce6}.presets{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.preset{font-family:var(--font-mono), ui-monospace, monospace;border:2px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:999px;padding:6px 12px;font-size:.82rem;transition:all .1s}.preset:hover{background:#f6f1ff;border-color:#c9b8f2}.preset:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.errors-banner{color:#a9540b;background:#fff4e8;border:2px solid #ffd3a8;border-radius:12px;margin-top:10px;padding:8px 12px;font-size:.88rem;font-weight:600}.loading-overlay{color:#1c5a97;background:#eef7ff;border-radius:12px;align-items:center;gap:8px;margin-bottom:8px;padding:8px 14px;font-weight:600;display:flex}.loading-overlay__spinner{border:2px solid;border-top-color:#0000;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.loading-overlay__spinner{animation:none}}
