@font-face{font-family:Fusion Pixel;src:url(/fonts/fusion-pixel-12px-zh_hans-subset.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--board:#f9f0cd;--surface:#fffdf0;--surface-sunk:#f1eded;--peg:#e2dfd7;--white:#fff;--ink:#3b2f23;--ink-mute:#55514c;--accent:#c80020;--info:#1757a8;--warn:#ffdb4d;--bead-red:#fc3d45;--bead-green:#00bd35;--pitch:24px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-6:24px;--sp-8:32px;--bd:2px;--bd-2:3px;--focus:0 0 0 3px var(--warn), 0 0 0 5px var(--ink);color:var(--ink);font-family:Fusion Pixel,Microsoft YaHei,PingFang SC,sans-serif;font-size:12px;line-height:16px}*{box-sizing:border-box}body{background:var(--board);color:var(--ink);font-variant-numeric:tabular-nums;height:var(--app-h,100vh);margin:0;overflow:hidden}@supports (height:100dvh){body{height:100dvh}}#root{flex-direction:column;height:100%;display:flex}#root>.topbar{flex:none}#root>main{flex:1 1 0;min-height:0;overflow-y:auto}b,strong,h1,h2,h3,th{font-weight:400}h1{margin:0 0 var(--sp-4);font-size:24px;line-height:32px}h2{margin:0 0 var(--sp-3);color:var(--ink-mute);font-size:12px;line-height:16px}button,.btn{border:var(--bd-2) solid var(--ink);background:var(--surface);box-shadow:4px 4px 0 var(--ink);padding:var(--sp-2) var(--sp-4);font:inherit;color:var(--ink);cursor:pointer;border-radius:0;justify-content:center;align-items:center;text-decoration:none;transition:transform 90ms,box-shadow 90ms,background 90ms;display:inline-flex}button:hover:not(:disabled),.btn:hover{box-shadow:2px 2px 0 var(--ink);background:var(--warn);transform:translate(2px,2px)}button:active:not(:disabled),.btn:active{box-shadow:0 0 0 var(--ink);transform:translate(4px,4px)}button:focus-visible,.btn:focus-visible{box-shadow:4px 4px 0 var(--ink), var(--focus);outline:none}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:4px 4px 0 var(--peg);background:var(--surface-sunk)}button.primary,.btn.primary{background:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:var(--accent)}.toolbar button,.issues button,.sizes button{padding:var(--sp-1) var(--sp-2);box-shadow:3px 3px 0 var(--ink);border-width:var(--bd)}.toolbar button:hover:not(:disabled),.issues button:hover:not(:disabled),.sizes button:hover:not(:disabled){box-shadow:3px 3px 0 var(--ink);background:var(--warn);transform:none}.toolbar button:active:not(:disabled),.issues button:active:not(:disabled),.sizes button:active:not(:disabled){box-shadow:0 0 0 var(--ink);transform:translate(3px,3px)}.toolbar button:focus-visible,.issues button:focus-visible,.sizes button:focus-visible{box-shadow:3px 3px 0 var(--ink), var(--focus)}.toolbar button:disabled,.issues button:disabled,.sizes button:disabled{box-shadow:3px 3px 0 var(--peg)}.toolbar button[aria-pressed=true]{background:var(--ink);color:var(--board)}.toolbar button[aria-pressed=true]:hover{background:var(--ink)}input,select,textarea{border:var(--bd) solid var(--ink);background:var(--white);padding:var(--sp-2) var(--sp-3);font:inherit;color:var(--ink);appearance:none;border-radius:0}input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:var(--focus);outline:none}input:disabled,select:disabled{background:var(--surface-sunk);color:var(--ink-mute)}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%233B2F23' stroke-width='2'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:30px}input[type=checkbox]{cursor:pointer;place-content:center;width:16px;height:16px;padding:0;display:grid}input[type=checkbox]:before{content:"";background:var(--ink);width:8px;height:8px;transition:transform 90ms;transform:scale(0)}input[type=checkbox]:checked:before{transform:scale(1)}input[type=file]{padding:var(--sp-1);background:var(--surface-sunk);cursor:pointer}input[type=range]{appearance:none;background:0 0;border:none;width:100%;height:32px;padding:0}input[type=range]::-webkit-slider-runnable-track{border:var(--bd) solid var(--ink);background:var(--surface-sunk);border-radius:0;height:12px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:var(--bd) solid var(--ink);background:var(--accent);width:16px;height:16px;box-shadow:2px 2px 0 var(--ink);cursor:pointer;border-radius:0;margin-top:-4px}input[type=range]::-moz-range-track{border:var(--bd) solid var(--ink);background:var(--surface-sunk);border-radius:0;height:12px}input[type=range]::-moz-range-thumb{border:var(--bd) solid var(--ink);background:var(--accent);width:12px;height:12px;box-shadow:2px 2px 0 var(--ink);cursor:pointer;border-radius:0}input[type=range]:focus-visible{box-shadow:none;outline:3px solid var(--warn)}label{color:var(--ink-mute);margin-bottom:var(--sp-1);font-size:12px;line-height:16px;display:block}a{color:var(--ink);text-underline-offset:3px}a:focus-visible{box-shadow:var(--focus);outline:none}small{color:var(--ink-mute);font-size:12px;display:block}.topbar{align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--surface);border-bottom:var(--bd-2) solid var(--ink);display:flex}.topbar a{font-size:12px;text-decoration:none}.topbar a:before{content:"";width:12px;height:12px;margin-right:var(--sp-2);vertical-align:-2px;background:var(--bead-red);border:var(--bd) solid var(--ink);display:inline-block}.topbar .quota{color:var(--ink-mute);margin-left:auto}.topbar .back{padding:var(--sp-1) var(--sp-3);box-shadow:3px 3px 0 var(--ink);border-width:var(--bd)}.topbar .crumb{text-overflow:ellipsis;white-space:nowrap;min-width:0;padding-left:var(--sp-3);border-left:var(--bd) solid var(--peg);overflow:hidden}.topbar button{padding:var(--sp-1) var(--sp-3);box-shadow:3px 3px 0 var(--ink);border-width:var(--bd)}main{padding:var(--sp-6) var(--sp-4)}.loading{padding:var(--sp-6);color:var(--ink-mute)}.empty{color:var(--ink-mute);margin:0 0 var(--sp-2)}.error{margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-3);border:var(--bd) solid var(--accent);background:var(--surface);color:var(--accent)}.panel{background:var(--surface);border:var(--bd-2) solid var(--ink);box-shadow:4px 4px 0 var(--ink);padding:var(--sp-4);margin-bottom:var(--sp-6);min-width:0}.panel>h2{align-items:center;gap:var(--sp-2);color:var(--ink);display:flex}.panel>h2:before{content:"";background:var(--accent);border:var(--bd) solid var(--ink);flex:none;width:8px;height:8px}.toolbar,.sizes{gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.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}.home{grid-template-columns:480px minmax(0,1fr);height:100%;display:grid;overflow:hidden}.home>*{min-width:0;min-height:0}.intro{padding:var(--sp-6) var(--sp-4);background:var(--surface);border-right:var(--bd-2) solid var(--ink);overflow-y:auto}.intro-title{margin:0 0 var(--sp-3);font-size:36px;line-height:48px}.intro-lead{margin:0 0 var(--sp-6);color:var(--ink-mute)}.intro-example{margin:0 0 var(--sp-4)}.intro-sheet{border:var(--bd-2) solid var(--ink);box-shadow:6px 6px 0 var(--ink);background:var(--white);line-height:0;position:relative}.intro-sheet>img{width:100%;height:auto;display:block}.intro-example figcaption{margin-top:var(--sp-3);color:var(--ink-mute)}.intro-source{top:calc(-1 * var(--sp-3));right:calc(-1 * var(--sp-3));width:92px;padding:var(--sp-1);background:var(--surface);border:var(--bd) solid var(--ink);box-shadow:3px 3px 0 var(--ink);text-align:center;line-height:16px;position:absolute}.intro-source img{width:100%;height:auto;margin-bottom:2px;display:block}.mark-ring{box-shadow:0 0 0 2px var(--warn), 0 0 0 4px var(--ink);pointer-events:none;position:absolute;transform:translate(-50%,-50%)}.mark-at{pointer-events:none;line-height:16px;position:absolute}.mark-at-code{transform:translate(60%,-150%)}.mark-at-legend{transform:translateY(-50%)}.mark-badge{background:var(--ink);width:20px;height:20px;color:var(--board);box-shadow:2px 2px 0 var(--warn);flex:none;place-content:center;line-height:16px;display:inline-grid}.intro-notes{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.intro-notes li{gap:var(--sp-2);grid-template-columns:20px 1fr;align-items:start;display:grid}.intro-notes p{margin:2px 0 0}.intro-notes b{background:var(--warn);padding:0 2px}.home-work{padding:var(--sp-6) var(--sp-8);overflow-y:auto}.work-title{align-items:baseline;gap:var(--sp-3);margin:0 0 var(--sp-4);color:var(--ink);font-size:24px;line-height:32px;display:flex}.work-title small{font-size:12px;display:inline}kbd{padding:0 var(--sp-1);border:var(--bd) solid var(--ink);box-shadow:2px 2px 0 var(--ink);background:var(--surface);font:inherit;margin:0 2px;line-height:14px;display:inline-block}.project-grid{gap:var(--sp-6) var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(208px,1fr));margin:0;padding:0;list-style:none;display:grid}.project-card{position:relative}.card-body{gap:var(--sp-1);width:100%;padding:var(--sp-3);background:var(--surface);border:var(--bd) solid var(--ink);box-shadow:4px 4px 0 var(--ink);text-align:left;color:var(--ink);font:inherit;cursor:pointer;text-decoration:none;transition:transform 90ms,box-shadow 90ms,background 90ms;display:grid}a.card-body:hover,div.card-body:hover,button.card-body:hover:not(:disabled){background:var(--warn);box-shadow:2px 2px 0 var(--ink);transform:translate(2px,2px)}.card-body:focus-visible{box-shadow:4px 4px 0 var(--ink), var(--focus);outline:none}button.card-body:disabled{opacity:.6;cursor:progress}.thumb{aspect-ratio:1;margin-bottom:var(--sp-2);background:repeating-conic-gradient(#efeff6 0 25%, #fff 0 50%) 50% / 12px 12px;border:var(--bd) solid var(--ink);place-items:center;display:grid;overflow:hidden}.thumb img{object-fit:contain;width:100%;height:100%;display:block}.thumb img.is-pattern{image-rendering:pixelated}.card-body .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card-body .meta{color:var(--ink-mute)}.card-body input{width:100%}.card-error{color:var(--accent)}.tile-new-thumb{background-color:var(--surface);background-image:radial-gradient(circle at center, var(--peg) 0 3px, transparent 3px);background-size:var(--pitch) var(--pitch);background-position:calc(var(--pitch) / 2) calc(var(--pitch) / 2)}.tile-new .card-body{border-style:dashed}.tile-new .meta kbd:first-of-type{margin-left:0}.tile-new .meta span{white-space:nowrap}.tile-new .card-body[aria-disabled=true]{cursor:progress}.bead-plus{gap:2px;display:inline-grid}.bead-plus-row{gap:2px;display:flex}.bead-plus .bead{width:28px;height:28px}.tile-new .card-body:hover .bead-plus .bead:not(.is-empty){background:var(--bead);border-radius:3px}.card-rename{top:calc(var(--sp-3) + var(--sp-1));right:calc(var(--sp-3) + var(--sp-1));padding:0 var(--sp-1);border-width:var(--bd);box-shadow:2px 2px 0 var(--ink);position:absolute}.card-rename:hover:not(:disabled){box-shadow:0 0 0 var(--ink);transform:translate(2px,2px)}.drop-overlay{z-index:50;pointer-events:none;background-color:color-mix(in srgb, var(--board) 85%, transparent);background-image:radial-gradient(circle at center, var(--ink) 0 3px, transparent 3px);background-size:var(--pitch) var(--pitch);background-position:calc(var(--pitch) / 2) calc(var(--pitch) / 2);outline:var(--bd-2) dashed var(--ink);outline-offset:calc(-1 * var(--sp-4));place-items:center;display:grid;position:fixed;inset:0}.drop-overlay p{padding:var(--sp-3) var(--sp-6);background:var(--surface);border:var(--bd-2) solid var(--ink);box-shadow:6px 6px 0 var(--ink);margin:0;font-size:24px;line-height:32px}@media (width<=1100px){.home{grid-template-columns:minmax(0,1fr);height:auto;overflow:visible}.intro,.home-work{overflow:visible}.intro{border-right:none;border-bottom:var(--bd-2) solid var(--ink)}.intro-example{max-width:480px}.home-work{padding:var(--sp-6) var(--sp-4)}}.workbench{gap:var(--sp-4);padding:var(--sp-4);grid-template-columns:260px minmax(0,1fr) 320px;height:100%;display:grid;overflow:hidden}.workbench>*{min-width:0;min-height:0}.workbench .side{gap:var(--sp-3);height:100%;padding-right:var(--sp-2);flex-direction:column;display:flex;overflow-y:auto}.workbench .side>*{flex:none;margin-bottom:0}.workbench .side>.materials-panel{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.workbench .side>.materials-panel .materials{flex:auto;min-height:72px;overflow-y:auto}.workbench .side .panel img{object-fit:contain;width:100%;max-height:200px}.workbench .editor{flex-direction:column;height:100%;display:flex;overflow:hidden}.workbench .editor .canvas-wrap{flex:auto;min-height:0}.workbench .panel img{border:var(--bd) solid var(--ink);max-width:100%;display:block}.canvas-wrap{background:repeating-conic-gradient(#efeff6 0 25%, #fff 0 50%) 50% / 20px 20px;border:var(--bd-2) solid var(--ink);box-shadow:6px 6px 0 var(--ink);padding:var(--sp-3);touch-action:none;place-content:safe center;min-width:0;display:grid;overflow:auto}canvas{image-rendering:pixelated;cursor:crosshair;touch-action:none;display:block}.dirty{padding:var(--sp-1) var(--sp-2);background:var(--warn);border:var(--bd) solid var(--ink);color:var(--ink);align-self:center}.swatches{gap:var(--sp-1);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.swatch{border:var(--bd) solid var(--ink);width:24px;height:24px;box-shadow:2px 2px 0 var(--ink);border-radius:0;padding:0}.swatch:hover:not(:disabled){box-shadow:0 0 0 var(--ink);transform:translate(2px,2px)}.swatch[aria-pressed=true]{box-shadow:0 0 0 var(--ink), 0 0 0 3px var(--warn), 0 0 0 5px var(--ink);transform:translate(2px,2px)}.swatch:focus-visible{box-shadow:2px 2px 0 var(--ink), var(--focus)}.materials-head,.material-row{gap:var(--sp-2);grid-template-columns:16px 44px minmax(24px,1fr) 52px 28px;align-items:center;display:grid}.materials-head{margin:0 0 var(--sp-1);padding:0 var(--sp-1) var(--sp-1);border-bottom:var(--bd) solid var(--ink);color:var(--ink-mute);grid-column:1/-1}.materials-head .code{grid-column:2}.materials-head .count,.materials-head .packs{text-align:right}.materials{margin:0;padding:0;list-style:none}.material-row{width:100%;padding:2px var(--sp-1);box-shadow:none;text-align:left;border:none;border-bottom:var(--bd) solid var(--peg);background:0 0}.materials li:last-child .material-row{border-bottom:none}.material-row:hover:not(:disabled){box-shadow:none;background:var(--surface-sunk);transform:none}.material-row:active:not(:disabled){box-shadow:none;transform:none}.material-row:focus-visible{box-shadow:var(--focus)}.material-row[aria-pressed=true]{background:var(--ink);color:var(--board)}.material-row[aria-pressed=true]:hover{background:var(--ink)}.material-row[aria-pressed=true] .share{background:color-mix(in srgb, var(--board) 30%, transparent)}.material-row[aria-pressed=true] .share>span{background:var(--board)}.material-row i{border:var(--bd) solid var(--ink);width:16px;height:16px;display:block}.material-row .count,.material-row .packs{text-align:right;font-variant-numeric:tabular-nums}.material-row .share{background:var(--surface-sunk);border:var(--bd) solid var(--peg);height:8px;display:block}.material-row .share>span{background:var(--ink-mute);height:100%;display:block}.score{margin:0 0 var(--sp-2);font-variant-numeric:tabular-nums;font-size:36px;line-height:48px}.score small{margin-left:var(--sp-2);font-size:12px;display:inline}.issues{margin:0;padding:0;list-style:none}.issues li{gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:var(--bd) solid var(--peg);justify-content:space-between;align-items:center;display:flex}.issues li:last-child{border-bottom:none}.auth{min-height:100%;padding:var(--sp-6) var(--sp-4);background-color:var(--board);background-image:radial-gradient(circle at center, var(--peg) 0 3px, transparent 3px);background-size:var(--pitch) var(--pitch);background-position:calc(var(--pitch) / 2) calc(var(--pitch) / 2);place-items:center;display:grid}.auth-card{width:min(360px,100%);padding:var(--sp-8) var(--sp-6) var(--sp-6);background:var(--surface);border:var(--bd-2) solid var(--ink);box-shadow:6px 6px 0 var(--ink);text-align:center}.sprite{margin-bottom:var(--sp-4);gap:1px;display:inline-grid}.sprite-row{gap:1px;display:flex}.bead{background:radial-gradient(circle at center, transparent 0 26%, var(--bead) 26% 100%);border-radius:50%;width:16px;height:16px;transition:border-radius .42s cubic-bezier(.2,.8,.3,1),background .42s,transform .42s cubic-bezier(.2,.8,.3,1)}.bead.is-empty{background:0 0}.sprite.is-fused .bead:not(.is-empty){background:var(--bead);border-radius:3px;transform:scale(1.12)}.auth-title{margin:0 0 var(--sp-1);letter-spacing:.2em;text-indent:.2em;font-size:24px;line-height:32px}.auth-sub{margin:0 0 var(--sp-6);color:var(--ink-mute)}.auth-form{gap:var(--sp-1);text-align:left;display:grid}.auth-form input{margin-bottom:var(--sp-3)}.auth-hint{margin:calc(-1 * var(--sp-2)) 0 var(--sp-3);color:var(--ink-mute)}.auth-error{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border:var(--bd) solid var(--accent);background:var(--surface-sunk);color:var(--accent);text-align:left}.auth-submit{margin-top:var(--sp-1);padding:var(--sp-3);background:var(--accent);color:#fff;letter-spacing:.3em;text-indent:.3em}.auth-submit:hover:not(:disabled){background:var(--accent)}.auth-toggle{margin-top:var(--sp-4);box-shadow:none;padding:var(--sp-1);text-underline-offset:3px;background:0 0;border:none;text-decoration:underline}.auth-toggle:hover:not(:disabled){box-shadow:none;background:var(--warn);transform:none}.auth-toggle:active:not(:disabled){box-shadow:none;transform:translate(1px,1px)}.auth-toggle:focus-visible{box-shadow:var(--focus)}.auth-credit{margin:var(--sp-3) 0 0;color:var(--ink-mute)}.hint-touch{display:none}@media (pointer:coarse){.hint-pointer{display:none}.hint-touch{display:inline}}@media (width<=1100px){.home>*,.workbench>*{min-height:auto}.workbench{grid-template-columns:minmax(0,1fr);height:auto;overflow:visible}.workbench .side,.workbench .editor{height:auto;overflow:visible}.workbench .side>.materials-panel,.workbench .side>.versions-panel{flex:none;overflow:visible}.workbench .side>.materials-panel .materials,.workbench .side>.versions-panel .versions{overflow:visible}.workbench .editor .canvas-wrap{flex:none;height:70vh}.home{flex-direction:column;display:flex}.home-work{order:-1}.intro{border-bottom:none;border-top:var(--bd-2) solid var(--ink)}}@media (width<=900px){.wide-only{display:none}.topbar{gap:var(--sp-2);padding:var(--sp-2) var(--sp-3)}.topbar .back{white-space:nowrap}.topbar .crumb{padding-left:var(--sp-2);flex:auto}.topbar .quota{white-space:nowrap}.intro-title{font-size:24px;line-height:32px}.home-work{padding:var(--sp-4) var(--sp-3)}.project-grid{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr))}.workbench.is-phone{flex-direction:column;gap:0;height:100%;padding:0;display:flex;overflow:hidden}.is-phone .editor{height:auto;padding:var(--sp-2) var(--sp-3) 0;flex:none;overflow:visible}.is-phone .error{margin:0 0 var(--sp-2)}.is-phone .toolbar,.is-phone .swatches{margin-bottom:var(--sp-2);scrollbar-width:none;flex-wrap:nowrap;padding-bottom:6px;overflow-x:auto}.is-phone .toolbar::-webkit-scrollbar{display:none}.is-phone .swatches::-webkit-scrollbar{display:none}.is-phone .toolbar-group{flex-wrap:nowrap;flex:none}.is-phone .toolbar button{white-space:nowrap}.is-phone .swatch{flex:none;width:36px;height:36px}.is-phone .toolbar button,.is-phone .zoom button{min-height:40px}.is-phone .dirty{white-space:nowrap}.is-phone .canvas-bar{margin-bottom:var(--sp-2)}.is-phone .zoom small{display:none}.is-phone .editor .canvas-wrap{height:calc(var(--app-h,100vh) * .36);padding:var(--sp-1);box-shadow:3px 3px 0 var(--ink)}@supports (height:100dvh){.is-phone .editor .canvas-wrap{height:36dvh}}.is-phone .current-color .label{display:none}.is-phone .zoom{gap:var(--sp-1)}.phone-tabs{margin-top:var(--sp-3);border-top:var(--bd-2) solid var(--ink);border-bottom:var(--bd-2) solid var(--ink);background:var(--surface);flex:none;grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.phone-tabs button{border:none;border-right:var(--bd) solid var(--peg);min-height:44px;box-shadow:none;white-space:nowrap;background:0 0;padding:0 2px}.phone-tabs button:last-child{border-right:none}.phone-tabs button:hover:not(:disabled),.phone-tabs button:active:not(:disabled){box-shadow:none;background:0 0;transform:none}.phone-tabs button[aria-selected=true],.phone-tabs button[aria-selected=true]:is(:hover,:active):not(:disabled){background:var(--ink);color:var(--board)}.phone-panel{min-height:0;padding:var(--sp-3);gap:var(--sp-3);flex-direction:column;flex:1 1 0;display:flex;overflow-y:auto}.phone-panel>*{flex:none;margin-bottom:0}.phone-panel .panel img{object-fit:contain;border:var(--bd) solid var(--ink);max-width:100%;max-height:240px;display:block}}.canvas-wrap.is-pan,.canvas-wrap.is-pan canvas{touch-action:pan-x pan-y;cursor:grab}@media (pointer:coarse){label.field-inline{grid-template-columns:24px auto 1fr;min-height:44px}label.field-inline input[type=checkbox]{min-height:0}}.canvas-stage{display:contents}.canvas-stage.is-full{z-index:100;padding:var(--sp-2);background:var(--board);flex-direction:column;display:flex;position:fixed;inset:0}.workbench .canvas-stage.is-full .canvas-wrap{height:auto;min-height:0;box-shadow:none;flex:auto}.canvas-stage.is-full .canvas-bar{margin-bottom:var(--sp-2)}@media (width<=380px){:root{--pitch:18px}.bead{width:13px;height:13px}.auth-card{padding:var(--sp-6) var(--sp-4) var(--sp-4);box-shadow:4px 4px 0 var(--ink)}.topbar{gap:var(--sp-2);padding:var(--sp-2)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}.sprite.is-fused .bead:not(.is-empty),button:hover,.btn:hover,.card-body:hover,.swatch:hover{transform:none}}.ai-actions{align-items:center;gap:var(--sp-3);margin-top:var(--sp-3);display:flex}.ai-actions small{flex:none}.ai-progress{align-items:center;gap:var(--sp-2);margin:var(--sp-3) 0 0;padding:var(--sp-2) var(--sp-3);background:var(--surface-sunk);border:var(--bd) solid var(--peg);color:var(--ink-mute);display:flex}.ai-dots{flex:none;gap:3px;display:inline-flex}.ai-dots i{background:var(--info);width:6px;height:6px;animation:.9s steps(3,end) infinite ai-blink}.ai-dots i:nth-child(2){animation-delay:.3s}.ai-dots i:nth-child(3){animation-delay:.6s}@keyframes ai-blink{0%,33%{opacity:1}34%,to{opacity:.25}}.error button{margin-left:var(--sp-3);padding:0 var(--sp-2);border-width:var(--bd);box-shadow:2px 2px 0 var(--ink);background:var(--surface);color:var(--ink)}.error button:hover:not(:disabled){box-shadow:0 0 0 var(--ink);background:var(--warn);transform:translate(2px,2px)}@media (prefers-reduced-motion:reduce){.ai-dots i{opacity:1;animation:none}}@media (pointer:coarse){button,.btn{min-height:44px}.toolbar button,.issues button,.sizes button,.topbar button,.error button{padding:var(--sp-3) var(--sp-4)}.swatch{width:44px;height:44px}input,select{min-height:44px}input[type=checkbox]{width:24px;height:24px}input[type=checkbox]:before{width:12px;height:12px}.topbar a{align-items:center;min-height:44px;display:inline-flex}}.ai-note{margin:var(--sp-3) 0 0;padding:var(--sp-2) var(--sp-3);background:var(--surface-sunk);border:var(--bd) solid var(--peg);border-left:var(--sp-1) solid var(--info);color:var(--ink)}.toolbar{align-items:center}.toolbar-group{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.toolbar-group+.toolbar-group{margin-left:var(--sp-3);padding-left:var(--sp-3);border-left:var(--bd) solid var(--peg)}.canvas-bar{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2);flex:none;display:flex}.current-color{align-items:center;gap:var(--sp-2);color:var(--ink-mute);display:inline-flex}.current-color i{border:var(--bd) solid var(--ink);width:20px;height:20px;display:block}.current-color b{color:var(--ink)}.current-color .none{color:var(--ink-mute)}.zoom{align-items:center;gap:var(--sp-2);margin-left:auto;display:inline-flex}.zoom button{padding:var(--sp-1) var(--sp-2);border-width:var(--bd);min-width:28px;box-shadow:3px 3px 0 var(--ink)}.zoom button:hover:not(:disabled){box-shadow:3px 3px 0 var(--ink);background:var(--warn);transform:none}.zoom button:active:not(:disabled){box-shadow:0 0 0 var(--ink);transform:translate(3px,3px)}.zoom button:focus-visible{box-shadow:3px 3px 0 var(--ink), var(--focus)}.zoom button:disabled{box-shadow:3px 3px 0 var(--peg)}.zoom button[aria-pressed=true]{background:var(--ink);color:var(--board)}.zoom button[aria-pressed=true]:hover{background:var(--ink)}.zoom small{white-space:nowrap}.materials-total{margin:0 0 var(--sp-2);padding-bottom:var(--sp-2);border-bottom:var(--bd) solid var(--ink);color:var(--ink);font-variant-numeric:tabular-nums}.workbench .side,.canvas-wrap,.intro,.home-work{scrollbar-width:thin;scrollbar-color:var(--ink) var(--surface-sunk)}.workbench .side::-webkit-scrollbar{width:12px;height:12px}.canvas-wrap::-webkit-scrollbar{width:12px;height:12px}.intro::-webkit-scrollbar{width:12px;height:12px}.home-work::-webkit-scrollbar{width:12px;height:12px}.workbench .side::-webkit-scrollbar-track{background:var(--surface-sunk)}.canvas-wrap::-webkit-scrollbar-track{background:var(--surface-sunk)}.intro::-webkit-scrollbar-track{background:var(--surface-sunk)}.home-work::-webkit-scrollbar-track{background:var(--surface-sunk)}.workbench .side::-webkit-scrollbar-thumb{background:var(--ink);border:2px solid var(--surface-sunk);border-radius:0}.canvas-wrap::-webkit-scrollbar-thumb{background:var(--ink);border:2px solid var(--surface-sunk);border-radius:0}.intro::-webkit-scrollbar-thumb{background:var(--ink);border:2px solid var(--surface-sunk);border-radius:0}.home-work::-webkit-scrollbar-thumb{background:var(--ink);border:2px solid var(--surface-sunk);border-radius:0}.workbench .side::-webkit-scrollbar-corner{background:var(--surface-sunk)}.canvas-wrap::-webkit-scrollbar-corner{background:var(--surface-sunk)}.intro::-webkit-scrollbar-corner{background:var(--surface-sunk)}.home-work::-webkit-scrollbar-corner{background:var(--surface-sunk)}.feedback{margin-top:var(--sp-3)}.feedback>summary{cursor:pointer;align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0;color:var(--ink-mute);list-style:none;display:flex}.feedback>summary::-webkit-details-marker{display:none}.feedback>summary:before{content:"+";border:var(--bd) solid var(--ink);background:var(--surface);width:14px;height:14px;color:var(--ink);flex:none;place-content:center;line-height:1;display:grid}.feedback[open]>summary:before{content:"−"}.feedback>summary:focus-visible{box-shadow:var(--focus);outline:none}.feedback>:not(summary){margin-top:var(--sp-2)}.feedback input,.feedback select{width:100%}.feedback button{margin-top:var(--sp-2)}.workbench .side>.panel{padding:var(--sp-3)}.workbench .side>.panel>h2{margin-bottom:var(--sp-2)}.versions{margin:0;padding:0;list-style:none}.version-row{gap:var(--sp-1);width:100%;padding:var(--sp-1);box-shadow:none;text-align:left;border:none;border-bottom:var(--bd) solid var(--peg);font-variant-numeric:tabular-nums;white-space:nowrap;background:0 0;grid-template-columns:34px 36px 32px 1fr;align-items:center;display:grid}.versions li:last-child .version-row{border-bottom:none}.version-row:hover:not(:disabled){box-shadow:none;background:var(--surface-sunk);transform:none}.version-row:active:not(:disabled){box-shadow:none;transform:none}.version-row:focus-visible{box-shadow:var(--focus)}.version-row .score{text-align:right;font-size:12px;line-height:16px}.version-row .source,.version-row .colors,.version-row .time{color:var(--ink-mute)}.version-row .time{text-align:right}.version-row[aria-current]{background:var(--ink);color:var(--board);opacity:1}.version-row[aria-current] .source,.version-row[aria-current] .colors,.version-row[aria-current] .time{color:var(--board)}.version-row:disabled:not([aria-current]){background:0 0}.workbench .side>.versions-panel{flex-direction:column;flex:auto;min-height:96px;display:flex;overflow:hidden}.workbench .side>.versions-panel .versions{flex:auto;min-height:0;overflow-y:auto}.field-pair{gap:var(--sp-2);margin-bottom:var(--sp-2);grid-template-columns:1fr 1fr;display:grid}.field-pair input{width:100%}.field-inline{gap:var(--sp-2);margin-top:var(--sp-2);color:var(--ink);cursor:pointer;grid-template-columns:16px auto 1fr;align-items:center;display:grid}.field-inline small{display:inline}.sizes button[aria-pressed=true]{background:var(--ink);color:var(--board)}.sizes button[aria-pressed=true]:hover{background:var(--ink)}.size-readout{margin:0 0 var(--sp-2);padding:var(--sp-1) var(--sp-2);background:var(--surface-sunk);border:var(--bd) solid var(--peg);font-variant-numeric:tabular-nums;gap:2px;display:grid}.size-readout span{color:var(--ink-mute)}.face-hint{margin:0 0 var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface-sunk);border:var(--bd) solid var(--peg);border-left:var(--sp-1) solid var(--warn)}.face-hint p{margin:0 0 var(--sp-2)}.face-hint b{background:var(--warn);padding:0 2px}.face-hint button{padding:var(--sp-1) var(--sp-2);border-width:var(--bd);box-shadow:3px 3px 0 var(--ink)}.bg-note{margin:var(--sp-1) 0 0 calc(16px + var(--sp-2))}.topbar .admin-link{padding:var(--sp-1) var(--sp-3);border:var(--bd) solid var(--ink);background:var(--surface-sunk)}.topbar .admin-link:before{background:var(--info)}.topbar .admin-link:hover{background:var(--warn)}.admin{gap:var(--sp-6);grid-template-columns:168px minmax(0,1fr);align-items:start;display:grid}.admin-nav{gap:var(--sp-2);flex-direction:column;display:flex;position:sticky;top:0}.admin-nav h1{color:var(--ink-mute);margin:0 0 var(--sp-2);font-size:12px;line-height:16px}.admin-nav a{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:var(--bd) solid var(--ink);background:var(--surface);color:var(--ink);box-shadow:3px 3px 0 var(--ink);text-decoration:none;display:flex}.admin-nav a:before{content:"";border:var(--bd) solid var(--ink);background:var(--peg);flex:none;width:8px;height:8px}.admin-nav a:hover{background:var(--warn)}.admin-nav a.active{background:var(--ink);color:var(--board);box-shadow:none;transform:translate(3px,3px)}.admin-nav a.active:before{background:var(--bead-red);border-color:var(--board)}.admin-nav a:focus-visible{box-shadow:var(--focus);outline:none}.admin-body{background:var(--surface);border:var(--bd-2) solid var(--ink);box-shadow:4px 4px 0 var(--ink);padding:var(--sp-4);min-width:0}.admin-body>h2{color:var(--ink);margin-bottom:var(--sp-4);font-size:24px;line-height:32px}.admin-body h3{margin:var(--sp-6) 0 var(--sp-2);color:var(--ink-mute);font-size:12px;font-weight:400}.admin-meta{color:var(--ink-mute);margin:0 0 var(--sp-3)}.admin-scroll{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%}.admin-table th,.admin-table td{padding:var(--sp-2) var(--sp-3);border-bottom:var(--bd) solid var(--peg);text-align:left;vertical-align:middle;white-space:nowrap}.admin-table th{background:var(--surface-sunk);color:var(--ink-mute);border-bottom-color:var(--ink)}.admin-table .num{text-align:right}.admin-table .clip{text-overflow:ellipsis;max-width:180px;overflow:hidden}.admin-table tr.dim td{color:var(--ink-mute)}.admin-table code,.admin-fresh code{letter-spacing:1px;font-family:inherit}button.small{padding:2px var(--sp-2);border-width:var(--bd);box-shadow:2px 2px 0 var(--ink)}button.small:hover:not(:disabled){box-shadow:1px 1px 0 var(--ink);transform:translate(1px,1px)}.status{padding:0 var(--sp-1);border:var(--bd) solid currentColor;margin-right:var(--sp-1);display:inline-block}.status-done,.status-active{color:var(--ink);background:var(--white)}.status-failed{color:var(--accent)}.status-expired,.status-used_up{color:var(--ink-mute)}.status-running,.status-pending{color:var(--info)}.admin-error{text-overflow:ellipsis;max-width:260px;color:var(--accent);display:block;overflow:hidden}.tag{padding:0 var(--sp-1);background:var(--ink);color:var(--board);display:inline-block}.admin-stats{gap:var(--sp-3);margin:0 0 var(--sp-2);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.admin-stats div{border:var(--bd) solid var(--ink);padding:var(--sp-2) var(--sp-3);background:var(--board)}.admin-stats dt{color:var(--ink-mute)}.admin-stats dd{margin:0;font-size:24px;line-height:32px}.admin-stats dd.bad{color:var(--accent)}.admin-form{align-items:center;gap:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.admin-form label{align-items:center;gap:var(--sp-2);display:inline-flex}.admin-form input{width:72px}.admin-fresh{align-items:center;gap:var(--sp-3);padding:var(--sp-3);margin-bottom:var(--sp-4);border:var(--bd) dashed var(--ink);background:var(--board);flex-wrap:wrap;display:flex}.admin-fresh p{flex-basis:100%;margin:0}.admin-fresh code{word-break:break-all;font-size:24px;line-height:32px}.admin-quota{gap:var(--sp-2);align-items:center;display:inline-flex}.admin-quota input{width:64px;padding:2px var(--sp-2)}.admin-feedback{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.admin-feedback li{gap:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:var(--bd) solid var(--peg);grid-template-columns:96px minmax(0,1fr);display:grid}.admin-feedback img{object-fit:contain;width:96px;height:96px;image-rendering:pixelated;border:var(--bd) solid var(--ink);background:var(--white)}.admin-feedback p{margin:0 0 var(--sp-1)}.admin-feedback-head{gap:var(--sp-2);align-items:center;display:flex}.admin-feedback-note{white-space:pre-wrap}.admin-new{margin-bottom:var(--sp-4)}.admin-new summary{cursor:pointer;padding:var(--sp-2) 0}.admin-preset{gap:var(--sp-2);padding:var(--sp-3);margin-bottom:var(--sp-3);border:var(--bd) solid var(--ink);background:var(--board);display:grid}.admin-preset.dim{background:var(--surface-sunk)}.admin-preset-row{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.admin-preset-row label:not(.field-inline){align-items:center;gap:var(--sp-2);display:inline-flex}.admin-preset-row input[type=number]{width:72px}.admin-preset textarea{resize:vertical;width:100%}.admin-preset button{justify-self:start}@media (width<=720px){.admin{gap:var(--sp-4);grid-template-columns:minmax(0,1fr)}.admin-nav{flex-flow:wrap;position:static}.admin-nav h1{flex-basis:100%}.admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.auth-admin{background-color:var(--ink);background-image:radial-gradient(circle,#4a3d2f 0 3px,#0000 3px)}.auth-admin .auth-card{box-shadow:6px 6px #000}.auth-admin .auth-submit,.auth-admin .auth-submit:hover:not(:disabled){background:var(--ink)}.auth-admin-badge{margin:0 0 var(--sp-3);padding:2px var(--sp-2);background:var(--info);color:#fff;letter-spacing:.2em;display:inline-block}.auth-admin-back{margin-top:var(--sp-4);color:var(--ink-mute);display:inline-block}.admin-links{flex-basis:100%;margin:0;padding:0;list-style:none}.admin-links code{word-break:break-all;font-size:12px;line-height:20px}.admin-actions{gap:var(--sp-2);display:flex}.fidelity{margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:var(--bd) solid var(--peg)}.fidelity h2{align-items:center;gap:var(--sp-2);color:var(--ink);display:flex}.fidelity h2:before{content:"";background:var(--info);border:var(--bd) solid var(--ink);flex:none;width:8px;height:8px}.fidelity+h2{align-items:center;gap:var(--sp-2);color:var(--ink);display:flex}.score.score-second{font-size:24px;line-height:32px}
