:root{font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo',sans-serif;color:#344365;background:#bae6f2;--ink:#344d49;--cream:#fff9e8}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}button,a{touch-action:manipulation}button{font:inherit;cursor:pointer;border:0}button:focus-visible,a:focus-visible{outline:3px solid #b77555;outline-offset:5px}[hidden]{display:none!important}#world{display:block;width:100%;height:100%;touch-action:none;outline:none;cursor:crosshair}.hud{position:fixed;top:26px;left:30px;right:30px;display:flex;justify-content:space-between;align-items:center;pointer-events:none;z-index:4}.wordmark{font:25px Jua,sans-serif;letter-spacing:-.5px;text-shadow:0 2px 10px #fff9}.wordmark>span{font-size:28px;color:#9561bb;margin-right:6px}.hud-right{display:flex;gap:14px;align-items:center}.hud-right>span{background:#fff8e8d9;border:1px solid #fff9;padding:10px 16px;border-radius:30px;font:16px Jua,sans-serif;box-shadow:0 4px 20px #5d7d6112}#sound{pointer-events:auto;width:40px;height:40px;border-radius:50%;background:#fff8e8d9;color:#45594e;font-size:21px;box-shadow:0 4px 20px #5d7d6112}#sound[aria-pressed=true]{opacity:.6}.keys{position:fixed;left:30px;bottom:26px;display:flex;gap:15px;font-size:11px;color:#47635e;pointer-events:none;opacity:.8;text-shadow:0 1px 8px #fffd}kbd{font:10px inherit;border:1px solid #708c7855;border-radius:5px;padding:3px 5px;margin-right:3px;white-space:nowrap}.keys span{white-space:nowrap}#encounter{position:fixed;bottom:45px;left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:10px;z-index:5;pointer-events:none}#encounter-name{font:16px Jua,sans-serif;color:#365550;background:#fff9e9e6;border-radius:12px;padding:7px 12px;box-shadow:0 3px 15px #3b665a15}#encounter-name:empty{display:none}#interact{pointer-events:auto;border:1px solid #fff6;border-radius:40px;padding:15px 25px;background:#7860b9;color:#fff9e8;box-shadow:0 5px 0 #514184,0 8px 26px #3762583b;display:flex;gap:10px;align-items:center;white-space:nowrap;font-size:14px}#interact b{font-size:21px;color:#ffe8a6}#interact kbd{border-color:#fff6;color:#ecf0dc;margin-left:5px}#interact:active{transform:translateY(3px);box-shadow:0 2px 0 #514184}#interact:disabled{opacity:.4;pointer-events:none}#toast{position:fixed;left:50%;top:88px;transform:translateX(-50%);padding:12px 22px;border:1px solid #fff9;border-radius:22px;color:#4b6156;background:#fff8e8eb;box-shadow:0 5px 30px #59726420;font:16px Jua,sans-serif;z-index:7;text-align:center;max-width:90%;pointer-events:none}#song-progress{position:fixed;top:100px;left:50%;transform:translateX(-50%);width:250px;display:grid;grid-template-columns:1fr 24px;gap:8px;align-items:center;color:#4b6156;background:#fff9e6e6;padding:12px 15px;border-radius:18px;z-index:4;font-size:12px}#song-title{grid-column:1}#song-progress>div{grid-column:1;height:3px;border-radius:3px;background:#c9cebb;overflow:hidden}#song-fill{height:100%;width:0;display:block;background:#b687d5}#stop-song{grid-row:1/3;grid-column:2;background:none;color:#617668;font-size:25px}#bubbles{position:fixed;inset:0;pointer-events:none;z-index:3}.bubble{position:absolute;max-width:190px;transform:translate(-50%,-100%);font-size:12px;line-height:1.6;background:#fffdf1ed;border-radius:16px 16px 16px 3px;padding:10px 15px;color:#466055;box-shadow:0 6px 20px #315f4d15;transition:opacity .2s}.bubble.happy{color:#8e6771;background:#fff6e9;box-shadow:0 0 18px #ffcc8c33}.bubble strong{display:block;font:13px Jua,sans-serif;margin-bottom:3px}#badges{position:fixed;right:30px;bottom:26px;display:flex;gap:8px;pointer-events:none}#badges span{display:grid;place-items:center;width:38px;height:38px;border:1px solid #fff9;background:#fff9e8d9;border-radius:50%;font-size:23px;color:#ae8673}#loading,#error{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#e3e9db;color:#527168;font:22px Jua,sans-serif;z-index:10}#error{flex-direction:column;gap:14px}#error button,#error a{padding:12px 20px;border-radius:14px;background:#547569;color:#fff8e8;text-decoration:none;font:14px sans-serif}#joystick{display:none;position:fixed;bottom:36px;left:28px;width:100px;height:100px;border:1px solid #fff9;border-radius:50%;background:#fff9e835;touch-action:none;z-index:5}#joystick i{position:absolute;left:30px;top:30px;width:40px;height:40px;border:1px solid #fff8;border-radius:50%;background:#fff9e8b3;box-shadow:0 2px 12px #59726422;pointer-events:none}.painting #world{cursor:crosshair}.singing #encounter{opacity:0;pointer-events:none}.singing #interact{pointer-events:none}
@media(pointer:coarse){#joystick{display:block}.keys{display:none}#encounter{left:auto;right:24px;bottom:53px;transform:none}#interact kbd{display:none}#badges{bottom:18px}#encounter-name{font-size:13px}}@media(max-width:650px){.hud{top:20px;left:20px;right:18px}.wordmark{font-size:22px}.wordmark>span{font-size:24px;margin-right:3px}.hud-right{gap:8px}.hud-right>span{font-size:14px;padding:8px 12px}#sound{width:34px;height:34px;font-size:18px}.keys{left:16px;bottom:18px;gap:10px;font-size:9px}.keys span:last-child{display:none}kbd{font-size:9px}#badges{right:18px;bottom:18px}#badges span{width:28px;height:28px;font-size:17px}#encounter{bottom:60px}#interact{font-size:13px;padding:13px 19px}#encounter-name{font-size:13px}#toast{top:77px;font-size:14px;padding:10px 15px;width:max-content;max-width:90%}#song-progress{top:78px;width:220px}.bubble{font-size:11px;max-width:150px;padding:8px 11px}.bubble strong{font-size:12px}#joystick{width:88px;height:88px;left:22px;bottom:30px}#joystick i{left:24px;top:24px} }@media(prefers-reduced-motion:reduce){.bubble{transition:none}}

.bubble{pointer-events:auto;cursor:pointer;border:0;text-align:left;font-family:inherit}.bubble:hover{background:#fff9db}

@media(max-width:650px){#joystick{display:block}.keys{display:none}#encounter{left:auto;right:20px;bottom:53px;transform:none}#interact kbd{display:none}}

.bubble.small{padding:6px 10px;border-radius:14px}.bubble.small strong{margin:0;font-size:12px}

.bubble{width:max-content}
