<?xml version="1.0" encoding="utf-8" ?><rdf:RDF
            xmlns="http://purl.org/rss/1.0/"
            xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
            xmlns:dc="http://purl.org/dc/elements/1.1/"
            xmlns:content="http://purl.org/rss/1.0/modules/content/"
            xml:lang="ja">
        
        <channel rdf:about="https://www.guru-guru.co.jp/">
            <title>guru guru</title>
            <link>https://www.guru-guru.co.jp/</link>
            <description>guruguruは「あなたの 気持ちを刻む」をコンセプトにしたオーダーメイドジュエリーのオンラインストアです。メッセージリングや刻印アクセサリーを職人の手仕事で制作し、大切な想いをかたちにします。</description>
            <subject>181</subject>
            <items>
                <rdf:Seq>
        <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/319" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/314" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/318" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/316" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/309" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/308" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/306" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/311" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/310" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/312" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/313" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/307" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/315" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/302" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/303" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/281" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/280" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/279" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/278" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/277" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/299" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/298" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/285" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/297" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/300" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/301" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/286" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/287" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/288" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/289" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/290" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/291" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/294" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/275" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/274" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/276" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/273" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/272" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/271" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/270" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/268" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/284" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/283" />
                <rdf:li rdf:resource="https://www.guru-guru.co.jp/product/282" />
                
                </rdf:Seq>
            </items>
        
            <dc:language>ja</dc:language>
            <dc:creator>guru guru</dc:creator>
            <dc:date>2026-01-23T13:18:40+09:00</dc:date>
        </channel>
        
                <item rdf:about="https://www.guru-guru.co.jp/product/319">
                    <title>【想いの指輪】ひとこと、わたしへ。［3.2mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/319</link>
                    <description>あなたの心に寄り添う、“ひとこと”を刻んで
  
    「ひとこと、わたしへ。」は、いまの気持ちや願いを内側にそっと刻むメッセージリングです。
    静かなデザインの中に、自分自身と向き合う…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/319" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/hitokoto/hitokoto_matte_threequarter.jpg" width="250" border="0" alt="【想いの指輪】ひとこと、わたしへ。［3.2mm幅］" hspace="5" align="left"/></a><!-- 商品説明ブロック -->
<section class="product-intro-box">
  <h2 class="product-block-title">あなたの心に寄り添う、“ひとこと”を刻んで</h2>
  <p class="product-description">
    「ひとこと、わたしへ。」は、いまの気持ちや願いを内側にそっと刻むメッセージリングです。<br>
    静かなデザインの中に、自分自身と向き合う時間や想いを込めて。<br>
    日々の暮らしに、やさしく寄り添う存在としてお届けします。
  </p>
</section>

<section class="product-intro-box">
  <h2 class="product-block-title">仕様と素材</h2>
  <p class="product-description">
    素材：シルバー950<br>
    幅：約3.2mm ／ 厚み：約2.3mm<br>
    刻印方法：職人による一文字ずつの打刻（英字・数字）<br>
    仕上げ：マット／ミラー／サテンから選択可能<br>
    誕生石：月ごとの天然石　4月は人工石です。オプションでダイヤモンドに変更できます。
  </p>
</section>

<div class="product-support-box">
  <div class="product-support-image">
    <img src="https://www.guru-guru.co.jp/data/guru2/image/supply/rg01.JPG" alt="リングゲージの測定イメージ">
  </div>
  <div class="product-support-text">
    <h2 class="product-support-title">リングサイズが不安な方へ</h2>
    <p class="product-support-description">
      ご自宅で簡単にサイズ確認できる<strong>リングゲージ</strong>をご用意しています。<br>
      現在、ご購入者さまには<strong>リングゲージ代金相当を割引</strong>するキャンペーンを実施中です。
    </p>
    <p class="product-support-link">
      ▶ <a href="https://www.guru-guru.co.jp/product/282" target="_blank">リングゲージを申し込む</a>
    </p>
  </div>
</div>


<div class="product-support-box">
  <p class="product-support-description">
    サイズ直しは<strong>guruguruでご購入いただいたリングに限り、工賃は無料</strong>で承ります。<br>
    石代や地金代など<strong>材料費が必要な場合は別途</strong>ご負担となります。
  </p>

  <div class="order-note-box">
    ※本シリーズはリング全周にミルグレイン加工が入っているため、<br>
    <strong>2号以上のサイズ直しは構造上できない場合があります。</strong>
  </div>

  <p class="product-support-link">
    ▶ <a href="https://www.guru-guru.co.jp/page/ring-support">リングのサポートについて（無料クリーニング・磨き直し／料金目安）</a>
  </p>
</div>




<div class="product-support-box">
  <div class="product-support-text">
    <h2 class="product-support-title">ラッピングについて</h2>
    <p class="product-support-description">
      ギフトラッピングは<strong>無料</strong>です。<br>
      ご注文時に<strong>「ギフト」オプション</strong>をご選択ください。
    </p>
    <p class="product-support-description">
      刻印内容や仕上がりをご確認いただいたうえで、<strong>贈り先への直送</strong>も可能です。<br>
      ラッピングはシンプル包装＋オリジナルチャーム付き、小さな鈴も添えています。<br>
      ※メッセージカード対応は行っておりません。<br>
      ※複数商品まとめてのラッピングはできかねます。<br>
      ※ラッピング希望時は<strong>メール便不可</strong>となります。
    </p>
  </div>
</div>


<section class="product-intro-box" style="margin-top: 3em;">
  <h2 class="product-block-title">ご注文からお届けまで</h2>
  <p class="product-description">
    本商品は<strong>すべて受注生産</strong>でお作りしています。<br>
    ご注文後、<strong>通常約2週間前後</strong>でのお届けとなります。<br>
    （※繁忙期などでお時間をいただく場合がございます）
  </p>
</section>








<section class="product-intro-box">
  <h2 class="product-block-title">よくあるご質問</h2>

  <p class="product-description">
    <strong>Q. リングサイズが分かりません。</strong><br>
    A. リングゲージプレゼントキャンペーンをご利用いただけます。ご自宅での測定に最適です。
  </p>

  <p class="product-description">
    <strong>Q. サイズが合わなかったら？</strong><br>
    A. ご購入後も<strong>基本無料</strong>でサイズ直しを承っております。<br>
    （※一部デザインは有償になる場合があります）
  </p>

  <p class="product-description">
    <strong>Q. シルバーの保管方法は？</strong><br>
    A. 付属のチャック付き袋に入れて空気を遮断することで、変色を防げます。
  </p>

  <p class="product-description">
    <strong>Q. シルバーが黒くなった場合は？</strong><br>
    A. 無料でクリーニングを承っております。お気軽にお申しつけください。
  </p>

  <p class="product-description">
    <strong>Q. 刻印なしでも注文できますか？</strong><br>
    A. はい、刻印なしでもご注文いただけます。
  </p>
</section>







<section class="review-lead-block">
  <p class="review-lead-text">
    このリングに寄せられる声は、これから少しずつ集まっていきます。<br>
    ご感想をいただけましたら、ぜひお知らせください。
  </p>
</section>

<section class="landing-review">
  <div class="landing-review-inner">
    <h2>お客様の声</h2>
    <p class="review-lead-text">
      ただいま準備中です。<br>
      ご購入後のご感想を募集中です。
    </p>
    <div class="review-list">
      <div class="review-card">
        <p class="review-text">
          ご感想をお寄せいただくと、これから選ぶ方の参考にもなります。
        </p>
        <p class="review-author">— guruguru</p>
      </div>
    </div>
    <a href="https://www.guru-guru.co.jp/form/voice" class="landing-cta-button">
      感想を送る
    </a>
  </div>
</section>
<!----------------------------------------------------------------商品詳細ここまで---------------------------------------------------------------->

<div id="modal-finish" class="landing-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>
    <h2>仕上げの種類について</h2>
    <p class="modal-lead">
      表面仕上げは、リングの印象を大きく左右します。<br>
      写真のように、左から「マット」「ミラー」「サテン」の3種類からお選びいただけます。
    </p>

    <!-- クローズアップ比較写真 -->
    <img src="https://www.guru-guru.co.jp/data/guru2/product/texture/hitokoto_finish_compare_3_threequarter_closeup.jpg" 
         alt="仕上げ比較（マット／ミラー／サテン）" class="modal-image">

    <!-- 濃密リスト -->
    <ul class="finish-list">
      <li><strong>マット</strong>：  
        いちばん人気。細かなヘアラインで光を抑え、落ち着いたやさしい雰囲気。<br>
        ▶︎ 普段づかいでも自然になじみ、指にやさしく寄り添います。
      </li>
      <li><strong>ミラー</strong>：  
        鏡のように磨き上げた光沢。光を映し込み、華やかで存在感のある印象に。<br>
        ▶︎ 特別な日や、気分を高めたいときにおすすめです。<br>
        <a href="https://www.guru-guru.co.jp/product/284" class="polish-link" target="_blank">
          ▶︎ 光沢を長く楽しむためのクロスはこちら
        </a>
      </li>
      <li><strong>サテン</strong>：  
        繊細な梨地加工で、やわらかく上品な仕上がり。<br>
        ▶︎ 控えめながらも個性を出したい方に。落ち着きの中に“特別感”が生まれます。
      </li>
    </ul>
  </div>
</div>




<!-- ▼ 絵文字感情モーダル -->
<div id="modal-sample" class="landing-modal custom-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>

    <h2>想いを刻むということ</h2>

    <p class="modal-lead">
      この小さな絵文字のモチーフには、ひとつひとつ意味が込められています。<br>
      そしてその意味は、メッセージと重なることで、<br>
      大切な気持ちを“願い”へと変えていきます。<br>
      「ありがとう」「ずっと一緒に」「出会えてよかった」
    </p>

    <p class="modal-note">
      写真は、実際に13号リングに刻印を施したサンプルです。<br>
      文字の深さや仕上がりの雰囲気を、ご注文の参考としてご覧ください。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/LP/Pet/1200_900_05.jpg" alt="刻印サンプルリング" class="finish-image">
      <p><strong>葉モチーフ＋メッセージ例：「Delight（喜び）」</strong><br>
      「葉」は、やさしさや再生の象徴。<br>
      たとえば「Delight」というメッセージと組み合わせれば、<br>
      “これからの日々が、健やかで喜びで満たされますように…”<br>
      ──そんな願いが自然と浮かび上がります。</p>

      <div class="leaf-icon">
        🌿
      </div>
    </div>
  </div>
</div>




<!-- 刻印メッセージのモーダル群 -->

<!-- ▼ モーダル構成：新しい一歩を踏み出すとき -->
<div id="modal-more-message-start" class="landing-modal custom-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>

    <h2 class="modal-title styled">新しい一歩を踏み出すときの“ひとこと”</h2>
    <p class="modal-lead">
      背中を押してほしいとき。<br>
      はじまりの不安と期待がまざる気持ちに寄り添う、やさしい言葉を集めました。
    </p>

    <div class="message-card">
      <h3>Begin again（もう一度、始めよう）</h3>
      <p class="message-text">前にうまくいかなかったとしても、<br>今のあなたなら、きっと違う道が見える。</p>
    </div>

    <div class="message-card">
      <h3>Let it go（手放そう）</h3>
      <p class="message-text">過去のこと、失敗したこと。<br>いまのあなたには、もう必要ないかもしれない。</p>
    </div>

    <div class="message-card">
      <h3>Turn the page（ページをめくる）</h3>
      <p class="message-text">迷っていた時間にも意味がある。<br>今こそ、次のページへ。</p>
    </div>

    <div class="message-card">
      <h3>Trust the shift（変化を信じて）</h3>
      <p class="message-text">動き始めたこと。それだけで、もう未来は少し変わっている。</p>
    </div>

    <div class="message-card">
      <h3>Hello, new me（新しい自分へこんにちは）</h3>
      <p class="message-text">まだ少し不安でも大丈夫。<br>その一歩が、きっとあなたらしさに変わっていく。</p>
    </div>
  </div>
</div>
</div>

<!-- ▼ モーダル構成：少し立ち止まりたいとき -->
<div id="modal-more-message-healing" class="landing-modal custom-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>

    <h2 class="modal-title styled">少し立ち止まりたいときの“ひとこと”</h2>
    <p class="modal-lead">
      がんばる気持ちに疲れたとき。<br>
      無理に進まず、少し立ち止まって心を整えたいあなたへ。
    </p>

    <div class="message-card">
      <h3>I am enough（わたしは、わたしで十分）</h3>
      <p class="message-text">今のままのわたしに、「それでいいよ」と言ってあげるだけで、すこし救われる。</p>
    </div>

    <div class="message-card">
      <h3>Thank you, me（わたしへありがとう）</h3>
      <p class="message-text">誰かじゃなくて、自分に伝えたい「ありがとう」がある日もある。</p>
    </div>

    <div class="message-card">
      <h3>Breathe（呼吸して）</h3>
      <p class="message-text">ちゃんと息を吐くだけで、少し落ち着けた。<br>そんな日も、きっと大切です。</p>
    </div>

    <div class="message-card">
      <h3>Softly, gently（やさしく、そっと）</h3>
      <p class="message-text">がんばっているのは知ってる。<br>だから今日は、やさしく扱ってあげて。</p>
    </div>

    <div class="message-card">
      <h3>When in doubt, pause（迷ったときは、立ち止まってみる）</h3>
      <p class="message-text">答えを急がない。<br>わたしの中に、ちゃんと見つかるから。</p>
    </div>
  </div>
</div>
</div>
</div>

<!-- ▼ モーダル構成：応援・決意カテゴリ -->
<div id="modal-more-message-encourage" class="landing-modal custom-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>

    <h2 class="modal-title styled">がんばりたい気持ちに寄り添う“ひとこと”</h2>
    <p class="modal-lead">
      踏み出したい、進みたい──そんな想いを支えてくれる、力強くもやさしい言葉を集めました。
    </p>

    <div class="message-card">
      <h3>Keep going（止まらないで）</h3>
      <p class="message-text">立ち止まりそうなときも、その一歩を忘れずに。</p>
    </div>

    <div class="message-card">
      <h3>I choose courage（わたしは勇気を選ぶ）</h3>
      <p class="message-text">不安があるのは当然。それでも「選ぶ」と決めたあなたは、もう強い。</p>
    </div>

    <div class="message-card">
      <h3>One step at a time（一歩ずつでいい）</h3>
      <p class="message-text">焦らなくていい。<br>小さな一歩を重ねていけば、それは確かな前進になる。</p>
    </div>

    <div class="message-card">
      <h3>Still on my way（まだ途中だけど、進んでる）</h3>
      <p class="message-text">完璧じゃなくても、進んでいる。<br>それが、いちばん大切なこと。</p>
    </div>

    <div class="message-card">
      <h3>You’ve got this（あなたならできる）</h3>
      <p class="message-text">あなたの中には、乗り越える力がちゃんとある。<br>それを信じて大丈夫。</p>
    </div>
  </div>
</div>
</div>
</div>

<!-- ▼ モーダル構成：内省・自己対話カテゴリ -->
<div id="modal-more-message-introspect" class="landing-modal custom-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>

    <h2 class="modal-title styled">静かに自分と向き合いたいときの“ひとこと”</h2>
    <p class="modal-lead">
      外の声から少し離れて、内側に耳を澄ませたいとき。<br>
      心の奥に届くような、やさしい言葉を集めました。
    </p>

    <div class="message-card">
      <h3>One day at a time（一日ずつでいい）</h3>
      <p class="message-text">今日は今日のことだけ。<br>そう思えたら、少し楽だった。</p>
    </div>

    <div class="message-card">
      <h3>I remember who I am（わたしを思い出す）</h3>
      <p class="message-text">人の目じゃなく、自分の輪郭を思い出すことから、静かな強さが戻ってくる。</p>
    </div>

    <div class="message-card">
      <h3>Feel, don’t judge（感じるだけでいい）</h3>
      <p class="message-text">「よい」や「わるい」に分けなくていい。<br>ただ、そのまま感じてみて。</p>
    </div>

    <div class="message-card">
      <h3>Stillness speaks（静けさが教えてくれる）</h3>
      <p class="message-text">音のない場所にこそ、いま必要な答えがひそんでいる。</p>
    </div>

    <div class="message-card">
      <h3>Listen inward（自分の声を聴いて）</h3>
      <p class="message-text">静かに耳を澄ませたら、わたしの中の“答え”が、少しだけ聞こえた。</p>
    </div>
  </div>
</div>
</div>
</div>


<!-- ▼ モーダル本体（🦋変わりたい時） -->
<div id="modal-more-message-change" class="landing-modal custom-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>

    <h2 class="modal-title styled">変わりたいときに、支えてくれる“ひとこと”</h2>
    <p class="modal-lead">
      変化は、いつもゆっくり始まります。<br>
      その気持ちを大切にしたいあなたへ──今のあなたに届くかもしれない言葉を、集めました。
    </p>

    <!-- メッセージカード：Still growing -->
    <div class="message-card">
      <h3>Still growing（まだ育ってる）</h3>
      <p class="message-text">焦らなくても大丈夫。<br>あなたは、ちゃんと育っている途中です。</p>
    </div>

    <!-- メッセージカード：Start small -->
    <div class="message-card">
      <h3>Start small（小さく始めよう）</h3>
      <p class="message-text">はじめの一歩は、小さくていい。<br>あなたの歩幅で、ゆっくりでいい。</p>
    </div>

    <!-- メッセージカード：Reset and rise -->
    <div class="message-card">
      <h3>Reset and rise（リセットして、立ち上がる）</h3>
      <p class="message-text">一度止まってもいい。<br>そこからまた、新しく始められる。</p>
    </div>

    <!-- メッセージカード：Becoming me -->
    <div class="message-card">
      <h3>Becoming me（わたしになっていく）</h3>
      <p class="message-text">誰かになる必要はない。<br>あなたは、あなた自身になっていく途中です。</p>
    </div>

    <!-- メッセージカード：I become the change -->
    <div class="message-card">
      <h3>I become the change（変化は、わたしから始まる）</h3>
      <p class="message-text">変わりたいなら、まずわたしから。<br>それが、世界を少し動かす力になる。</p>
    </div>

  </div>
</div>






<!-- ここまで刻印メッセージのモーダル群 -->
<!-- ひとこと、わたしへ。｜絵文字×メッセージ モーダル構造（カテゴリ別メッセージ×2通り） -->
<!-- ※すべて「ひとこと」シリーズ用モチーフに準拠し、願い文も再構成済み -->


<!-- ▼ モーダル本体（通常HTML／JS不要） -->
<div id="modal-emoji-message" class="landing-modal custom-modal" role="dialog" aria-modal="true" aria-labelledby="hitokoto-emoji-title">
  <a href="#close" class="landing-modal-overlay" aria-label="閉じる"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close" aria-label="閉じる">×</a>

    <h2 id="hitokoto-emoji-title" class="modal-title styled">おすすめの組み合わせ</h2>
    <p class="modal-lead">
      感じたメッセージに、気持ちを重ねてみましょう。<br>
      次の一歩を助けてくれる組み合わせをご提案します。
    </p>

    <!-- ========== 🌱 新しい一歩を踏み出すとき ========== -->

    <!-- 🌱 Begin again -->
    <div class="message-emoji-block card-style bg-beginagain">
      <h3><span class="emoji-block-label">＊</span> Begin again（もう一度、始めよう）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
          新しく始められますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/smallbird_fly_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          希望を見つけられますように。
        </div>
      </div>
    </div>

    <!-- 🌱 Let it go -->
    <div class="message-emoji-block card-style bg-letitgo">
      <h3><span class="emoji-block-label">＊</span> Let it go（手放そう）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
          心の重さを手放せますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_right.png" alt="">
          前を向けますように。
        </div>
      </div>
    </div>

    <!-- 🌱 Turn the page -->
    <div class="message-emoji-block card-style bg-turnthepage">
      <h3><span class="emoji-block-label">＊</span> Turn the page（ページをめくる）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
          新しい章へ進めますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/smallbird_fly_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          次の景色へ進めますように。
        </div>
      </div>
    </div>

    <!-- 🌱 Trust the shift -->
    <div class="message-emoji-block card-style bg-shift">
      <h3><span class="emoji-block-label">＊</span> Trust the shift（変化を信じよう）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
          変化を受け入れられますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/feather_right.png" alt="">
          前へ進めますように。
        </div>
      </div>
    </div>

    <!-- 🌱 Hello, new me -->
    <div class="message-emoji-block card-style bg-newme">
      <h3><span class="emoji-block-label">＊</span> Hello, new me（新しい自分へこんにちは）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/flower_sacred_outline.png" alt="">
          新しい自分を祝えますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          これからの自分を大切にできますように。
        </div>
      </div>
    </div>

    <!-- ========== 🌧 少し立ち止まりたいとき ========== -->

    <!-- 🌧 Thank you, me -->
    <div class="message-emoji-block card-style bg-thankyoume">
      <h3><span class="emoji-block-label">＊</span> Thank you, me（わたしへありがとう）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/flower_sacred_outline.png" alt="">
          自分をねぎらえますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/smallbird_fly_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_right.png" alt="">
          やさしく受けとめられますように。
        </div>
      </div>
    </div>

    <!-- 🌧 Breathe -->
    <div class="message-emoji-block card-style bg-breathe">
      <h3><span class="emoji-block-label">＊</span> Breathe（深呼吸）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
          落ち着きを取り戻せますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_right.png" alt="">
          心に余白を持てますように。
        </div>
      </div>
    </div>

    <!-- 🌧 Softly, gently -->
    <div class="message-emoji-block card-style bg-softlygently">
      <h3><span class="emoji-block-label">＊</span> Softly, gently（やさしく、静かに）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/flower_sacred_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_left.png" alt="">
          やわらかく過ごせますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
          感情にやさしく寄り添えますように。
        </div>
      </div>
    </div>

    <!-- 🌧 When in doubt, pause -->
    <div class="message-emoji-block card-style bg-pause">
      <h3><span class="emoji-block-label">＊</span> When in doubt, pause（迷ったときは、立ち止まってみる）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_right.png" alt="">
          心を整えられますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          静けさの中で道を見つけられますように。
        </div>
      </div>
    </div>

    <!-- ========== 🔥 もう少し、前に進みたいとき ========== -->

    <!-- 🔥 Keep going -->
    <div class="message-emoji-block card-style bg-keepgoing">
      <h3><span class="emoji-block-label">＊</span> Keep going（止まらないで）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          進み続けられますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/ladybug.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/feather_right.png" alt="">
          小さな勇気を持てますように。
        </div>
      </div>
    </div>

    <!-- 🔥 I choose courage -->
    <div class="message-emoji-block card-style bg-courage">
      <h3><span class="emoji-block-label">＊</span> I choose courage（わたしは勇気を選ぶ）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/key_classic_solid.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          一歩踏み出せますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
          変化へ進めますように。
        </div>
      </div>
    </div>

    <!-- 🔥 One step at a time -->
    <div class="message-emoji-block card-style bg-stepby">
      <h3><span class="emoji-block-label">＊</span> One step at a time（一歩ずつでいい）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_right.png" alt="">
          ゆっくり進めますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/clover_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          焦らず進めますように。
        </div>
      </div>
    </div>

    <!-- 🔥 Still on my way -->
    <div class="message-emoji-block card-style bg-stillonway">
      <h3><span class="emoji-block-label">＊</span> Still on my way（まだ途中だけど、進んでる）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/feather_right.png" alt="">
          歩みを続けられますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          いまの道を信じられますように。
        </div>
      </div>
    </div>

    <!-- 🔥 You’ve got this -->
    <div class="message-emoji-block card-style bg-yougot">
      <h3><span class="emoji-block-label">＊</span> You’ve got this（あなたならできる）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/flower_sacred_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/feather_right.png" alt="">
          胸を張れますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          自分を信じられますように。
        </div>
      </div>
    </div>

    <!-- ========== 🌙 いまの自分と向き合いたいとき ========== -->

    <!-- 🌙 One day at a time -->
    <div class="message-emoji-block card-style bg-oneday">
      <h3><span class="emoji-block-label">＊</span> One day at a time（一日ずつでいい）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_right.png" alt="">
          今日を穏やかに過ごせますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_right.png" alt="">
          今を大切に感じられますように。
        </div>
      </div>
    </div>

    <!-- 🌙 I remember who I am -->
    <div class="message-emoji-block card-style bg-remember">
      <h3><span class="emoji-block-label">＊</span> I remember who I am（わたしを思い出す）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          自分らしさを取り戻せますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/flower_sacred_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_right.png" alt="">
          心の輪郭を思い出せますように。
        </div>
      </div>
    </div>

    <!-- 🌙 Feel, don’t judge -->
    <div class="message-emoji-block card-style bg-feel">
      <h3><span class="emoji-block-label">＊</span> Feel, don’t judge（感じるだけでいい）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_right_outline.png" alt="">
          感情をそのまま受け止められますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_right.png" alt="">
          判断せずに感じられますように。
        </div>
      </div>
    </div>

    <!-- 🌙 Stillness speaks -->
    <div class="message-emoji-block card-style bg-stillness">
      <h3><span class="emoji-block-label">＊</span> Stillness speaks（静けさが教えてくれる）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_right.png" alt="">
          静けさの中で気づけますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
          ひらめきを受け取れますように。
        </div>
      </div>
    </div>

    <!-- 🌙 Listen inward -->
    <div class="message-emoji-block card-style bg-listen">
      <h3><span class="emoji-block-label">＊</span> Listen inward（自分の声を聴いて）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_right.png" alt="">
          内側の気持ちに気づけますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_right.png" alt="">
          自分の声を大切にできますように。
        </div>
      </div>
    </div>

    <!-- ========== 🦋 変わりたい時 ========== -->

    <!-- 🦋 Still growing -->
    <div class="message-emoji-block card-style bg-stillgrowing">
      <h3><span class="emoji-block-label">＊</span> Still growing（まだ育ってる）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
          自分のペースで育っていけますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/flower_sacred_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_right_outline.png" alt="">
          今の自分を認められますように。
        </div>
      </div>
    </div>

    <!-- 🦋 I become the change -->
    <div class="message-emoji-block card-style bg-becomethechange">
      <h3><span class="emoji-block-label">＊</span> I become the change（変化は、わたしから始まる。）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          自分から変われますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_cloudswirl_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/feather_right.png" alt="">
          未来を動かせますように。
        </div>
      </div>
    </div>

    <!-- 🦋 Becoming me -->
    <div class="message-emoji-block card-style bg-becomingme">
      <h3><span class="emoji-block-label">＊</span> Becoming me（わたしになっていく）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/flower_sacred_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_right_outline.png" alt="">
          自分らしさを育てられますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
          ありのままに近づけますように。
        </div>
      </div>
    </div>

    <!-- 🦋 Reset and rise -->
    <div class="message-emoji-block card-style bg-resetandrise">
      <h3><span class="emoji-block-label">＊</span> Reset and rise（リセットして、立ち上がる）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/symbol_drop.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/feather_right.png" alt="">
          涙のあとに立ち上がれますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/moon_left_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
          新しい光に出会えますように。
        </div>
      </div>
    </div>

    <!-- 🦋 Start small -->
    <div class="message-emoji-block card-style bg-startsmall">
      <h3><span class="emoji-block-label">＊</span> Start small（小さく始めよう）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/leaf_broadleaf_left.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/flower_sacred_outline.png" alt="">
          小さな一歩を大事にできますように。
        </div>
        <div>
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/star_outline.png" alt="">
           ×
          <img class="emoji-icon" src="https://www.guru-guru.co.jp/data/guru2/product/stamp/insect_butterfly_front_bold.png" alt="">
          小さな希望を持てますように。
        </div>
      </div>
    </div>

  </div>
</div>





<!-- ▼ モーダル：内側刻印の仕上がり例 -->
<div id="modal-insidestamp" class="landing-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>
    <h2>内側刻印の仕上がり例</h2>
    <p>
      実際に打刻されたリングの例です。<br>
      書体や深さ、雰囲気を確認いただけます。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/2019_10-28_600x600.jpg" alt="刻印例1" class="finish-image">
      <p><strong>スタンダードな刻印例</strong><br>
        英字と数字の組み合わせで記念日やお名前を打刻した例。視認性も高く、実用的な仕上がり。
      </p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/maru_shima_600x600.jpg" alt="刻印例2" class="finish-image">
      <p><strong>丸みのあるリングへの刻印</strong><br>
        少し湾曲した面にも均等に文字を打刻。1点ずつ職人の手作業で仕上げています。
      </p>
    </div>

    <p class="caption">※ 文字は英字（大・小）および数字・記号のみ刻印可能です。絵文字は内側刻印には対応しておりません。</p>
  </div>
</div>

<!-- いぶし加工モーダル本体 -->

<div id="modal-ibushi" class="landing-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>
    <h2>いぶし加工の仕上がりについて</h2>
    <p style="margin-bottom: 1em;">
      グルグルのいぶし加工は、<strong>刻印の文字部分のみ</strong>に施されます。<br>
      ご希望に応じて、文字を黒く強調した「いぶしあり」か、地金のままの「いぶしなし」をお選びいただけます。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/ibushi01600.jpg" alt="いぶしありの刻印" class="finish-image">
      <p><strong>いぶしあり</strong><br>
      刻印文字が黒く浮かび上がり、はっきりと視認できます。印象が強く残りたい方に。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/ibushi02600.jpg" alt="いぶしなしの刻印" class="finish-image">
      <p><strong>いぶしなし</strong><br>
      刻印がシルバー地になじみ、やさしく自然な雰囲気に。控えめに仕上げたい方に。</p>
    </div>
  </div>
</div>



<!-- 誕生石モーダル本体 -->
<div id="birthstone-modal" class="landing-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>
    <h2>誕生石と、わたしに寄り添うことば。</h2>
    <p style="margin-bottom: 1em;">12か月それぞれの石が持つ意味と、そこに重ねた“ひとこと”をご紹介します。</p>

    <div class="birthstone-grid">

      <!-- 1月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/garnet50.jpg" alt="ガーネット">
        <p><strong>1月 ガーネット</strong><br>情熱・絆・守護</p>
        <span class="birthstone-copy">深い赤が、心の奥にあるつながりを思い出させてくれます。</span>
        <span class="birthstone-combo">おすすめ：Keep going</span>
      </div>

      <!-- 2月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/amethyst50.jpg" alt="アメシスト">
        <p><strong>2月 アメシスト</strong><br>誠実・安らぎ・直感</p>
        <span class="birthstone-copy">静かな紫が、内なる声に耳を澄ます時間をくれます。</span>
        <span class="birthstone-combo">おすすめ：Breathe</span>
      </div>

      <!-- 3月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/aquamarine50.jpg" alt="アクアマリン">
        <p><strong>3月 アクアマリン</strong><br>癒し・旅立ち・再生</p>
        <span class="birthstone-copy">やさしい青が、もう一度前に進む勇気をくれます。</span>
        <span class="birthstone-combo">おすすめ：Begin again</span>
      </div>

      <!-- 4月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/diamond50.jpg" alt="ダイアモンド">
        <p><strong>4月 ダイアモンド</strong><br>純粋・永遠・変わらぬ想い</p>
        <span class="birthstone-copy">澄んだ輝きが、あなたの本当の願いを映し出します。</span>
        <span class="birthstone-combo">おすすめ：I am enough</span>
      </div>

      <!-- 5月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/emerald50.jpg" alt="エメラルド">
        <p><strong>5月 エメラルド</strong><br>希望・幸福・生命力</p>
        <span class="birthstone-copy">新緑のような緑が、日々を穏やかに育ててくれます。</span>
        <span class="birthstone-combo">おすすめ：Dear me</span>
      </div>

      <!-- 6月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/moonstone50.jpg" alt="ムーンストーン">
        <p><strong>6月 ムーンストーン</strong><br>やさしさ・癒し・記憶</p>
        <span class="birthstone-copy">静かな光が、忘れたくない日々をそっと照らします。</span>
        <span class="birthstone-combo">おすすめ：With every step</span>
      </div>

      <!-- 7月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/ruby50.jpg" alt="ルビー">
        <p><strong>7月 ルビー</strong><br>情熱・愛・命の輝き</p>
        <span class="birthstone-copy">あふれる赤が、自分を信じる強さを思い出させてくれます。</span>
        <span class="birthstone-combo">おすすめ：Hello, new me</span>
      </div>

      <!-- 8月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/peridot50.jpg" alt="ペリドット">
        <p><strong>8月 ペリドット</strong><br>前向き・癒し・希望</p>
        <span class="birthstone-copy">光を含んだ緑が、「今日」をやさしく照らします。</span>
        <span class="birthstone-combo">おすすめ：Trust the shift</span>
      </div>

      <!-- 9月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/sapphire50.jpg" alt="サファイア">
        <p><strong>9月 サファイア</strong><br>誠実・信頼・知恵</p>
        <span class="birthstone-copy">深い青が、揺るがない自分を静かに支えてくれます。</span>
        <span class="birthstone-combo">おすすめ：I choose me</span>
      </div>

      <!-- 10月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/pink-tourmaline50.jpg" alt="ピンクトルマリン">
        <p><strong>10月 ピンクトルマリン</strong><br>思いやり・愛・優しさ</p>
        <span class="birthstone-copy">ぬくもりのあるピンクが、自分にもやさしくあれるように。</span>
        <span class="birthstone-combo">おすすめ：together</span>
      </div>

      <!-- 11月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/citrine50.jpg" alt="シトリン">
        <p><strong>11月 シトリン</strong><br>希望・ぬくもり・感謝</p>
        <span class="birthstone-copy">やわらかな黄色が、小さな感謝に気づかせてくれます。</span>
        <span class="birthstone-combo">おすすめ：Let it go</span>
      </div>

      <!-- 12月 -->
      <div class="birthstone-card">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/tanzanite50.jpg" alt="タンザナイト">
        <p><strong>12月 タンザナイト</strong><br>神秘・変化・未来</p>
        <span class="birthstone-copy">夜明けのような青が、まだ見ぬ自分へ背中を押してくれます。</span>
        <span class="birthstone-combo">おすすめ：Turn the page</span>
      </div>

    </div>
  </div>
</div>





<!-- 石留めモーダル本体 -->
<div id="modal-setting" class="landing-modal">
  <a href="#close" class="landing-modal-overlay"></a>
  <div class="landing-modal-content">
    <a href="#close" class="landing-modal-close">×</a>

    <h2>石留め方法について</h2>
    <p class="stone-intro-text">
      誕生石の留め方は、3種類の技法からお選びいただけます。<br>
      それぞれに異なる雰囲気や印象があり、仕上がりの個性にもつながります。<br>
      ※どの技法でも石の強度に差はありませんので、ご安心ください。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_ponch.jpg" alt="玉留め" class="finish-image">
      <p><strong>玉留め</strong><br>
      4点の丸い玉の爪で石を留めるスタイル。シンプルな可愛らしさが特徴です。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_Basic.jpg" alt="彫り留め" class="finish-image">
      <p><strong>彫り留め</strong><br>
      タガネで地金に彫りを入れて石を留める爪を起こす技法。彫りの部分がほんの少しキラッ。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_flish.jpg" alt="フラッシュセット" class="finish-image">
      <p><strong>フラッシュセット</strong><br>
      爪で石を留めるのではなく地金を寄せて留めるタイプ。フラットで洗練された印象です。</p>
    </div>

    <hr class="stone-sample-divider">

    <div class="stone-sample">
      <p class="stone-sample-title"><strong>完成イメージ例：</strong> 誕生石と絵文字を組み合わせた刻印の一例です。</p>
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/stone-star_1200x900.jpg" alt="刻印の完成イメージ" class="stone-sample-image">
      <p class="stone-sample-caption">
        ⭐ ● YOU ARE MY STAR ⭐<br>
        ※実際の刻印はリングのサイズや文字数により調整されます。
      </p>
    </div>
  </div>
</div>




<!-- (1) モーダル開閉（jQuery） -->
<script>
(function($){
  $('.modal-open').on('click', function(){
    var target = $(this).data('target');
    $(target).fadeIn();
  });

  $('.modal-close, .modal-overlay').on('click', function(e){
    // ×ボタンなら必ず閉じる
    if ($(e.target).hasClass('modal-close')) {
      $('.modal-overlay').fadeOut();
      return;
    }
    // モーダル中身クリックは無視、背景だけで閉じる
    if ($(e.target).is('.modal-content, .modal-content *')) return;
    $('.modal-overlay').fadeOut();
  });
})(jQuery);
</script>

<!-- (2) 犬タブ切替（記号/犬の2カテゴリ切り替え想定） -->
<script>
document.addEventListener('DOMContentLoaded', function(){
  document.querySelectorAll('.emoji-dog-tab').forEach(function(tab){
    tab.addEventListener('click', function(ev){
      ev.preventDefault();
      document.querySelectorAll('.emoji-dog-tab').forEach(function(t){ t.classList.remove('active'); });
      document.querySelectorAll('.emoji-dog-grid').forEach(function(g){ g.classList.remove('active'); });
      tab.classList.add('active');
      var targetClass = tab.dataset.target;
      var grid = document.querySelector('.emoji-dog-grid.' + targetClass);
      if (grid) grid.classList.add('active');
    });
  });
});
</script>


<script>
(function($){
  $(function(){
    var lastChecked = null;
    // ひとこと（hitokoto-section）だけ
    $('.hitokoto-section').on('click','input.toggle[type="radio"][name="accordion"]',function(){
      if (this === lastChecked) { this.checked = false; lastChecked = null; }
      else { lastChecked = this; }
    });
    // モチーフ（emoji-section）だけ
    $('.emoji-section').on('click','input.toggle[type="radio"][name="emoji-accordion"]',function(){
      if (this === lastChecked) { this.checked = false; lastChecked = null; }
      else { lastChecked = this; }
    });
  });
})(jQuery);
</script>


<script>
document.addEventListener('DOMContentLoaded', function(){
  var mq = window.matchMedia('(max-width:768px)');

  function listDetails(groupEl){
    return groupEl.querySelectorAll('details.acc, details.emoji-cat'); // 後方互換
  }

  function apply(){
    var sp = mq.matches;
    document.querySelectorAll('[data-acc-group]').forEach(function(group){
      listDetails(group).forEach(function(d){
        if (sp) d.removeAttribute('open');  // SP：初期は閉じる
        else     d.setAttribute('open',''); // PC：常時開く
      });
    });
  }

  function bindGroup(group){
    if (group.__accBound) return;
    group.__accBound = true;
    listDetails(group).forEach(function(d){
      d.addEventListener('toggle', function(){
        if (!d.open || !mq.matches) return; // 開いた時のみ/SPのみ
        // 同グループ内の他カテゴリを閉じる
        listDetails(group).forEach(function(sib){ if (sib !== d) sib.removeAttribute('open'); });
        // 見出しへスクロール（ヘッダー分のオフセット）
        requestAnimationFrame(function(){
          var summary = d.querySelector('summary') || d;
          var header  = document.querySelector('#header');
          var offset  = (header ? header.offsetHeight : 0) + 8;
          var top     = window.pageYOffset + summary.getBoundingClientRect().top - offset;
          window.scrollTo({ top: top, behavior: 'smooth' });
        });
      });
    });
  }

  document.querySelectorAll('[data-acc-group]').forEach(bindGroup);
  apply();

  if (mq.addEventListener) mq.addEventListener('change', apply);
  else mq.addListener(apply);
});
</script>
</p>]]></content:encoded>
                    <dc:subject>はじめてのメッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>17600</dc:format>
                    <dc:date>2026-01-23T13:18:40+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/314">
                    <title>職人が一文字づつ打刻するミルグレインラウンドメッセージリング［3.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/314</link>
                    <description>幸せを願って
  
    
      
    
    
      
        「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。
        …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/314" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGRMR3hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するミルグレインラウンドメッセージリング［3.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">幸せを願って</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGRMR3hl.jpg" alt="ミルグレインラウンドメッセージリング3.0mm幅リング">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。<br>
        「ミル」はラテン語の「千の粒」から来ており、「子孫繁栄」や「長寿」「永遠」「幸福が続く」とされています。</p>
        <p>リングの細さは約3.0mmとなっており、両サイドに施されたミルグレインがリングの周囲を美しく飾り、繊細なデザインが華やかな輝きを放ちます。</p>
        <p>あなたの大切な人の名前や思い出の日付を刻んで、永遠の愛を象徴する特別な一品を手に入れてください。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約3.0mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver925</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※繊細なデザインのため、取扱いにはご注意ください。</p>
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：手打刻印書体イメージ＋記号（画像左・テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさと書体イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印書体イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較イメージ（画像中央1カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">リングに刻印を打ち込んだイメージ画像です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison-miru3.jpg" alt="刻印サイズ比較イメージ">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>
<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_647", inner: "#cart_addcustom_646" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>18700</dc:format>
                    <dc:date>2025-09-15T14:30:06+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/318">
                    <title>想いの指輪 / 愛犬と日々を刻む［4mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/318</link>
                    <description>毎日身につけたくなる、あなたと愛犬の絆のしるし
  
    「想いの指輪」は、愛犬とのかけがえのない日々を刻む、あなただけのリングです。
    シンプルな中に、想いを込める余白を残したデザイ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/318" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/dog/dog_matte_threequarter.jpg" width="250" border="0" alt="想いの指輪 / 愛犬と日々を刻む［4mm幅］" hspace="5" align="left"/></a><!-- 商品説明ブロック -->
<section class="product-intro-box">
  <h2 class="product-block-title">毎日身につけたくなる、あなたと愛犬の絆のしるし</h2>
  <p class="product-description">
    「想いの指輪」は、愛犬とのかけがえのない日々を刻む、あなただけのリングです。<br>
    シンプルな中に、想いを込める余白を残したデザインは、日々の暮らしにそっと寄り添います。
  </p>
</section>

<section class="product-intro-box">
  <h2 class="product-block-title">仕様と素材</h2>
  <p class="product-description">
    素材：シルバー950<br>
    幅：約4.0mm ／ 厚み：約2.0mm<br>
    刻印方法：職人による一文字ずつの打刻（英字・数字）<br>
    仕上げ：「マット」「ミラー」「サテン」「槌目」「鎚目マット」「アンティーク」から選択可能<br>
    誕生石オプション：月ごとの天然石、4月のみ人工石またはダイヤから選択可能
  </p>
</section>

<div class="product-support-box">
  <div class="product-support-image">
    <img src="https://www.guru-guru.co.jp/data/guru2/image/supply/rg01.JPG" alt="リングゲージの測定イメージ">
  </div>
  <div class="product-support-text">
    <h2 class="product-support-title">リングサイズに不安がある方へ</h2>
    <p class="product-support-description">
      ご自身の指にぴったり合うリングサイズを、<strong>ご自宅で簡単に測定</strong>できるリングゲージをご用意しています。<br>
      ご購入いただいたお客様には、<strong>リングゲージ代金相当をお戻し</strong>するキャンペーンを実施中です。
    </p>
    <p class="product-support-link">
      ▶ <a href="https://www.guru-guru.co.jp/product/282" target="_blank">リングゲージを申し込む</a>
    </p>
  </div>
</div>

<div class="product-support-box">
  <div class="product-support-text">
    <h2 class="product-support-title">リングサイズ直しについて</h2>
    <p class="product-support-description">
      ご購入後にリングサイズが合わなかった場合も、<strong>基本無料</strong>でサイズ直しを承っております。<br>
      （※デザインや状況により、有償対応となる場合がございます）
    </p>
    <p class="product-support-link">
      ▶ <a href="https://www.guru-guru.co.jp/form/resize-ring" target="_blank">サイズ直しをご希望の方はこちら</a>
    </p>
  </div>
</div>

<div class="product-support-box">
  <div class="product-support-text">
    <h2 class="product-support-title">Wrapping - ラッピングについて</h2>
    <p class="product-support-description">
      ラッピングは<strong>無料</strong>で承っております。<br>
      プレゼント前に、刻印や仕上がりをご確認いただけるように対応可能です。<br>
      ご注文時に<strong>「ギフト」オプション</strong>をご選択ください。
    </p>
    <p class="product-support-description">
      商品は、<strong>贈り先へ直接お届け</strong>することも可能です。<br>
      ラッピング内容は、シンプル包装＋オリジナルチャーム＆小さな鈴付きとなります。<br>
      （※商品や時期により資材が変わる場合がございます）
    </p>
    <p class="product-support-description">
      ちいさな手提げ袋付き。<br>
      ※メッセージカード対応は行っておりません。<br>
      ※<strong>複数商品まとめてラッピングは不可</strong>。<br>
      ※ラッピングご希望の場合は<strong>メール便不可</strong>となります。
    </p>
  </div>
</div>

<section class="product-intro-box" style="margin-top: 3em;">
  <h2 class="product-block-title">商品の受注・お届けについて</h2>
  <p class="product-description">
    メッセージアクセサリーは<strong>すべて受注生産</strong>となっております。<br>
    ご注文をいただいてから、<strong>通常約2週間前後</strong>でのお届けとなります。<br>
    （※繁忙期は、2週間以上のお時間をいただく場合がございます）<br>
    あらかじめご了承のうえ、ご注文をお願いいたします。
  </p>
</section>

<section class="product-intro-box">
  <h2 class="product-block-title">よくあるご質問</h2>

  <p class="product-description">
    <strong>Q. リングサイズが分かりません。</strong><br>
    A. リングゲージプレゼントキャンペーンをご利用いただけます。ご自宅でサイズ測定にお使いいただけます。
  </p>

  <p class="product-description">
    <strong>Q. 購入したリングのサイズが合わなかった場合は？</strong><br>
    A. ご購入後も<strong>基本無料</strong>でサイズ直しを承っております。<br>
    （※デザインや状況により有償対応となる場合がございます）
  </p>

  <p class="product-description">
    <strong>Q. シルバーの保管方法を教えてください。</strong><br>
    A. ご購入時に付属しているチャック付き袋で保管してください。空気を遮断し、変色を防ぐことができます。
  </p>

  <p class="product-description">
    <strong>Q. シルバーが黒くなった場合は？</strong><br>
    A. 無料でクリーニングサービスを承っております。お気軽にお申し込みください。
  </p>

  <p class="product-description">
    <strong>Q. 刻印なしでも購入できますか？</strong><br>
    A. はい、刻印なしでもご注文いただけます。
  </p>
</section>

<section class="review-lead-block">
  <p class="review-lead-text">
    このリングに寄せられる声は、これから少しずつ集まっていきます。<br>
    ご感想をいただけましたら、ぜひお知らせください。
  </p>
</section>

<section class="landing-review">
  <div class="landing-review-inner">
    <h2>お客様の声</h2>
    <p class="review-lead-text">
      ただいま準備中です。<br>
      ご購入後のご感想を募集中です。
    </p>
    <div class="review-list">
      <div class="review-card">
        <p class="review-text">
          ご感想をお寄せいただくと、これから選ぶ方の参考にもなります。
        </p>
        <p class="review-author">— guruguru</p>
      </div>
    </div>
    <a href="https://www.guru-guru.co.jp/form/voice" class="landing-cta-button">
      感想を送る
    </a>
  </div>
</section>
<!----------------------------------------------------------------- ここまで商品説明ブロック --------------------------------------------------------------->

<!-- 表面仕上げモーダル本体 -->
<div id="modal-dog-finish" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>仕上げの種類について</h2>
    <p style="margin-bottom: 1em;">
      表面仕上げは、リングの印象を大きく変える大切な要素です。<br>
      お好みに合わせてお選びください。
    </p>

    <!-- ▼ 仕上げタイプごとの縦並びカード -->
    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/texture/TX_HL.jpg" alt="マット仕上げ" class="finish-image">
      <p><strong>マット仕上げ</strong><br>ヘアラインを入れた、光沢を抑えた仕上げ。落ち着いた印象で自然になじみます。</p>
    </div>

    <div class="finish-column">
  <img src="https://www.guru-guru.co.jp/data/guru2/product/texture/TX_MR.jpg" alt="ミラー仕上げ" class="finish-image">
  <p><strong>ミラー仕上げ</strong><br>
    鏡のような光沢。印象を華やかに見せたい時に。<br>
    <a href="https://www.guru-guru.co.jp/product/284" class="polish-link" target="_blank">▶︎ 光沢を保つにはこちらのクロスが便利です</a>
  </p>
</div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/texture/TX_ST.jpg" alt="サテン仕上げ" class="finish-image">
      <p><strong>サテン仕上げ</strong><br>柔らかな梨地加工。反射を抑えつつ、やさしい雰囲気に仕上がります。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/texture/TX_HMR.jpg" alt="つちめ仕上げ" class="finish-image">
      <p><strong>つちめ仕上げ</strong><br>金鎚で打ち出した表面が光を細かく反射し、揺らぎのある表情が生まれます。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/texture/TX_HML.jpg" alt="つちめつや消し" class="finish-image">
      <p><strong>つちめつや消し</strong><br>叩いた槌目にマット加工を加えた仕上げ。光を抑えつつ、豊かな表情を楽しめます。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/texture/TX_AT.jpg" alt="アンティーク仕上げ" class="finish-image">
      <p><strong>アンティーク仕上げ</strong><br>ヤスリや金槌でわずかに表情を加え、黒染めで落ち着いた風合いに仕上げています。</p>
    </div>

  </div>
</div>



<!-- ▼ 絵文字感情モーダル -->
<div id="modal-dog-sample" class="landing-modal custom-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>


    <h2>想いを刻むということ</h2>

    <p class="modal-lead">
      この小さな絵文字のモチーフには、ひとつひとつ意味が込められています。<br>
      そしてその意味は、メッセージと重なることで、<br>
      大切な気持ちを“願い”へと変えていきます。<br>
      「ありがとう」「ずっと一緒に」「出会えてよかった」
    </p>

    <p class="modal-note">
      写真は、実際に13号リングに刻印を施したサンプルです。<br>
      文字の深さや仕上がりの雰囲気を、ご注文の参考としてご覧ください。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/LP/Pet/1200_900_05.jpg" alt="刻印サンプルリング" class="finish-image">
      <p><strong>葉モチーフ＋メッセージ例：「Delight（喜び）」</strong><br>
      「葉」は、やさしさや再生の象徴。<br>
      たとえば「Delight」というメッセージと組み合わせれば、<br>
      “これからの日々が、健やかで喜びで満たされますように…”<br>
      ──そんな願いが自然と浮かび上がります。</p>

      <div class="leaf-icon">
        🌿
      </div>
    </div>
  </div>
</div>




<!-- 刻印メッセージのモーダル群 -->

<!-- ▼ 出会いモーダル本体 -->
<div id="modal-dog-meeting"  class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>
    <h2>出会いの言葉たち</h2>
    <p>
あの日、すべてが始まった。<br>
偶然の出会い、心に刻まれた名前、寄り添う日々のはじまり。<br>
そんな“かけがえのない最初の記憶”に寄り添う言葉たちです。
</p>

<div class="message-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_serendipity.jpg" alt="Serendipityの出会いイメージ" class="message-image">
  <p class="message-key">Serendipity</p>
  <p class="message-meaning">偶然の出会い</p>
  <p class="message-text">ただの散歩の途中だった。<br>あの一瞬で人生が変わった。</p>
</div>

<div class="message-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_kismet.jpg" alt="Kismetの出会いイメージ" class="message-image">
  <p class="message-key">Kismet</p>
  <p class="message-meaning">運命</p>
  <p class="message-text">出会った瞬間“この子だ”と感じた。</p>
</div>

  <div class="message-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_birthday.jpg" alt="Birthday 出会いの日イメージ" class="message-image">
  <p class="message-key">Birthday</p>
  <p class="message-meaning">出会いの日</p>
  <p class="message-text">この日が来るたび思い出す、<br>小さな命と出会った日のこと。</p>
</div>

  </div>
</div>


<!-- ▼ 共に過ごすモーダル本体 -->
<div id="modal-dog-together"  class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>
    <h2>共に過ごす時間の言葉たち</h2>
    <p>
      穏やかな日々、いつものしぐさ、伝わってくるぬくもり。<br>
      そんな“かけがえのない時間”に寄り添うメッセージです。
    </p>

    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_together.jpg" alt="togetherのイメージ" class="message-image">
      <p class="message-key">together</p>
      <p class="message-meaning">ずっと一緒</p>
      <p class="message-text">気づけば、いつも隣に。</p>
    </div>

    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_precious.jpg" alt="Preciousのイメージ" class="message-image">
      <p class="message-key">Precious</p>
      <p class="message-meaning">かけがえのない存在</p>
      <p class="message-text">あたりまえの毎日が、特別。</p>
    </div>

    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_side-by-my-side.jpg" alt="Side by my sideのイメージ" class="message-image">
      <p class="message-key">Side by my side</p>
      <p class="message-meaning">いつもそばに</p>
      <p class="message-text">そっと寄り添ってくれる存在。</p>
    </div>

    <!-- 追加：With every step -->
    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_with_every_step.jpg" alt="With every stepのイメージ" class="message-image">
      <p class="message-key">With every step</p>
      <p class="message-meaning">一歩一歩ともに</p>
      <p class="message-text">これからも一緒に歩いていく。</p>
    </div>

  </div>
</div>



<!-- ▼ 別れと追憶の言葉モーダル -->
<div id="modal-dog-memory"  class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>別れと追憶の言葉たち</h2>
    <p>
      思い出すたびに、心の中であたたかくなる。<br>
      そんな“別れのあとも続く絆”に寄り添う言葉です。
    </p>

    <!-- 1. Thank you forever -->
    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_thank_you_forever.jpg" alt="Thank you foreverのイメージ" class="message-image">
      <p class="message-key">Thank you forever</p>
      <p class="message-meaning">ずっとありがとう</p>
      <p class="message-text">そばにいてくれたことも、<br>喜んでくれたことも、全部覚えてる。ありがとう。</p>
    </div>

    <!-- 2. Always with me -->
    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_always_with_me.jpg" alt="Always with meのイメージ" class="message-image">
      <p class="message-key">Always with me</p>
      <p class="message-meaning">私の一部として</p>
      <p class="message-text">いつかこの手が届かなくなっても、<br>あなたのぬくもりは、この胸にずっと残ってる。</p>
    </div>

    <!-- 3. Forever footprints -->
    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/dog_modal/dog_forever_footprints.jpg" alt="Forever footprintsのイメージ" class="message-image">
      <p class="message-key">Forever footprints</p>
      <p class="message-meaning">永遠の足あと</p>
      <p class="message-text">歩いた日々は消えない。<br>いつまでも心に残る記憶。</p>
    </div>

  </div>
</div>


<!-- ここまで刻印メッセージのモーダル群 -->

<!-- 愛犬シリーズ用｜絵文字×メッセージ モーダル構造（全14メッセージ×2組 合計28通り） -->
<!-- ※以下すべて犬用絵文字に置換済み、願い文も犬向けに調整 -->

<!-- ▼ モーダル本体 -->
<div id="modal-dog-emoji-message" class="landing-modal custom-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2 class="modal-title styled">おすすめの組み合わせ</h2>
    <p class="modal-lead">
      メッセージごとにおすすめの絵文字をご紹介します。<br>
      感情や想いをかたちにする“しるし”として、組み合わせの意味を感じながらお選びください。
    </p>


    <!-- ▼ 以下、14メッセージ × 2通り（全28組） -->

    <!-- Serendipity -->
    <div class="message-emoji-block card-style bg-serendipity">
      <h3><span class="emoji-block-label">＊</span> Serendipity（偶然の幸せな出会い）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_star.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> 偶然の出会いが、これからも光をくれますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> この幸せが、そっと守られていきますように。</div>
      </div>
    </div>

    <!-- Felicity -->
    <div class="message-emoji-block card-style bg-felicity">
      <h3><span class="emoji-block-label">＊</span> Felicity（幸福）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_sun.png" class="emoji-icon"> この子が、元気いっぱいにすごせますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_clover.png" class="emoji-icon"> これからも、しあわせに育っていけますように。</div>
      </div>
    </div>

    <!-- Kismet -->
    <div class="message-emoji-block card-style bg-kismet">
      <h3><span class="emoji-block-label">＊</span> Kismet（運命）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> この絆が、静かに守られていきますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> この子との出会いが、これからも私を導いてくれますように。</div>
      </div>
    </div>

    <!-- Birthday -->
    <div class="message-emoji-block card-style bg-birthday">
      <h3><span class="emoji-block-label">＊</span> Birthday（誕生日）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_sun.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_heart.png" class="emoji-icon"> 生まれてきてくれてありがとう。毎日が愛であふれますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> この日から始まった時間が、ずっと続いていきますように。</div>
      </div>
    </div>

    <!-- together -->
    <div class="message-emoji-block card-style bg-together">
      <h3><span class="emoji-block-label">＊</span> together（ずっと一緒に）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> これからも、ふたりで歩いていけますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_star.png" class="emoji-icon"> 心が、これからもつながっていられますように。</div>
      </div>
    </div>

    <!-- Precious -->
    <div class="message-emoji-block card-style bg-precious">
      <h3><span class="emoji-block-label">＊</span> Precious（かけがえのない存在）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_heart.png" class="emoji-icon"> 大切な毎日を、これからも重ねていけますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_star.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> 宝物のような毎日でありますように。</div>
      </div>
    </div>

    <!-- heartfelt -->
    <div class="message-emoji-block card-style bg-heartfelt">
      <h3><span class="emoji-block-label">＊</span> heartfelt（心からの想い）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_heart.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> この想いが伝わっていますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_star.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_clover.png" class="emoji-icon"> この子の毎日が、しあわせで満たされていきますように。</div>
      </div>
    </div>

    <!-- My light -->
    <div class="message-emoji-block card-style bg-mylight">
      <h3><span class="emoji-block-label">＊</span> My light（私の光）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_sun.png" class="emoji-icon"> 一緒に過ごす日々が、やさしさと元気であふれますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_star.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> 光が、これからも私の心を照らしてくれますように。</div>
      </div>
    </div>

    <!-- Thank you forever -->
    <div class="message-emoji-block card-style bg-thankyou">
      <h3><span class="emoji-block-label">＊</span> Thank you forever（ずっとありがとう）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_clover.png" class="emoji-icon"> ありがとうと思える時間が、これからも続きますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> もらったぬくもりが、これからも私を支えてくれますように。</div>
      </div>
    </div>

    <!-- Side by my side -->
    <div class="message-emoji-block card-style bg-sidebymyside">
      <h3><span class="emoji-block-label">＊</span> Side by my side（いつもそばに）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_star.png" class="emoji-icon"> これからも、そばにいてくれますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> この足あとが、これからも隣に並んでくれますように。</div>
      </div>
    </div>

    <!-- With you always -->
    <div class="message-emoji-block card-style bg-withyou">
      <h3><span class="emoji-block-label">＊</span> With you always（いつも一緒に）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_sun.png" class="emoji-icon"> 一緒に過ごせる今を、大切にできますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_heart.png" class="emoji-icon"> あなたと過ごせる時間が、今日も幸せでありますように。</div>
      </div>
    </div>

    <!-- Always with me -->
    <div class="message-emoji-block card-style bg-alwayswithme">
      <h3><span class="emoji-block-label">＊</span> Always with me（私の一部として）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> このぬくもりが、私の一部になっていきますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_heart.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> 心の中で、静かに生き続けてほしい。</div>
      </div>
    </div>

    <!-- With every step -->
    <div class="message-emoji-block card-style bg-step">
      <h3><span class="emoji-block-label">＊</span> With every step（一歩一歩ともに）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_clover.png" class="emoji-icon"> この子と一歩を重ねていけますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dogface.png" class="emoji-icon"> 歩んできた日々が、これからも心の支えになりますように。</div>
      </div>
    </div>

    <!-- Forever footprints -->
    <div class="message-emoji-block card-style bg-footprints">
      <h3><span class="emoji-block-label">＊</span> Forever footprints（永遠の足あと）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_star.png" class="emoji-icon"> 導いてくれますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_dog_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/product/LP/dog/emoji_moon.png" class="emoji-icon"> 静かに見守ってくれますように。</div>
      </div>
    </div>

  </div>
</div>


<!-- ▼ モーダル：内側刻印の仕上がり例 -->
<div id="modal-dog-insidestamp" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>内側刻印の仕上がり例</h2>
    <p>
      実際に打刻されたリングの例です。<br>
      書体や深さ、雰囲気を確認いただけます。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/dog/dog_inside_engraving.jpg" alt="刻印例1" class="finish-image">
      <p><strong>スタンダードな刻印例</strong><br>
        英字と数字の組み合わせで記念日やお名前を打刻した例。視認性も高く、実用的な仕上がり。
      </p>
    </div>

    <p class="caption">※ 文字は英字（大・小）および数字・記号のみ刻印可能です。絵文字は内側刻印には対応しておりません。</p>
  </div>
</div>

<!-- いぶし加工モーダル本体 -->

<div id="modal-dog-ibushi" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>いぶし加工の仕上がりについて</h2>
    <p style="margin-bottom: 1em;">
      グルグルのいぶし加工は、<strong>刻印の文字部分のみ</strong>に施されます。<br>
      ご希望に応じて、文字を黒く強調した「いぶしあり」か、地金のままの「いぶしなし」をお選びいただけます。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/ibushi01600.jpg" alt="いぶしありの刻印" class="finish-image">
      <p><strong>いぶしあり</strong><br>
      刻印文字が黒く浮かび上がり、はっきりと視認できます。印象が強く残りたい方に。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/ibushi02600.jpg" alt="いぶしなしの刻印" class="finish-image">
      <p><strong>いぶしなし</strong><br>
      刻印がシルバー地になじみ、やさしく自然な雰囲気に。控えめに仕上げたい方に。</p>
    </div>
  </div>
</div>



<!-- 誕生石モーダル本体 -->
<div id="modal-dog-birthstone" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>誕生石について</h2>
    <p style="margin-bottom: 1em;">各月の誕生石と、その石に込められた意味をご紹介します。</p>

    <div class="birthstone-grid">

<!-- 1月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/garnet50.jpg" alt="ガーネット">
  <p><strong>1月 ガーネット</strong><br>情熱・絆・守護</p>
  <span class="birthstone-copy">深く赤い輝きが、あなたとの絆をずっと守ります。</span>
  <span class="birthstone-combo">おすすめメッセージ：Side by my side</span>
</div>

<!-- 2月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/amethyst50.jpg" alt="アメシスト">
  <p><strong>2月 アメシスト</strong><br>誠実・安らぎ・直感</p>
  <span class="birthstone-copy">澄んだ紫が、心を落ち着けて寄り添います。</span>
  <span class="birthstone-combo">おすすめメッセージ：With you always</span>
</div>

<!-- 3月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/aquamarine50.jpg" alt="アクアマリン">
  <p><strong>3月 アクアマリン</strong><br>癒し・旅立ち・再生</p>
  <span class="birthstone-copy">水のようなやさしさが、あなたの記憶をたどります。</span>
  <span class="birthstone-combo">おすすめメッセージ：Forever footprints</span>
</div>

<!-- 4月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/diamond50.jpg" alt="ダイアモンド">
  <p><strong>4月 ダイアモンド</strong><br>純粋・永遠・変わらぬ想い</p>
  <span class="birthstone-copy">透明な輝きが、永遠の想いを語りかけます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Always with me</span>
</div>

<!-- 5月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/emerald50.jpg" alt="エメラルド">
  <p><strong>5月 エメラルド</strong><br>希望・幸福・生命力</p>
  <span class="birthstone-copy">みずみずしい緑が、共に過ごした日々を育みます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Precious</span>
</div>

<!-- 6月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/moonstone50.jpg" alt="ムーンストーン">
  <p><strong>6月 ムーンストーン</strong><br>やさしさ・癒し・記憶</p>
  <span class="birthstone-copy">静かな光が、歩んだ日々をそっと照らします。</span>
  <span class="birthstone-combo">おすすめメッセージ：With every step</span>
</div>

<!-- 7月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/ruby50.jpg" alt="ルビー">
  <p><strong>7月 ルビー</strong><br>情熱・愛・命の輝き</p>
  <span class="birthstone-copy">あふれる赤が、心からの愛を映し出します。</span>
  <span class="birthstone-combo">おすすめメッセージ：heartfelt</span>
</div>

<!-- 8月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/peridot50.jpg" alt="ペリドット">
  <p><strong>8月 ペリドット</strong><br>前向き・癒し・希望</p>
  <span class="birthstone-copy">光を含んだ黄緑が、今日をやさしく照らします。</span>
  <span class="birthstone-combo">おすすめメッセージ：My light</span>
</div>

<!-- 9月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/sapphire50.jpg" alt="サファイア">
  <p><strong>9月 サファイア</strong><br>誠実・信頼・知恵</p>
  <span class="birthstone-copy">深い青が、変わらぬ信頼をそっと支えます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Thank you forever</span>
</div>

<!-- 10月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/pink-tourmaline50.jpg" alt="ピンクトルマリン">
  <p><strong>10月 ピンクトルマリン</strong><br>思いやり・愛・優しさ</p>
  <span class="birthstone-copy">ぬくもりあるピンクが、あなたのやさしさを映します。</span>
  <span class="birthstone-combo">おすすめメッセージ：together</span>
</div>

<!-- 11月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/citrine50.jpg" alt="シトリン">
  <p><strong>11月 シトリン</strong><br>希望・ぬくもり・感謝</p>
  <span class="birthstone-copy">あたたかな黄色が、日々の感謝をやさしく伝えます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Serendipity</span>
</div>

<!-- 12月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/tanzanite50.jpg" alt="タンザナイト">
  <p><strong>12月 タンザナイト</strong><br>神秘・変化・未来</p>
  <span class="birthstone-copy">夜明けのような青が、新たな扉を静かにひらきます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Kismet</span>
</div>

    </div>
  </div>
</div>




<!-- 石留めモーダル本体 -->
<div id="modal-dog-setting" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>


    <h2>石留め方法について</h2>
    <p class="stone-intro-text">
      誕生石の留め方は、3種類の技法からお選びいただけます。<br>
      それぞれに異なる雰囲気や印象があり、仕上がりの個性にもつながります。<br>
      ※どの技法でも石の強度に差はありませんので、ご安心ください。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_ponch.jpg" alt="玉留め" class="finish-image">
      <p><strong>玉留め</strong><br>
      4点の丸い玉の爪で石を留めるスタイル。シンプルな可愛らしさが特徴です。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_Basic.jpg" alt="彫り留め" class="finish-image">
      <p><strong>彫り留め</strong><br>
      タガネで地金に彫りを入れて石を留める爪を起こす技法。彫りの部分がほんの少しキラッ。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_flish.jpg" alt="フラッシュセット" class="finish-image">
      <p><strong>フラッシュセット</strong><br>
      爪で石を留めるのではなく地金を寄せて留めるタイプ。フラットで洗練された印象です。</p>
    </div>

    <hr class="stone-sample-divider">

    <div class="stone-sample">
      <p class="stone-sample-title"><strong>完成イメージ例：</strong> 誕生石と絵文字を組み合わせた刻印の一例です。</p>
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/stone-star_1200x900.jpg" alt="刻印の完成イメージ" class="stone-sample-image">
      <p class="stone-sample-caption">
        ⭐ ● YOU ARE MY STAR ⭐<br>
        ※実際の刻印はリングのサイズや文字数により調整されます。
      </p>
    </div>
  </div>
</div>




<div id="modal-dog-craft" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>


    <h2>職人の手による、刻むという行為。</h2>

    <p>
      ひと打ちずつ、心をこめて。<br>
      このリングに刻まれる文字や絵は、<br>
      職人が小さな金槌で、丁寧に打ち込んでいきます。
    </p>

<!-- 動画：打刻風景 -->
<video controls width="100%" class="modal-image" style="border-radius: 8px; margin-bottom: 0.5em;">
  <source src="https://matsue-kotori.sakura.ne.jp/video/stamp_engraving.mp4" type="video/mp4">
  お使いのブラウザは動画タグをサポートしていません。
</video>
<p class="caption">▲ 実際に刻印を行っている様子をご覧いただけます</p>

<!-- 工具写真 -->
<img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/tools.jpg" alt="刻印に使用している工具一式" class="modal-image">
<p class="caption">▲ 実際に使用している刻印とおたふく槌、金床</p>

<!-- 補足説明テキスト -->
<p>
  わずか数ミリの文字と絵に、<br>
  その人の想いや祈りが込められる。<br><br>
  手で打つからこそのあたたかみ――<br>
  世界に一つだけのしるしが、そこに残ります。
</p>

  </div>
</div>




<script>
  // 開く（document委譲：後から追加された要素にも効く）
  document.addEventListener('click', function(e) {
    const trigger = e.target.closest('a.landing-modal-button, [data-modal]');
    if (!trigger) return;

    const hash = trigger.getAttribute('href') || trigger.getAttribute('data-modal') || '';
    if (!hash || hash.charAt(0) !== '#') return;  // 外部リンク等は素通り

    const modal = document.querySelector(hash);
    if (!modal) {
      // 本体が無い場合は :target 方式にフォールバック（デバッグ用）
      e.preventDefault();
      location.hash = hash;
      return;
    }

    e.preventDefault();
    modal.style.display = 'flex';       // inline styleで最優先
    modal.setAttribute('aria-hidden', 'false');
  });

  // 閉じる（× / 背景）
  document.addEventListener('click', function(e) {
    if (!e.target.closest('.landing-modal-close')) return;
    const modal = e.target.closest('.landing-modal');
    if (modal) {
      modal.style.display = 'none';
      modal.setAttribute('aria-hidden', 'true');
    }
  });

  // Esc でも閉じる
  document.addEventListener('keydown', function(e) {
    if (e.key !== 'Escape') return;
    document.querySelectorAll('.landing-modal[style*="display"]').forEach(m => {
      m.style.display = 'none';
      m.setAttribute('aria-hidden', 'true');
    });
  });
</script>


<script>
  document.addEventListener("DOMContentLoaded", function () {
    const toggleButton = document.querySelector(".review-toggle");
    const toggleItems = document.querySelectorAll(".toggle-review");

    // スマホ幅（768px以下）でのみ実行
    if (window.innerWidth <= 768 && toggleButton && toggleItems.length > 0) {
      toggleButton.addEventListener("click", function () {
        const isOpen = toggleButton.classList.contains("open");
        toggleButton.classList.toggle("open");

        toggleItems.forEach(item => {
          item.style.display = isOpen ? "none" : "block";
        });

        toggleButton.textContent = isOpen
          ? "▼ 他のお客様の声をもっと見る"
          : "▲ お客様の声を閉じる";
      });

      // 初期状態：非表示
      toggleItems.forEach(item => {
        item.style.display = "none";
      });
    }
  });
</script>



<!-- (2) 犬タブ切替（記号/犬の2カテゴリ切り替え想定） -->
<script>
document.addEventListener('DOMContentLoaded', function(){
  document.querySelectorAll('.emoji-dog-tab').forEach(function(tab){
    tab.addEventListener('click', function(ev){
      ev.preventDefault();
      document.querySelectorAll('.emoji-dog-tab').forEach(function(t){ t.classList.remove('active'); });
      document.querySelectorAll('.emoji-dog-grid').forEach(function(g){ g.classList.remove('active'); });
      tab.classList.add('active');
      var targetClass = tab.dataset.target;
      var grid = document.querySelector('.emoji-dog-grid.' + targetClass);
      if (grid) grid.classList.add('active');
    });
  });
});
</script>


<script>
(function($){
  $(function(){
    var lastChecked = null;
    // ひとこと（hitokoto-section）だけ
    $('.hitokoto-section').on('click','input.toggle[type="radio"][name="accordion"]',function(){
      if (this === lastChecked) { this.checked = false; lastChecked = null; }
      else { lastChecked = this; }
    });
    // モチーフ（emoji-section）だけ
    $('.emoji-section').on('click','input.toggle[type="radio"][name="emoji-accordion"]',function(){
      if (this === lastChecked) { this.checked = false; lastChecked = null; }
      else { lastChecked = this; }
    });
  });
})(jQuery);
</script>


<script>
document.addEventListener('DOMContentLoaded', function(){
  var mq = window.matchMedia('(max-width:768px)');

  function listDetails(groupEl){
    return groupEl.querySelectorAll('details.acc, details.emoji-cat'); // 後方互換
  }

  function apply(){
    var sp = mq.matches;
    document.querySelectorAll('[data-acc-group]').forEach(function(group){
      listDetails(group).forEach(function(d){
        if (sp) d.removeAttribute('open');  // SP：初期は閉じる
        else     d.setAttribute('open',''); // PC：常時開く
      });
    });
  }

  function bindGroup(group){
    if (group.__accBound) return;
    group.__accBound = true;
    listDetails(group).forEach(function(d){
      d.addEventListener('toggle', function(){
        if (!d.open || !mq.matches) return; // 開いた時のみ/SPのみ
        // 同グループ内の他カテゴリを閉じる
        listDetails(group).forEach(function(sib){ if (sib !== d) sib.removeAttribute('open'); });
        // 見出しへスクロール（ヘッダー分のオフセット）
        requestAnimationFrame(function(){
          var summary = d.querySelector('summary') || d;
          var header  = document.querySelector('#header');
          var offset  = (header ? header.offsetHeight : 0) + 8;
          var top     = window.pageYOffset + summary.getBoundingClientRect().top - offset;
          window.scrollTo({ top: top, behavior: 'smooth' });
        });
      });
    });
  }

  document.querySelectorAll('[data-acc-group]').forEach(bindGroup);
  apply();

  if (mq.addEventListener) mq.addEventListener('change', apply);
  else mq.addListener(apply);
});
</script>
</p>]]></content:encoded>
                    <dc:subject>はじめてのメッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>15400</dc:format>
                    <dc:date>2025-09-15T14:23:40+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/316">
                    <title>想いの指輪 / 愛猫と日々を刻む［4mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/316</link>
                    <description>毎日身につけたくなる、あなたと愛猫の絆を刻む指輪
  
    「想いの指輪」は、愛猫とのかけがえのない日々を刻む、あなただけのリングです。
    シンプルな中に、想いを込める余白を残したデザ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/316" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/cat/cat00.jpg" width="250" border="0" alt="想いの指輪 / 愛猫と日々を刻む［4mm幅］" hspace="5" align="left"/></a><!-- 商品説明ブロック -->
<section class="product-intro-box">
  <h2 class="product-block-title">毎日身につけたくなる、あなたと愛猫の絆を刻む指輪</h2>
  <p class="product-description">
    「想いの指輪」は、愛猫とのかけがえのない日々を刻む、あなただけのリングです。<br>
    シンプルな中に、想いを込める余白を残したデザインは、日々の暮らしにそっと寄り添います。<br>
    仕上げ・刻印・誕生石など、お好みに合わせて細部までお選びいただけます。
  </p>
</section>


<section class="product-intro-box">
  <h2 class="product-block-title">仕様と素材</h2>
  <p class="product-description">
    素材：シルバー950<br>
    幅：約4.0mm ／ 厚み：約2.0mm<br>
    刻印方法：職人による一文字ずつの打刻（英字・数字）<br>
    仕上げ：マット／ミラー／サテンから選択可能<br>
    誕生石オプション：月ごとの天然石、4月のみ人工石またはダイヤから選択可能
  </p>
</section>


<div class="product-support-box">
  <div class="product-support-image">
    <img src="https://www.guru-guru.co.jp/data/guru2/image/supply/rg01.JPG" alt="リングゲージの測定イメージ">
  </div>
  <div class="product-support-text">
    <h2 class="product-support-title">リングサイズに不安がある方へ</h2>
    <p class="product-support-description">
      ご自身の指にぴったり合うリングサイズを、<strong>ご自宅で簡単に測定</strong>できるリングゲージをご用意しています。<br>
      ご購入いただいたお客様には、<strong>リングゲージ代金相当をお戻し</strong>するキャンペーンを実施中です。
    </p>
    <p class="product-support-link">
      ▶ <a href="https://www.guru-guru.co.jp/product/282" target="_blank">リングゲージを申し込む</a>
    </p>
  </div>
</div>

<div class="product-support-box">
  <div class="product-support-text">
    <h2 class="product-support-title">リングサイズ直しについて</h2>
    <p class="product-support-description">
      ご購入後にリングサイズが合わなかった場合も、<strong>基本無料</strong>でサイズ直しを承っております。<br>
      （※デザインや状況により、有償対応となる場合がございます）
    </p>
    <p class="product-support-link">
      ▶ <a href="https://www.guru-guru.co.jp/form/resize-ring" target="_blank">サイズ直しをご希望の方はこちら</a>
    </p>
  </div>
</div>

<div class="product-support-box">
  <div class="product-support-text">
    <h2 class="product-support-title">Wrapping - ラッピングについて</h2>
    <p class="product-support-description">
      ラッピングは<strong>無料</strong>で承っております。<br>
      プレゼント前に、刻印や仕上がりをご確認いただけるように対応可能です。<br>
      ご注文時に<strong>「ギフト」オプション</strong>をご選択ください。
    </p>
    <p class="product-support-description">
      商品は、<strong>贈り先へ直接お届け</strong>することも可能です。<br>
      ラッピング内容は、シンプル包装＋オリジナルチャーム＆小さな鈴付きとなります。<br>
      （※商品や時期により資材が変わる場合がございます）
    </p>
    <p class="product-support-description">
      ちいさな手提げ袋付き。<br>
      ※メッセージカード対応は行っておりません。<br>
      ※<strong>複数商品まとめてラッピングは不可</strong>。<br>
      ※ラッピングご希望の場合は<strong>メール便不可</strong>となります。
    </p>
  </div>
</div>


<section class="product-intro-box" style="margin-top: 3em;">
  <h2 class="product-block-title">商品の受注・お届けについて</h2>
  <p class="product-description">
    メッセージアクセサリーは<strong>すべて受注生産</strong>となっております。<br>
    ご注文をいただいてから、<strong>通常約2週間前後</strong>でのお届けとなります。<br>
    （※繁忙期は、2週間以上のお時間をいただく場合がございます）<br>
    あらかじめご了承のうえ、ご注文をお願いいたします。
  </p>
</section>

<section class="landing-review">


<section class="product-intro-box">
  <h2 class="product-block-title">よくあるご質問</h2>

  <p class="product-description">
    <strong>Q. リングサイズが分かりません。</strong><br>
    A. リングゲージプレゼントキャンペーンをご利用いただけます。ご自宅でサイズ測定にお使いいただけます。
  </p>

  <p class="product-description">
    <strong>Q. 購入したリングのサイズが合わなかった場合は？</strong><br>
    A. ご購入後も<strong>基本無料</strong>でサイズ直しを承っております。<br>
    （※デザインや状況により有償対応となる場合がございます）
  </p>

  <p class="product-description">
    <strong>Q. シルバーの保管方法を教えてください。</strong><br>
    A. ご購入時に付属しているチャック付き袋で保管してください。空気を遮断し、変色を防ぐことができます。
  </p>

  <p class="product-description">
    <strong>Q. シルバーが黒くなった場合は？</strong><br>
    A. 無料でクリーニングサービスを承っております。お気軽にお申し込みください。
  </p>

  <p class="product-description">
    <strong>Q. 刻印なしでも購入できますか？</strong><br>
    A. はい、刻印なしでもご注文いただけます。
  </p>
</section>

<!-- 深掘り用モーダルのHTML -->
<div id="modal-message" class="landing-modal">
  <div class="landing-modal-overlay"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close">×</button>
    <img src="https://www.guru-guru.co.jp/data/guru2/image/LP/Pet/cats_Lp_sec01M.jpg"
         alt="愛猫とリングのイメージ"
         class="modal-image">
    <h2>このリングが寄り添える想いとは</h2>
    <p>
      言葉にするには少し照れくさくて、<br>
      でも、たしかに胸の奥にある想い。<br>
      愛猫と過ごしたあの日々のぬくもりや、<br>
      今もそばにいてくれることへの感謝。<br><br>
      このリングには、そんなあなたの気持ちを<br>
      英字と絵文字の刻印で、そっとかたちにできます。<br>
      これからも一緒に歩んでいきたい気持ちも――<br>
      虹の橋を渡った子への想いも、<br>
      指先に刻むことができます。
    </p>
  </div>
</div>


<!-- 表面仕上げモーダル本体（統一仕様） -->
<div id="modal-cat-finish" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2 class="modal-title">仕上げの種類について</h2>
    <p style="margin-bottom: 1em;">
      表面仕上げは、リングの印象を大きく変える大切な要素です。<br>
      お好みに合わせてお選びください。
    </p>

    <!-- ▼ 仕上げタイプごとの縦並びカード -->
    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg" alt="マット仕上げ" class="finish-image">
      <p><strong>マット仕上げ</strong><br>ヘアラインが入った繊細な質感。光の反射が少なく、ナチュラルな雰囲気でいちばん人気が高い。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg" alt="ミラー仕上げ" class="finish-image">
      <p><strong>ミラー仕上げ</strong><br>鏡のような光沢で光を反射する仕上がり。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg" alt="サテン仕上げ" class="finish-image">
      <p><strong>サテン仕上げ</strong><br>梨地仕上げでつやを抑え、落ち着いた上品な印象に。</p>
    </div>
  </div>
</div>



<!-- ▼ 絵文字感情モーダル -->
<div id="modal-cat-sample" class="landing-modal custom-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>


    <h2>想いを刻むということ</h2>

    <p class="modal-lead">
      この小さな絵文字のモチーフには、ひとつひとつ意味が込められています。<br>
      そしてその意味は、メッセージと重なることで、<br>
      大切な気持ちを“願い”へと変えていきます。<br>
      「ありがとう」「ずっと一緒に」「出会えてよかった」
    </p>

    <p class="modal-note">
      写真は、実際に13号リングに刻印を施したサンプルです。<br>
      文字の深さや仕上がりの雰囲気を、ご注文の参考としてご覧ください。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/LP/Pet/1200_900_05.jpg" alt="刻印サンプルリング" class="finish-image">
      <p><strong>葉モチーフ＋メッセージ例：「Delight（喜び）」</strong><br>
      「葉」は、やさしさや再生の象徴。<br>
      たとえば「Delight」というメッセージと組み合わせれば、<br>
      “これからの日々が、健やかで喜びで満たされますように…”<br>
      ──そんな願いが自然と浮かび上がります。</p>

      <div class="leaf-icon">
        🌿
      </div>
    </div>
  </div>
</div>




<!-- 刻印メッセージのモーダル群 -->

<!-- ▼ 出会いモーダル本体 -->
<div id="modal-cat-meeting" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>出会いの言葉たち</h2>
    <p>
あの日、すべてが始まった。<br>
偶然の出会い、心に刻まれた名前、寄り添う日々のはじまり。<br>
そんな“かけがえのない最初の記憶”に寄り添う言葉たちです。
</p>

<div class="message-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/Serendipity.jpg" alt="Serendipityの出会いイメージ" class="message-image">
  <p class="message-key">Serendipity</p>
  <p class="message-meaning">偶然の出会い</p>
  <p class="message-text">ただの散歩の途中だった。<br>あの一瞬で人生が変わった。</p>
</div>

<div class="message-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/Kismet.jpg" alt="Kismetの出会いイメージ" class="message-image">
  <p class="message-key">Kismet</p>
  <p class="message-meaning">運命</p>
  <p class="message-text">出会った瞬間“この子だ”と感じた。</p>
</div>

  <div class="message-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/Birthday.jpg" alt="Birthday 出会いの日イメージ" class="message-image">
  <p class="message-key">Birthday</p>
  <p class="message-meaning">出会いの日</p>
  <p class="message-text">この日が来るたび思い出す、<br>小さな命と出会った日のこと。</p>
</div>

  </div>
</div>


<!-- ▼ 共に過ごすモーダル本体 -->
<div id="modal-cat-together" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>共に過ごす時間の言葉たち</h2>
    <p>
      穏やかな日々、いつものしぐさ、伝わってくるぬくもり。<br>
      そんな“かけがえのない時間”に寄り添うメッセージです。
    </p>

    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/together.jpg" alt="togetherのイメージ" class="message-image">
      <p class="message-key">together</p>
      <p class="message-meaning">ずっと一緒</p>
      <p class="message-text">気づけば、いつも隣に。</p>
    </div>

    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/Precious.jpg" alt="Preciousのイメージ" class="message-image">
      <p class="message-key">Precious</p>
      <p class="message-meaning">かけがえのない存在</p>
      <p class="message-text">あたりまえの毎日が、特別。</p>
    </div>

    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/side-by-my-side.jpg" alt="Side by my sideのイメージ" class="message-image">
      <p class="message-key">Side by my side</p>
      <p class="message-meaning">いつもそばに</p>
      <p class="message-text">そっと寄り添ってくれる存在。</p>
    </div>

    <!-- 追加：With every step -->
    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/witheverystep.jpg" alt="With every stepのイメージ" class="message-image">
      <p class="message-key">With every step</p>
      <p class="message-meaning">一歩一歩ともに</p>
      <p class="message-text">これからも一緒に歩いていく。</p>
    </div>

  </div>
</div>



<!-- ▼ 別れと追憶の言葉モーダル -->
<div id="modal-cat-memory" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>


    <h2>別れと追憶の言葉たち</h2>
    <p>
      思い出すたびに、心の中であたたかくなる。<br>
      そんな“別れのあとも続く絆”に寄り添う言葉です。
    </p>

    <!-- 1. Thank you forever -->
    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/thankyouforever.jpg" alt="Thank you foreverのイメージ" class="message-image">
      <p class="message-key">Thank you forever</p>
      <p class="message-meaning">ずっとありがとう</p>
      <p class="message-text">そばにいてくれたことも、<br>喜んでくれたことも、全部覚えてる。ありがとう。</p>
    </div>

    <!-- 2. Always with me -->
    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/always-with-me.jpg" alt="Always with meのイメージ" class="message-image">
      <p class="message-key">Always with me</p>
      <p class="message-meaning">私の一部として</p>
      <p class="message-text">いつかこの手が届かなくなっても、<br>あなたのぬくもりは、この胸にずっと残ってる。</p>
    </div>

    <!-- 3. Forever footprints -->
    <div class="message-card">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/section/modal/foreverfootprints.jpg" alt="Forever footprintsのイメージ" class="message-image">
      <p class="message-key">Forever footprints</p>
      <p class="message-meaning">永遠の足あと</p>
      <p class="message-text">歩いた日々は消えない。<br>いつまでも心に残る記憶。</p>
    </div>

  </div>
</div>


<!-- ここまで刻印メッセージのモーダル群 -->

<!-- ▼ モーダル本体 -->
<div id="modal-cat-emoji-message" class="landing-modal custom-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>


    <h2 class="modal-title styled">おすすめの組み合わせ</h2>
    <p class="modal-lead">
      メッセージごとにおすすめの絵文字をご紹介します。<br>
      感情や想いをかたちにする“しるし”として、組み合わせの意味を感じながらお選びください。
    </p>

    <!-- Serendipity -->
    <div class="message-emoji-block card-style bg-serendipity">
      <h3><span class="emoji-block-label">＊</span> Serendipity（偶然の幸せな出会い）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_star.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> この希望で満ち溢れた偶然の幸せが、ずっと続きますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> この幸せが、長く続きますように。</div>
      </div>
    </div>

    <!-- Felicity -->
    <div class="message-emoji-block card-style bg-felicity">
      <h3><span class="emoji-block-label">＊</span> Felicity（幸福）</h3>
      <div class="emoji-combo-note no-border combo-card">
        <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_sun.png" class="emoji-icon"> この子が、元気いっぱいにすごせますように。</div>
        <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_clover.png" class="emoji-icon"> これからも、しあわせに育っていけますように。</div>
      </div>
    </div>

    <!-- Kismet -->
<div class="message-emoji-block card-style bg-kismet">
  <h3><span class="emoji-block-label">＊</span> Kismet（運命）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> この絆が、静かに守られていきますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> この子との出会いが、これからも私を導いてくれますように。</div>
  </div>
</div>

<!-- Birthday -->
<div class="message-emoji-block card-style bg-birthday">
  <h3><span class="emoji-block-label">＊</span> Birthday（誕生日）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_sun.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_heart.png" class="emoji-icon"> 生まれてきてくれてありがとう。私たちの毎日が、愛であふれますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> この日から始まった私たちの時間が、ずっと続いていきますように。</div>
  </div>
</div>

<!-- together -->
<div class="message-emoji-block card-style bg-together">
  <h3><span class="emoji-block-label">＊</span> together（ずっと一緒に）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> これからも、ふたりで歩いていけますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_star.png" class="emoji-icon"> 心が、これからもつながっていられますように。</div>
  </div>
</div>

<!-- Precious -->
<div class="message-emoji-block card-style bg-precious">
  <h3><span class="emoji-block-label">＊</span> Precious（かけがえのない存在）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_heart.png" class="emoji-icon"> 大切な毎日を、これからも重ねていけますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_star.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> 宝物のような毎日でありますように。</div>
  </div>
</div>

<!-- heartfelt -->
<div class="message-emoji-block card-style bg-heartfelt">
  <h3><span class="emoji-block-label">＊</span> heartfelt（心からの想い）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_heart.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> この想いが伝わっていますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_star.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_clover.png" class="emoji-icon"> この子の毎日が、しあわせで満たされていきますように。</div>
  </div>
</div>

<!-- My light -->
<div class="message-emoji-block card-style bg-mylight">
  <h3><span class="emoji-block-label">＊</span> My light（私の光）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_sun.png" class="emoji-icon"> いっしょに過ごす日々が、やさしさと元気であふれますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_star.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> 光が、これからも私の心を照らし続けてくれますように。</div>
  </div>
</div>

<!-- Thank you forever -->
<div class="message-emoji-block card-style bg-thankyou">
  <h3><span class="emoji-block-label">＊</span> Thank you forever（ずっとありがとう）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_clover.png" class="emoji-icon"> ありがとうと思える時間がこれからも続きますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> もらったぬくもりが、これからも私を支えてくれますように。</div>
  </div>
</div>

<!-- Side by my side -->
<div class="message-emoji-block card-style bg-sidebymyside">
  <h3><span class="emoji-block-label">＊</span> Side by my side（いつもそばに）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_star.png" class="emoji-icon"> これからも、そばにいてくれますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> この足あとが、これからも隣に並んでくれますように。</div>
  </div>
</div>

<!-- With you always -->
<div class="message-emoji-block card-style bg-withyou">
  <h3><span class="emoji-block-label">＊</span> With you always（いつも一緒に）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_sun.png" class="emoji-icon"> 一緒に過ごせる今を、大切にできますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_heart.png" class="emoji-icon"> あなたと過ごせる時間が、今日も幸せでありますように。</div>
  </div>
</div>

<!-- Always with me -->
<div class="message-emoji-block card-style bg-alwayswithme">
  <h3><span class="emoji-block-label">＊</span> Always with me（私の一部として）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> このぬくもりが、私の一部になっていきますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_heart.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> 心の中で、静かに生き続けてほしい。</div>
  </div>
</div>

<!-- With every step -->
<div class="message-emoji-block card-style bg-step">
  <h3><span class="emoji-block-label">＊</span> With every step（一歩一歩ともに）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_clover.png" class="emoji-icon"> この子と一歩を重ねていけますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_cat.png" class="emoji-icon"> 歩んできた日々が、これからも心の支えになりますように。</div>
  </div>
</div>

<!-- Forever footprints -->
<div class="message-emoji-block card-style bg-footprints">
  <h3><span class="emoji-block-label">＊</span> Forever footprints（永遠の足あと）</h3>
  <div class="emoji-combo-note no-border combo-card">
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_star.png" class="emoji-icon"> 導いてくれますように。</div>
    <div><img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_paw.png" class="emoji-icon"> × <img src="https://www.guru-guru.co.jp/data/guru2/image/stamp/lp/emoji_moon.png" class="emoji-icon"> 静かに見守ってくれますように。</div>
  </div>
</div>

  </div>
</div>

<!-- ▼ モーダル：内側刻印の仕上がり例 -->
<div id="modal-cat-insidestamp" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>


    <h2>内側刻印の仕上がり例</h2>

    <p>
      実際に刻印されたリングのイメージです。<br>
      書体の雰囲気や深さ、仕上がりの印象をご覧いただけます。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/2019_10-28_600x600.jpg" alt="刻印例1" class="finish-image">
      <p>
        <strong>スタンダードな刻印例</strong><br>
        お名前や日付を、英字と数字で打刻した例です。<br>
        視認性も高く、読みやすさと実用性のある仕上がりです。
      </p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/maru_shima_600x600.jpg" alt="刻印例2" class="finish-image">
      <p>
        <strong>丸みのあるリングへの刻印</strong><br>
        ややカーブのある内面にも、文字を丁寧に打刻。<br>
        すべて職人の手作業で仕上げています。
      </p>
    </div>

    <p class="caption">
      ※ 文字は英字（大・小）・数字・記号のみ対応しています。<br>
      ※ 絵文字は内側刻印には対応しておりません。
    </p>
  </div>
</div>


<!-- いぶし加工モーダル本体 -->

<div id="modal-cat-ibushi" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>いぶし加工の仕上がりについて</h2>
    <p style="margin-bottom: 1em;">
      グルグルのいぶし加工は、<strong>刻印の文字部分のみ</strong>に施されます。<br>
      ご希望に応じて、文字を黒く強調した「いぶしあり」か、地金のままの「いぶしなし」をお選びいただけます。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/ibushi01600.jpg" alt="いぶしありの刻印" class="finish-image">
      <p><strong>いぶしあり</strong><br>
      刻印文字が黒く浮かび上がり、はっきりと視認できます。印象が強く残りたい方に。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/texture/ibushi02600.jpg" alt="いぶしなしの刻印" class="finish-image">
      <p><strong>いぶしなし</strong><br>
      刻印がシルバー地になじみ、やさしく自然な雰囲気に。控えめに仕上げたい方に。</p>
    </div>
  </div>
</div>



<!-- 誕生石モーダル本体 -->
<div id="modal-cat-birthstone" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>誕生石について</h2>
    <p style="margin-bottom: 1em;">各月の誕生石と、その石に込められた意味をご紹介します。</p>

    <div class="birthstone-grid">

<!-- 1月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/garnet50.jpg" alt="ガーネット">
  <p><strong>1月 ガーネット</strong><br>情熱・絆・守護</p>
  <span class="birthstone-copy">深く赤い輝きが、あなたとの絆をずっと守ります。</span>
  <span class="birthstone-combo">おすすめメッセージ：Side by my side</span>
</div>

<!-- 2月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/amethyst50.jpg" alt="アメシスト">
  <p><strong>2月 アメシスト</strong><br>誠実・安らぎ・直感</p>
  <span class="birthstone-copy">澄んだ紫が、心を落ち着けて寄り添います。</span>
  <span class="birthstone-combo">おすすめメッセージ：With you always</span>
</div>

<!-- 3月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/aquamarine50.jpg" alt="アクアマリン">
  <p><strong>3月 アクアマリン</strong><br>癒し・旅立ち・再生</p>
  <span class="birthstone-copy">水のようなやさしさが、あなたの記憶をたどります。</span>
  <span class="birthstone-combo">おすすめメッセージ：Forever footprints</span>
</div>

<!-- 4月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/diamond50.jpg" alt="ダイアモンド">
  <p><strong>4月 ダイアモンド</strong><br>純粋・永遠・変わらぬ想い</p>
  <span class="birthstone-copy">透明な輝きが、永遠の想いを語りかけます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Always with me</span>
</div>

<!-- 5月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/emerald50.jpg" alt="エメラルド">
  <p><strong>5月 エメラルド</strong><br>希望・幸福・生命力</p>
  <span class="birthstone-copy">みずみずしい緑が、共に過ごした日々を育みます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Precious</span>
</div>

<!-- 6月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/moonstone50.jpg" alt="ムーンストーン">
  <p><strong>6月 ムーンストーン</strong><br>やさしさ・癒し・記憶</p>
  <span class="birthstone-copy">静かな光が、歩んだ日々をそっと照らします。</span>
  <span class="birthstone-combo">おすすめメッセージ：With every step</span>
</div>

<!-- 7月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/ruby50.jpg" alt="ルビー">
  <p><strong>7月 ルビー</strong><br>情熱・愛・命の輝き</p>
  <span class="birthstone-copy">あふれる赤が、心からの愛を映し出します。</span>
  <span class="birthstone-combo">おすすめメッセージ：heartfelt</span>
</div>

<!-- 8月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/peridot50.jpg" alt="ペリドット">
  <p><strong>8月 ペリドット</strong><br>前向き・癒し・希望</p>
  <span class="birthstone-copy">光を含んだ黄緑が、今日をやさしく照らします。</span>
  <span class="birthstone-combo">おすすめメッセージ：My light</span>
</div>

<!-- 9月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/sapphire50.jpg" alt="サファイア">
  <p><strong>9月 サファイア</strong><br>誠実・信頼・知恵</p>
  <span class="birthstone-copy">深い青が、変わらぬ信頼をそっと支えます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Thank you forever</span>
</div>

<!-- 10月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/pink-tourmaline50.jpg" alt="ピンクトルマリン">
  <p><strong>10月 ピンクトルマリン</strong><br>思いやり・愛・優しさ</p>
  <span class="birthstone-copy">ぬくもりあるピンクが、あなたのやさしさを映します。</span>
  <span class="birthstone-combo">おすすめメッセージ：together</span>
</div>

<!-- 11月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/citrine50.jpg" alt="シトリン">
  <p><strong>11月 シトリン</strong><br>希望・ぬくもり・感謝</p>
  <span class="birthstone-copy">あたたかな黄色が、日々の感謝をやさしく伝えます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Serendipity</span>
</div>

<!-- 12月 -->
<div class="birthstone-card">
  <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/tanzanite50.jpg" alt="タンザナイト">
  <p><strong>12月 タンザナイト</strong><br>神秘・変化・未来</p>
  <span class="birthstone-copy">夜明けのような青が、新たな扉を静かにひらきます。</span>
  <span class="birthstone-combo">おすすめメッセージ：Kismet</span>
</div>

    </div>
  </div>
</div>




<!-- 石留めモーダル本体 -->
<div id="modal-cat-setting" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2>石留め方法について</h2>
    <p class="stone-intro-text">
      誕生石の留め方は、3種類の技法からお選びいただけます。<br>
      それぞれに異なる雰囲気や印象があり、仕上がりの個性にもつながります。<br>
      ※どの技法でも石の強度に差はありませんので、ご安心ください。
    </p>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_ponch.jpg" alt="玉留め" class="finish-image">
      <p><strong>玉留め</strong><br>
      4点の丸い玉の爪で石を留めるスタイル。シンプルな可愛らしさが特徴です。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_Basic.jpg" alt="彫り留め" class="finish-image">
      <p><strong>彫り留め</strong><br>
      タガネで地金に彫りを入れて石を留める爪を起こす技法。彫りの部分がほんの少しキラッ。</p>
    </div>

    <div class="finish-column">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/4mm_flish.jpg" alt="フラッシュセット" class="finish-image">
      <p><strong>フラッシュセット</strong><br>
      爪で石を留めるのではなく地金を寄せて留めるタイプ。フラットで洗練された印象です。</p>
    </div>

    <hr class="stone-sample-divider">

    <div class="stone-sample">
      <p class="stone-sample-title"><strong>完成イメージ例：</strong> 誕生石と絵文字を組み合わせた刻印の一例です。</p>
      <img src="https://www.guru-guru.co.jp/data/guru2/image/stone/stone-star_1200x900.jpg" alt="刻印の完成イメージ" class="stone-sample-image">
      <p class="stone-sample-caption">
        ⭐ ● YOU ARE MY STAR ⭐<br>
        ※実際の刻印はリングのサイズや文字数により調整されます。
      </p>
    </div>
  </div>
</div>


<div id="modal-cat-craft" class="landing-modal" aria-hidden="true">
  <div class="landing-modal-overlay landing-modal-close"></div>
  <div class="landing-modal-content">
    <button class="landing-modal-close" aria-label="閉じる">×</button>

    <h2 class="modal-title">職人の手による、刻むという行為。</h2>

    <p>
      ひと打ちずつ、心をこめて。<br>
      このリングに刻まれる文字や絵は、<br>
      職人が小さな金槌で、丁寧に打ち込んでいきます。
    </p>

    <!-- 動画：打刻風景 -->
    <video controls width="100%" class="modal-image" style="border-radius: 8px; margin-bottom: 0.5em;">
      <source src="https://matsue-kotori.sakura.ne.jp/video/stamp_engraving.mp4" type="video/mp4">
      お使いのブラウザは動画タグをサポートしていません。
    </video>
    <p class="caption">▲ 実際に刻印を行っている様子をご覧いただけます</p>

    <!-- 工具写真 -->
    <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/tools.jpg" alt="刻印に使用している工具一式" class="modal-image">
    <p class="caption">▲ 実際に使用している刻印とおたふく槌、金床</p>

    <!-- 補足説明テキスト -->
    <p>
      わずか数ミリの文字と絵に、<br>
      その人の想いや祈りが込められる。<br><br>
      手で打つからこそのあたたかみ――<br>
      世界に一つだけのしるしが、そこに残ります。
    </p>
  </div>
</div>




<script>
  // 開く（document委譲：後から追加された要素にも効く）
  document.addEventListener('click', function(e) {
    const trigger = e.target.closest('a.landing-modal-button, [data-modal]');
    if (!trigger) return;

    const hash = trigger.getAttribute('href') || trigger.getAttribute('data-modal') || '';
    if (!hash || hash.charAt(0) !== '#') return;  // 外部リンク等は素通り

    const modal = document.querySelector(hash);
    if (!modal) {
      // 本体が無い場合は :target 方式にフォールバック（デバッグ用）
      e.preventDefault();
      location.hash = hash;
      return;
    }

    e.preventDefault();
    modal.style.display = 'flex';       // inline styleで最優先
    modal.setAttribute('aria-hidden', 'false');
  });

  // 閉じる（× / 背景）
  document.addEventListener('click', function(e) {
    if (!e.target.closest('.landing-modal-close')) return;
    const modal = e.target.closest('.landing-modal');
    if (modal) {
      modal.style.display = 'none';
      modal.setAttribute('aria-hidden', 'true');
    }
  });

  // Esc でも閉じる
  document.addEventListener('keydown', function(e) {
    if (e.key !== 'Escape') return;
    document.querySelectorAll('.landing-modal[style*="display"]').forEach(m => {
      m.style.display = 'none';
      m.setAttribute('aria-hidden', 'true');
    });
  });
</script>




<script>
  document.addEventListener("DOMContentLoaded", function () {
    const toggleButton = document.querySelector(".review-toggle");
    const toggleItems = document.querySelectorAll(".toggle-review");

    // スマホ幅（768px以下）でのみ実行
    if (window.innerWidth <= 768 && toggleButton && toggleItems.length > 0) {
      toggleButton.addEventListener("click", function () {
        const isOpen = toggleButton.classList.contains("open");
        toggleButton.classList.toggle("open");

        toggleItems.forEach(item => {
          item.style.display = isOpen ? "none" : "block";
        });

        toggleButton.textContent = isOpen
          ? "▼ 他のお客様の声をもっと見る"
          : "▲ お客様の声を閉じる";
      });

      // 初期状態：非表示
      toggleItems.forEach(item => {
        item.style.display = "none";
      });
    }
  });
</script>
</p>]]></content:encoded>
                    <dc:subject>はじめてのメッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>16500</dc:format>
                    <dc:date>2025-09-12T14:53:08+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/309">
                    <title>職人が一文字づつ打刻するラウンドメッセージリング［2.5mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/309</link>
                    <description>あなたの心にもメッセージを
  
    
      
    
    
      
        指輪の表面が丸みを帯びているラウンド型のメッセージリングは指先にしっかりとフィ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/309" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr2_5hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するラウンドメッセージリング［2.5mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">あなたの心にもメッセージを</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr2_5hl.jpg" alt="ラウンドメッセージリング2.5mm幅リング">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>指輪の表面が丸みを帯びているラウンド型のメッセージリングは指先にしっかりとフィットし、スマートで優しい印象を与えてくれます。</p>
        <p>心に残るメッセージを指輪に込めて手元においておくことで、いつも心が引き締まり、前向きな気持ちを持つことができます。</p>
        <p>自分自身を励まし、自分の夢や目標に向かって進んでいく力を与えてくれるでしょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約2.5mm</li>
          <li>厚み：約1.6mm</li>
          <li>素材：Silver925</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->

<section class="accordion" id="stamp-font">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">リングに刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparisonRMR2_5_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>
                すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。<br>
                実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。<br>
                刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。<br>
                ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。
              </p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>


<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_647", inner: "#cart_addcustom_646" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>15400</dc:format>
                    <dc:date>2025-09-11T15:59:16+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/308">
                    <title>職人が一文字づつ打刻するラウンドメッセージリング［3.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/308</link>
                    <description>手に馴染むような心地よさ
  
    
      
    
    
      
        指輪の表面が丸みを帯びているラウンドメッセージリングは、シンプルでスマートな雰囲…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/308" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr3hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するラウンドメッセージリング［3.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">手に馴染むような心地よさ</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr3hl.jpg" alt="ラウンドメッセージリング3.0mm幅リング">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>指輪の表面が丸みを帯びているラウンドメッセージリングは、シンプルでスマートな雰囲気を持っています。</p>
        <p>あなた自身や大切な人への愛情や想い出を込めた特別な言葉を刻んで、日常の中でこのリングを見るたびに、あなたの想いや励ましを感じることができるでしょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約3.0mm</li>
          <li>厚み：約1.8mm</li>
          <li>素材：Silver925</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">リングに刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparisonRMR3mm_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>





<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_551", inner: "#cart_addcustom_552" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>15400</dc:format>
                    <dc:date>2025-09-11T15:59:03+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/306">
                    <title>職人が一文字づつ打刻するラウンドメッセージリング［4.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/306</link>
                    <description>やさしい気持ちにしてくれる
  
    
      
    
    
      
        ほっこりする丸みのある4mm幅のハーフラウンドメッセージリング。心に残るメッセ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/306" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr4hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するラウンドメッセージリング［4.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">やさしい気持ちにしてくれる</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr4hl.jpg" alt="ラウンドメッセージリング4.0mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ほっこりする丸みのある4mm幅のハーフラウンドメッセージリング。心に残るメッセージを身につけることで、心に温かさを感じることができる一品です。</p>
        <p>このリングが、あなたの特別な日々に寄り添いますように。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約4.0mm</li>
          <li>厚み：約1.8mm</li>
          <li>素材：Silver950</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">ハーフラウンド4mm幅リングで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">ハーフラウンド4mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparisonHR4_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_466", inner: "#cart_addcustom_464" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>16500</dc:format>
                    <dc:date>2025-09-11T15:58:49+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/311">
                    <title>職人が一文字づつ打刻するラウンドメッセージリング［8.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/311</link>
                    <description>特別な存在
  
    
      
    
    
      
        名前やメッセージが刻まれたこのリングは、ただのアクセサリーではありません。それはあなたの想いや…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/311" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr8hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するラウンドメッセージリング［8.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">特別な存在</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr8hl.jpg" alt="ラウンドメッセージリング8.0mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>名前やメッセージが刻まれたこのリングは、ただのアクセサリーではありません。それはあなたの想いや想い出を一緒に運ぶ、特別な存在。</p>
        <p>日常の中で、いつもあなたのそばに居るような感覚を与えてくれます。</p>
        <p>このメッセージリングは、大切な人へのプレゼントにも最適です。自分の気持ちや想い出を刻んで、特別な贈り物にしませんか？</p>
        <p>想いを込めて刻印されたメッセージは、永遠の想い出となり、絆を深めることでしょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約8.0mm</li>
          <li>厚み：約1.9mm</li>
          <li>素材：Silver950</li>
          <li>最大3行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">ハーフラウンド8mm幅リングで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像2枚・2カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">ハーフラウンド8mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparisonHR8_01.jpg" alt="手打刻印大文字">
          </div>
          <div class="engraving-image-right">
            <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparisonHR8_02.jpg" alt="手打刻印大文字">
          </div>
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>


<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_522", inner: "#cart_addcustom_526" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>

</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>29700</dc:format>
                    <dc:date>2025-09-11T15:58:24+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/310">
                    <title>職人が一文字づつ打刻するラウンドメッセージリング［6.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/310</link>
                    <description>心に寄り添うお守りのような指輪
  
    
      
    
    
      
        あなたの想いを刻印されたリングはただの指輪以上の意味を持ち、何か特別なこと…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/310" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr6hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するラウンドメッセージリング［6.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">心に寄り添うお守りのような指輪</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr6hl.jpg" alt="ラウンドメッセージリング6.0mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>あなたの想いを刻印されたリングはただの指輪以上の意味を持ち、何か特別なことが起きる予感に満ち溢れています。</p>
        <p>日常の中で身につけることで、愛や絆を感じられるはずです。</p>
        <p>このメッセージリングが、あなたの心と心を繋げ、特別な存在となりますように。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約6.0mm</li>
          <li>厚み：約1.9mm</li>
          <li>素材：Silver950</li>
          <li>最大2行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">ハーフラウンド6mm幅リングで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">ハーフラウンド6mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparisonHR6_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>


<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_516", inner: "#cart_addcustom_514" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>22000</dc:format>
                    <dc:date>2025-09-11T15:58:04+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/312">
                    <title>職人が一文字づつ打刻するラウンドメッセージリング［10mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/312</link>
                    <description>特別な意味を持つアイテム
  
    
      
    
    
      
        大切な人への愛や感謝の気持ち、応援の言葉など、自由にメッセージを添えてあなただけ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/312" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr10hl2.jpg" width="250" border="0" alt="職人が一文字づつ打刻するラウンドメッセージリング［10mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">特別な意味を持つアイテム</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr10hl2.jpg" alt="ラウンドメッセージリング10mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>大切な人への愛や感謝の気持ち、応援の言葉など、自由にメッセージを添えてあなただけのオリジナルメッセージリングを手に入れください。</p>
        <p>ご自身でデザインを考えたり、お相手への思いを綴ったりすることで、特別な意味を持つアイテムとなります。</p>
        <p>ぜひ、あなただけのメッセージリングを手に入れて、大切な人との絆を深めてください。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約10mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>最大4行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">ハーフラウンド10mm幅リングで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像2枚・2カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">ハーフラウンド10mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparisonHR10_01.jpg" alt="手打刻印大文字">
          </div>
          <div class="engraving-image-right">
            <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparisonHR10_02.jpg" alt="手打刻印大文字">
          </div>
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>


<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_534", inner: "#cart_addcustom_535" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>

</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>31350</dc:format>
                    <dc:date>2025-09-11T15:57:48+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/313">
                    <title>職人が一文字づつ打刻するラウンドメッセージリング［12mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/313</link>
                    <description>特別な意味を持つアイテム

  

    
      
    

    

      
        
          「言葉は魔法の杖」と言います。メッセージ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/313" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr12hl2.jpg" width="250" border="0" alt="職人が一文字づつ打刻するラウンドメッセージリング［12mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">

  <h2 class="section-title-guru">特別な意味を持つアイテム</h2>

  <div class="product-flex-wrapper">

    <figure class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/Round/mrmr12hl2.jpg" alt="ラウンドメッセージリング12mm幅">
    </figure>

    <div class="product-text">

      <div class="product-section">
        <p>
          「言葉は魔法の杖」と言います。メッセージリングに思いを刻んで身に付けて、自分を励ましましょう。<br>
          この12mm幅のリングに好きな言葉やお名前を刻印できます。<br>
          身に付けることで、自分を信じる力が湧くようなハッピーでチャーミングな毎日を過ごせるはず。<br>
          また、10mm幅リングとペアリングにするのもおすすめです。<br>
          大切な人との絆が強くなって、幸せに満ちた時間が過ごせます。
        </p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約12mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>最大4行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>
          <strong>商品の受注について：</strong><br>
          メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
          繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。
        </p>
      </div>

    </div><!-- /.product-text -->

  </div><!-- /.product-flex-wrapper -->

</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">ハーフラウンド12mm幅リングで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像2枚・2カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">ハーフラウンド12mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparisonHR12_01.jpg" alt="手打刻印大文字">
          </div>
          <div class="engraving-image-right">
            <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparisonHR12_02.jpg" alt="手打刻印大文字">
          </div>
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>


<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>



<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_544", inner: "#cart_addcustom_545" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>36850</dc:format>
                    <dc:date>2025-09-11T15:57:33+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/307">
                    <title>職人が一文字づつ打刻するミルグレインラウンドメッセージリング［2.5mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/307</link>
                    <description>幸せを願って
  
    
      
    
    
      
        「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。
        …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/307" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGRMR25hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するミルグレインラウンドメッセージリング［2.5mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">幸せを願って</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGRMR25hl.jpg" alt="ミルグレインラウンドメッセージリング2.5mm幅リング">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。<br>
        「ミル」はラテン語の「千の粒」から来ており、「子孫繁栄」や「長寿」「永遠」「幸福が続く」とされています。</p>
        <p>リングの細さは約2.5mmとなっており、両サイドに施されたミルグレインがリングの周囲を美しく飾り、繊細なデザインが華やかな輝きを放ちます。</p>
        <p>あなたの大切な人の名前や思い出の日付を刻んで、永遠の愛を象徴する特別な一品を手に入れてください。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約2.5mm</li>
          <li>厚み：約1.6mm</li>
          <li>素材：Silver925</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※繊細なデザインのため、取扱いにはご注意ください。</p>
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさと書体イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印書体イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（中央1カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">リングに刻印を打ち込んだイメージ画像です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison-miru3.jpg" alt="刻印サイズ比較イメージ">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは1.0mmじゃない!?（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>





<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_647", inner: "#cart_addcustom_646" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>18700</dc:format>
                    <dc:date>2025-09-11T15:57:01+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/315">
                    <title>職人が一文字づつ打刻するミルグレインメッセージリング［2.5mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/315</link>
                    <description>幸せを願って
  
    
      
    
    
      
        「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。
        …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/315" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGMR25hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するミルグレインメッセージリング［2.5mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">幸せを願って</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGMR25hl.jpg" alt="ミルグレインメッセージリング2.5mm幅リング">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。<br>
        「ミル」はラテン語の「千の粒」から来ており、「子孫繁栄」や「長寿」「永遠」「幸福が続く」とされています。</p>
        <p>リングの細さは約2.5mmとなっており、両サイドに施されたミルグレインがリングの周囲を美しく飾り、繊細なデザインが華やかな輝きを放ちます。</p>
        <p>あなたの大切な人の名前や思い出の日付を刻んで、永遠の愛を象徴する特別な一品を手に入れてください。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約2.5mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver950</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※繊細なデザインのため、取扱いにはご注意ください。</p>
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>
<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（中央1カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison-miru2_5.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>


<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_647", inner: "#cart_addcustom_646" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>17600</dc:format>
                    <dc:date>2025-09-11T15:56:24+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/302">
                    <title>職人が一文字づつ打刻するミルグレインメッセージリング［3.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/302</link>
                    <description>幸せを願って
  
    
      
    
    
      
        「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。
        …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/302" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGMR3hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するミルグレインメッセージリング［3.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">幸せを願って</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGMR3hl.jpg" alt="ミルグレインメッセージリング3.0mm幅リング">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。<br>
        「ミル」はラテン語の「千の粒」から来ており、「子孫繁栄」や「長寿」「永遠」「幸福が続く」とされています。</p>
        <p>リングの細さは約3.0mmとなっており、両サイドに施されたミルグレインがリングの周囲を美しく飾り、繊細なデザインが華やかな輝きを放ちます。</p>
        <p>あなたの大切な人の名前や思い出の日付を刻んで、永遠の愛を象徴する特別な一品を手に入れてください。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約3.0mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver950</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※繊細なデザインのため、取扱いにはご注意ください。</p>
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（中央1カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison-miru4-.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>


<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_647", inner: "#cart_addcustom_646" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>17600</dc:format>
                    <dc:date>2025-09-11T15:55:55+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/303">
                    <title>職人が一文字づつ打刻するミルグレインメッセージリング［4.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/303</link>
                    <description>幸せを願って
  
    
      
    
    
      
        「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。
        …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/303" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGMR4hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻するミルグレインメッセージリング［4.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">幸せを願って</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/ring/milgrain/MGMR4hl.jpg" alt="ミルグレインメッセージリング4.0mm幅リング">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>「ミルグレイン」とは、リングの表面に細かい粒を打ちつけていく技法のこと。<br>
        「ミル」はラテン語の「千の粒」から来ており、「子孫繁栄」や「長寿」「永遠」「幸福が続く」とされています。</p>
        <p>リングの幅は約4.0mmとなっており、両サイドに施されたミルグレインがリングの周囲を美しく飾り、繊細なデザインが華やかな輝きを放ちます。</p>
        <p>あなたの大切な人の名前や思い出の日付を刻んで、永遠の愛を象徴する特別な一品を手に入れてください。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約4.0mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver950</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※繊細なデザインのため、取扱いにはご注意ください。</p>
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------－文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（中央1カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison-miru4-.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>


<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_647", inner: "#cart_addcustom_646" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>18700</dc:format>
                    <dc:date>2025-09-11T15:55:30+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/281">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージバングル［4mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/281</link>
                    <description>商品について
  
    
      
    
    
      
        
          幅：約4mm
          厚み：約2.0mm
     …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/281" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bangle/4mm/4mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージバングル［4mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">商品について</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/4mm.JPG" alt="オリジナルシルバーバングル4mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <ul>
          <li>幅：約4mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>刻印可能な文字サイズ：1.0mm〜2.0mmまで0.5mm刻み</li>
          <li>LLサイズで刻印できる一行あたりの文字数：118文字</li>
          <li>Lサイズで刻印できる一行あたりの文字数：104文字</li>
          <li>Mサイズで刻印できる一行あたりの文字数：90文字</li>
          <li>Sサイズで刻印できる一行あたりの文字数：76文字</li>
          <li>SSサイズで刻印できる一行あたりの文字数：70文字</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>


<!-----------------------------------------------文字の刻印ブロック（バングル4mm幅用）---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-bangle4-stamp" class="toggle">
    <label class="accordion-title" for="toggle-bangle4-stamp">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ＋記号 -->
      <section class="engraving-font-block">
        <p class="engraving-caption">刻印文字のイメージです。1.0mm〜2.0mmが使用できます。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（4mm幅バングル） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">バングルに各サイズの刻印を打ち込んだイメージ画です。バングルサイズはSサイズです。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/stamp-Size-comparison4.jpg" alt="手打刻印サイズ比較（4mmバングル）">
          </div>
        </div>
      </section>

      <!-- セクション3：1.0mmは1.0mmじゃない -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_268", inner: "#cart_addcustom_269" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージバングル</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>23100</dc:format>
                    <dc:date>2025-08-22T18:21:55+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/280">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージバングル［6mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/280</link>
                    <description>商品について
  
    
      
    
    
      
        
          幅：約6mm
          厚み：約2.0mm
     …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/280" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bangle/6mm/6mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージバングル［6mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">商品について</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/6mm.JPG" alt="オリジナルシルバーバングル6mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <ul>
          <li>幅：約6mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>刻印可能な文字サイズ：1.0mm〜3.0mmまで0.5mm刻み</li>
          <li>刻印可能な行数：最大2行</li>
          <li>LLサイズで刻印できる一行あたりの文字数：118文字</li>
          <li>Lサイズで刻印できる一行あたりの文字数：104文字</li>
          <li>Mサイズで刻印できる一行あたりの文字数：90文字</li>
          <li>Sサイズで刻印できる一行あたりの文字数：76文字</li>
          <li>SSサイズで刻印できる一行あたりの文字数：70文字</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック（バングル6mm幅用）---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-bangle6-stamp" class="toggle">
    <label class="accordion-title" for="toggle-bangle6-stamp">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ＋記号 -->
      <section class="engraving-font-block">
        <p class="engraving-caption">刻印文字のイメージです。1.0mm〜3.0mmが使用できます。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（6mm幅バングル） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">バングルに各サイズの刻印を打ち込んだイメージ画です。バングルサイズはSサイズです。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/stamp-Size-comparison6.jpg" alt="手打刻印サイズ比較（6mmバングル）">
          </div>
        </div>
      </section>

      <!-- セクション3：1.0mmは1.0mmじゃない -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_265", inner: "#cart_addcustom_261" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>

</p>]]></content:encoded>
                    <dc:subject>メッセージバングル</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>31350</dc:format>
                    <dc:date>2025-08-22T18:21:03+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/279">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージバングル［8mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/279</link>
                    <description>商品について
  
    
      
    
    
      
        
          幅：約8mm
          厚み：約2.0mm
     …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/279" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bangle/8mm/8mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージバングル［8mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">商品について</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/8mm.JPG" alt="オリジナルシルバーバングル8mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <ul>
          <li>幅：約8mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>刻印可能な文字サイズ：1.0mm〜3.0mmまで0.5mm刻み</li>
          <li>刻印可能な行数：最大3行</li>
          <li>LLサイズで刻印できる一行あたりの文字数：118文字</li>
          <li>Lサイズで刻印できる一行あたりの文字数：104文字</li>
          <li>Mサイズで刻印できる一行あたりの文字数：90文字</li>
          <li>Sサイズで刻印できる一行あたりの文字数：76文字</li>
          <li>SSサイズで刻印できる一行あたりの文字数：70文字</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>


<!-----------------------------------------------文字の刻印ブロック（バングル8mm幅用）---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-bangle8-stamp" class="toggle">
    <label class="accordion-title" for="toggle-bangle8-stamp">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ＋記号 -->
      <section class="engraving-font-block">
        <p class="engraving-caption">刻印文字のイメージです。1.0mm〜3.0mmが使用できます。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（8mm幅バングル） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">バングルに各サイズの刻印を打ち込んだイメージ画です。バングルサイズはSサイズです。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/stamp-Size-comparison8.jpg" alt="手打刻印サイズ比較（8mmバングル）">
          </div>
        </div>
      </section>

      <!-- セクション3：1.0mmは1.0mmじゃない -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>


<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_254", inner: "#cart_addcustom_255" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージバングル</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>36850</dc:format>
                    <dc:date>2025-08-22T18:20:06+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/278">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージバングル［10mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/278</link>
                    <description>商品について
  
    
      
    
    
      
        
          幅：約10mm
          厚み：約2.0mm
    …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/278" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bangle/10mm/10mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージバングル［10mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">商品について</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/10mm.JPG" alt="オリジナルシルバーバングル10mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <ul>
          <li>幅：約10mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>刻印可能な文字サイズ：1.0mm〜3.0mmまで0.5mm刻み</li>
          <li>刻印可能な行数：最大4行</li>
          <li>LLサイズで刻印できる一行あたりの文字数：118文字</li>
          <li>Lサイズで刻印できる一行あたりの文字数：104文字</li>
          <li>Mサイズで刻印できる一行あたりの文字数：90文字</li>
          <li>Sサイズで刻印できる一行あたりの文字数：76文字</li>
          <li>SSサイズで刻印できる一行あたりの文字数：70文字</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック（バングル10mm幅用）---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-bangle10-stamp" class="toggle">
    <label class="accordion-title" for="toggle-bangle10-stamp">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ＋記号 -->
      <section class="engraving-font-block">
        <p class="engraving-caption">刻印文字のイメージです。1.0mm〜3.0mmが使用できます。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（10mm幅バングル） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">バングルに各サイズの刻印を打ち込んだイメージ画です。バングルサイズはSサイズです。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/stamp-Size-comparison10.jpg" alt="手打刻印サイズ比較（10mmバングル）">
          </div>
        </div>
      </section>

      <!-- セクション3：1.0mmは1.0mmじゃない -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_242", inner: "#cart_addcustom_246" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージバングル</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>40150</dc:format>
                    <dc:date>2025-08-22T18:19:06+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/277">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージバングル［12mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/277</link>
                    <description>商品について
  
    
      
    
    
      
        
          幅：約12mm
          厚み：約2.0mm
    …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/277" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bangle/12mm/12mm_mat.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージバングル［12mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">商品について</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/12mm.JPG" alt="オリジナルシルバーバングル12mm幅">
    </div>
    <div class="product-text">
      <div class="product-section">
        <ul>
          <li>幅：約12mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>刻印可能な文字サイズ：1.0mm〜3.0mmまで0.5mm刻み</li>
          <li>刻印可能な行数：最大5行</li>
          <li>LLサイズで刻印できる一行あたりの文字数：118文字</li>
          <li>Lサイズで刻印できる一行あたりの文字数：104文字</li>
          <li>Mサイズで刻印できる一行あたりの文字数：90文字</li>
          <li>Sサイズで刻印できる一行あたりの文字数：76文字</li>
          <li>SSサイズで刻印できる一行あたりの文字数：70文字</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック（バングル用）---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-bangle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-bangle-stamp">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ＋記号 -->
      <section class="engraving-font-block">
        <p class="engraving-caption">刻印文字のイメージです。1.0mm〜3.0mmが使用できます。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（バングルSサイズ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">バングルに各サイズの刻印を打ち込んだイメージ画です。バングルサイズはSサイズです。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/stamp-Size-comparison12.jpg" alt="手打刻印サイズ比較（バングルSサイズ）">
          </div>
        </div>
      </section>

      <!-- セクション3：1.0mmは1.0mmじゃない -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に最適です。表記されている刻印サイズは刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>


<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_241", inner: "#cart_addcustom_238" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージバングル</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>43450</dc:format>
                    <dc:date>2025-08-22T18:14:36+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/299">
                    <title>職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［3.5mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/299</link>
                    <description>商品について
  
    
      
    
    
      
        
          幅：約3.5mm
          厚み：約2.0mm
   …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/299" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bangle/RMBA/RMBA35hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［3.5mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">商品について</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/MHDBA/k35img.jpg" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［3.5mm幅］">
    </div>
    <div class="product-text">
      <div class="product-section">
        <ul>
          <li>幅：約3.5mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>刻印可能な文字サイズ：小文字 1mm〜1.5mm、大文字・数字 1mm〜1.5mm</li>
          <li>LLサイズで刻印できる一行あたりの文字数：118文字</li>
          <li>Lサイズで刻印できる一行あたりの文字数：104文字</li>
          <li>Mサイズで刻印できる一行あたりの文字数：90文字</li>
          <li>Sサイズで刻印できる一行あたりの文字数：76文字</li>
          <li>SSサイズで刻印できる一行あたりの文字数：70文字</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック（バングル 甲丸3.5mm幅用）---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-bangleK35-stamp" class="toggle">
    <label class="accordion-title" for="toggle-bangleK35-stamp">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ＋記号 -->
      <section class="engraving-font-block">
        <p class="engraving-caption">刻印文字のイメージです。1.0mm〜1.5mmが使用できます。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（甲丸3.5mm幅バングル） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">バングルに各サイズの刻印を打ち込んだイメージ画です。バングルサイズはSサイズです。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/MHDBA/imgK35.jpg" alt="手打刻印サイズ比較（甲丸3.5mm幅バングル K35）">
          </div>
        </div>
      </section>

      <!-- セクション3：1.0mmは1.0mmじゃない -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_392", inner: "#cart_addcustom_393" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージバングル</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>22000</dc:format>
                    <dc:date>2025-08-22T18:04:22+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/298">
                    <title>職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［4mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/298</link>
                    <description>商品について
  
    
      
    
    
      
        
          幅：約4mm
          厚み：約1.8mm
     …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/298" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bangle/RMBA/RMBA4hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［4mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">商品について</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/MHDBA/k40img.jpg" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［4mm幅］">
    </div>
    <div class="product-text">
      <div class="product-section">
        <ul>
          <li>幅：約4mm</li>
          <li>厚み：約1.8mm</li>
          <li>素材：Silver950</li>
          <li>刻印可能な文字サイズ：小文字 1mm〜2mm、大文字・数字 1mm〜2mm</li>
          <li>LLサイズで刻印できる一行あたりの文字数：118文字</li>
          <li>Lサイズで刻印できる一行あたりの文字数：104文字</li>
          <li>Mサイズで刻印できる一行あたりの文字数：90文字</li>
          <li>Sサイズで刻印できる一行あたりの文字数：76文字</li>
          <li>SSサイズで刻印できる一行あたりの文字数：70文字</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>
<!-----------------------------------------------文字の刻印ブロック（バングル 甲丸4.0mm幅用）---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-bangleK40-stamp" class="toggle">
    <label class="accordion-title" for="toggle-bangleK40-stamp">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ＋記号 -->
      <section class="engraving-font-block">
        <p class="engraving-caption">刻印文字のイメージです。1.0mm〜2.0mmが使用できます。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（甲丸4.0mm幅バングル） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">バングルに各サイズの刻印を打ち込んだイメージ画です。バングルサイズはSサイズです。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/MHDBA/imgK40.jpg" alt="手打刻印サイズ比較（甲丸4.0mm幅バングル K40）">
          </div>
        </div>
      </section>

      <!-- セクション3：1.0mmは1.0mmじゃない -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_384", inner: "#cart_addcustom_385" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージバングル</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>23650</dc:format>
                    <dc:date>2025-08-22T18:03:02+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/285">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 12mm×12mm</title>
                    <link>https://www.guru-guru.co.jp/product/285</link>
                    <description>個性と温もりを感じるペンダント
  
    
      
    
    
      
        ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/285" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/1212M.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 12mm×12mm" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">個性と温もりを感じるペンダント</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/c1212.jpg" alt="メッセージペンダント12×12マットタイプ着用例">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」が感じられます。</p>
        <p>お好きなメッセージを刻印することができます。大切な人との思い出や感謝の気持ち、自分自身へのメッセージを永遠に身につけることができる特別なペンダントです。</p>
        <p>大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージペンダントに刻みましょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>素材：Silver950</li>
          <li>幅：約12mm</li>
          <li>長さ：約12mm</li>
          <li>厚み：約3.0mm</li>
          <li>最大4行（1行あたり最大7文字）</li>
          <li>※商品の特性上、若干のバラツキがございます</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-pendant1212" class="toggle">
    <label class="accordion-title" for="toggle-pendant1212">文字の刻印（12×12ペンダント比較）</label>
    <div class="content">

      <!-- 書体イメージ -->
      <section class="engraving-font-block">
        <p class="engraving-caption">12×12のペンダントトップで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- 通常12×12レイアウト -->
      <section class="engraving-size-gallery">
        <p class="engraving-caption">12×12のペンダントに各サイズの刻印を打ち込んだイメージです。</p>
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1212s.jpg" alt="1行7文字・最大4行のレイアウト例">
            </div>
            <div class="text">1行7文字・最大4行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k121230.jpg" alt="刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k121225.jpg" alt="刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k121220.jpg" alt="刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k121215.jpg" alt="刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k121210.jpg" alt="刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- 注意書き -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に一番適した形状になっています。表記の刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均サイズで作成していますので、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------(表面仕上げ)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-surface-finish" class="toggle">
    <label class="accordion-title" for="toggle-surface-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="texture-option">
          <div class="container">

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/texture.jpg);" role="img" aria-label="表面仕上げ比較の画像"></div>
              <div class="text">
                <h2>表面仕上げ比較</h2>
                <p>左からミラー、マット、つちめ、つちめマット</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/M.jpg);" role="img" aria-label="マット仕上げの画像"></div>
              <div class="text">
                <h2>マットタイプ</h2>
                <p>不動の一番人気。ナチュラルな雰囲気がカワイイ</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/F.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
              <div class="text">
                <h2>ミラータイプ</h2>
                <p>定番のミラー(鏡面)仕上げ。使い込むと味が出てきます。</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HM.jpg);" role="img" aria-label="つちめマットの画像"></div>
              <div class="text">
                <h2>つちめマット</h2>
                <p>でこぼこマットがカワイイ。マットタイプのかわいさとクラフト感が良い感じです</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HF.jpg);" role="img" aria-label="つちめの画像"></div>
              <div class="text">
                <h2>つちめ</h2>
                <p>溢れるクラフト感が人気。使い込むと味が出てきます</p>
              </div>
            </article>

          </div>
        </div>
      </section>
    </div>
  </div>
</section>
<!-----------------------------------------------(チェーン長さ比較)---------------------------------------------------------------->
<!-- チェーン長さ比較（1212シリーズ）：accordion + chain-length-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-chain-length-1212" class="toggle">
    <label class="accordion-title" for="toggle-chain-length-1212">着用イメージ（チェーン長さ比較・1212シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="chain-length-preview">

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121240.jpg);" role="img" aria-label="40cmの着用イメージ"></div>
            <div class="text">
              <h2>40cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121245.jpg);" role="img" aria-label="45cmの着用イメージ"></div>
            <div class="text">
              <h2>45cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121250.jpg);" role="img" aria-label="50cmの着用イメージ"></div>
            <div class="text">
              <h2>50cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121255.jpg);" role="img" aria-label="55cmの着用イメージ"></div>
            <div class="text">
              <h2>55cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121260.jpg);" role="img" aria-label="60cmの着用イメージ"></div>
            <div class="text">
              <h2>60cm</h2>
              <p>モデル身長153cm</p>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/maruazuki.jpg);" role="img" aria-label="留め具の画像"></div>
            <div class="text">
              <h2>留め具</h2>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(レイアウト例)---------------------------------------------------------------->
<!-- レイアウト例（1212シリーズ）：accordion + layout-example-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-layout-example-1212" class="toggle">
    <label class="accordion-title" for="toggle-layout-example-1212">レイアウト例（1212シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="layout-example-preview">

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1212M.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1212F.jpg);" role="img" aria-label="刻印サイズ1.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.5mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1212HM.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/nore5Hb2lDs?si=LTO7VVhlcf36vlLz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>


<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>



<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_282", inner: "#cart_addcustom_278" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>


</p>]]></content:encoded>
                    <dc:subject>メッセージペンダント</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>14850</dc:format>
                    <dc:date>2025-08-22T17:57:35+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/297">
                    <title>職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［5mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/297</link>
                    <description>商品について
  
    
      
    
    
      
        
          幅：約5mm
          厚み：約2.0mm
     …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/297" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bangle/RMBA/RMBA5hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［5mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">商品について</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/MHDBA/k50img.jpg" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージバングル［5mm幅］">
    </div>
    <div class="product-text">
      <div class="product-section">
        <ul>
          <li>幅：約5mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>刻印可能な文字サイズ：小文字 1mm〜2mm、大文字・数字 1mm〜2mm</li>
          <li>LLサイズで刻印できる一行あたりの文字数：118文字</li>
          <li>Lサイズで刻印できる一行あたりの文字数：104文字</li>
          <li>Mサイズで刻印できる一行あたりの文字数：90文字</li>
          <li>Sサイズで刻印できる一行あたりの文字数：76文字</li>
          <li>SSサイズで刻印できる一行あたりの文字数：70文字</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック（バングル特殊タイプ 甲丸5.0mm用）---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-bangleK50-stamp" class="toggle">
    <label class="accordion-title" for="toggle-bangleK50-stamp">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ＋記号 -->
      <section class="engraving-font-block">
        <p class="engraving-caption">刻印文字のイメージです。1.0mm〜2.0mmが使用できます。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（甲丸5.0mmモデル／Sサイズ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">バングルに各サイズの刻印を打ち込んだイメージ画です。バングルサイズはSサイズです。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/bangle/MHDBA/imgK50.jpg" alt="手打刻印サイズ比較（バングルK50タイプ）">
          </div>
        </div>
      </section>

      <!-- セクション3：1.0mmは1.0mmじゃない -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_379", inner: "#cart_addcustom_375" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージバングル</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>26400</dc:format>
                    <dc:date>2025-08-22T17:54:52+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/300">
                    <title>職人が一文字づつ打刻する ハンドメイドの甲丸メッセージブレスレット［3.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/300</link>
                    <description>あなたの心に寄り添うパートナー
  
    
      
    
    
      
        毎日身につけることで、大切なメッセージを心に刻むことのできるメッセージブレ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/300" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bracelet/RMBR3hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージブレスレット［3.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">あなたの心に寄り添うパートナー</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/bracelet/RMBR3hl.jpg" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージブレスレット［3.0mm幅］">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>毎日身につけることで、大切なメッセージを心に刻むことのできるメッセージブレスレット。</p>
        <p>細めの幅と丸みのあるデザインが手首に美しくフィットし、つけ心地も抜群です。</p>
        <p>このブレスレットは、特別な日のプレゼントや自分へのご褒美としてもぴったり。誕生日や結婚記念日、入学・卒業などの節目の日には、大切な人への感謝や応援の気持ちを込めて、メッセージを刻んでプレゼントしてみてはいかがでしょうか。</p>
        <p>このブレスレットは、あなたの心に寄り添うパートナーとなることでしょう。大切な人や自分自身への特別な贈り物として、ぜひお手元にお迎えください。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約3.0mm</li>
          <li>厚み：約1.6mm</li>
          <li>長さ：30mm</li>
          <li>素材：Silver925</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>
<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion" id="stamp-font">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">リングに刻印を打ち込んだイメージ画です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparisonRMBR_3_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>
                すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。<br>
                実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。<br>
                刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。<br>
                ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。
              </p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-finish" class="toggle">
    <label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="container">

          <section class="texture-option">
            <div class="container">

    <article class="texture-item">
      <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
      <div class="text">
        <h2>マット</h2>
        <p>不動の一番人気かわいい</p>
      </div>
    </article>

    <article class="texture-item">
      <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
      <div class="text">
        <h2>ミラー</h2>
        <p>定番のミラー(鏡面)仕上げ</p>
      </div>
    </article>

    <article class="texture-item">
      <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
      <div class="text">
        <h2>サテン</h2>
        <p>いい感じの梨地仕上げでキレイ</p>
      </div>
    </article>

            </div>
          </section>

        </div> <!-- /.container -->
      </section>
    </div> <!-- /.content -->
  </div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
        </div>
      </div>
    </div>
  </div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_647", inner: "#cart_addcustom_646" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージブレスレット</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>20900</dc:format>
                    <dc:date>2025-08-22T17:53:12+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/301">
                    <title>職人が一文字づつ打刻する ハンドメイドの甲丸メッセージブレスレット［3.5mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/301</link>
                    <description>心のおしゃれを楽しんで
  
    
      
    
    
      
        自分らしいメッセージを込めて身につけるメッセージブレスレット。
        …</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/301" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/bracelet/RMBR35hl.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージブレスレット［3.5mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">心のおしゃれを楽しんで</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/product/bracelet/RMBR35hl.jpg" alt="職人が一文字づつ打刻する ハンドメイドの甲丸メッセージブレスレット［3.5mm幅］">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>自分らしいメッセージを込めて身につけるメッセージブレスレット。</p>
        <p>シンプルなデザインでありながら手首から華やかさを引き立てます。</p>
        <p>あなたの内面や世界観を引き立て、周りに深い印象を与えることでしょう。</p>
        <p>あなただけの特別なメッセージを伝えるブレスレットで心のおしゃれを楽しんでください。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約3.5mm</li>
          <li>厚み：約1.8mm</li>
          <li>長さ：35mm</li>
          <li>素材：Silver925</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->

<section class="accordion" id="stamp-font">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">2.8mm幅で使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：最大文字数の比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">最大文字数を打ち込んだイメージです。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/bracelet/MHDBRcap.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>
                すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。<br>
                実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。<br>
                刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。<br>
                ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。
              </p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-finish" class="toggle">
    <label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="container">

          <section class="texture-option">
            <div class="container">

    <article class="texture-item">
      <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
      <div class="text">
        <h2>マット</h2>
        <p>不動の一番人気かわいい</p>
      </div>
    </article>

    <article class="texture-item">
      <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
      <div class="text">
        <h2>ミラー</h2>
        <p>定番のミラー(鏡面)仕上げ</p>
      </div>
    </article>

    <article class="texture-item">
      <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
      <div class="text">
        <h2>サテン</h2>
        <p>いい感じの梨地仕上げでキレイ</p>
      </div>
    </article>

            </div>
          </section>

        </div> <!-- /.container -->
      </section>
    </div> <!-- /.content -->
  </div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
        </div>
      </div>
    </div>
  </div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>

RMBR-3.5</p>]]></content:encoded>
                    <dc:subject>メッセージブレスレット</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>22000</dc:format>
                    <dc:date>2025-08-22T17:52:17+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/286">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 12mm×17mm</title>
                    <link>https://www.guru-guru.co.jp/product/286</link>
                    <description>個性と温もりを感じるペンダント
  
    
      
    
    
      
        ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/286" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/1217M.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 12mm×17mm" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">個性と温もりを感じるペンダント</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/c1217.jpg" alt="メッセージペンダント12×17着用例">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」が感じられます。</p>
        <p>お好きなメッセージを刻印することができます。大切な人との思い出や感謝の気持ち、自分自身へのメッセージを永遠に身につけることができる特別なペンダントです。</p>
        <p>大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージペンダントに刻みましょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>素材：Silver950</li>
          <li>幅：約12mm</li>
          <li>長さ：約17mm</li>
          <li>厚み：約3.0mm</li>
          <li>縦：最大7行（1行あたり最大7文字）</li>
          <li>横：最大6行（1行あたり最大9文字）</li>
          <li>※商品の特性上、若干のバラツキがございます</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-pendant1217" class="toggle">
    <label class="accordion-title" for="toggle-pendant1217">文字の刻印（12×17ペンダント比較）</label>
    <div class="content">

      <!-- 書体イメージ -->
      <section class="engraving-font-block">
        <p class="engraving-caption">12×17のペンダントトップで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- 通常12×17レイアウト -->
      <section class="engraving-size-gallery">
        <p class="engraving-caption">12×17のペンダントに各サイズの刻印を打ち込んだイメージです。</p>
        <div class="layout-example-preview pendant-sizing">
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k1217s.jpg" alt="1行7文字・最大7行のレイアウト例">
            </div>
            <div class="text">1行7文字・最大7行</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k121730.jpg" alt="刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k121725.jpg" alt="刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k121720.jpg" alt="刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k121715.jpg" alt="刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k121710.jpg" alt="刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>
        </div>
      </section>

      <!-- 横型12×17レイアウト -->
      <section class="engraving-size-gallery">
        <div class="layout-example-preview pendant-sizing">
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k1217hs.jpg" alt="横型：1行9文字・最大6行のレイアウト例">
            </div>
            <div class="text">1行9文字・最大6行</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k1217h30.jpg" alt="横型：刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k1217h25.jpg" alt="横型：刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k1217h20.jpg" alt="横型：刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k1217h15.jpg" alt="横型：刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>
          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/k1217h10.jpg" alt="横型：刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>
        </div>
      </section>

      <!-- 注意書き -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に一番適した形状になっています。表記の刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均サイズで作成していますので、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>


<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------(表面仕上げ)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-surface-finish" class="toggle">
    <label class="accordion-title" for="toggle-surface-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="texture-option">
          <div class="container">

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/texture.jpg);" role="img" aria-label="表面仕上げ比較の画像"></div>
              <div class="text">
                <h2>表面仕上げ比較</h2>
                <p>左からミラー、マット、つちめ、つちめマット</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/M.jpg);" role="img" aria-label="マット仕上げの画像"></div>
              <div class="text">
                <h2>マットタイプ</h2>
                <p>不動の一番人気。ナチュラルな雰囲気がカワイイ</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/F.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
              <div class="text">
                <h2>ミラータイプ</h2>
                <p>定番のミラー(鏡面)仕上げ。使い込むと味が出てきます。</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HM.jpg);" role="img" aria-label="つちめマットの画像"></div>
              <div class="text">
                <h2>つちめマット</h2>
                <p>でこぼこマットがカワイイ。マットタイプのかわいさとクラフト感が良い感じです</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HF.jpg);" role="img" aria-label="つちめの画像"></div>
              <div class="text">
                <h2>つちめ</h2>
                <p>溢れるクラフト感が人気。使い込むと味が出てきます</p>
              </div>
            </article>

          </div>
        </div>
      </section>
    </div>
  </div>
</section>
<!-----------------------------------------------(チェーン長さ比較)---------------------------------------------------------------->
<!-- チェーン長さ比較（1217シリーズ）：accordion + chain-length-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-chain-length-1217" class="toggle">
    <label class="accordion-title" for="toggle-chain-length-1217">着用イメージ（チェーン長さ比較・1217シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="chain-length-preview">

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121740.jpg);" role="img" aria-label="40cmの着用イメージ"></div>
            <div class="text">
              <h2>40cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121745.jpg);" role="img" aria-label="45cmの着用イメージ"></div>
            <div class="text">
              <h2>45cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121750.jpg);" role="img" aria-label="50cmの着用イメージ"></div>
            <div class="text">
              <h2>50cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121755.jpg);" role="img" aria-label="55cmの着用イメージ"></div>
            <div class="text">
              <h2>55cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/121760.jpg);" role="img" aria-label="60cmの着用イメージ"></div>
            <div class="text">
              <h2>60cm</h2>
              <p>モデル身長153cm</p>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/maruazuki.jpg);" role="img" aria-label="留め具の画像"></div>
            <div class="text">
              <h2>留め具</h2>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(レイアウト例)---------------------------------------------------------------->
<!-- レイアウト例（1217シリーズ）：accordion + layout-example-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-layout-example-1217" class="toggle">
    <label class="accordion-title" for="toggle-layout-example-1217">レイアウト例（1217シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="layout-example-preview">

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1217M.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1217F.jpg);" role="img" aria-label="刻印サイズ1.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.5mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1217HM.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/nore5Hb2lDs?si=LTO7VVhlcf36vlLz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>




<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_291", inner: "#cart_addcustom_288" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージペンダント</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>15950</dc:format>
                    <dc:date>2025-08-22T17:49:52+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/287">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 12mm×20mm</title>
                    <link>https://www.guru-guru.co.jp/product/287</link>
                    <description>個性と温もりを感じるペンダント
  
    
      
    
    
      
        ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/287" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/1220M.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 12mm×20mm" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">個性と温もりを感じるペンダント</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/c1217.jpg" alt="メッセージペンダント12×17着用例">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」が感じられます。</p>
        <p>お好きなメッセージを刻印することができます。大切な人との思い出や感謝の気持ち、自分自身へのメッセージを永遠に身につけることができる特別なペンダントです。</p>
        <p>大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージペンダントに刻みましょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>素材：Silver950</li>
          <li>幅：約12mm</li>
          <li>長さ：約20mm</li>
          <li>厚み：約3.0mm</li>
          <li>縦：最大9行（1行あたり最大7文字）</li>
          <li>横：最大6行（1行あたり最大12文字）</li>
          <li>※商品の特性上、若干のバラツキがございます</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-pendant1220" class="toggle">
    <label class="accordion-title" for="toggle-pendant1220">文字の刻印（12×20ペンダント比較）</label>
    <div class="content">

      <!-- 書体イメージ -->
      <section class="engraving-font-block">
        <p class="engraving-caption">12×20のペンダントトップで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- 通常12×20レイアウト -->
      <section class="engraving-size-gallery">
        <p class="engraving-caption">12×20のペンダントに各サイズの刻印を打ち込んだイメージです。</p>
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1220s.jpg" alt="1行7文字・最大9行のレイアウト例">
            </div>
            <div class="text">1行7文字・最大9行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k122030.jpg" alt="刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k122025.jpg" alt="刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k122020.jpg" alt="刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k122015.jpg" alt="刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k122010.jpg" alt="刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- 横型12×20レイアウト -->
      <section class="engraving-size-gallery">
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1220hs.jpg" alt="横型：1行12文字・最大6行のレイアウト例">
            </div>
            <div class="text">1行12文字・最大6行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1220h30.jpg" alt="横型：刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1220h25.jpg" alt="横型：刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1220h20.jpg" alt="横型：刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1220h15.jpg" alt="横型：刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1220h10.jpg" alt="横型：刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- サイズ説明 -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に一番適した形状になっています。表記の刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均サイズで作成していますので、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------(表面仕上げ)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-surface-finish" class="toggle">
    <label class="accordion-title" for="toggle-surface-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="texture-option">
          <div class="container">

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/texture.jpg);" role="img" aria-label="表面仕上げ比較の画像"></div>
              <div class="text">
                <h2>表面仕上げ比較</h2>
                <p>左からミラー、マット、つちめ、つちめマット</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/M.jpg);" role="img" aria-label="マット仕上げの画像"></div>
              <div class="text">
                <h2>マットタイプ</h2>
                <p>不動の一番人気。ナチュラルな雰囲気がカワイイ</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/F.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
              <div class="text">
                <h2>ミラータイプ</h2>
                <p>定番のミラー(鏡面)仕上げ。使い込むと味が出てきます。</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HM.jpg);" role="img" aria-label="つちめマットの画像"></div>
              <div class="text">
                <h2>つちめマット</h2>
                <p>でこぼこマットがカワイイ。マットタイプのかわいさとクラフト感が良い感じです</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HF.jpg);" role="img" aria-label="つちめの画像"></div>
              <div class="text">
                <h2>つちめ</h2>
                <p>溢れるクラフト感が人気。使い込むと味が出てきます</p>
              </div>
            </article>

          </div>
        </div>
      </section>
    </div>
  </div>
</section>
<!-----------------------------------------------(チェーン長さ比較)---------------------------------------------------------------->
<!-- チェーン長さ比較（1220シリーズ）：accordion + chain-length-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-chain-length-1220" class="toggle">
    <label class="accordion-title" for="toggle-chain-length-1220">着用イメージ（チェーン長さ比較・1220シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="chain-length-preview">

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/122040.jpg);" role="img" aria-label="40cmの着用イメージ"></div>
            <div class="text">
              <h2>40cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/122045.jpg);" role="img" aria-label="45cmの着用イメージ"></div>
            <div class="text">
              <h2>45cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/122050.jpg);" role="img" aria-label="50cmの着用イメージ"></div>
            <div class="text">
              <h2>50cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/122055.jpg);" role="img" aria-label="55cmの着用イメージ"></div>
            <div class="text">
              <h2>55cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/122060.jpg);" role="img" aria-label="60cmの着用イメージ"></div>
            <div class="text">
              <h2>60cm</h2>
              <p>モデル身長153cm</p>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/maruazuki.jpg);" role="img" aria-label="留め具の画像"></div>
            <div class="text">
              <h2>留め具</h2>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(レイアウト例)---------------------------------------------------------------->
<!-- レイアウト例（1220シリーズ）：accordion + layout-example-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-layout-example-1220" class="toggle">
    <label class="accordion-title" for="toggle-layout-example-1220">レイアウト例（1220シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="layout-example-preview">

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1220M.jpg);" role="img" aria-label="刻印サイズ1.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.5mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1220F.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例1"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1220HM.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例2"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/nore5Hb2lDs?si=LTO7VVhlcf36vlLz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>




<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_299", inner: "#cart_addcustom_296" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージペンダント</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>16500</dc:format>
                    <dc:date>2025-08-22T17:48:48+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/288">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 15mm×15mm</title>
                    <link>https://www.guru-guru.co.jp/product/288</link>
                    <description>個性と温もりを感じるペンダント
  
    
      
    
    
      
        ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/288" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/1515M.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 15mm×15mm" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">個性と温もりを感じるペンダント</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/c1515.jpg" alt="メッセージペンダント15×15着用例">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」が感じられます。</p>
        <p>お好きなメッセージを刻印することができます。大切な人との思い出や感謝の気持ち、自分自身へのメッセージを永遠に身につけることができる特別なペンダントです。</p>
        <p>大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージペンダントに刻みましょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>素材：Silver950</li>
          <li>幅：約15mm</li>
          <li>長さ：約15mm</li>
          <li>厚み：約3.0mm</li>
          <li>最大6行（1行あたり最大10文字）</li>
          <li>※商品の特性上、若干のバラツキがございます</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-pendant1515" class="toggle">
    <label class="accordion-title" for="toggle-pendant1515">文字の刻印（15×15ペンダント比較）</label>
    <div class="content">

      <!-- 書体イメージ -->
      <section class="engraving-font-block">
        <p class="engraving-caption">15×15のペンダントで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- レイアウト例 -->
      <section class="engraving-size-gallery">
        <p class="engraving-caption">15×15のペンダントに各サイズの刻印を打ち込んだイメージです。</p>
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1515s.jpg" alt="1行10文字・最大6行のレイアウト例">
            </div>
            <div class="text">1行10文字・最大6行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k151530.jpg" alt="刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k151525.jpg" alt="刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k151520.jpg" alt="刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k151515.jpg" alt="刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k151510.jpg" alt="刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- サイズ説明 -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは刻印先端の「a」の範囲を指しますが、実際の打刻では最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で実際に打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------(表面仕上げ)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-surface-finish" class="toggle">
    <label class="accordion-title" for="toggle-surface-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="texture-option">
          <div class="container">

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/texture.jpg);" role="img" aria-label="表面仕上げ比較の画像"></div>
              <div class="text">
                <h2>表面仕上げ比較</h2>
                <p>左からミラー、マット、つちめ、つちめマット</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/M.jpg);" role="img" aria-label="マット仕上げの画像"></div>
              <div class="text">
                <h2>マットタイプ</h2>
                <p>不動の一番人気。ナチュラルな雰囲気がカワイイ</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/F.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
              <div class="text">
                <h2>ミラータイプ</h2>
                <p>定番のミラー(鏡面)仕上げ。使い込むと味が出てきます。</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HM.jpg);" role="img" aria-label="つちめマットの画像"></div>
              <div class="text">
                <h2>つちめマット</h2>
                <p>でこぼこマットがカワイイ。マットタイプのかわいさとクラフト感が良い感じです</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HF.jpg);" role="img" aria-label="つちめの画像"></div>
              <div class="text">
                <h2>つちめ</h2>
                <p>溢れるクラフト感が人気。使い込むと味が出てきます</p>
              </div>
            </article>

          </div>
        </div>
      </section>
    </div>
  </div>
</section>
<!-----------------------------------------------(チェーン長さ比較)---------------------------------------------------------------->
<!-- チェーン長さ比較（1515シリーズ）：accordion + chain-length-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-chain-length-1515" class="toggle">
    <label class="accordion-title" for="toggle-chain-length-1515">着用イメージ（チェーン長さ比較・1515シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="chain-length-preview">

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/151540.jpg);" role="img" aria-label="40cmの着用イメージ"></div>
            <div class="text">
              <h2>40cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/151545.jpg);" role="img" aria-label="45cmの着用イメージ"></div>
            <div class="text">
              <h2>45cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/151550.jpg);" role="img" aria-label="50cmの着用イメージ"></div>
            <div class="text">
              <h2>50cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/151555.jpg);" role="img" aria-label="55cmの着用イメージ"></div>
            <div class="text">
              <h2>55cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/151560.jpg);" role="img" aria-label="60cmの着用イメージ"></div>
            <div class="text">
              <h2>60cm</h2>
              <p>モデル身長153cm</p>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/maruazuki.jpg);" role="img" aria-label="留め具の画像"></div>
            <div class="text">
              <h2>留め具</h2>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(レイアウト例)---------------------------------------------------------------->
<!-- レイアウト例（1515シリーズ）：accordion + layout-example-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-layout-example-1515" class="toggle">
    <label class="accordion-title" for="toggle-layout-example-1515">レイアウト例（1515シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="layout-example-preview">

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1515M.jpg);" role="img" aria-label="刻印サイズ2.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ2.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1515F.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1515HM.jpg);" role="img" aria-label="刻印サイズ1.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.5mm</p>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/nore5Hb2lDs?si=LTO7VVhlcf36vlLz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>




<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_307", inner: "#cart_addcustom_305" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージペンダント</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>15950</dc:format>
                    <dc:date>2025-08-22T17:47:47+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/289">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 15mm×21mm</title>
                    <link>https://www.guru-guru.co.jp/product/289</link>
                    <description>個性と温もりを感じるペンダント
  
    
      
    
    
      
        ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/289" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/1521M.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 15mm×21mm" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">個性と温もりを感じるペンダント</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/c1521.jpg" alt="メッセージペンダント15×21着用例">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」が感じられます。</p>
        <p>お好きなメッセージを刻印することができます。大切な人との思い出や感謝の気持ち、自分自身へのメッセージを永遠に身につけることができる特別なペンダントです。</p>
        <p>大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージペンダントに刻みましょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>素材：Silver950</li>
          <li>幅：約15mm</li>
          <li>長さ：約21mm</li>
          <li>厚み：約3.0mm</li>
          <li>縦：最大9行（1行あたり最大10文字）</li>
          <li>横：最大7行（1行あたり最大12文字）</li>
          <li>※商品の特性上、若干のバラツキがございます</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-pendant1521" class="toggle">
    <label class="accordion-title" for="toggle-pendant1521">文字の刻印（15×21ペンダント比較）</label>
    <div class="content">

      <!-- 書体イメージ -->
      <section class="engraving-font-block">
        <p class="engraving-caption">15×21のペンダントトップで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- 通常15×21レイアウト -->
      <section class="engraving-size-gallery">
        <p class="engraving-caption">15×21のペンダントに各サイズの刻印を打ち込んだイメージです。</p>
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1521s.jpg" alt="1行10文字・最大9行のレイアウト例">
            </div>
            <div class="text">1行10文字・最大9行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152130.jpg" alt="刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152125.jpg" alt="刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152120.jpg" alt="刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152115.jpg" alt="刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152110.jpg" alt="刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- 横型15×21レイアウト -->
      <section class="engraving-size-gallery">
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1521hs.jpg" alt="横型：1行12文字・最大7行のレイアウト例">
            </div>
            <div class="text">1行12文字・最大7行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1521h30.jpg" alt="横型：刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1521h25.jpg" alt="横型：刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1521h20.jpg" alt="横型：刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1521h15.jpg" alt="横型：刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1521h10.jpg" alt="横型：刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- サイズ説明 -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>




<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------(表面仕上げ)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-surface-finish" class="toggle">
    <label class="accordion-title" for="toggle-surface-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="texture-option">
          <div class="container">

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/texture.jpg);" role="img" aria-label="表面仕上げ比較の画像"></div>
              <div class="text">
                <h2>表面仕上げ比較</h2>
                <p>左からミラー、マット、つちめ、つちめマット</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/M.jpg);" role="img" aria-label="マット仕上げの画像"></div>
              <div class="text">
                <h2>マットタイプ</h2>
                <p>不動の一番人気。ナチュラルな雰囲気がカワイイ</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/F.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
              <div class="text">
                <h2>ミラータイプ</h2>
                <p>定番のミラー(鏡面)仕上げ。使い込むと味が出てきます。</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HM.jpg);" role="img" aria-label="つちめマットの画像"></div>
              <div class="text">
                <h2>つちめマット</h2>
                <p>でこぼこマットがカワイイ。マットタイプのかわいさとクラフト感が良い感じです</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HF.jpg);" role="img" aria-label="つちめの画像"></div>
              <div class="text">
                <h2>つちめ</h2>
                <p>溢れるクラフト感が人気。使い込むと味が出てきます</p>
              </div>
            </article>

          </div>
        </div>
      </section>
    </div>
  </div>
</section>
<!-----------------------------------------------(チェーン長さ比較)---------------------------------------------------------------->
<!-- チェーン長さ比較（1521シリーズ）：accordion + chain-length-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-chain-length-1521" class="toggle">
    <label class="accordion-title" for="toggle-chain-length-1521">着用イメージ（チェーン長さ比較・1521シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="chain-length-preview">

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152140.jpg);" role="img" aria-label="40cmの着用イメージ"></div>
            <div class="text">
              <h2>40cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152145.jpg);" role="img" aria-label="45cmの着用イメージ"></div>
            <div class="text">
              <h2>45cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152150.jpg);" role="img" aria-label="50cmの着用イメージ"></div>
            <div class="text">
              <h2>50cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152155.jpg);" role="img" aria-label="55cmの着用イメージ"></div>
            <div class="text">
              <h2>55cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152160.jpg);" role="img" aria-label="60cmの着用イメージ"></div>
            <div class="text">
              <h2>60cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/maruazuki.jpg);" role="img" aria-label="留め具の画像"></div>
            <div class="text">
              <h2>留め具</h2>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(レイアウト例)---------------------------------------------------------------->
<!-- レイアウト例（1521シリーズ）：accordion + layout-example-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-layout-example-1521" class="toggle">
    <label class="accordion-title" for="toggle-layout-example-1521">レイアウト例（1521シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="layout-example-preview">

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1521M.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1521F.jpg);" role="img" aria-label="刻印サイズ1.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.5mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1521HM.jpg);" role="img" aria-label="刻印サイズ2.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ2.0mm</p>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/nore5Hb2lDs?si=LTO7VVhlcf36vlLz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>




<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_315", inner: "#cart_addcustom_310" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージペンダント</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>17050</dc:format>
                    <dc:date>2025-08-22T17:46:49+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/290">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 15mm×26mm</title>
                    <link>https://www.guru-guru.co.jp/product/290</link>
                    <description>個性と温もりを感じるペンダント
  
    
      
    
    
      
        ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/290" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/1526M.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 15mm×26mm" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">個性と温もりを感じるペンダント</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/c1526.jpg" alt="メッセージペンダント15×26着用例">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」が感じられます。</p>
        <p>お好きなメッセージを刻印することができます。大切な人との思い出や感謝の気持ち、自分自身へのメッセージを永遠に身につけることができる特別なペンダントです。</p>
        <p>大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージペンダントに刻みましょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>素材：Silver950</li>
          <li>幅：約15mm</li>
          <li>長さ：約26mm</li>
          <li>厚み：約3.0mm</li>
          <li>縦：最大11行（1行あたり最大10文字）</li>
          <li>横：最大7行（1行あたり最大15文字）</li>
          <li>※商品の特性上、若干のバラツキがございます</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-pendant1526" class="toggle">
    <label class="accordion-title" for="toggle-pendant1526">文字の刻印（15×26ペンダント比較）</label>
    <div class="content">

      <!-- 書体イメージ -->
      <section class="engraving-font-block">
        <p class="engraving-caption">15×26のペンダントトップで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- 縦型レイアウト -->
      <section class="engraving-size-gallery">
        <p class="engraving-caption">15×26のペンダントに各サイズの刻印を打ち込んだイメージです。</p>
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1526s.jpg" alt="1行10文字・最大11行のレイアウト例">
            </div>
            <div class="text">1行10文字・最大11行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152630.jpg" alt="刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152625.jpg" alt="刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152620.jpg" alt="刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152615.jpg" alt="刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k152610.jpg" alt="刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- 横型レイアウト -->
      <section class="engraving-size-gallery">
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1526hs.jpg" alt="横型：1行15文字・最大7行のレイアウト例">
            </div>
            <div class="text">1行15文字・最大7行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1526h30.jpg" alt="横型：刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1526h25.jpg" alt="横型：刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1526h20.jpg" alt="横型：刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1526h15.jpg" alt="横型：刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1526h10.jpg" alt="横型：刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- サイズ注意 -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------(表面仕上げ)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-surface-finish" class="toggle">
    <label class="accordion-title" for="toggle-surface-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="texture-option">
          <div class="container">

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/texture.jpg);" role="img" aria-label="表面仕上げ比較の画像"></div>
              <div class="text">
                <h2>表面仕上げ比較</h2>
                <p>左からミラー、マット、つちめ、つちめマット</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/M.jpg);" role="img" aria-label="マット仕上げの画像"></div>
              <div class="text">
                <h2>マットタイプ</h2>
                <p>不動の一番人気。ナチュラルな雰囲気がカワイイ</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/F.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
              <div class="text">
                <h2>ミラータイプ</h2>
                <p>定番のミラー(鏡面)仕上げ。使い込むと味が出てきます。</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HM.jpg);" role="img" aria-label="つちめマットの画像"></div>
              <div class="text">
                <h2>つちめマット</h2>
                <p>でこぼこマットがカワイイ。マットタイプのかわいさとクラフト感が良い感じです</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HF.jpg);" role="img" aria-label="つちめの画像"></div>
              <div class="text">
                <h2>つちめ</h2>
                <p>溢れるクラフト感が人気。使い込むと味が出てきます</p>
              </div>
            </article>

          </div>
        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(チェーン長さ比較)---------------------------------------------------------------->
<!-- チェーン長さ比較（1526シリーズ）：accordion + chain-length-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-chain-length-1526" class="toggle">
    <label class="accordion-title" for="toggle-chain-length-1526">着用イメージ（チェーン長さ比較・1526シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="chain-length-preview">

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152640.jpg);" role="img" aria-label="40cmの着用イメージ"></div>
            <div class="text">
              <h2>40cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152645.jpg);" role="img" aria-label="45cmの着用イメージ"></div>
            <div class="text">
              <h2>45cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152650.jpg);" role="img" aria-label="50cmの着用イメージ"></div>
            <div class="text">
              <h2>50cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152655.jpg);" role="img" aria-label="55cmの着用イメージ"></div>
            <div class="text">
              <h2>55cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/152660.jpg);" role="img" aria-label="60cmの着用イメージ"></div>
            <div class="text">
              <h2>60cm</h2>
              <p>モデル身長153cm</p>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/maruazuki.jpg);" role="img" aria-label="留め具の画像"></div>
            <div class="text">
              <h2>留め具</h2>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(レイアウト例)---------------------------------------------------------------->
<!-- レイアウト例（1526シリーズ）：accordion + layout-example-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-layout-example-1526" class="toggle">
    <label class="accordion-title" for="toggle-layout-example-1526">レイアウト例（1526シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="layout-example-preview">

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1526M.jpg);" role="img" aria-label="刻印サイズ1.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.5mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1526F.jpg);" role="img" aria-label="刻印サイズ2.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ2.5mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1526HM.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/nore5Hb2lDs?si=LTO7VVhlcf36vlLz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>


<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>




<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_323", inner: "#cart_addcustom_316" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージペンダント</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>18700</dc:format>
                    <dc:date>2025-08-22T17:45:28+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/291">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 18mm×18mm</title>
                    <link>https://www.guru-guru.co.jp/product/291</link>
                    <description>個性と温もりを感じるペンダント
  
    
      
    
    
      
        ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/291" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/1818M.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 18mm×18mm" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">個性と温もりを感じるペンダント</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/c1818.jpg" alt="メッセージペンダント18×18着用例">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」が感じられます。</p>
        <p>お好きなメッセージを刻印することができます。大切な人との思い出や感謝の気持ち、自分自身へのメッセージを永遠に身につけることができる特別なペンダントです。</p>
        <p>大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージペンダントに刻みましょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>素材：Silver950</li>
          <li>幅：約18mm</li>
          <li>長さ：約18mm</li>
          <li>厚み：約3.0mm</li>
          <li>縦：最大7行（1行あたり最大12文字）</li>
          <li>※商品の特性上、若干のバラツキがございます</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-pendant1818" class="toggle">
    <label class="accordion-title" for="toggle-pendant1818">文字の刻印（18×18ペンダント比較）</label>
    <div class="content">

      <!-- 書体イメージ -->
      <section class="engraving-font-block">
        <p class="engraving-caption">18×18のペンダントで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- レイアウト比較 -->
      <section class="engraving-size-gallery">
        <p class="engraving-caption">18×18のペンダントに各サイズの刻印を打ち込んだイメージです。</p>
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k1818s.jpg" alt="1行12文字・最大7行のレイアウト例">
            </div>
            <div class="text">1行12文字・最大7行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k181830.jpg" alt="刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k181825.jpg" alt="刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k181820.jpg" alt="刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k181815.jpg" alt="刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k181810.jpg" alt="刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- サイズ注意 -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>





<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------(表面仕上げ)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-surface-finish" class="toggle">
    <label class="accordion-title" for="toggle-surface-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="texture-option">
          <div class="container">

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/texture.jpg);" role="img" aria-label="表面仕上げ比較の画像"></div>
              <div class="text">
                <h2>表面仕上げ比較</h2>
                <p>左からミラー、マット、つちめ、つちめマット</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/M.jpg);" role="img" aria-label="マット仕上げの画像"></div>
              <div class="text">
                <h2>マットタイプ</h2>
                <p>不動の一番人気。ナチュラルな雰囲気がカワイイ</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/F.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
              <div class="text">
                <h2>ミラータイプ</h2>
                <p>定番のミラー(鏡面)仕上げ。使い込むと味が出てきます。</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HM.jpg);" role="img" aria-label="つちめマットの画像"></div>
              <div class="text">
                <h2>つちめマット</h2>
                <p>でこぼこマットがカワイイ。マットタイプのかわいさとクラフト感が良い感じです</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HF.jpg);" role="img" aria-label="つちめの画像"></div>
              <div class="text">
                <h2>つちめ</h2>
                <p>溢れるクラフト感が人気。使い込むと味が出てきます</p>
              </div>
            </article>

          </div>
        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(チェーン長さ比較)---------------------------------------------------------------->
<!-- チェーン長さ比較（1818シリーズ）：accordion + chain-length-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-chain-length-1818" class="toggle">
    <label class="accordion-title" for="toggle-chain-length-1818">着用イメージ（チェーン長さ比較・1818シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="chain-length-preview">

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/181840.jpg);" role="img" aria-label="40cmの着用イメージ"></div>
            <div class="text">
              <h2>40cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/181845.jpg);" role="img" aria-label="45cmの着用イメージ"></div>
            <div class="text">
              <h2>45cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/181850.jpg);" role="img" aria-label="50cmの着用イメージ"></div>
            <div class="text">
              <h2>50cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/181855.jpg);" role="img" aria-label="55cmの着用イメージ"></div>
            <div class="text">
              <h2>55cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/181860.jpg);" role="img" aria-label="60cmの着用イメージ"></div>
            <div class="text">
              <h2>60cm</h2>
              <p>モデル身長153cm</p>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/maruazuki.jpg);" role="img" aria-label="留め具の画像"></div>
            <div class="text">
              <h2>留め具</h2>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(レイアウト例)---------------------------------------------------------------->
<!-- レイアウト例（1818シリーズ）：accordion + layout-example-preview構成 -->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-layout-example-1818" class="toggle">
    <label class="accordion-title" for="toggle-layout-example-1818">レイアウト例（1818シリーズ）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="layout-example-preview">

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1818M.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1818F.jpg);" role="img" aria-label="刻印サイズ3.0mm/1.0mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ3.0mm / 1.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L1818HM.jpg);" role="img" aria-label="刻印サイズ1.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.5mm</p>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/nore5Hb2lDs?si=LTO7VVhlcf36vlLz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>



<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_329", inner: "#cart_addcustom_330" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージペンダント</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>17600</dc:format>
                    <dc:date>2025-08-22T17:44:20+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/294">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 20mm×20mm</title>
                    <link>https://www.guru-guru.co.jp/product/294</link>
                    <description>個性と温もりを感じるペンダント
  
    
      
    
    
      
        ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/294" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/Pendant/2020M.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージペンダント 20mm×20mm" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">個性と温もりを感じるペンダント</h2>
  <div class="product-flex-wrapper">
    <div class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/c2020.jpg" alt="メッセージペンダント20×20着用例">
    </div>
    <div class="product-text">
      <div class="product-section">
        <p>ひとつひとつハンドメイドで制作しているため、一点一点に「個性」と「温かみ」が感じられます。</p>
        <p>お好きなメッセージを刻印することができます。大切な人との思い出や感謝の気持ち、自分自身へのメッセージを永遠に身につけることができる特別なペンダントです。</p>
        <p>大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージペンダントに刻みましょう。</p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>素材：Silver950</li>
          <li>幅：約20mm</li>
          <li>長さ：約20mm</li>
          <li>厚み：約3.0mm</li>
          <li>縦：最大8行（1行あたり最大13文字）</li>
          <li>※商品の特性上、若干のバラツキがございます</li>
        </ul>
      </div>

      <div class="product-note">
        <p>※メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約２週間のお時間をいただきます。繁忙期は２週間以上お時間を頂く場合がございます。予めご了承ください。</p>
      </div>
    </div>
  </div>
</section>

<!-----------------------------------------------文字の刻印ブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-pendant2020" class="toggle">
    <label class="accordion-title" for="toggle-pendant2020">文字の刻印（20×20ペンダント比較）</label>
    <div class="content">

      <!-- 書体イメージ -->
      <section class="engraving-font-block">
        <p class="engraving-caption">20×20のペンダントで使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- レイアウト比較 -->
      <section class="engraving-size-gallery">
        <p class="engraving-caption">20×20のペンダントに各サイズの刻印を打ち込んだイメージです。</p>
        <div class="layout-example-preview pendant-sizing">

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k2020s.jpg" alt="1行13文字・最大8行のレイアウト例">
            </div>
            <div class="text">1行13文字・最大8行</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k202030.jpg" alt="刻印サイズ3.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 3.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k202025.jpg" alt="刻印サイズ2.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k202020.jpg" alt="刻印サイズ2.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 2.0mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k202015.jpg" alt="刻印サイズ1.5mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.5mm</div>
          </article>

          <article class="layout-example-item">
            <div class="image-box">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/Pendant/k202010.jpg" alt="刻印サイズ1.0mmのレイアウト例">
            </div>
            <div class="text">刻印サイズ 1.0mm</div>
          </article>

        </div>
      </section>

      <!-- サイズ注意 -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは、1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で、金属の打刻に最適です。表記されている刻印サイズは、刻印先端の「a」の範囲を指しますが、実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。</p>
              <p>刻印サイズ1.0mmを使用しても、実際の文字サイズは1.0mmになりません。あらかじめご了承ください。ご注文後にお届けするイメージ画像は、弊社で打刻した平均値をもとに作成しており、実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="https://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状の解説図">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>




<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------(表面仕上げ)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-surface-finish" class="toggle">
    <label class="accordion-title" for="toggle-surface-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="texture-option">
          <div class="container">

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/texture.jpg);" role="img" aria-label="表面仕上げ比較の画像"></div>
              <div class="text">
                <h2>表面仕上げ比較</h2>
                <p>左からミラー、マット、つちめ、つちめマット</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/M.jpg);" role="img" aria-label="マット仕上げの画像"></div>
              <div class="text">
                <h2>マットタイプ</h2>
                <p>不動の一番人気。ナチュラルな雰囲気がカワイイ</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/F.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
              <div class="text">
                <h2>ミラータイプ</h2>
                <p>定番のミラー(鏡面)仕上げ。使い込むと味が出てきます。</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HM.jpg);" role="img" aria-label="つちめマットの画像"></div>
              <div class="text">
                <h2>つちめマット</h2>
                <p>でこぼこマットがカワイイ。マットタイプのかわいさとクラフト感が良い感じです</p>
              </div>
            </article>

            <article class="texture-item">
              <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/HF.jpg);" role="img" aria-label="つちめの画像"></div>
              <div class="text">
                <h2>つちめ</h2>
                <p>溢れるクラフト感が人気。使い込むと味が出てきます</p>
              </div>
            </article>

          </div>
        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(チェーン長さ比較)---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-chain-length-variant" class="toggle">
    <label class="accordion-title" for="toggle-chain-length-variant">着用イメージ（チェーン長さ比較・別画像）</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="chain-length-preview">

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/202040.jpg);" role="img" aria-label="40cmの着用イメージ"></div>
            <div class="text">
              <h2>40cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/202045.jpg);" role="img" aria-label="45cmの着用イメージ"></div>
            <div class="text">
              <h2>45cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/202050.jpg);" role="img" aria-label="50cmの着用イメージ"></div>
            <div class="text">
              <h2>50cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/202055.jpg);" role="img" aria-label="55cmの着用イメージ"></div>
            <div class="text">
              <h2>55cm</h2>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/202060.jpg);" role="img" aria-label="60cmの着用イメージ"></div>
            <div class="text">
              <h2>60cm</h2>
              <p>モデル身長153cm</p>
            </div>
          </article>

          <article class="chain-length-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/maruazuki.jpg);" role="img" aria-label="留め具の画像"></div>
            <div class="text">
              <h2>留め具</h2>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------(レイアウト例)---------------------------------------------------------------->

<section class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-layout-example-variant" class="toggle">
    <label class="accordion-title" for="toggle-layout-example-variant">レイアウト例</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="layout-example-preview">

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L2020M.jpg);" role="img" aria-label="刻印サイズ1.5mmのレイアウト例"></div>
            <div class="text">
              <p>刻印サイズ1.5mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L2020F.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例1"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

          <article class="layout-example-item">
            <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/Pendant/L2020HM.jpg);" role="img" aria-label="刻印サイズ1.0mmのレイアウト例2"></div>
            <div class="text">
              <p>刻印サイズ1.0mm</p>
            </div>
          </article>

        </div>
      </section>
    </div>
  </div>
</section>

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/nore5Hb2lDs?si=LTO7VVhlcf36vlLz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>


<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>




<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_348", inner: "#cart_addcustom_353" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージペンダント</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>19250</dc:format>
                    <dc:date>2025-08-22T17:43:16+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/275">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージリング［2.5mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/275</link>
                    <description>ずっと身につけたい

  

    
      
    

    

      
        
          あなたの手には、大切な人のお名前や願いが刻まれ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/275" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/2_5mm_ring/25_m_600.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージリング［2.5mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">

  <h2 class="section-title-guru">ずっと身につけたい</h2>

  <div class="product-flex-wrapper">

    <figure class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/detailed/2_5img02.JPG" alt="オリジナルシルバーリング2.5mm幅リング着用例">
    </figure>

    <div class="product-text">

      <div class="product-section">
        <p>
          あなたの手には、大切な人のお名前や願いが刻まれたリングが輝いている。<br>
          離れていても、いつでも大切な人のそばにいる気持ちでいられます。<br>
          ノスタルジックな手打刻印が、ハンドメイドのぬくもり溢れるリングを彩ってくれます。<br>
          自分自身へのご褒美にも、大切な人へのプレゼントにもおすすめ。<br>
          あなただけのメッセージリングを手に入れてください。
        </p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約2.5mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver950</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>
          <strong>商品の受注について：</strong><br>
          メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
          繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。
        </p>
      </div>

    </div><!-- /.product-text -->

  </div><!-- /.product-flex-wrapper -->

</section>
<!-----------------------------------------------刻印について---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">2.5mm幅で使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">2.5mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison2_5_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>

<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_708", inner: "#cart_addcustom_704" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>

</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>14300</dc:format>
                    <dc:date>2025-08-22T17:31:30+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/274">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージリング［3mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/274</link>
                    <description>毎日をロマンティックに

  

    
      
    

    

      
        
          メッセージリングに想いを刻んで身に付けて、…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/274" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/3mmring/3mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージリング［3mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">

  <h2 class="section-title-guru">毎日をロマンティックに</h2>

  <div class="product-flex-wrapper">

    <figure class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/detailed/19.JPG" alt="オリジナルシルバーリング3mm幅リング着用例">
    </figure>

    <div class="product-text">

      <div class="product-section">
        <p>
          メッセージリングに想いを刻んで身に付けて、自分を励ます。<br>
          この3mm幅リングに大切な人の名前や願いを刻んでいつも身につけることができれば、毎日がハッピーになること間違いなし。<br>
          大切な人に贈れば想いを込めた贈り物として、心を通わせるきっかけになるかも。<br>
          一生涯の宝物になるこのリングで、特別なひとときを共有しましょう。
        </p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約3mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver950</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>
          <strong>商品の受注について：</strong><br>
          メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
          繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。
        </p>
      </div>

    </div><!-- /.product-text -->

  </div><!-- /.product-flex-wrapper -->

</section>

<!-----------------------------------------------刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">3mm幅で使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">3mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison3_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HMR.jpg);" role="img" aria-label="つちめ仕上げの画像"></div>
<div class="text">
<h2>つちめ</h2>
<p>溢れるクラフト感が人気</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HML.jpg);" role="img" aria-label="つちめマット仕上げの画像"></div>
<div class="text">
<h2>つちめマット</h2>
<p>でこぼこマットがカワイイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_AT.jpg);" role="img" aria-label="アンティーク仕上げの画像"></div>
<div class="text">
<h2>アンティーク</h2>
<p>シャビーテイストで良い感じ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>







<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_698", inner: "#cart_addcustom_697" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>

</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>14300</dc:format>
                    <dc:date>2025-08-22T17:30:57+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/276">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージリング［2.0mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/276</link>
                    <description>ずっと身につけたい

  

    
      
    

    

      
        
          華奢で女性らしいデザインは、手元を華やかに彩り…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/276" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/2mm_ring/2_m_600.jpg" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージリング［2.0mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">

  <h2 class="section-title-guru">ずっと身につけたい</h2>

  <div class="product-flex-wrapper">

    <figure class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/detailed/2img04.JPG" alt="オリジナルシルバーリング2.0mm幅リング着用例">
    </figure>

    <div class="product-text">

      <div class="product-section">
        <p>
          華奢で女性らしいデザインは、手元を華やかに彩ります。リングの細さは2.0mmとなっており、レイヤリングにも最適。<br>
          あなたの手には、大切な人のお名前や願いが刻まれたリングが輝いている。毎日見るたびに心が温かくなりますね。<br>
          プレゼントにもぴったりな一品です。<br>
          大切な人との思い出、特別な言葉を刻んで、あなただけの特別なリングを作ってみてはいかがでしょうか？<br>
          一生ものの思い出になるメッセージリングは、あなたの心を彩り輝かせてくれます。
        </p>
        <p><strong>※繊細なデザインのため、取扱いにはご注意ください。</strong></p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約2.0mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver950</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>
          <strong>商品の受注について：</strong><br>
          メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
          繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。
        </p>
      </div>

    </div><!-- /.product-text -->

  </div><!-- /.product-flex-wrapper -->

</section>

<!-----------------------------------------------文字の刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">2mm幅で使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">2mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison2_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>
</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>


<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_XXX", inner: "#cart_addcustom_XXX" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>

</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>14300</dc:format>
                    <dc:date>2025-08-22T17:25:50+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/273">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージリング［4mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/273</link>
                    <description>とびきりの毎日がはじまる

  

    
      
    

    

      
        
          「言葉は魔法の杖」と言います。メッセージ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/273" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/4mm_ring/4mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージリング［4mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">

  <h2 class="section-title-guru">とびきりの毎日がはじまる</h2>

  <div class="product-flex-wrapper">

    <figure class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/detailed/18.JPG" alt="オリジナルシルバーリング4mm幅リング着用例">
    </figure>

    <div class="product-text">

      <div class="product-section">
        <p>
          「言葉は魔法の杖」と言います。メッセージリングに思いを刻んで身に付けて、自分を励ましましょう。<br>
          この4mm幅のリングに好きな言葉やお名前を刻印できます。<br>
          身に付けることで、自分を信じる力が湧くようなハッピーでチャーミングな毎日を過ごせるはず。<br>
          また、3mm幅リングとペアリングにするのもおすすめです。<br>
          大切な人との絆が強くなって、幸せに満ちた時間が過ごせます。
        </p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約4mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver950</li>
          <li>最大1行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>
          <strong>商品の受注について：</strong><br>
          メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
          繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。
        </p>
      </div>

    </div><!-- /.product-text -->

  </div><!-- /.product-flex-wrapper -->

</section>

<!-----------------------------------------------刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">4mm幅で使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">4mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparison4_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>


<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HMR.jpg);" role="img" aria-label="つちめ仕上げの画像"></div>
<div class="text">
<h2>つちめ</h2>
<p>溢れるクラフト感が人気</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HML.jpg);" role="img" aria-label="つちめマット仕上げの画像"></div>
<div class="text">
<h2>つちめマット</h2>
<p>でこぼこマットがカワイイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_AT.jpg);" role="img" aria-label="アンティーク仕上げの画像"></div>
<div class="text">
<h2>アンティーク</h2>
<p>シャビーテイストで良い感じ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>


<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_685", inner: "#cart_addcustom_683" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>15400</dc:format>
                    <dc:date>2025-08-22T17:23:01+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/272">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージリング［6mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/272</link>
                    <description>主張しすぎない絶妙なサイズ感

  

    
      
    

    

      
        
          6mm幅の絶妙なサイズ感が男女問わず…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/272" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/6mm_ring/6mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージリング［6mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">

  <h2 class="section-title-guru">主張しすぎない絶妙なサイズ感</h2>

  <div class="product-flex-wrapper">

    <figure class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/detailed/6mm01.JPG" alt="オリジナルシルバーリング6mm幅リング着用例">
    </figure>

    <div class="product-text">

      <div class="product-section">
        <p>
          6mm幅の絶妙なサイズ感が男女問わずおすすめのアイテムです。<br>
          最大2行に分けてメッセージを刻印する事ができます。<br>
          豊富な絵柄の刻印とあなたのメッセージを組み合わせてペアリングをつくれば、いつでも特別な人との絆を感じることができます。<br>
          大切な人にぜひこのリングを贈って、特別な瞬間を共有してください。
        </p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約6mm</li>
          <li>厚み：約1.7mm</li>
          <li>素材：Silver950</li>
          <li>最大2行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>
          <strong>商品の受注について：</strong><br>
          メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
          繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。
        </p>
      </div>

    </div><!-- /.product-text -->

  </div><!-- /.product-flex-wrapper -->

</section>
<!-----------------------------------------------刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">6mm幅で使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像1枚・中央寄せ） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">6mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-image-wrap">
          <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison6_01.jpg" alt="手打刻印大文字">
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>



<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HMR.jpg);" role="img" aria-label="つちめ仕上げの画像"></div>
<div class="text">
<h2>つちめ</h2>
<p>溢れるクラフト感が人気</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HML.jpg);" role="img" aria-label="つちめマット仕上げの画像"></div>
<div class="text">
<h2>つちめマット</h2>
<p>でこぼこマットがカワイイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_AT.jpg);" role="img" aria-label="アンティーク仕上げの画像"></div>
<div class="text">
<h2>アンティーク</h2>
<p>シャビーテイストで良い感じ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>







<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_671", inner: "#cart_addcustom_678" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>

</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>20900</dc:format>
                    <dc:date>2025-08-22T17:21:43+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/271">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージリング［8mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/271</link>
                    <description>主張しすぎない絶妙なサイズ感

  

    
      
    

    

      
        
          8mm幅の絶妙なサイズ感が男女問わず…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/271" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/8mm_ring/8mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージリング［8mm幅］" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック---------------------------------------------------------------->
<section class="product-detail-block">

  <h2 class="section-title-guru">主張しすぎない絶妙なサイズ感</h2>

  <div class="product-flex-wrapper">

    <figure class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/detailed/14.JPG" alt="オリジナルシルバーリング8mm幅リング着用例">
    </figure>

    <div class="product-text">

      <div class="product-section">
        <p>
          8mm幅の絶妙なサイズ感が男女問わずおすすめのアイテムです。<br>
          最大3行に分けてメッセージを刻印する事ができます。<br>
          豊富な絵柄の刻印とあなたのメッセージを組み合わせてペアリングをつくれば、いつでも特別な人との絆を感じることができます。<br>
          大切な人にぜひこのリングを贈って、特別な瞬間を共有してください。
        </p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約8mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>最大3行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>
          <strong>商品の受注について：</strong><br>
          メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
          繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。
        </p>
      </div>

    </div><!-- /.product-text -->

  </div><!-- /.product-flex-wrapper -->

</section>

<!-----------------------------------------------刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">8mm幅で使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像2枚・2カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">8mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparison8_01.jpg" alt="手打刻印大文字">
          </div>
          <div class="engraving-image-right">
            <img src="https://www.guru-guru.co.jp/data/guru2/product/HP_PARTS/stamp-Size-comparison8_02.jpg" alt="手打刻印小文字">
          </div>
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HMR.jpg);" role="img" aria-label="つちめ仕上げの画像"></div>
<div class="text">
<h2>つちめ</h2>
<p>溢れるクラフト感が人気</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HML.jpg);" role="img" aria-label="つちめマット仕上げの画像"></div>
<div class="text">
<h2>つちめマット</h2>
<p>でこぼこマットがカワイイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_AT.jpg);" role="img" aria-label="アンティーク仕上げの画像"></div>
<div class="text">
<h2>アンティーク</h2>
<p>シャビーテイストで良い感じ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>





<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_668", inner: "#cart_addcustom_662" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>27500</dc:format>
                    <dc:date>2025-08-22T17:20:19+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/270">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージリング［10mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/270</link>
                    <description>パッと目を引く存在感。

  

    
      
    

    

      
        
          最大4行に分けてメッセージを刻印する事がで…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/270" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/ring/10mm_ring/10mm_mat.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージリング［10mm幅］" hspace="5" align="left"/></a><!-------------------------------------------------- 商品詳細ブロック -------------------------------------------------->
<section class="product-detail-block">

  <h2 class="section-title-guru">パッと目を引く存在感。</h2>

  <div class="product-flex-wrapper">

    <figure class="product-image">
      <img src="https://www.guru-guru.co.jp/data/guru2/image/detailed/10mm01.JPG" alt="オリジナルシルバーリング10mm幅リング着用例">
    </figure>

    <div class="product-text">

      <div class="product-section">
        <p>
          最大4行に分けてメッセージを刻印する事ができます。女性からの支持も高く、売上ランキングでも常に上位をキープしている定番リングです。<br>
          シルバー950を使用し、職人がひとつひとつ手作りで制作しました。<br>
          幅広のリングには、自分自身の言葉や特別なメッセージを刻印可能です。<br>
          大切な人へのプレゼントや、自分へのご褒美にも最適です。<br>
          シンプルでありながら存在感あるリングは、世界に1つだけの特別感を与えます。
        </p>
      </div>

      <div class="product-section">
        <h3>商品について</h3>
        <ul>
          <li>幅：約10mm</li>
          <li>厚み：約2.0mm</li>
          <li>素材：Silver950</li>
          <li>最大4行まで刻印可能</li>
        </ul>
      </div>

      <div class="product-note">
        <p>
          <strong>商品の受注について：</strong><br>
          メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
          繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。
        </p>
      </div>

    </div><!-- /.product-text -->

  </div><!-- /.product-flex-wrapper -->

</section>

<!-----------------------------------------------－刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">10mm幅で使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像2枚・2カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">10mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison10_01.jpg" alt="手打刻印大文字">
          </div>
          <div class="engraving-image-right">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison10_02.jpg" alt="手打刻印小文字">
          </div>
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>

<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->


<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-finish" class="toggle">
<label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
<div class="content">
<section class="product-detail-block">
<div class="container">

<section class="texture-option">
<div class="container">

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
<div class="text">
<h2>マット</h2>
<p>不動の一番人気かわいい</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
<div class="text">
<h2>ミラー</h2>
<p>定番のミラー(鏡面)仕上げ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
<div class="text">
<h2>サテン</h2>
<p>きめの細かい梨地仕上げでキレイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HMR.jpg);" role="img" aria-label="つちめ仕上げの画像"></div>
<div class="text">
<h2>つちめ</h2>
<p>溢れるクラフト感が人気</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HML.jpg);" role="img" aria-label="つちめマット仕上げの画像"></div>
<div class="text">
<h2>つちめマット</h2>
<p>でこぼこマットがカワイイ</p>
</div>
</article>

<article class="texture-item">
<div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_AT.jpg);" role="img" aria-label="アンティーク仕上げの画像"></div>
<div class="text">
<h2>アンティーク</h2>
<p>シャビーテイストで良い感じ</p>
</div>
</article>

</div>
</section>

</div> <!-- /.container -->
</section>
</div> <!-- /.content -->
</div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
<div class="option">
<input type="checkbox" id="toggle-video" class="toggle">
<label class="accordion-title" for="toggle-video">制作風景</label>
<div class="content">
<div class="container">
<div class="youtube">
<iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
<h2 class="section-title-guru">サービス</h2>
<div class="product-text">
<div class="product-section service-options">

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
<div class="text">
<h3>Resize - サイズ直し</h3>
<p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
<p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
<a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
</div>
</div>

<div class="service-option">
<div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
<div class="text">
<h3>Wrapping - ラッピング</h3>
<p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
<p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
</div>
</div>

</div>
</div>
</section>



<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_658", inner: "#cart_addcustom_653" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>29150</dc:format>
                    <dc:date>2025-08-22T17:19:23+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/268">
                    <title>職人が一文字づつ打刻する ハンドメイドのメッセージリング［12mm幅］</title>
                    <link>https://www.guru-guru.co.jp/product/268</link>
                    <description>パッと目を引く存在感。
    
      
        
      

  

    
      
        Silver950を使用したシンプルなデザインのシ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/268" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/20231208_0c9493.JPG" width="250" border="0" alt="職人が一文字づつ打刻する ハンドメイドのメッセージリング［12mm幅］" hspace="5" align="left"/></a><!-------------------------------------------------- 商品詳細ブロック -------------------------------------------------->
<section class="product-detail-block">
 <h2 class="section-title-guru">パッと目を引く存在感。</h2>
    <div class="product-flex-wrapper">
      <figure class="product-image">
        <img src="https://www.guru-guru.co.jp/data/guru2/image/detailed/12mm01.JPG" alt="オリジナルシルバーリング12mm幅リング着用例">
      </figure>

  <div class="product-text">

    <div class="product-section">
      <p>
        Silver950を使用したシンプルなデザインのシルバーリングです。最大5行に分けて自分だけのメッセージを刻印できます。<br>
        カップルでペアリングとして着用するのもおすすめです。<br>
        このリングは、一つ一つ丁寧に職人の手によって制作しています。<br>
        リング幅も12mmと大きめで存在感があり、主張しすぎずに手元を引き立てます。<br>
        自分だけのオリジナルメッセージを身につけることで、心に特別な意味を持たせることができます。<br>
        大切な人へのプレゼントにも最適です。あなたの思いを、このメッセージリングに込めてみませんか？
      </p>
    </div>

    <div class="product-section">
      <h2>商品について</h2>
      <ul>
        <li>幅：約12mm</li>
        <li>厚み：約2.0mm</li>
        <li>素材：Silver950</li>
        <li>最大5行まで刻印可能</li>
      </ul>
    </div>

    <div class="product-note">
      <p><strong>商品の受注について：</strong><br>
      メッセージアクセサリーは受注生産となっておりますので、ご注文をいただいてからお届けまでに通常約2週間のお時間をいただきます。<br>
      繁忙期は2週間以上お時間を頂く場合がございます。予めご了承ください。</p>
    </div>

  </div>

</section>


<!-----------------------------------------------刻印についてブロック---------------------------------------------------------------->
<section class="accordion">
  <div class="option">
    <input type="checkbox" id="stamp_character" class="toggle">
    <label class="accordion-title" for="stamp_character">文字の刻印について</label>
    <div class="content">

      <!-- セクション1：書体イメージ（画像左）＋記号（テキスト右） -->
      <section class="engraving-font-block">
        <p class="engraving-caption">使用できる文字の大きさ比較イメージです。実際の大きさとは異なります。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <h3>手打刻印書体イメージ</h3>
            <img src="https://www.guru-guru.co.jp/data/guru2/image/kokuin/stamp_letter.jpg" alt="手打刻印イメージ">
          </div>
          <div class="engraving-text-right">
            <h3>記号</h3>
            <p>( ) ＆ ？！〜 / , ” ' . ; : + － × ÷ =</p>
          </div>
        </div>
      </section>

      <!-- セクション2：サイズ比較（画像2枚・2カラム） -->
      <section class="engraving-size-image">
        <p class="engraving-caption">12mm幅リングに各サイズの刻印を打ち込んだイメージ画です。リングサイズは11号（長さ約56mm）です。</p>
        <div class="engraving-container">
          <div class="engraving-image-left">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison12_01.jpg" alt="手打刻印大文字">
          </div>
          <div class="engraving-image-right">
            <img src="https://www.guru-guru.co.jp/data/guru2/image/HP_PARTS/stamp-Size-comparison12_02.jpg" alt="手打刻印小文字">
          </div>
        </div>
      </section>

      <!-- セクション3：刻印サイズ1.0mmは〜（テキスト左・画像右） -->
      <section class="engraving-size-note">
        <div class="engraving-note-box">
          <h2>刻印サイズ1.0mmは1.0mmじゃない!?</h2>
          <div class="engraving-container">
            <div class="engraving-text-left">
              <p>刻印形状と表記の刻印サイズについて</p>
              <p>すべての文字刻印は先端が鋭角に尖った形状で金属の打刻に一番適した形状となっています。表記の刻印サイズは刻印先端の「a」の範囲を指します。実際に打刻すると最大で高さ「e」、幅「f」まで<strong>大きく</strong>なります。刻印サイズ1.0mmを使用しても実際の文字サイズは1.0mmになりません。予めご了承ください。ご注文後にお届けするイメージ画は弊社で打刻した場合の平均サイズで作成していますので実物にかなり近いサイズ感となっています。</p>
            </div>
            <div class="engraving-image-right">
              <img src="http://www.guru-guru.co.jp/data/guru2/image/detail/kokuin05.jpg" width="400" alt="文字刻印先端形状">
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</section>




<!-----------------------------------------------モチーフの刻印について：自由な組み合わせのヒントブロック--------------------------------------------------------

<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-stamp" class="toggle">
    <label class="accordion-title" for="toggle-stamp">モチーフの刻印について：自由な組み合わせのヒント</label>
    <div class="content">
      <p>guruguruのモチーフ刻印は、「意味をこめる」「気持ちを添える」「自分だけの象徴をつくる」ための自由な表現手段です。</p>
      <p>以下は、よく使われるレイアウトや組み合わせ例のご紹介です。あなたらしい想いを、自由に表現してください。</p>

      <ul class="stamp-layout-examples">
        <li><strong>モチーフ + メッセージ（1行）</strong><br>例：🐾 THANK YOU</li>
        <li><strong>モチーフ × モチーフ（組み合わせ）</strong><br>例：🌙 × 🐱 → “見守ってくれますように”</li>
        <li><strong>メッセージの前後にモチーフを添える</strong><br>例：⭐︎ WITH YOU ⭐︎</li>
        <li><strong>上下2行で分けて配置</strong><br>1行目：🌈　2行目：HOPE</li>
        <li><strong>左右にモチーフを挟んだ対称レイアウト</strong><br>例：🐶♡🐱</li>
      </ul>

      <p>どんな組み合わせもOK。意味や願いからモチーフを選びたい方は、<a href="#modal-B01" class="stamp-modal-open" data-modal="modal-B01">モチーフの一覧はこちら</a>をご覧ください。</p>
    </div>
  </div>
</div>-------->

<!-----------------------------------------------表面仕上げブロック（.texture-option に統一）---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-finish" class="toggle">
    <label class="accordion-title" for="toggle-finish">表面仕上げについて</label>
    <div class="content">
      <section class="product-detail-block">
        <div class="container">

          <section class="texture-option">
            <div class="container">

              <article class="texture-item">
                <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HL.jpg);" role="img" aria-label="マット仕上げの画像"></div>
                <div class="text">
                  <h2>マット</h2>
                  <p>不動の一番人気かわいい</p>
                </div>
              </article>

              <article class="texture-item">
                <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_MR.jpg);" role="img" aria-label="ミラー仕上げの画像"></div>
                <div class="text">
                  <h2>ミラー</h2>
                  <p>定番のミラー(鏡面)仕上げ</p>
                </div>
              </article>

              <article class="texture-item">
                <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_ST.jpg);" role="img" aria-label="サテン仕上げの画像"></div>
                <div class="text">
                  <h2>サテン</h2>
                  <p>きめの細かい梨地仕上げでキレイ</p>
                </div>
              </article>

              <article class="texture-item">
                <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HMR.jpg);" role="img" aria-label="つちめ仕上げの画像"></div>
                <div class="text">
                  <h2>つちめ</h2>
                  <p>溢れるクラフト感が人気</p>
                </div>
              </article>

              <article class="texture-item">
                <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_HML.jpg);" role="img" aria-label="つちめマット仕上げの画像"></div>
                <div class="text">
                  <h2>つちめマット</h2>
                  <p>でこぼこマットがカワイイ</p>
                </div>
              </article>

              <article class="texture-item">
                <div class="photo" style="background-image: url(https://www.guru-guru.co.jp/data/guru2/image/texture/TX_AT.jpg);" role="img" aria-label="アンティーク仕上げの画像"></div>
                <div class="text">
                  <h2>アンティーク</h2>
                  <p>シャビーテイストで良い感じ</p>
                </div>
              </article>

            </div>
          </section>

        </div> <!-- /.container -->
      </section>
    </div> <!-- /.content -->
  </div> <!-- /.option -->
</div> <!-- /.accordion -->

<!-----------------------------------------------制作風景動画ブロック---------------------------------------------------------------->
<div class="accordion">
  <div class="option">
    <input type="checkbox" id="toggle-video" class="toggle">
    <label class="accordion-title" for="toggle-video">制作風景</label>
    <div class="content">
      <div class="container">
        <div class="youtube">
          <iframe width="560" height="315" src="https://www.youtube.com/embed/-WARsf7RXnc?si=LGnOypyHuy-uLKH0" title="YouTube動画" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
        </div>
      </div>
    </div>
  </div>
</div>

<!-----------------------------------------------サービス案内ブロック：サイズ直し・ラッピング---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">サービス</h2>
  <div class="product-text">
    <div class="product-section service-options">

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/size01.jpg');"></div>
        <div class="text">
          <h3>Resize - サイズ直し</h3>
          <p>ご購入後のサイズ直しはいつでも<strong>※基本無料</strong>で行なっておりますので安心してご注文ください。</p>
          <p>※石付きリングは石の交換代金が別途かかります。通常のリングでも場合によっては費用が掛かる場合もございます。予めご了承ください。</p>
          <a href="https://www.guru-guru.co.jp/form/resize-ring">▶ リングのサイズ直し</a>
        </div>
      </div>

      <div class="service-option">
        <div class="photo" style="background-image: url('https://www.guru-guru.co.jp/data/guru2/image/high.quality/wrapping01.jpg');"></div>
        <div class="text">
          <h3>Wrapping - ラッピング</h3>
          <p>ラッピングは<strong>無料</strong>です。プレゼント前に刻印など仕上がりを確認したい方は、お気軽にお申し付けください。</p>
          <p>商品は贈り先に直接お届けすることも可能です。時期や商品によりラッピング資材が異なる場合がございます。※ラッピングをご希望の場合は、メール便はご利用になれませんのでご注意ください。</p>
        </div>
      </div>

    </div>
  </div>
</section>




<!--------------------------------------------------------------- スクリプト ---------------------------------------------------------------------------------->

<script>
/* guruguru Motif Bridge v2.4 — 発行元パスガード追加＋strict面判定 + 事前セーブ + 面別カーソル */
(function(){
  // ★ 変更点：ガード用のフラグ名を v2.4 に更新
  if (window.__GG_MOTIF_BRIDGE_V24__) return; window.__GG_MOTIF_BRIDGE_V24__ = 1;

  // --- OPTIONAL 固定セレクタ（必要なら入れてください。未指定なら自動判定を使います）
  const FORCE = { outer: "#cart_addcustom_647", inner: "#cart_addcustom_646" }; // 例: { outer:"#cart_addcustom_647", inner:"#cart_addcustom_646" }

  const KEYS = { outer:"gg_motifs_outer", inner:"gg_motifs_inner" };
  const RX   = { outer:/(外面|外側|表面|表|外)/, inner:/(内面|内側|内|中|インナー)/, note:/(備考|メモ|自由記入|ご要望|連絡)/ };
  const TTL  = 60*60*1000; // 1h

  // ★ 変更点：この商品ページを“発行元”として識別するためのキーを追加
  const ORIGIN_KEY = "gg_origin_path";

  // ---- utils
  const z2h  = s => String(s||"").replace(/[Ａ-Ｚａ-ｚ０-９]/g, c=>String.fromCharCode(c.charCodeAt(0)-0xFEE0));
  const norm = s => z2h(String(s||"").trim()).toUpperCase();
  const now  = () => Date.now();

  const readList = role => { try{
    const a = JSON.parse(localStorage.getItem(KEYS[role])||"[]");
    return Array.isArray(a) ? a.map(norm) : [];
  }catch(_){ return []; } };

  const token = role => { const a=readList(role); return a.length ? "【"+a.join("】【")+"】" : ""; };

  function labelAround(el){
    let t=""; if(el?.getAttribute?.("aria-label")) t+=" "+el.getAttribute("aria-label");
    if(el?.placeholder) t+=" "+el.placeholder;
    if(el?.id){ const l=document.querySelector(`label[for="${el.id}"]`); if(l?.textContent) t+=" "+l.textContent; }
    let s=el?.previousElementSibling; for(let i=0;i<3&&s;i++,s=s.previousElementSibling){ if(s.textContent) t+=" "+s.textContent; }
    const w=el?.closest?.(".order_item,.formRow,.row,.item,.option,.input,.cart,form,div");
    if(w){ const c=w.querySelector(".order_label,label,[class*='label']"); if(c?.textContent) t+=" "+c.textContent; }
    return t.replace(/\s+/g," ").trim();
  }

  function findTargets(){
    // 1) 固定セレクタ優先
    if (FORCE.outer || FORCE.inner){
      return {
        outer: FORCE.outer ? document.querySelector(FORCE.outer) : null,
        inner: FORCE.inner ? document.querySelector(FORCE.inner) : null
      };
    }
    // 2) 自動判定
    const list=[...document.querySelectorAll("textarea")].filter(el=>el.offsetParent!==null);
    let outer=null, inner=null;
    list.forEach(el=>{
      const t=labelAround(el);
      if(!outer && RX.outer.test(t)) outer=el;
      if(!inner && RX.inner.test(t)) inner=el;
    });
    if(!outer || !inner){
      const nonNote=list.filter(el=>!RX.note.test(labelAround(el)));
      if(!outer && nonNote[0]) outer = nonNote[0];
      if(!inner){ const cand = nonNote.find(e=>e!==outer); if(cand) inner=cand; }
    }
    return {outer, inner};
  }

  // ---- 下書き保存/復元（どんな遷移でも消えない）
  function saveDraft(){
    try{
      const {outer,inner}=findTargets();
      localStorage.setItem("gg_saved_textareas", JSON.stringify({
        ts: now(), path: location.pathname,
        outer: outer ? outer.value : undefined,
        inner: inner ? inner.value : undefined
      }));
    }catch(_){}
  }
  (function restoreDraft(){
    try{
      const raw=localStorage.getItem("gg_saved_textareas"); if(!raw) return;
      const d=JSON.parse(raw);
      if(!d || !d.ts || (now()-d.ts)>TTL || d.path!==location.pathname){ localStorage.removeItem("gg_saved_textareas"); return; }
      const {outer,inner}=findTargets();
      if(outer && typeof d.outer==="string"){ outer.value=d.outer; outer.dispatchEvent(new Event("input",{bubbles:true})); }
      if(inner && typeof d.inner==="string"){ inner.value=d.inner; inner.dispatchEvent(new Event("input",{bubbles:true})); }
      localStorage.removeItem("gg_saved_textareas");
    }catch(_){}
  })();

  // ---- 面別カーソルの記録（常時）
  function watchCaret(role, el){
    if(!el) return;
    const rec=()=>{ try{
      localStorage.setItem("gg_caret_"+role, JSON.stringify({start: el.selectionStart||0, ts: now()}));
      localStorage.setItem("gg_last_input_role", role);
    }catch(_){ } };
    ["keyup","mouseup","touchend","focus","input"].forEach(ev=> el.addEventListener(ev, rec));
  }
  function readCaret(role){
    try{
      const o=JSON.parse(localStorage.getItem("gg_caret_"+role)||"null");
      if(!o || typeof o.start!=="number" || now()-o.ts>TTL) return null;
      return o;
    }catch(_){ return null; }
  }

  // ---- 面の決定：URLの focus/dest を最優先（なければ直近編集の面 → 最後に押した面）
  function decideRole(){
    const p=new URLSearchParams(location.search);
    const f=(p.get("focus")||p.get("dest")||"").toLowerCase();
    if(f==="outer"||f==="inner") return f;
    try{
      const lastEdit=localStorage.getItem("gg_last_input_role");
      if(lastEdit==="outer"||lastEdit==="inner") return lastEdit;
      const last=localStorage.getItem("gg_last_dest");
      if(last==="outer"||last==="inner") return last;
    }catch(_){}
    return null;
  }

  function verifyRole(el, role){
    if(!el) return false;
    const t=labelAround(el);
    return role==="inner" ? RX.inner.test(t) : RX.outer.test(t);
  }

  function insertAt(el, txt, role){
    const prev=String(el.value||"");
    const c=readCaret(role);
    if(c){
      const pos=Math.max(0,Math.min(prev.length,c.start|0));
      el.value=prev.slice(0,pos)+txt+prev.slice(pos);
    }else{
      el.value=prev+(prev&&!/\n$/.test(prev)?"\n":"")+txt;
    }
    el.dispatchEvent(new Event("input",{bubbles:true}));
    el.dispatchEvent(new Event("change",{bubbles:true}));
  }

  function focusScroll(el){
    if(!el) return;
    const go=()=>{ el.focus?.({preventScroll:true});
      const y=window.pageYOffset+el.getBoundingClientRect().top-120;
      window.scrollTo({top:y,behavior:"smooth"}); };
    [0,150,600].forEach(ms=>setTimeout(go,ms));
  }

  function run(){
    // ★ 変更点：ここで“発行元ページ（この商品ページ）かどうか”を確認
    try{
      const origin = localStorage.getItem(ORIGIN_KEY);
      if (origin && origin !== location.pathname) return; // 発行元と違うタブ/商品では取り込まない
    }catch(_){}

    const role=decideRole(); if(!role) return;
    const tkn =token(role);  if(!tkn)  return;

    const map=findTargets();
    const el = role==="outer" ? map.outer : map.inner;

    // URLがinnerならinnerにしか入れない（誤検知でも外面には入れない）
    if(!verifyRole(el, role)){ return; }

    insertAt(el, tkn, role);
    try{
      localStorage.removeItem(KEYS[role]);      // 使い切り
      localStorage.removeItem("gg_last_dest");
      localStorage.removeItem(ORIGIN_KEY);      // ★ 変更点：取り込み後に発行元フラグも消す
    }catch(_){}
    focusScroll(el);
  }

  // 初期化
  function init(){
    const map=findTargets();
    watchCaret("outer", map.outer);
    watchCaret("inner", map.inner);
    run();
  }
  if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", init, {once:true}); } else { init(); }
  window.addEventListener("pageshow", run);

  // ---- 離脱系の保存
  window.addEventListener("pagehide", saveDraft);
  document.addEventListener("visibilitychange", ()=>{ if(document.visibilityState==="hidden") saveDraft(); });

  // ---- 一覧リンクを押した瞬間に「面・下書き」を保存（確実に残す）
  document.addEventListener("click", (e)=>{
    const a=e.target.closest('a[data-gg="motif-list-link"]'); if(!a) return;
    saveDraft(); // 事前セーブ
    try{
      localStorage.setItem("gg_last_dest", (a.getAttribute("data-dest")||"outer").toLowerCase());
      localStorage.setItem(ORIGIN_KEY, location.pathname); // ★ 変更点：この商品ページを“発行元”として記録
    }catch(_){}
  }, {capture:true});
})();
</script>
</p>]]></content:encoded>
                    <dc:subject>メッセージリング</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>34650</dc:format>
                    <dc:date>2025-08-22T16:55:36+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/284">
                    <title>メタルポリッシュクロス</title>
                    <link>https://www.guru-guru.co.jp/product/284</link>
                    <description>メタルポリッシュクロス｜鏡面リング専用お手入れ布
  
    
      
        指輪のピカピカを、もう一度。
        鏡面や光沢仕上げのリング専用に使える、磨き布タイ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/284" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/supply/X01-600.jpg" width="250" border="0" alt="メタルポリッシュクロス" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック：メタルポリッシュクロス-------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">メタルポリッシュクロス｜鏡面リング専用お手入れ布</h2>
  <div class="product-text">
    <div class="product-section">
      <p>
        指輪のピカピカを、もう一度。<br>
        鏡面や光沢仕上げのリング専用に使える、磨き布タイプのシルバークリーナーです。
      </p>

      <p>
        クロスでやさしくこするだけで、くすみ・皮脂・小さな曇りをすっきり除去。<br>
        <strong>本来の光沢がよみがえり、ミラー仕上げの魅力がしっかり戻ります。</strong><br>
        日々のお手入れはもちろん、大切な記念日・ギフト前・撮影用にもおすすめです。
      </p>

      <ul class="product-highlights">
        <li>✔︎ 鏡面リングを手軽にケアしたい方に</li>
        <li>✔︎ プレゼント前の最終チェック用に</li>
        <li>✔︎ 撮影前にツヤを整えたい方に</li>
      </ul>

      <p class="product-warning">
        ※つや消し仕上げ・サテン・アンティーク・メッキ製品には使用しないでください。<br>
        ※取扱説明書をよく読んでからご使用ください。
      </p>
    </div>
  </div>
</section>
</p>]]></content:encoded>
                    <dc:subject>雑貨・用品</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>550</dc:format>
                    <dc:date>2025-08-01T16:14:49+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/283">
                    <title>シルバークリーナー20ｇ　ピンセット付</title>
                    <link>https://www.guru-guru.co.jp/product/283</link>
                    <description>シルバークリーナー20g｜ディップ式変色ケア液［ピンセット付き］
  
    
      
        黒ずみ・くすみが気になるアクセサリーに。
        こちらは、変色したシ…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/283" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/20230519_ff5b41.jpg" width="250" border="0" alt="シルバークリーナー20ｇ　ピンセット付" hspace="5" align="left"/></a><!-----------------------------------------------商品詳細ブロック：シルバークリーナー---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">シルバークリーナー20g｜ディップ式変色ケア液［ピンセット付き］</h2>
  <div class="product-text">
    <div class="product-section">
      <p>
        黒ずみ・くすみが気になるアクセサリーに。<br>
        こちらは、<strong>変色したシルバー製品を“浸け置き”でケアできるディップ式クリーナー</strong>です。
      </p>

      <p>
        ピンセットでアクセサリーを取り出し、専用容器に数秒〜数十秒浸けるだけ。<br>
        頑固なくすみもすばやく分解し、<strong>本来の明るさ・輝きがよみがえります。</strong><br>
        水で洗い流すだけでOKなので、初めての方でも使いやすい設計です。
      </p>

      <ul class="product-highlights">
        <li>✔︎ 黒ずみが強く出てきたときに</li>
        <li>✔︎ 長期間しまっていたシルバーの復活用に</li>
        <li>✔︎ ブラシが届きにくい細部の汚れ落としにも</li>
      </ul>

      <p class="product-warning">
        ※石付き・パール・いぶし加工・アンティーク仕上げには使用できません。<br>
        ※使用後は必ず流水でしっかり洗い流し、やわらかい布で水気を拭き取ってください。
      </p>
    </div>
  </div>
</section>

</p>]]></content:encoded>
                    <dc:subject>雑貨・用品</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>990</dc:format>
                    <dc:date>2025-08-01T16:14:13+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                
                <item rdf:about="https://www.guru-guru.co.jp/product/282">
                    <title>リングゲージ(プラスチック製)　１号〜３０号</title>
                    <link>https://www.guru-guru.co.jp/product/282</link>
                    <description>リングゲージ実質無料キャンペーン対象商品
  
    
      
        リングゲージ購入で値引きクーポン発行します
        リングサイズが分からない方、ご安心ください…</description>
                    <content:encoded><![CDATA[<p><a href="https://www.guru-guru.co.jp/product/282" target="_blank"><img src="https://www.guru-guru.co.jp/data/guru2/product/supply/P_ring_gage_600.jpg" width="250" border="0" alt="リングゲージ(プラスチック製)　１号〜３０号" hspace="5" align="left"/></a><!-----------------------------------------------リングゲージキャンペーンブロック---------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">リングゲージ実質無料キャンペーン対象商品</h2>
  <div class="product-flex-wrapper">
    <div class="product-text">
      <div class="product-section">
        <h3>リングゲージ購入で値引きクーポン発行します</h3>
        <p>リングサイズが分からない方、ご安心ください。指のサイズを正確に測るためのリングゲージ無料キャンペーンをご利用ください。</p>
        <p>リングゲージ発送時に<strong>「値引きクーポン」</strong>を同封いたします。次回のご注文時にご利用いただくことでリングゲージ代金分を値引きいたします。</p>
        <p>1号から30号まで対応しているので、女性から男性まで幅広く測定できます。</p>
        <p>プラスチック製なので軽くて価格もお手頃です。ひとつひとつ取り外してご使用になれます。</p>
      </div>
    </div>
  </div>
</section>




<!-----------------------------------------------------クーポンご利用方法ブロック---------------------------------------------------------------------->
<section class="product-detail-block">
  <h2 class="section-title-guru">クーポンご利用方法</h2>
  <div class="product-text">

    <div class="product-section">
      <h3>クーポン利用場所</h3>
      <p>下記のように <strong>STEP3</strong> でクーポンコードを入力する欄が表示されます。クーポン利用にチェックをいれて <strong>「クーポンコード」</strong> を入力後に <strong>「適用」</strong> をクリックしてください。</p>
      <img src="https://www.guru-guru.co.jp/data/guru2/image/guide/samplecoupon01.jpg" alt="クーポン利用方法">
    </div>

    <div class="product-section">
      <h3>クーポン適用後</h3>
      <p><strong>「クーポンコード」</strong> を入力し、 <strong>「適用」</strong> をクリックすることで、クーポン値引きが反映されます。</p>
      <img src="https://www.guru-guru.co.jp/data/guru2/image/guide/samplecoupon02.jpg" alt="クーポン適用後">
    </div>

  </div>
</section>
</p>]]></content:encoded>
                    <dc:subject>雑貨・用品</dc:subject>
                    <dc:creator>guru guru</dc:creator>
                    <dc:format>750</dc:format>
                    <dc:date>2025-08-01T16:13:14+09:00</dc:date>
                    <dc:type>shop</dc:type>
                </item>
                </rdf:RDF>