@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--ink:#292638;--muted:#898498;--purple:#7563ac;--line:#e1dce9;--paper:#f7f5fa;--green:#d9f5a5}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px 'DM Sans',system-ui,sans-serif}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{opacity:.45;cursor:default}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #927ed2;outline-offset:3px}header{max-width:1370px;margin:auto;padding:28px 34px;display:flex;align-items:center;gap:36px;border-bottom:1px solid var(--line)}.brand{font:bold 30px 'Space Grotesk',sans-serif;letter-spacing:-2px;text-decoration:none}.brand span{font-weight:400}.brand i{display:inline-block;width:7px;height:7px;background:#79b78b;border-radius:50%;margin-left:6px}.back{font-size:13px;text-decoration:none;color:var(--muted)}.experiment{margin-left:auto;font:11px monospace;letter-spacing:1px;color:var(--muted)}main{max-width:1302px;margin:0 auto;padding:36px 0}.heading{display:flex;justify-content:space-between;align-items:center;margin:0 0 32px}.eyebrow{font:10px monospace;letter-spacing:2px;color:var(--purple)}h1{font:600 clamp(30px,4vw,50px) 'Space Grotesk',sans-serif;letter-spacing:-2px;margin:9px 0}h1 span{color:#a48bce;margin-left:12px}.heading p:last-child{color:var(--muted);margin:9px 0}h2,h3{font-family:'Space Grotesk',sans-serif;margin:0}.quiet{background:transparent;border:1px solid var(--line);border-radius:30px;padding:10px 16px;font-size:12px}.quiet span{display:inline-grid;place-items:center;background:#e8e2f1;width:20px;height:20px;border-radius:50%;margin-left:8px}.section-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;gap:10px}.section-label h2{font-size:16px;font-weight:500}.section-label h2>span{font:11px monospace;color:#a9a0b8;margin-right:10px}.section-label p{font-size:12px;color:var(--muted);margin:0}.characters{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:30px}.character{position:relative;border:1px solid var(--line);border-radius:18px;background:#f0edf5;padding:6px 10px 13px;transition:transform .2s,border-color .2s;text-align:left;min-width:0}.character:hover{transform:translateY(-3px)}.character[aria-pressed=true]{border:2px solid #9781c3;background:#ece6f6;padding:5px 9px 12px;box-shadow:0 3px 0 #e2d8ef}.character canvas{width:100%;height:118px;object-fit:contain;image-rendering:pixelated;mix-blend-mode:multiply}.character strong{font:600 16px 'Space Grotesk';display:block}.character small{color:var(--muted);font-size:11px}.character .selected{position:absolute;right:12px;top:12px;width:18px;height:18px;border-radius:50%;background:#7f6ca9;color:#fff;font-size:12px;text-align:center}.workshop{display:grid;grid-template-columns:1.08fr 1fr;gap:26px;align-items:start}.preview-panel,.editor-panel{background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden}.preview-panel{position:sticky;top:18px}.panel-top{padding:18px 22px;display:flex;align-items:center;gap:8px;font:10px monospace;letter-spacing:1px;color:#8e879b}.live-dot{width:6px;height:6px;background:#8ab497;border-radius:50%}.text-button{background:none;border:0;color:var(--purple);font-size:12px;padding:5px}.panel-top .text-button{margin-left:auto}.stage{height:365px;position:relative;overflow:hidden;margin:0 16px;background:radial-gradient(ellipse at 50% 50%,#fdf9ef 5%,#eeebf5 95%);border:1px solid #e8e3ef;border-radius:14px;touch-action:pan-y}.stage:after{content:'';position:absolute;left:0;right:0;bottom:56px;border-top:1px solid #e3deeb;pointer-events:none}.window-chrome{position:absolute;top:13px;left:14px;right:14px;display:flex;gap:5px}.window-chrome i{height:5px;width:5px;background:#d5ccdf;border-radius:50%}.window-chrome span{margin-left:auto;font:9px monospace;color:#b2a8c1}.stage-doodle{position:absolute;color:#d9cee9;font-size:29px}.stage-doodle.one{left:17%;top:20%}.stage-doodle.two{right:16%;top:29%;font-size:22px}.pet-position{position:absolute;left:50%;top:49%;width:170px;height:170px;margin:-85px 0 0 -85px;transform:translate(var(--x,0px),var(--y,0px));z-index:2}.pet-shell{width:100%;height:100%;transform-origin:50% 85%}.pet-shell.blink{animation:blink .18s ease-in-out}.pet-shell.idle{animation:idle 3s ease-in-out infinite}#pet{width:100%;height:100%;padding:0;background:none;border:0;touch-action:none}#sprite{width:100%;height:100%;image-rendering:pixelated;mix-blend-mode:multiply;pointer-events:none}.pet-shadow{width:95px;height:12px;position:absolute;bottom:0;left:38px;background:#7c698c20;border-radius:50%;filter:blur(5px);z-index:-1}.speech{position:absolute;bottom:calc(100% + 14px);left:50%;transform:translateX(-50%);padding:8px 12px;border:1px solid #e5dced;background:#fffdf8;border-radius:12px;font-size:11px;white-space:nowrap;max-width:270px;overflow:hidden;text-overflow:ellipsis;box-shadow:0 3px 10px #67527708}.stage-hint{position:absolute;bottom:17px;left:12px;right:12px;text-align:center;font-size:10px;color:#a49aaf}.stop{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);background:white;border:1px solid var(--line);border-radius:20px;padding:5px 12px;font-size:10px;z-index:5}.radial{position:absolute;inset:0;pointer-events:none}.radial button{position:absolute;top:50%;left:50%;width:47px;height:47px;margin:-24px;border-radius:50%;border:1px solid #c5b8dd;background:#fffcff;box-shadow:0 4px 12px #64517b15;pointer-events:auto;font-size:9px;line-height:1.15;padding:3px;word-break:break-word;transform:translate(var(--rx),var(--ry));color:#655185}.radial[hidden]{display:none}.radial:before{content:'';position:absolute;inset:-38px;border:1px dashed #bdadd6;border-radius:50%;pointer-events:none}.pet-caption{padding:18px 22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.pet-caption label{display:block;font:8px monospace;letter-spacing:1.4px;color:#a298ad;margin-bottom:5px}.pet-caption input{border:0;background:none;font:600 24px 'Space Grotesk';color:var(--ink);width:170px;padding:0}.pet-caption>span{font:9px monospace;color:#9a95a2;text-align:right;max-width:125px}.skills-heading{display:flex;justify-content:space-between;padding:19px 22px 12px}.skills-heading h2{font-size:15px;font-weight:500}.skills-heading span{font:11px monospace;color:#a092b4}.skills{display:flex;gap:7px;flex-wrap:wrap;padding:0 22px}.empty-skills{border:1px dashed var(--line);border-radius:12px;width:100%;padding:14px;color:#a69caf;font-size:12px;text-align:center}.skill{display:flex;align-items:center;background:#f2eef8;border:1px solid #e3daef;border-radius:30px;padding:3px}.skill button{border:0;background:none;padding:7px 9px;font-size:11px}.skill button:first-child{color:var(--purple)}.skill .remove{font-size:16px;color:#a99cbb;padding:3px 8px}.add-skill{display:block;background:none;color:var(--purple);border:0;font-size:12px;margin:12px 18px 17px}.take-home{padding:18px 22px;background:#f8f7fa;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.take-home strong{font-size:12px}.take-home p{font-size:10px;color:var(--muted);margin:5px 0 0}.primary,.secondary{border-radius:10px;padding:12px 17px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:14px}.primary{background:var(--green);border:1px solid #c9e691;box-shadow:0 3px 0 #b4ce87;font-weight:600}.secondary{background:white;border:1px solid #dcd4e7}.editor-panel{padding:23px}.editor-panel .section-label{margin-bottom:26px}.lesson{font:9px monospace;color:#a79caf}.field-label{display:block;font:9px monospace;letter-spacing:1px;color:#a093af;margin-bottom:9px}.skill-name{width:100%;padding:10px 0 13px;border:0;border-bottom:1px solid var(--line);font-size:17px;outline-offset:2px}.editor-tabs{display:flex;justify-content:space-between;gap:8px;margin-top:22px;padding:12px 13px;background:#ece7f5;border:1px solid #ded5ec;border-bottom:0;border-radius:10px 10px 0 0;font:10px monospace;color:var(--purple)}.editor-tabs span+span{font-size:9px;color:#a79ab9}.code-wrap{display:flex;background:#f7f4fc;border:1px solid #ded5ec;border-radius:0 0 10px 10px;min-height:150px}.line-numbers{width:35px;padding:15px 8px;text-align:right;font:12px/1.8 monospace;color:#c0b4d1;user-select:none}textarea#code{width:100%;min-height:150px;resize:vertical;border:0;background:none;padding:15px 13px 15px 5px;font:12px/1.8 ui-monospace,monospace;color:#64518b;tab-size:2;outline:none}.code-message{font-size:10px;min-height:34px;color:#a296b1;padding:10px 0}.code-message.error{color:#aa455c}.code-message.success{color:#5c8965}.editor-actions{display:flex;gap:10px}.editor-actions .primary{flex:1}.editor-actions .secondary{min-width:110px}.library-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:28px 0 13px}.library-heading h3{font-size:14px;font-weight:500}.search{display:flex;align-items:center;gap:5px;color:#aea0be}.search input{border:0;background:none;width:108px;font-size:11px;color:var(--ink)}.categories{display:flex;gap:5px;margin-bottom:12px;flex-wrap:wrap}.categories button{background:#f7f5fa;border:1px solid transparent;padding:6px 9px;border-radius:6px;color:#9c8fab;font-size:10px}.categories button[aria-pressed=true]{background:#eee7f6;border-color:#d9cce9;color:#70558f}.moves{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;max-height:245px;overflow:auto;scrollbar-width:thin;padding-right:3px}.move{text-align:left;background:#faf9fc;border:1px solid #ece7f1;border-radius:9px;padding:9px 11px;display:flex;justify-content:space-between;align-items:center;gap:5px}.move:hover{background:#f0eaf8;border-color:#cdbce1}.move strong{display:block;font-size:11px;font-weight:500}.move small{display:block;font:9px monospace;color:#b1a3bf;margin-top:4px}.move>span{color:#b19bca;font-size:16px}.learning-card{margin-top:20px;padding:16px;background:#faf8ee;border:1px solid #eee7d4;border-radius:12px}.learning-card>span{font:8px monospace;letter-spacing:1.2px;color:#b1a782;display:block;margin-bottom:9px}.learning-card strong{font-size:12px;font-weight:500}.learning-card p{font-size:11px;line-height:1.6;color:#a29a81;margin:7px 0}.learning-card .text-button{padding:0;color:#94836c;font-size:10px}footer{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:28px 0;font-size:11px;color:#aaa1b4}footer a{font-size:10px}dialog{border:1px solid var(--line);border-radius:22px;max-width:490px;width:calc(100% - 32px);padding:30px;background:#fffdff;color:var(--ink);max-height:90dvh;overflow:auto}dialog::backdrop{background:#2c203e65;backdrop-filter:blur(6px)}.dialog-close{position:absolute;top:12px;right:16px;border:0;background:none;font-size:24px;color:#a595b6}dialog h2{font-size:27px;letter-spacing:-1px;margin:12px 0 20px}dialog p,dialog li{font-size:12px;color:#96879e;line-height:1.8}dialog li{margin:8px 0}dialog ol{padding-left:20px}.download-option{display:block;text-align:left;width:100%;padding:17px;border-radius:13px;border:1px solid var(--line);margin:10px 0;background:#f6f2fb}.download-option strong{font-size:13px;display:flex;justify-content:space-between}.download-option small{display:block;font-size:11px;color:#9d8cae;line-height:1.6;margin-top:8px}.desktop-export{margin-top:20px;border-top:1px solid var(--line);padding-top:20px}.desktop-export label{font:9px monospace;color:#a08cae}.desktop-export select{width:100%;padding:10px;margin-top:10px;border:1px solid var(--line);border-radius:9px;background:white}.local-note{font-size:10px!important}.particle{position:absolute;pointer-events:none;animation:particle 1.2s ease-out forwards;font-size:20px}#particles{position:absolute;inset:0;pointer-events:none;z-index:4}.desktop-mode{background:transparent!important;margin:0;overflow:hidden}.desktop-mode header,.desktop-mode main>.heading,.desktop-mode .character-section,.desktop-mode .editor-panel,.desktop-mode footer,.desktop-mode .panel-top,.desktop-mode .pet-caption,.desktop-mode .skills-heading,.desktop-mode .skills,.desktop-mode .add-skill,.desktop-mode .take-home,.desktop-mode .window-chrome,.desktop-mode .stage-doodle,.desktop-mode .stage-hint,.desktop-mode .stop{display:none}.desktop-mode main,.desktop-mode .workshop,.desktop-mode .preview-panel{padding:0;margin:0;border:0;background:transparent;display:block;position:static}.desktop-mode .stage{height:400px;margin:0;border:0;background:transparent}.desktop-mode .stage:after{display:none}.desktop-mode #sprite{mix-blend-mode:normal}.desktop-mode .pet-position{top:50%;left:50%;width:155px;height:155px;margin:-78px}.desktop-mode .speech{bottom:auto;top:100%;font-size:10px}.desktop-mode #pet{-webkit-app-region:drag}.desktop-mode .radial button{-webkit-app-region:no-drag}.desktop-controls{position:fixed;top:5px;right:8px;display:flex;gap:4px;opacity:.3}.desktop-controls:hover{opacity:1}.desktop-controls button{font-size:10px;background:#fff;border:1px solid #d7cae7;border-radius:12px;padding:5px 7px}
@keyframes idle{50%{transform:translateY(-3px) rotate(1deg)}}@keyframes blink{50%{transform:scaleY(.94) translateY(3px)}}@keyframes particle{to{transform:translate(var(--px),-100px) rotate(90deg);opacity:0}}@media(min-width:1500px){main{padding-top:45px}}@media(max-width:1380px){main{padding:30px 34px}}@media(max-width:850px){header{padding:20px 22px}.workshop{gap:16px;grid-template-columns:1fr 1fr}.editor-panel{padding:17px}.editor-tabs span+span{display:none}.section-label p{display:none}.stage{height:330px}.lesson{display:none}.take-home{flex-wrap:wrap}.character canvas{height:95px}}@media(max-width:640px){header{padding:18px 18px;gap:20px}.brand{font-size:26px}.back{font-size:11px}.experiment{font-size:8px}.heading{margin-bottom:25px}.heading .quiet{font-size:0;padding:7px}.quiet span{font-size:12px;margin:0}.heading p:last-child{font-size:12px}main{padding:23px 16px}.eyebrow{font-size:8px;letter-spacing:1.5px}h1{font-size:34px;letter-spacing:-1.8px}.section-label h2{font-size:13px}.characters{gap:7px;grid-template-columns:repeat(5,100px);overflow:auto;padding:3px 2px 8px;margin-bottom:17px;scroll-snap-type:x mandatory}.character{scroll-snap-align:start;border-radius:12px;padding:5px 8px 10px}.character[aria-pressed=true]{padding:4px 7px 9px}.character canvas{height:87px}.character strong{font-size:13px}.character small{font-size:9px}.character .selected{width:14px;height:14px;font-size:10px;right:6px;top:6px}.workshop{grid-template-columns:1fr}.preview-panel{position:static;border-radius:17px}.stage{height:340px;margin:0 11px}.panel-top{padding:15px 17px}.pet-caption{padding:15px 18px}.editor-panel{border-radius:17px;padding:20px}.editor-panel .section-label{margin-bottom:20px}.moves{max-height:260px}.take-home{flex-wrap:nowrap;padding:17px}.take-home p{max-width:145px}.take-home .secondary{padding:10px 12px;white-space:nowrap;font-size:10px}.radial button{width:43px;height:43px;margin:-21px;font-size:8px}footer{font-size:9px;flex-wrap:wrap}.section-label{gap:5px}.editor-actions .primary{font-size:12px}.speech{font-size:10px;max-width:240px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}.pet-shell.idle{animation:none}}
.pet-position:has(.radial:not([hidden])) .speech{opacity:0;pointer-events:none}

#mini-preview{display:none}@media(max-width:640px){#mini-preview:not([hidden]){display:block;position:fixed;right:12px;bottom:14px;width:94px;height:105px;background:#f7f3ffd9;backdrop-filter:blur(10px);border:1px solid #d4c7e8;border-radius:20px;box-shadow:0 5px 22px #5e477e20;z-index:20;padding:6px 9px}#mini-preview canvas{width:72px;height:72px;image-rendering:pixelated}#mini-preview span{display:block;font:7px monospace;color:#a08abd;letter-spacing:2px}}
@media(max-width:640px){textarea#code{font-size:16px;line-height:1.7}.search input{font-size:16px;width:128px}.move{min-height:46px}.skill button{min-height:40px}.categories button{min-height:36px}}

.native-download{width:100%;margin:12px 0;text-decoration:none}.desktop-export>small{display:block;font-size:10px;line-height:1.6;color:#94839f}.release-note{font-size:10px!important;line-height:1.5!important;background:#faf6e9;border:1px solid #eee2c6;border-radius:8px;padding:10px}.other-downloads{margin-top:20px;padding-top:15px;border-top:1px solid var(--line)}.other-downloads summary{font-size:11px;color:var(--purple);cursor:pointer}

.creation-actions{display:flex;justify-content:space-between;gap:8px}.mode-presets{display:flex;gap:7px;margin:16px 0}.mode-presets button{border:1px solid var(--line);background:#eee8f6;border-radius:20px;padding:8px 12px;font-size:12px}.mode-step{padding:12px;border:1px solid var(--line);background:#f7f3fb;border-radius:12px;margin:12px 0}.mode-step>div{display:flex;gap:5px;align-items:center}.mode-step strong{font-size:12px;margin-right:auto}.mode-step button{border:0;background:white;border-radius:8px;min-width:30px;min-height:30px}.mode-step input,.mode-step textarea,.mode-note-editor{display:block;box-sizing:border-box;width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:white;margin-top:10px;font-size:14px;color:var(--ink)}.mode-step textarea,.mode-note-editor{min-height:85px;resize:vertical}.mode-add{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.mode-add label{font-size:12px}.mode-add select{padding:9px;border:1px solid var(--line);border-radius:9px;background:white;max-width:190px}.mode-note{font-size:10px!important}#mode-error{color:#aa455c;min-height:20px}#mode-save{width:100%}#mode-status{font:14px monospace;color:var(--purple)}#mode-run-body>a{margin:10px 8px 10px 0}.mode-note-editor{font-family:inherit;min-height:140px}@media(max-width:640px){.mode-step input,.mode-step textarea,.mode-note-editor{font-size:16px}}

.get-home{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:25px;background:#ece6f4;border:1px solid #ded4eb;border-radius:18px;margin-bottom:28px}.get-home>div{margin-right:auto}.get-home strong{font-size:18px}.get-home p{font-size:12px;color:var(--muted);margin:8px 0 0}body:not(.workshop-open) .workshop,body:not(.workshop-open) footer #import-open{display:none}body:not(.workshop-open) #mini-preview{display:none!important}@media(max-width:640px){.get-home>div{width:100%}.get-home .primary{width:100%;min-height:48px}.get-home .text-button{width:100%;min-height:42px}.get-home{padding:20px}}

.showcase-note{font-size:12px;color:var(--muted);line-height:1.6}.editor-panel>.search{margin:15px 0 20px}.editor-panel>.search input{width:180px}.moves{max-height:430px}.move small{font-family:inherit;font-size:10px;line-height:1.4}.move{min-height:65px}