@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-sans-latin-400-normal-CW0RaeGs.woff2) format("woff2"),url(./dm-sans-latin-400-normal-BwCSEQnW.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-sans-latin-500-normal-B9HHJjqV.woff2) format("woff2"),url(./dm-sans-latin-500-normal-Dr3UlScf.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./dm-sans-latin-600-normal-Aqo67rzb.woff2) format("woff2"),url(./dm-sans-latin-600-normal-BmdmIIQ2.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./dm-sans-latin-700-normal-DvUfVpUG.woff2) format("woff2"),url(./dm-sans-latin-700-normal-CUSSCpQX.woff) format("woff")}:root{font-family:DM Sans,sans-serif;color:#354e45;background:#7889b8;font-synthesis:none}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden}button{font:inherit;cursor:pointer;border:0}button:focus-visible{outline:3px solid #f3c773;outline-offset:4px}button:disabled{cursor:default;opacity:.4}button:hover:not(:disabled){background-color:#e8eddf}button:active:not(:disabled){transform:translateY(1px)}[hidden]{display:none!important}svg{vertical-align:middle;flex-shrink:0}h2,p{margin:0}#gameUi{position:fixed;inset:0;isolation:isolate}#world{position:absolute;inset:0;overflow:hidden}#world canvas{display:block}.tools{position:absolute;z-index:4;top:22px;right:24px;display:flex;gap:2px;padding:4px;border-radius:12px;background:#fff7e4d9;box-shadow:0 3px 12px #394e4512}.icon-button{width:36px;height:36px;border-radius:8px;background:transparent;color:#50665b;display:grid;place-items:center}.work-marker{position:absolute;z-index:3;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;pointer-events:none;filter:drop-shadow(0 4px 6px #283a3428)}.letters{display:flex;align-items:center;justify-content:center;gap:6px;background:#fff9eb;border:1px solid #eed9b3;border-bottom:3px solid #c4b793;min-width:64px;padding:9px 13px;border-radius:10px;min-height:51px}.letter{font:700 27px DM Sans,sans-serif;color:#a1aa9b;display:grid;place-items:center;min-width:21px;position:relative;line-height:1.15}.letter.current{color:#344d42}.letter.current:after{content:"";position:absolute;bottom:-5px;left:3px;right:3px;height:2px;background:#ba8a42;border-radius:2px}.letter.done{color:#46845f}.work-marker.is-building .letters{transition:background-color .15s,border-color .15s;background:#70b27d;border-color:#88c291;border-bottom-color:#438655}.work-marker.is-building .letter{color:#173e2c}.marker-stem{width:2px;height:21px;background:linear-gradient(#fff1c7,#ffefbd70)}.target-ring{width:13px;height:6px;border:1.5px solid #ffe6b4;border-radius:50%;background:#fff3c580}.work-marker.sleeping{opacity:.45}.roadmap{position:absolute;z-index:4;bottom:19px;left:50%;transform:translate(-50%);width:min(690px,calc(100vw - 48px));padding:12px 15px 10px;border-radius:14px;background:#fff9e5e8;box-shadow:0 3px 18px #283f3220}.roadmap ol{display:grid;grid-template-columns:repeat(10,1fr);list-style:none;padding:0;margin:0}.roadmap li{display:flex;flex-direction:column;align-items:center;gap:5px;position:relative}.roadmap li:before{content:"";position:absolute;top:11px;right:50%;width:100%;height:1px;background:#d3d9c7}.roadmap li:first-child:before{display:none}.milestone-number{width:23px;height:23px;position:relative;z-index:1;display:grid;place-items:center;background:#f4f1e3;border:1px solid #d3d9c7;border-radius:50%;color:#9aa28f;font-size:10px}.milestone-title{font-size:9px;color:#87937f;white-space:nowrap}.roadmap li.selected .milestone-number{background:#537c62;color:#fff9e9;border-color:#537c62}.roadmap li.selected .milestone-title{color:#385642;font-weight:700}.roadmap li.completed .milestone-number{background:#dde8cc;color:#6b875e;border-color:#d1dfc3}.step-parts{display:flex;gap:2px;width:40px;height:3px}.step-parts i{flex:1;background:#d9dfce;border-radius:1px}.step-parts i.built{background:#7e9e6a}.locked .step-parts{visibility:hidden}.play-hint{position:absolute;z-index:3;bottom:106px;left:50%;transform:translate(-50%);font-size:12px;color:#fff6df;text-shadow:0 1px 4px #304634;white-space:nowrap}.save-state{position:absolute;z-index:4;bottom:102px;right:24px;border-radius:8px;background:#fff7e4;padding:8px 12px;font-size:11px}.pause-chip,.finish-card{position:absolute;z-index:5;top:24px;left:50%;transform:translate(-50%);border-radius:11px;padding:7px 8px 7px 15px;background:#fff7e8f0;box-shadow:0 3px 15px #30413220;display:flex;align-items:center;gap:16px;font-size:13px}.pause-chip button,.finish-card button{background:#547762;color:#fff7df;border-radius:7px;padding:8px 11px;display:flex;align-items:center;gap:8px;font-size:12px}.pause-chip button:hover,.finish-card button:hover{background:#698c73}.finish-card>span{display:flex;align-items:center;gap:8px}.modal-backdrop{position:fixed;inset:0;z-index:20;background:#20392d55;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center}.modal{width:390px;position:relative;padding:29px;border:1px solid #fff3db;background:#fbf7e9;border-radius:18px;box-shadow:0 20px 90px #20352640;text-align:center;max-height:90vh;overflow:auto;outline:none}.modal-close{position:absolute;right:10px;top:10px}.modal h2{font-size:24px;font-weight:700;margin:7px 0 20px}.modal p{font-size:13px;line-height:1.65;color:#7e8972;margin:14px 0}.overline{font-size:10px;color:#8c977f}.modal .small-note{font-size:11px;margin:18px 0}.mode-options{display:grid;gap:9px;margin:14px 0}.mode-option{display:flex;gap:13px;text-align:left;align-items:center;background:#f0f0e2;color:#7b8c69;border:1px solid #dce1ca;border-radius:10px;padding:15px}.mode-option.chosen{background:#e4ecd4;border-color:#9db781}.mode-option strong{display:block;font-size:13px;color:#5d7450}.mode-option small{display:block;font-size:11px;margin-top:3px;color:#7c8a70}.sound-option{display:flex;gap:8px;align-items:center;margin:16px auto 0;background:transparent;color:#64785a;padding:8px 13px;border-radius:8px;font-size:12px}.primary-button{display:block;width:100%;padding:12px 15px;border-radius:8px;background:#537962;color:#fff9e9;font-size:13px;font-weight:600}.primary-button:hover{background:#64886d!important}.text-button{background:transparent;color:#89937e;font-size:11px;margin:14px 0 0;padding:7px}.screen-reader-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.wobble{animation:wobble .2s ease-in-out}@keyframes wobble{0%,to{transform:translate(0)}33%{transform:translate(-4px)}66%{transform:translate(4px)}}@media(min-width:1800px){.roadmap{bottom:25px;width:800px;padding:14px 20px 12px}.milestone-title{font-size:10px}.milestone-number{width:26px;height:26px}.roadmap li:before{top:13px}.tools{top:28px;right:30px}.icon-button{width:40px;height:40px}.letter{font-size:31px;min-width:25px}.letters{padding:10px 16px}.play-hint{bottom:119px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.work-marker{--marker-length:88px;--marker-angle:43.152deg;width:0;height:0;transform:none;display:block}.letters{position:absolute;left:60px;top:-115px;width:max-content}.marker-stem{position:absolute;left:0;bottom:0;height:var(--marker-length);transform:rotate(var(--marker-angle));transform-origin:bottom}.target-ring{position:absolute;left:-6px;bottom:-3px}.checking .finish-card,.checking .pause-chip{top:64px}.start-choice{position:absolute;z-index:5;top:clamp(84px,14vh,145px);left:50%;transform:translate(-50%);width:550px;padding:20px;background:#fff7e8f2;border:1px solid #fff3dc;border-radius:14px;box-shadow:0 8px 25px #30413220;text-align:center}.start-choice h2{font-size:17px;font-weight:600;margin:0 0 15px}.modal:has(.mode-options){width:550px}.mode-options{grid-template-columns:repeat(3,1fr);gap:8px}.mode-option{min-height:64px;padding:12px 9px;justify-content:center;text-align:center}.mode-option small{font-size:10px;line-height:1.45}.key-settings{text-align:left;border-top:1px solid #dce1ca;margin:17px 0;padding-top:15px}.key-settings-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}.key-settings-heading label{font-size:12px;font-weight:600;color:#526c54}.key-settings-heading small{font-size:10px;color:#83917a}.key-controls{display:flex;align-items:stretch;gap:12px}.key-controls select{flex:1;min-width:0;appearance:auto;padding:9px 12px;font:500 12px DM Sans,sans-serif;color:#49634e;background:#eff0e1;border:1px solid #d3dcc6;border-radius:8px}.key-controls select:focus-visible{outline:3px solid #f3c773;outline-offset:3px}.key-stepper{display:flex;align-items:center;justify-content:space-between;min-width:138px;background:#e5ecd8;border:1px solid #cbd7bd;border-radius:8px;overflow:hidden}.key-stepper button{width:34px;align-self:stretch;background:transparent;color:#496b50;font-size:21px}.key-stepper output{min-width:58px;padding:0 5px;text-align:center;font-size:12px;font-weight:700;color:#46664c}.key-preview{display:flex;flex-wrap:wrap;gap:4px;margin:12px 0 0}.key-chip{min-width:23px;height:25px;padding:4px 5px;display:grid;place-items:center;background:#ebeede;border:1px solid #d7dec8;border-bottom:2px solid #c2cdb4;border-radius:5px;font-size:11px;color:#62765b}.key-chip.key-added{background:#dbe8cb;border-color:#aec397;color:#365b3d}.key-settings .key-note{font-size:10px;line-height:1.5;margin:9px 0 0;color:#7d8b73}.key-settings-inactive .key-controls{opacity:.5}.start-choice{max-height:calc(100vh - 190px);overflow:auto}.start-choice .primary-button{margin-top:16px}.work-marker.is-name .letters,.work-marker.is-word .letters{gap:1px;padding-inline:16px}.work-marker.is-name .letter,.work-marker.is-word .letter{min-width:0}.work-marker.is-name .letter.current:after,.work-marker.is-word .letter.current:after{left:0;right:0}.letter.letter-space{font-size:19px;min-width:20px;margin-inline:2px}.start-choice{width:min(850px,calc(100vw - 48px));top:clamp(24px,6vh,75px);max-height:calc(100vh - 120px);padding:20px 24px}.modal:has(.mode-options){width:min(850px,calc(100vw - 48px));padding:20px 24px;max-height:calc(100vh - 40px)}.modal:has(.mode-options) h2{font-size:21px;margin:2px 0 12px}.mode-options{margin:10px 0}.mode-option{min-height:52px;padding:8px}.key-settings{margin:13px 0 8px;padding-top:12px}.key-controls{gap:9px}.key-controls select{padding:7px 10px}.keyboard{margin-top:13px;display:flex;flex-direction:column;gap:4px}.keyboard-row{display:flex;gap:4px;height:39px}.keycap,.keyboard-control{flex:var(--key-width) 1 0;min-width:0;border:1px solid #e0dfd4;border-radius:6px;overflow:hidden;background:#f0eee5}.keycap{display:flex;position:relative;flex-wrap:wrap;align-content:stretch;box-shadow:0 2px #d8d7c9}.keyboard-control{font-size:10px;display:flex;align-items:center;justify-content:center;color:#a1a391;background:#eeede4;box-shadow:0 2px #dfdfd3}.keyboard-row:nth-child(2)>.keyboard-control:last-child{border-bottom:0;border-radius:6px 6px 0 0;margin-bottom:-5px;z-index:1;box-shadow:none}.keyboard-row:nth-child(3)>.keyboard-control:last-child{border-top:0;border-radius:0 0 6px 6px}.finger-index{--finger:#c54948;--finger-pale:#f7d9d3;--finger-ink:#722c2c}.finger-middle{--finger:#b88b16;--finger-pale:#f4e6a8;--finger-ink:#705416}.finger-ring{--finger:#4f8f55;--finger-pale:#d4e8cc;--finger-ink:#315b37}.finger-little{--finger:#8a63b5;--finger-pale:#e3d7ee;--finger-ink:#593c79}.finger-thumb{--finger:#427ea9;--finger-pale:#d1e5f1;--finger-ink:#285975}.keyboard-key{position:relative;flex:1 1 100%;min-width:0;padding:1px 3px;background:#f3f0e7;color:var(--finger-ink);font-weight:600;font-size:12px;opacity:.65;line-height:1.2;outline-offset:-3px!important;border-radius:0;box-shadow:inset 0 -2px var(--finger-pale)}.keyboard-key.key-on{opacity:1;background:var(--finger-pale);box-shadow:inset 0 -3px var(--finger)}.keyboard-key:hover:not(:disabled){opacity:1;background:var(--finger-pale)}.keyboard-key:active:not(:disabled){transform:none;filter:brightness(.96)}.keyboard-key.key-on:disabled{opacity:1}.keyboard-key i{position:absolute;right:4px;bottom:5px;width:3px;height:3px;border-radius:50%;background:var(--finger)}.keycap-multi .key-primary{order:2;flex-basis:100%;height:22px}.keycap-multi .key-secondary{order:1;flex-basis:0;height:15px;font-size:9px;box-shadow:none;font-weight:500}.keycap-multi .key-secondary.key-on{background:var(--finger);color:#fff}.keycap-multi .key-secondary i{display:none}.finger-legend{display:flex;justify-content:center;gap:18px;margin:10px 0 0;flex-wrap:wrap}.finger-legend span{font-size:9px;color:#78816e;display:flex;align-items:center;gap:5px}.finger-legend i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--finger)}.key-options{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.extra-toggle{display:flex;align-items:center;gap:8px;padding:5px 0;background:transparent;color:#536c51;font-size:11px;border-radius:5px}.extra-toggle small{font-size:10px;color:#8a927f;margin-left:3px}.toggle-track{display:flex;align-items:center;width:28px;height:17px;padding:3px;background:#d4d8c9;border-radius:12px}.toggle-track i{display:block;width:11px;height:11px;background:#fffdf4;border-radius:50%;box-shadow:0 1px 2px #4e604b33}.toggle-track.toggle-on{background:#567e60;justify-content:flex-end}.toggle-track.toggle-mixed{background:#929f7d;justify-content:center}.reset-keys{background:transparent;text-decoration:underline;text-underline-offset:3px;color:#76846a;font-size:10px;padding:6px}.key-settings .key-note{font-size:10px;margin:6px 0 0}.modal:has(.mode-options) .sound-option{margin:6px auto 0;padding:6px}.modal:has(.mode-options) .small-note{margin:7px 0 12px}.modal:has(.mode-options) .text-button{margin:7px 0 0;padding:4px}.start-choice .primary-button{margin-top:12px}.checking .start-choice{top:120px;max-height:calc(100vh - 142px)}.checking>nav{z-index:19!important}.legal-note{margin:10px 0 0;font-size:11px;text-align:center;color:#53654e}.legal-note a{color:inherit;text-underline-offset:3px}.legal-note a:focus-visible{outline:2px solid currentColor;outline-offset:3px}
