<style> の中身をCSSファイルへ移す<script> の中身をJSファイルへ移す(読み込みは defer か </body> 直前で)<a href="#">Home</a> など)を実際のリンクに差し替えるボタンの初期状態は必ず aria-expanded="false" にしてください。この属性がCSSのセレクタと支援技術への通知を兼ねているため、書き忘れると開いた状態から始まってしまいます。
<button class="hb-cross" aria-label="メニュー" aria-expanded="false">
<span></span><span></span><span></span>
</button>
2つのタブは別々のコードですが、組み合わせて使えます。開閉パターンのボタン部分(◯◯__btn のCSS)を、好きなアイコン変形のCSSで置き換えるだけです。
span 関連のCSSでボタン部分を上書きする◯◯__btn)に合わせる<style> タグ入りのCSS・HTML・開閉用の3行のJavaScriptのセットです。まずそのまま貼り付けて動きを確認し、その後 <style> の中身をCSSファイルへ、<script> の中身をJSファイルへ移すのがおすすめです。HTML側は既存のヘッダーにあるボタンとナビへ class を付け替えてください。aria-expanded を true / false で切り替える3行だけ必要です。見た目の動きはすべてCSSで、外部ライブラリの読み込みはありません。チェックボックスを使えばJavaScriptなしでも作れますが、スクリーンリーダーにボタンとして認識されないため、本ツールでは button 要素を使う実装で統一しています。aria-expanded はメニューが開いているかどうかをスクリーンリーダーへ伝えるための属性です。これをCSSのセレクタとしても使うことで、状態の管理場所が1つになり、支援技術への通知と見た目の切り替えがずれません。is-open のようなクラスを別に持つ必要がなくなります。transform を指定して固定位置の基準をカードに移しているためで、コピーされるコードは実際のサイト用の position: fixed のままです。ただし transform や filter を持つ親要素の中に置くと同じ理由で画面全体には広がらないため、ヘッダー直下など浅い階層に配置してください。grid-template-rows のアニメーション、「ガラス(すりガラス)ドロワー」「ガラス風の丸ボタン」は backdrop-filter、「ボタンから円形に広がる」は clip-path を使います。いずれも最新のChrome / Edge / Safari / Firefoxで動作しますが、古いブラウザでは動きが省略されることがあります。その場合もメニュー自体は開閉するため、機能は損なわれません。