:root{--ink: #2b2a33;--card: rgba(255, 255, 255, .86);--accent: #ff8a3d}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#9fd3f2;font-family:Nunito,Segoe UI,system-ui,sans-serif;color:var(--ink);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}#app,#app canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}#loading{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;background:linear-gradient(#9fd3f2,#d9f0c8);z-index:50;transition:opacity .6s;font-size:18px;font-weight:700}#loading.hidden{opacity:0;pointer-events:none}.spinner{width:46px;height:46px;border-radius:50%;border:5px solid rgba(255,255,255,.6);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#topbar{position:fixed;top:12px;left:16px;right:16px;z-index:10;display:flex;align-items:center;gap:14px;flex-wrap:wrap;pointer-events:none}#topbar h1{margin:0;font-size:26px;font-weight:900;color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.18),0 4px 14px rgba(0,0,0,.18)}#topbar p{margin:0;color:#fff;font-weight:700;text-shadow:0 1px 6px rgba(0,0,0,.3)}.top-actions{margin-left:auto;display:flex;gap:8px;pointer-events:auto}.top-actions button,dialog button{font:inherit;font-weight:800;border:0;border-radius:999px;padding:8px 16px;background:var(--card);color:var(--ink);cursor:pointer;box-shadow:0 3px 10px #00000026}.top-actions button:hover{background:#fff}#dock{position:fixed;left:50%;bottom:14px;transform:translate(-50%);z-index:10;display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:7px;width:max-content;max-width:calc(100vw - 24px);max-height:34vh;overflow-y:auto;background:#ffffff8c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:22px;box-shadow:0 6px 24px #00000026;scrollbar-width:thin}#dock button{flex:0 0 auto;width:56px;padding:4px 1px;border:0;border-radius:16px;cursor:pointer;background:#fff;font:inherit;font-size:10.5px;font-weight:800;color:var(--ink);display:grid;justify-items:center;gap:2px;box-shadow:0 2px #00000014;transition:transform .15s,background .15s}#dock button .emoji{font-size:23px;line-height:1.1}#dock button:hover{transform:translateY(-3px)}#dock button.playing{background:#ffe2c9;transform:translateY(-3px) scale(1.04)}#tooltip{position:fixed;z-index:20;pointer-events:none;padding:4px 10px;border-radius:999px;background:var(--ink);color:#fff;font-weight:800;font-size:14px;transform:translate(-50%,-140%);opacity:0;transition:opacity .12s}#tooltip.show{opacity:1}#bubbles{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:15}.bubble{position:absolute;transform:translate(-50%,-100%);padding:8px 14px;border-radius:18px;background:#fff;font-weight:900;font-size:18px;white-space:nowrap;box-shadow:0 6px 18px #0000002e;animation:pop .25s ease-out;transition:opacity .4s}.bubble small{display:block;font-size:12px;font-weight:800;color:#888;text-align:center}.bubble:after{content:"";position:absolute;left:50%;bottom:-9px;margin-left:-9px;border:9px solid transparent;border-bottom:0;border-top-color:#fff}.bubble.fade{opacity:0}@keyframes pop{0%{transform:translate(-50%,-100%) scale(.4)}to{transform:translate(-50%,-100%) scale(1)}}dialog{border:0;border-radius:18px;padding:20px 24px;max-width:min(560px,calc(100vw - 32px));box-shadow:0 20px 60px #0000004d;font-size:14px}dialog h2{margin-top:0}dialog ul{padding-left:18px;line-height:1.6}dialog a{color:#1f6fb2}dialog::backdrop{background:#0000004d}@media(max-width:640px){#topbar h1{font-size:20px}#topbar p{display:none}#dock button{width:50px;font-size:10px}#dock button .emoji{font-size:20px}}#btn-ball.armed{background:var(--accent);color:#fff;animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{transform:scale(1.08)}}body.armed #app canvas{cursor:crosshair!important}
