*{box-sizing:border-box}html,body{color:#5b4a6b;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#ffeef4;height:100%;margin:0;font-family:Noto Sans TC,system-ui,sans-serif;overflow:hidden}#app{position:fixed;inset:0}#game-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}#hud{pointer-events:none;opacity:0;transition:opacity .3s;position:absolute;inset:0}body.playing #hud{opacity:1}#hud-top{top:calc(env(safe-area-inset-top) + 10px);grid-template-columns:1fr auto 1fr;align-items:start;gap:8px;display:grid;position:absolute;left:10px;right:10px}#goals{background:#ffffffd1;border-radius:14px;justify-self:start;max-width:44vw;margin:0;padding:7px 10px;font-size:11px;font-weight:700;line-height:1.7;list-style:none;box-shadow:0 4px 14px #be6e9626}#goals li{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}#goals li.ok{color:#e8679a}#size-box{text-align:center}#size{color:#fff;text-shadow:0 3px #ef8fb4,0 8px 18px #c8508259;font-size:34px;font-weight:900;line-height:1;display:inline-block}#weight-row{background:#ffffffd1;border-radius:999px;justify-content:center;align-items:center;gap:6px;margin-top:6px;padding:3px 10px;font-size:12px;font-weight:900;display:flex}.heavy-bar{background:#f3dbe6;border-radius:3px;width:38px;height:6px;overflow:hidden}.heavy-bar i{background:linear-gradient(90deg,#9ad4ff,#b98af0);width:0;height:100%;transition:width .3s;display:block}#timer{background:#ffffffd1;border-radius:999px;justify-self:end;padding:6px 12px;font-size:16px;font-weight:900}#timer.low{color:#ff5d8f;animation:1s infinite pulse}@keyframes pulse{50%{transform:scale(1.1)}}#combo{top:calc(env(safe-area-inset-top) + 92px);text-align:center;color:#ff7fae;text-shadow:0 2px #fff;font-size:22px;font-weight:900;transition:opacity .25s;position:absolute;left:0;right:0}#toast{bottom:calc(env(safe-area-inset-bottom) + 196px);opacity:0;text-align:center;background:#fffffff2;border-radius:16px;max-width:92vw;padding:10px 16px;font-size:14px;font-weight:700;transition:all .35s;position:absolute;left:50%;transform:translate(-50%,16px);box-shadow:0 6px 20px #b4649638}#toast.show{opacity:1;transform:translate(-50%)}.world-tag,.plate-tag{pointer-events:none;white-space:nowrap;background:#fffffff2;border-radius:12px;padding:5px 10px;font-size:12px;font-weight:900;position:absolute;transform:translate(-50%,-100%);box-shadow:0 4px 14px #a05a8c40}.world-tag{color:#e05c8c}.plate-tag{flex-direction:column;align-items:center;gap:2px;min-width:120px;display:flex;overflow:hidden}.plate-tag span{color:#e05c8c;font-size:15px}.plate-tag.ok span{color:#2fae74}.plate-tag i{background:#ff9cc2;height:4px;position:absolute;bottom:0;left:0}.plate-tag.ok i{background:#6fdca6}.hidden{display:none!important}#joy{pointer-events:none;opacity:0;background:radial-gradient(circle,#ffffff1a 0 55%,#ffffff38 56% 100%);border:2px solid #ffffff8c;border-radius:50%;width:132px;height:132px;margin:-66px 0 0 -66px;transition:opacity .25s,left .18s ease-out,top .18s ease-out;position:absolute;box-shadow:0 4px 18px #be64962e}body.playing #joy{opacity:.55}body.playing #joy.on{opacity:.9}#joy.dragging{transition:opacity .15s}#joy .joy-ring{border:2px dashed #ffffff73;border-radius:50%;position:absolute;inset:14px}#knob{background:#ffffffe6;border-radius:50%;width:54px;height:54px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 3px 10px #c864964d}.joy-label{text-align:center;color:#fff;text-shadow:0 1px 3px #b45a8c99;font-size:11px;font-weight:900;transition:opacity .3s;position:absolute;bottom:-22px;left:0;right:0}#joy.on .joy-label{opacity:0}.overlay{-webkit-backdrop-filter:blur(4px);background:#ffe4f059;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.overlay.soft{-webkit-backdrop-filter:none;background:0 0;align-items:flex-end;padding-bottom:8vh}.card{text-align:center;background:#fff;border-radius:28px;width:min(88vw,360px);padding:24px 22px;box-shadow:0 20px 50px #c8649640}.card h1{color:#ff7fae;letter-spacing:2px;margin:2px 0 6px;font-size:36px;font-weight:900}.card p{color:#7a6789;margin:6px 0;font-size:14px;line-height:1.65}.card .emoji{font-size:40px}.rules{color:#9d86ad;margin:10px 0 0;padding:0;font-size:12px;font-weight:700;line-height:1.9;list-style:none}.btn{color:#fff;cursor:pointer;background:linear-gradient(#ffa3c6,#ff7fae);border:0;border-radius:999px;margin-top:16px;padding:13px 36px;font-family:inherit;font-size:18px;font-weight:900;box-shadow:0 6px #e0608f}.btn:active{transform:translateY(4px);box-shadow:0 2px #e0608f}.sub{color:#b39cc4;font-size:14px;font-weight:700}.stars{color:#ffbf3c;letter-spacing:4px;margin:4px 0;font-size:34px}.big{color:#ff7fae;font-size:46px;font-weight:900;line-height:1.1}.muted{color:#b9a6c6;margin-top:6px;font-size:12px}.lil-gui{--width:220px}
