:root{--sh-font: ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--sh-ink: #f7f3ec;--sh-glass: rgba(20, 24, 30, .42);--sh-glass-strong: rgba(20, 24, 30, .72);--sh-line: rgba(255, 255, 255, .16);--sh-accent: #ff8a3d;--sh-ease: cubic-bezier(.22, 1, .36, 1)}html,body{margin:0;height:100%;overflow:hidden;background:#14181d;font-family:var(--sh-font);color:var(--sh-ink);-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}#app,#webgl{position:absolute;inset:0}#webgl{touch-action:none;cursor:grab}#webgl:active{cursor:grabbing}#webgl canvas{display:block;width:100%;height:100%}#loader{position:absolute;inset:0;display:grid;place-items:center;background:#14181d;transition:opacity .9s ease;z-index:10}#loader.hidden{opacity:0;pointer-events:none}.sh-logo{display:grid;justify-items:center;gap:18px}.sh-logo svg{width:64px;height:64px;animation:sh-spin 1.4s linear infinite}.sh-logo h1{margin:0;font-size:15px;font-weight:700;letter-spacing:.42em;text-indent:.42em;color:#f7f3ecbf}@keyframes sh-spin{to{transform:rotate(360deg)}}.sh-hud,.sh-btn,.sh-card,.sh-hint{background:var(--sh-glass);border:1px solid var(--sh-line);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);box-shadow:0 8px 30px #0000002e}.sh-hud,.sh-bar,.sh-back{opacity:0;transform:translateY(-10px);transition:opacity .8s var(--sh-ease),transform .8s var(--sh-ease)}.sh-back{transform:translateY(10px)}.sh-ready .sh-hud,.sh-ready .sh-bar,.sh-ready .sh-back{opacity:1;transform:none}.sh-hud{position:absolute;top:20px;left:20px;display:flex;gap:4px;padding:8px 10px;border-radius:18px;pointer-events:none}.sh-stat{display:grid;justify-items:center;min-width:54px;padding:2px 6px}.sh-stat b{font-size:24px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.sh-stat span{font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;opacity:.62}.sh-points b{color:var(--sh-accent)}.sh-stat+.sh-stat{border-left:1px solid var(--sh-line)}.sh-hud.bump{animation:sh-bump .5s var(--sh-ease)}@keyframes sh-bump{30%{transform:scale(1.06)}}.sh-call{position:absolute;top:26%;left:0;right:0;text-align:center;font-size:clamp(30px,6vw,58px);font-weight:900;font-style:italic;letter-spacing:-.02em;text-shadow:0 4px 24px rgba(0,0,0,.35),0 2px 0 rgba(0,0,0,.25);opacity:0;pointer-events:none}.sh-call.three{color:#ffd166}.sh-call.streak{font-size:clamp(20px,3.4vw,30px);color:var(--sh-accent)}.sh-call.shown{animation:sh-call 1.5s var(--sh-ease) forwards}@keyframes sh-call{0%{opacity:0;transform:translateY(12px) scale(.7)}14%{opacity:1;transform:translateY(0) scale(1.06)}24%{transform:scale(1)}75%{opacity:1}to{opacity:0;transform:translateY(-14px)}}.sh-bar{position:absolute;top:20px;right:20px;display:flex;gap:8px}.sh-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;height:44px;padding:0 11px;border-radius:14px;color:var(--sh-ink);font:700 14px var(--sh-font);cursor:pointer;transition:transform .15s var(--sh-ease),background .2s}.sh-btn:hover{background:var(--sh-glass-strong)}.sh-btn:active{transform:scale(.94)}.sh-btn:focus-visible{outline:2px solid var(--sh-accent);outline-offset:3px}.sh-btn svg{width:21px;height:21px;flex:none}.sh-swatch{width:18px;height:18px;border-radius:6px;box-shadow:inset 0 0 0 2px #ffffff80}.sh-player{padding-right:14px}.sh-panel{position:absolute;inset:0;display:grid;place-items:center;padding:20px;background:#0a0c1059;opacity:0;visibility:hidden;transition:opacity .35s ease,visibility 0s .35s;z-index:5}.sh-panel.open{opacity:1;visibility:visible;transition:opacity .35s ease}.sh-card{position:relative;max-width:560px;max-height:calc(100% - 20px);overflow:auto;padding:30px 32px 26px;border-radius:24px;background:var(--sh-glass-strong);transform:translateY(16px) scale(.98);transition:transform .45s var(--sh-ease);user-select:text;-webkit-user-select:text}.sh-panel.open .sh-card{transform:none}.sh-card h2{margin:0 0 8px;font-size:28px;font-weight:900;letter-spacing:-.02em}.sh-card h3{margin:0 0 8px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--sh-accent)}.sh-card p,.sh-card li{font-size:15px;line-height:1.55;color:#f7f3ecdb}.sh-card p{margin:0 0 14px}.sh-card .lede{font-size:16px;color:var(--sh-ink)}.sh-card .fine{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--sh-line);font-size:13px;color:#f7f3ec9e}.sh-card a{color:var(--sh-accent)}.sh-card ul{margin:0;padding:0;list-style:none}.sh-card li{margin-bottom:6px}.controls{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:18px 0}kbd{display:inline-block;min-width:1.6em;margin-right:3px;padding:1px 6px;border-radius:6px;border:1px solid var(--sh-line);background:#ffffff14;font:700 12px var(--sh-font);text-align:center}.sh-close{position:absolute;top:14px;right:14px;background:transparent;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.sh-hint{position:absolute;left:50%;bottom:26px;transform:translate(-50%);padding:10px 18px;border-radius:999px;font-size:14px;font-weight:600;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .8s ease}.sh-ready .sh-hint{opacity:1}.sh-ready .sh-hint.gone{opacity:0}.sh-back{position:absolute;left:20px;bottom:20px;font-size:13px;font-weight:700;color:#f7f3ecd9;text-decoration:none;text-shadow:0 1px 8px rgba(0,0,0,.4)}.sh-back:hover{color:#fff;text-decoration:underline}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(max-width:640px){.sh-hud{top:12px;left:12px;padding:6px}.sh-stat{min-width:42px}.sh-stat b{font-size:19px}.sh-bar{top:12px;right:12px;gap:6px;flex-direction:column;align-items:flex-end}.sh-name{display:none}.sh-player{padding-right:11px}.controls{grid-template-columns:1fr;gap:6px}.sh-card{padding:26px 22px 20px}.sh-hint{bottom:54px;font-size:12px;white-space:normal;text-align:center;width:max-content;max-width:86vw}.sh-back{left:12px;bottom:14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01s!important;transition-duration:.01s!important}}
