  /* ==========================================================
     v2.5 — ZOZO式マス向けEC導線 × CDGデザイントーン
     レスポンシブ対応 + SEO内部最適化

     設計思想：
     「お買い物が楽しい」「友人に紹介したい」「ほしい商品がすぐ見つかる」

     ブレークポイント：
     - デスクトップ: 1280px+
     - タブレット: 768px〜1279px
     - モバイル: 〜767px（50-70代シニア最優先）
     ========================================================== */

  :root{
    --white:#FFFFFF;
    --off-white:#F5F4F0;
    --cream:#F7F1E3;
    --kraft:#D9C9A8;
    --line-soft:#E5E5E5;
    --black:#0A0A0A;
    --ink:#1A1A1A;
    --gray:#666666;
    --gray-light:#999999;
    --red:#C30D23;
    --red-dark:#7A0815;
    --red-light:#FFF5F5;
    --focus:#C30D23;
    --gold:#C9A75A;
    --green:#2E7D32;

    --sans:'Inter','Helvetica Neue',Arial,sans-serif;
    --serif:'Cormorant Garamond',serif;
    --serif-brand:'Cormorant Garamond',serif;
    --jp-serif:'Noto Serif JP','游明朝',serif;
    --jp-sans:'Noto Sans JP','游ゴシック',sans-serif;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html,body{overflow-anchor:none;background:var(--white);color:var(--ink)}
  body{
    font-family:var(--jp-sans);font-weight:400;font-size:16px;
    line-height:1.85;letter-spacing:0.03em;overflow-x:clip;
    -webkit-font-smoothing:antialiased;
  }
  a{color:inherit;text-decoration:none}
  img{display:block;max-width:100%}
  button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}

  /* ===== コンテンツ幅制御（背景は全幅、中身に上限） ===== */
  .site-wrap{
    background:var(--white);
  }
  .content-w{
    max-width:1280px;
    margin:0 auto;
  }

  /* ===== フォーカス（アクセシビリティ） ===== */
  a:focus-visible,button:focus-visible,input:focus-visible{
    outline:2px solid var(--focus);outline-offset:2px;
  }

  /* ===== SVGアイコン共通 ===== */
  .svg-ico{display:inline-flex;align-items:center;justify-content:center;line-height:1}
  .svg-ico svg{stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

  /* ==========================================================
     ① ティッカー（赤地・告知帯）
     ========================================================== */
  /* 流れるティッカー（jquery.webticker相当を純CSSで再現）
     実EC shop.yagimilk.jp の `.ec-headerDescription` + WebTicker に準拠した右→左スクロール */
  .top-ticker{
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    letter-spacing:0.15em;padding:10px 0;
    overflow:hidden;position:relative;
  }
  /* トラック：2セット分を横並び→半分スライドしたら元位置へループ */
  .top-ticker-track{
    display:inline-flex;align-items:center;
    white-space:nowrap;
    animation:tickerScroll 45s linear infinite;
    will-change:transform;
  }
  .top-ticker-track > .ticker-item{
    display:inline-flex;align-items:center;
    padding:0 28px;
  }
  .top-ticker strong{font-weight:700}
  .top-ticker .sep{
    display:inline-block;width:1px;height:12px;
    background:rgba(255,255,255,0.5);margin:0 4px;
  }
  /* ホバーで一時停止（実サイトの hoverpause:true 相当） */
  .top-ticker:hover .top-ticker-track{animation-play-state:paused}
  /* スクロール実装：トラックは全幅の2倍。-50%で1セット分ずれて継ぎ目が自然 */
  @keyframes tickerScroll{
    from{transform:translateX(0)}
    to  {transform:translateX(-50%)}
  }
  /* アクセシビリティ：ユーザーがアニメ抑制を希望している場合は停止 */
  @media (prefers-reduced-motion: reduce){
    .top-ticker-track{animation:none;transform:none}
  }

  /* ==========================================================
     ② ヘッダー
     通常時：3段（ユーティリティ＋メイン＋ナビ）
     スクロール時：1段に圧縮（ロゴ小＋検索＋ハンバーガー＋カート）
     ========================================================== */
  header{
    border-bottom:2px solid var(--red);
    background:var(--white);position:sticky;top:0;z-index:100;
    transition:box-shadow 0.2s;
  }
  header.scrolled{box-shadow:0 2px 12px rgba(0,0,0,0.08)}

  /* 上段：ユーティリティ（小さく） */
  .header-util{
    display:flex;justify-content:space-between;align-items:center;
    max-width:1280px;margin:0 auto;
    padding:8px 32px;border-bottom:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:13px;font-weight:400;
    color:var(--gray);
    /* max-heightを実際の高さに近い値に設定（ガタつき防止） */
    transition:max-height 0.25s ease, padding 0.25s ease, border-color 0.25s ease;
    overflow:hidden;max-height:40px;
  }
  .header-util-links{display:flex;gap:18px}
  .header-util-links a:hover{color:var(--red)}
  .header-util-right{display:flex;gap:14px;align-items:center}
  .header-util-right a:hover{color:var(--red)}
  /* スクロール時：ユーティリティ非表示
     border-bottom-colorをtransparentにして滑らかに消す
     （border:noneだとスタイル変化が即座に起きてパチつく） */
  header.scrolled .header-util{max-height:0;padding-top:0;padding-bottom:0;border-bottom-color:transparent}

  /* 中段：ロゴ＋検索バー＋カート群 */
  .header-main{
    display:grid;grid-template-columns:auto 1fr auto;
    align-items:center;padding:16px 32px;gap:32px;
    max-width:1280px;margin:0 auto;
    transition:padding 0.25s;
  }
  /* スクロール時：パディング圧縮 */
  header.scrolled .header-main{padding:8px 32px;gap:20px}
  .brand-mark{margin:0;line-height:1}
  .brand-mark a{display:block}
  /* ヘッダーロゴ画像（横長：イボンヌ顔＋ブランド名入り） */
  .header-logo{
    display:block;height:60px;width:auto;
    transition:height 0.25s;
  }
  /* スクロール時：ロゴ縮小 */
  header.scrolled .header-logo{height:36px}

  /* 検索バー（ZOZO式：中央に大きく）
     ※transition:all はパフォーマンス悪化の元なので、実際に変化する
        プロパティだけに限定（box-shadow/border-color はhover用） */
  .search-bar{
    display:flex;width:100%;max-width:620px;margin:0 auto;
    border:2px solid var(--red);border-radius:4px;overflow:hidden;
    transition:border-color 0.15s, box-shadow 0.15s;
  }
  .search-bar input{
    flex:1;border:none;outline:none;padding:14px 18px;
    font-family:var(--jp-sans);font-size:15px;background:var(--white);
    transition:padding 0.25s;
  }
  header.scrolled .search-bar input{padding:10px 14px;font-size:14px}
  .search-bar input::placeholder{color:var(--gray-light)}
  .search-bar button{
    background:var(--red);color:var(--white);
    padding:0 28px;font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.1em;display:flex;align-items:center;gap:8px;
    transition:padding 0.25s;
  }
  header.scrolled .search-bar button{padding:0 20px;font-size:13px}
  .search-bar button:hover{background:var(--red-dark)}

  /* カート群 */
  .header-actions{display:flex;gap:4px;align-items:center}
  .header-action{
    display:flex;flex-direction:column;align-items:center;gap:2px;
    padding:8px 12px;min-width:60px;
    font-family:var(--jp-sans);font-size:11px;font-weight:500;
    letter-spacing:0.08em;color:var(--ink);
    border:1px solid transparent;
    /* 変化するのは色（hover）・padding・min-width（scrolled）だけ */
    transition:color 0.15s, padding 0.25s, min-width 0.25s;
    position:relative;
  }
  .header-action:hover{color:var(--red)}
  .header-action .icon svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.6}
  .header-action .badge{
    position:absolute;top:2px;right:4px;
    background:var(--red);color:var(--white);
    font-size:10px;font-weight:700;width:18px;height:18px;
    border-radius:50%;display:flex;align-items:center;justify-content:center;
  }
  /* ラベル文字：スクロール時は非表示にしてコンパクト化 */
  .header-action .label-text{transition:max-height 0.25s, opacity 0.25s;overflow:hidden;max-height:20px}
  header.scrolled .header-action .label-text{max-height:0;opacity:0}
  header.scrolled .header-action{min-width:44px;padding:6px 8px}

  /* ===== ハンバーガーボタン ===== */
  /* display:noneではなくvisibility+opacity+sizeで制御（transitionが効く＋レイアウトジャンプ防止） */
  .burger{
    display:flex;flex-direction:column;align-items:center;gap:2px;
    padding:8px 12px;min-width:60px;cursor:pointer;
    font-family:var(--jp-sans);font-size:11px;font-weight:500;
    letter-spacing:0.08em;color:var(--ink);
    /* scrolled時のフェードイン用プロパティだけに限定 */
    transition:opacity 0.25s, visibility 0.25s, width 0.25s, min-width 0.25s, padding 0.25s;
    /* 通常時：非表示（サイズゼロ＋透明） */
    visibility:hidden;opacity:0;width:0;min-width:0;padding:0;overflow:hidden;
  }
  .burger:hover{color:var(--red)}
  .burger-icon{display:flex;flex-direction:column;gap:5px;width:22px;flex-shrink:0}
  /* ハンバーガー→×変形：GPU合成される transform/opacity だけに絞る */
  .burger-icon span{display:block;height:2px;background:currentColor;border-radius:1px;transition:transform 0.25s, opacity 0.25s}
  .burger .label-text{transition:max-height 0.25s, opacity 0.25s;overflow:hidden;max-height:20px}
  /* スクロール時にハンバーガー表示（visibility+opacityでフェードイン） */
  header.scrolled .burger{
    visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px;
  }
  header.scrolled .burger .label-text{max-height:0;opacity:0}
  /* ドロワーが開いている間はスクロール位置に関係なくバーガー表示 */
  .burger.drawer-active{
    visibility:visible !important;opacity:1 !important;width:auto !important;
    min-width:44px !important;padding:6px 8px !important;
  }
  /* メニュー開いた時のアイコン変形（×になる） */
  .burger.open .burger-icon span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}
  .burger.open .burger-icon span:nth-child(2){opacity:0}
  .burger.open .burger-icon span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}

  /* 下段：グローバルナビ（ホバーでサブカテゴリ ドロップダウン） */
  .gnav{
    border-top:1px solid var(--red);display:flex;justify-content:center;gap:0;
    max-width:1280px;margin:0 auto;position:relative;
    transition:max-height 0.25s ease, padding 0.25s ease, border-color 0.25s ease;
    /* ドロップダウンを見せるため通常時は overflow:visible。圧縮時のみ hidden で畳む */
    overflow:visible;max-height:80px;
  }
  .gnav-item{position:relative;display:flex}
  .gnav a{
    padding:14px 18px;text-align:center;display:block;
    border-right:1px solid var(--line-soft);
    /* hoverで変わるのは background-color と color のみ */
    transition:background-color 0.15s, color 0.15s;
    min-width:96px;
  }
  .gnav-item:last-child > a{border-right:none}
  .gnav .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.18em}
  .gnav .jp{display:block;font-family:var(--jp-sans);font-size:13px;font-weight:500;letter-spacing:0.08em;margin-top:2px;margin-bottom:2px}
  .gnav-item > a:hover{background:var(--off-white);color:var(--red)}
  .gnav-item > a:hover .en{color:var(--red)}
  .gnav-item > a.active{background:var(--red);color:var(--white)}
  .gnav-item > a.active .en{color:var(--white)}
  /* SALEのみ赤字でアクセント（active/hover時は通常配色に従う） */
  .gnav-item > a.is-sale .en,
  .gnav-item > a.is-sale .jp{color:var(--red)}
  .gnav-item > a.is-sale:hover .en,
  .gnav-item > a.is-sale:hover .jp,
  .gnav-item > a.is-sale.active .en,
  .gnav-item > a.is-sale.active .jp{color:inherit}

  /* ===== サブカテゴリ ドロップダウン ===== */
  .gnav-sub{
    position:absolute;top:100%;left:50%;
    transform:translateX(-50%) translateY(-6px);
    min-width:210px;background:var(--white);
    border:1px solid var(--line-soft);border-top:2px solid var(--red);
    box-shadow:0 10px 28px rgba(0,0,0,0.12);
    padding:8px 0;opacity:0;visibility:hidden;
    transition:opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
    z-index:130;
  }
  .gnav-item:hover > .gnav-sub,
  .gnav-item:focus-within > .gnav-sub{
    opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);
  }
  .gnav-sub ul{list-style:none;margin:0;padding:0}
  /* 親リンクの中央寄せ・枠線・min-width等を打ち消し、ドロップダウン用に上書き */
  .gnav-sub a{
    display:block;padding:9px 22px;min-width:0;
    border-right:none;text-align:left;white-space:nowrap;
    font-family:var(--jp-sans);font-size:13px;font-weight:500;letter-spacing:0.04em;
    color:var(--ink);
  }
  .gnav-sub a:hover{background:var(--off-white);color:var(--red)}
  .gnav-sub-sep{margin-top:4px;border-top:1px solid var(--line-soft)}
  .gnav-sub-sep span{
    display:block;padding:8px 22px 4px;
    font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.18em;color:var(--gray);
  }
  /* スクロール時：ナビ非表示（畳む間だけ overflow:hidden） */
  header.scrolled .gnav{max-height:0;border-top-color:transparent;padding:0;overflow:hidden}

  /* ===== ドロワーメニュー（ハンバーガー展開） ===== */
  .drawer{
    position:fixed;top:0;right:-400px;width:380px;height:100vh;
    background:var(--white);z-index:200;
    box-shadow:-4px 0 24px rgba(0,0,0,0.12);
    transition:right 0.3s ease;
    overflow-y:auto;
  }
  .drawer.open{right:0}
  .drawer-overlay{
    position:fixed;inset:0;background:rgba(0,0,0,0.4);
    z-index:199;opacity:0;pointer-events:none;transition:opacity 0.3s;
  }
  .drawer-overlay.open{opacity:1;pointer-events:auto}

  .drawer-header{
    display:flex;justify-content:space-between;align-items:center;
    padding:20px 24px;border-bottom:2px solid var(--red);
  }
  .drawer-header .drawer-title{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;
  }
  .drawer-close{
    width:36px;height:36px;display:flex;align-items:center;justify-content:center;
    cursor:pointer;font-size:24px;color:var(--ink);
  }
  .drawer-close:hover{color:var(--red)}

  .drawer-section{padding:20px 24px;border-bottom:1px solid var(--line-soft)}
  .drawer-section-title{
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:12px;
  }
  .drawer-nav{list-style:none}
  .drawer-nav li{margin-bottom:0}
  .drawer-nav a{
    display:flex;justify-content:space-between;align-items:center;
    padding:14px 0;border-bottom:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:15px;font-weight:500;
    letter-spacing:0.08em;color:var(--ink);transition:color 0.15s;
  }
  .drawer-nav li:last-child a{border-bottom:none}
  .drawer-nav a:hover{color:var(--red)}
  .drawer-nav a .en-sub{
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.15em;color:var(--gray);
  }
  /* ドロワー内検索：PCでは非表示 */
  .drawer-search{display:none}

  /* ==========================================================
     ドロワー：カテゴリ・アコーディオン（サブカテゴリ展開）
     2026-06：6カテゴリ集約＋子カテゴリ（温度帯ほか）を開閉表示
     ========================================================== */
  .drawer-cats{list-style:none}
  .drawer-cat{border-bottom:1px solid var(--line-soft)}
  .drawer-cat:last-child{border-bottom:none}
  /* トップカテゴリ見出し：左＝リンク／右＝開閉ボタン */
  .drawer-cat-head{display:flex;justify-content:space-between;align-items:center}
  .drawer-cat-link{
    flex:1 1 auto;padding:14px 0;display:block;
    font-family:var(--jp-sans);font-size:15px;font-weight:600;
    letter-spacing:0.08em;color:var(--ink);transition:color 0.15s;
  }
  .drawer-cat-link:hover{color:var(--red)}
  .drawer-cat-name{display:inline-flex;align-items:baseline;gap:8px}
  .drawer-cat-name .en-sub{
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.15em;color:var(--gray);
  }
  .drawer-cat-name--sale{color:var(--red)}
  /* 開閉ボタン（タップ領域を確保） */
  .drawer-cat-toggle-btn{
    flex:none;width:44px;height:44px;background:none;border:none;cursor:pointer;
    display:flex;align-items:center;justify-content:center;color:var(--gray);
  }
  .drawer-cat-toggle-btn:hover{color:var(--red)}
  /* ＋／− トグルアイコン（CSSのみで描画） */
  .drawer-cat-toggle{position:relative;width:14px;height:14px;flex:none}
  .drawer-cat-toggle::before,
  .drawer-cat-toggle::after{
    content:"";position:absolute;background:currentColor;transition:transform 0.2s ease;
  }
  .drawer-cat-toggle::before{top:6px;left:0;width:14px;height:2px}
  .drawer-cat-toggle::after{top:0;left:6px;width:2px;height:14px}
  .drawer-cat.is-open .drawer-cat-toggle::after{transform:scaleY(0)}
  /* サブカテゴリリスト群（開閉アニメーション） */
  .drawer-subnav{
    list-style:none;overflow:hidden;max-height:0;
    transition:max-height 0.3s ease;
  }
  .drawer-cat.is-open .drawer-subnav{max-height:600px}
  .drawer-subnav a{
    display:block;padding:9px 0 9px 16px;position:relative;
    font-family:var(--jp-sans);font-size:13px;font-weight:400;
    letter-spacing:0.06em;color:#5a544c;
    border-top:1px dashed var(--line-soft);transition:color 0.15s;
  }
  .drawer-subnav a:hover{color:var(--red)}
  .drawer-subnav a::before{content:"–";position:absolute;left:2px;color:var(--gray)}
  .drawer-cat.is-open > .drawer-subnav{padding-bottom:8px}
  /* サブカテゴリ内の小見出し（例：温度帯で選ぶ） */
  .drawer-subnav-group{margin-top:4px}
  .drawer-subnav-grouplabel{
    display:block;padding:10px 0 4px 16px;
    font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.18em;color:var(--gray);
    border-top:1px solid var(--line-soft);
  }

  /* ==========================================================
     ③ HERO（縮小版：今のおすすめ）
     ========================================================== */
  .hero{
    display:grid;grid-template-columns:1fr 1fr;gap:0;
    border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
    /* 16:9→1280/760に変更（2026-07-03：hero-right商品カードの上下はみ出し対策で+40px分の余裕を追加） */
    aspect-ratio:1280/760;overflow:hidden;
  }
  .hero-left{
    padding:36px 40px 36px 48px;display:flex;flex-direction:column;
    justify-content:center;
  }
  .hero-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:16px;
  }

  /* ==========================================================
     HERO v2：左＝赤パネル（上に画像＋下にテキスト）／右＝白・4商品
     ========================================================== */
  /* 左パネルを赤塗り、文字は白、中央揃えで縦に積む */
  .hero.hero-v2 .hero-left{
    background:var(--red); /* イボンヌレッド #C30D23 */
    color:#fff;
    padding:44px 40px 48px;
    position:relative; /* 白枠（::before）基準 */
    text-align:center;
    align-items:center;    /* flexの子要素を中央寄せ */
    justify-content:center; /* 縦方向も中央寄せ */
  }
  /* 白の細い内枠（インセットボーダー）── パリの絵本風の額装表現 */
  .hero.hero-v2 .hero-left::before{
    content:"";
    position:absolute;
    inset:18px; /* パネル内側に18pxの余白を空けて白枠を描画 */
    border:2px solid #fff; /* CTAボタンと同じ2px太さ・白で統一感 */
    pointer-events:none; /* クリックを邪魔しない */
  }
  /* テキスト色を赤地用に白系へ上書き */
  .hero.hero-v2 .hero-label{color:rgba(255,255,255,0.78)}
  .hero.hero-v2 .hero-title{color:#fff}
  .hero.hero-v2 .hero-title .period{color:#fff} /* ピリオドも白に */
  .hero.hero-v2 .hero-subcopy{color:#fff;text-align:center}
  /* 「クッキー缶」強調：赤×赤で消えるため、白下線でアクセント */
  .hero.hero-v2 .hero-subcopy .red{
    color:#fff;font-weight:700;
    text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px;
  }
  /* CTAボタンを赤地に馴染む配色へ、中央寄せ */
  .hero.hero-v2 .hero-ctas{justify-content:center}
  .hero.hero-v2 .hero-cta{border-color:#fff;color:#fff;background:transparent}
  .hero.hero-v2 .hero-cta:hover{background:#fff;color:var(--red)}
  .hero.hero-v2 .hero-cta-primary{background:#fff;color:var(--red)}
  .hero.hero-v2 .hero-cta-primary:hover{background:transparent;color:#fff}

  /* ブランドロックアップ（縦積み：イボンヌ顔画像 → 手書きロゴタイプSVG） */
  .hero.hero-v2 .hero-lockup-stack{
    display:flex;flex-direction:column;align-items:center;
    gap:14px;margin:0 auto 22px;
    position:relative;z-index:1; /* 白枠より前面に */
  }
  /* 上：イボンヌ顔画像（logo.png）── 主役として大きめに */
  .hero.hero-v2 .hero-lockup-img{
    width:240px;height:auto;
    object-fit:contain;display:block;
  }
  /* 下：手書きロゴタイプSVG（画像より控えめに） */
  .hero.hero-v2 .hero-lockup-svg{
    width:100%;max-width:340px;height:auto;display:block;
  }
  /* コピーとCTAも白枠の前面に */
  .hero.hero-v2 .hero-subcopy,
  .hero.hero-v2 .hero-ctas{position:relative;z-index:1}

  .hero-title{
    font-family:var(--serif);font-style:italic;font-weight:600;
    font-size:clamp(40px,5vw,64px);line-height:0.95;letter-spacing:-0.02em;
    margin-bottom:12px;
  }
  .hero-title .period{color:var(--red)}
  .hero-subcopy{
    font-family:var(--jp-sans);font-size:15px;font-weight:500;
    letter-spacing:0.08em;line-height:1.8;color:var(--ink);margin-bottom:4px;
  }
  .hero-subcopy .red{color:var(--red);font-weight:700}
  .hero-ctas{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
  .hero-cta{
    display:inline-flex;align-items:center;gap:8px;padding:12px 24px;
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);transition:all 0.2s;
  }
  .hero-cta-primary{background:var(--red);color:var(--white)}
  .hero-cta-primary:hover{background:var(--red-dark);border-color:var(--red-dark)}
  .hero-cta-secondary{background:var(--white);color:var(--red)}
  .hero-cta-secondary:hover{background:var(--off-white)}

  /* ヒーロー右：おすすめ商品カード（16:9内に4枚収める。2026-07-02：可変高対応の変更を表示崩れのため元に戻した） */
  .hero-right{
    background:#fff;border-left:1px solid var(--line-soft);
    padding:10px;display:grid;grid-template-columns:1fr 1fr;gap:6px;
    align-content:center;overflow:hidden;
  }
  .hero-prod{
    background:var(--white);border:1px solid var(--line-soft);
    padding:6px;transition:all 0.15s;cursor:pointer;position:relative;
  }
  .hero-prod:hover{border-color:var(--red);box-shadow:0 4px 16px rgba(195,13,35,0.08)}
  .hero-prod-img{
    width:100%;aspect-ratio:1/1;background:#fff; /* 1:1 スクエア（下地を白に統一・2026-07-13） */
    display:flex;align-items:center;justify-content:center;margin-bottom:4px;
    position:relative;overflow:hidden;
  }
  .hero-prod-badge{
    position:absolute;top:8px;left:8px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:11px;font-weight:700;
    padding:4px 8px;letter-spacing:0.08em;
  }
  .hero-prod-name{
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    letter-spacing:0.03em;line-height:1.3;margin-bottom:2px;
    overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  }
  .hero-prod-price{
    font-family:var(--jp-sans);font-size:14px;font-weight:700;color:var(--ink);
  }
  .hero-prod-price .yen{font-size:11px;font-weight:500;margin-right:1px}
  .hero-prod-price .tax{font-size:10px;font-weight:400;color:var(--gray);margin-left:3px}

  /* ==========================================================
     セクション見出し共通（CDGナンバリング維持）
     ========================================================== */
  .sec-head{
    display:flex;align-items:baseline;gap:16px;
    padding:48px 32px 20px;border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
  }
  .sec-head .num{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);
  }
  .sec-head h2{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:36px;line-height:1;letter-spacing:-0.01em;
  }
  /* 日本語ラベルを大きく・太くして主役に（見出しの識別性向上） */
  .sec-head .jp{
    font-family:var(--jp-sans);font-weight:700;font-size:17px;
    letter-spacing:0.1em;color:var(--ink);
  }
  .sec-head .more{
    margin-left:auto;
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.1em;color:var(--red);
    display:flex;align-items:center;gap:6px;
  }
  .sec-head .more:hover{text-decoration:underline}

  /* ==========================================================
     ④ ランキングTOP5（一覧カードデザインに統一）
     ========================================================== */
  .ranking{
    display:grid;grid-template-columns:repeat(5,1fr);gap:24px 20px;
    max-width:1280px;margin:0 auto;padding:0 32px;
  }
  /* 商品カード（category.htmlと共通仕様） */
  .product-card{
    position:relative;border:1px solid var(--line-soft);
    padding:0;transition:all 0.15s;cursor:pointer;
    display:flex;flex-direction:column;overflow:hidden;background:var(--white);
  }
  .product-card:hover .product-img img{transform:scale(1.05)}
  .product-card > a{display:block;color:inherit;text-decoration:none}
  /* 商品画像 */
  .product-img{
    width:100%;aspect-ratio:1/1;background:var(--cream);
    overflow:hidden;position:relative;
  }
  .product-img img{
    width:100%;height:100%;object-fit:cover;
    transition:transform 0.3s;
  }
  /* ランキングバッジ（画像左上の円形オーバーレイ） */
  .rank-badge{
    position:absolute;top:10px;left:10px;z-index:2;
    width:36px;height:36px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:15px;font-weight:900;
    color:var(--white);box-shadow:0 2px 6px rgba(0,0,0,0.15);
  }
  .product-card:nth-child(1) .rank-badge{background:var(--gold)}
  .product-card:nth-child(2) .rank-badge{background:#A8A8A8}
  .product-card:nth-child(3) .rank-badge{background:#CD7F32}
  .product-card:nth-child(4) .rank-badge,
  .product-card:nth-child(5) .rank-badge{
    background:var(--white);color:var(--ink);border:2px solid var(--line-soft);
  }
  /* 商品情報 */
  .product-body{padding:16px 16px 20px;flex:1;display:flex;flex-direction:column}
  .product-cat-label{
    font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.2em;color:var(--gray-light);margin-bottom:4px;
  }
  .product-name{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.05em;line-height:1.4;margin-bottom:6px;
    overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  }
  .product-desc{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);
    line-height:1.6;margin-bottom:8px;
    overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  }
  .product-price{
    font-family:var(--jp-sans);font-size:18px;font-weight:900;color:var(--ink);
  }
  .product-price .yen{font-size:13px;font-weight:700;margin-right:1px}
  .product-price .tax{font-size:11px;font-weight:400;color:var(--gray);margin-left:4px}
  .product-price .reduced-mark{
    display:inline-block;color:var(--red);font-weight:700;
    margin-left:4px;font-size:11px;vertical-align:super;
  }
  /* レビュー星 */
  .product-stars{
    display:flex;align-items:center;gap:6px;margin-top:6px;
    font-family:var(--jp-sans);font-size:12px;
  }
  .product-stars .stars{color:var(--gold);font-size:13px;letter-spacing:1px}
  .product-stars .count{color:var(--gray)}

  /* ==========================================================
     ⑤ カテゴリ一覧（8列→圧縮レイアウト）
     ========================================================== */
  .categories{
    display:grid;grid-template-columns:repeat(3,1fr);
    border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
  }
  .cat{
    border-right:1px solid var(--line-soft);
    border-bottom:1px solid var(--line-soft);
    padding:0;text-align:center;
    transition:all 0.15s;cursor:pointer;display:block;overflow:hidden;
  }
  /* 3列×2行：右端(3n)の縦線と最終行(n+4=4個目以降)の下線を消す（2026-06-29 6カテゴリ対応） */
  .cat:nth-child(3n){border-right:none}
  .cat:nth-child(n+4){border-bottom:none}
  .cat:hover .cat-visual{transform:scale(1.05)}
  .cat:hover .cat-body{background:var(--red);color:var(--white)}
  .cat:hover .cat-jp,.cat:hover .cat-num{color:var(--white)}
  /* カテゴリ写真枠（ナビとの差別化） */
  .cat-visual{
    width:100%;aspect-ratio:16/10;background:var(--cream);
    display:flex;align-items:center;justify-content:center;
    transition:transform 0.3s;overflow:hidden;
  }
  .cat-body{padding:14px 12px 18px;transition:background 0.15s}
  .cat-num{
    font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:4px;
  }
  .cat-en{
    font-family:var(--sans);font-size:11px;font-weight:900;
    letter-spacing:0.12em;text-transform:uppercase;
  }
  .cat-jp{
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.1em;margin-top:3px;color:var(--ink);
  }

  /* ==========================================================
     ⑥ シーン別特集（贈る相手×予算）
     ========================================================== */
  .scene-grid{
    display:grid;grid-template-columns:repeat(3,1fr);gap:0;
    border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
  }
  .scene-card{
    border-right:1px solid var(--line-soft);padding:0;
    cursor:pointer;transition:all 0.15s;overflow:hidden;display:block;
  }
  .scene-card:nth-child(3n){border-right:none}
  .scene-card:hover .scene-visual{transform:scale(1.03)}
  .scene-visual{
    width:100%;aspect-ratio:16/9;background:var(--cream);
    display:flex;align-items:center;justify-content:center;
    transition:transform 0.3s;overflow:hidden;position:relative;
  }
  .scene-visual .budget-tag{
    position:absolute;bottom:12px;right:12px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    padding:6px 12px;letter-spacing:0.05em;
  }
  .scene-body{padding:20px 20px 24px}
  .scene-title{
    font-family:var(--jp-sans);font-size:17px;font-weight:700;
    letter-spacing:0.08em;color:var(--ink);margin-bottom:4px;
  }
  .scene-desc{
    font-family:var(--jp-sans);font-size:13px;font-weight:400;
    letter-spacing:0.06em;color:var(--gray);line-height:1.6;
  }
  /* v2追加：シーン別特集の行間ラベル（上段と下段の区切り） */
  .scene-row-label{
    grid-column:1/-1;
    padding:16px 20px 8px;
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    letter-spacing:0.12em;color:var(--gray);
    text-transform:uppercase;
    border-top:1px solid var(--line-soft);
  }

  /* ==========================================================
     ⑦ 新着商品
     ========================================================== */
  .new-items{
    display:grid;grid-template-columns:repeat(5,1fr);gap:0;
    border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
    /* 2026-06-29のカード独立化改修時に外側パディングが抜けており、カードが上下の赤罫線に直接接していたため追加（2026-07-02） */
    padding:28px 32px 32px;
  }
  .new-item{
    padding:24px 20px;border-right:1px solid var(--line-soft);
    transition:background 0.15s;cursor:pointer;position:relative;
  }
  .new-item:last-child{border-right:none}
  .new-item:hover{background:var(--off-white)}
  .new-item-img{
    width:100%;aspect-ratio:4/5;background:var(--cream);
    display:flex;align-items:center;justify-content:center;margin-bottom:14px;
    border:1px solid var(--line-soft);position:relative;
  }
  .new-badge{
    position:absolute;top:10px;left:10px;
    background:var(--red);color:var(--white);
    font-family:var(--sans);font-size:11px;font-weight:900;
    padding:4px 10px;letter-spacing:0.15em;
  }
  .new-item-date{
    font-family:var(--jp-sans);font-size:12px;font-weight:400;
    color:var(--gray);margin-bottom:4px;
  }
  .new-item-name{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.05em;line-height:1.4;margin-bottom:6px;
  }
  .new-item-price{
    font-family:var(--jp-sans);font-size:17px;font-weight:700;color:var(--ink);
  }
  .new-item-price .yen{font-size:13px;font-weight:500;margin-right:1px}
  .new-item-price .tax{font-size:11px;font-weight:400;color:var(--gray);margin-left:4px}
  /* 軽減税率対象 ※ マーク（食品は 8%） */
  .hero-prod-price .reduced-mark,
  .new-item-price .reduced-mark{
    display:inline-block;color:var(--red);font-weight:700;
    margin-left:3px;font-size:10px;vertical-align:super;
  }

  /* ストーリーバナーは撤去（STORYページへ移動） */

  /* ==========================================================
     ⑨ お客様の声
     ========================================================== */
  .reviews{
    display:grid;grid-template-columns:repeat(3,1fr);gap:0;
    border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
  }
  .review-card{
    padding:32px 24px;border-right:1px solid var(--line-soft);
    display:flex;flex-direction:column;
  }
  .review-card:last-child{border-right:none}
  .review-stars{
    color:var(--gold);font-size:16px;letter-spacing:2px;margin-bottom:12px;
  }
  .review-text{
    font-family:var(--jp-serif);font-weight:400;font-size:15px;
    line-height:2;letter-spacing:0.08em;color:var(--ink);
    flex:1;margin-bottom:16px;
  }
  .review-meta{
    display:flex;justify-content:space-between;align-items:center;
    font-family:var(--jp-sans);font-size:13px;color:var(--gray);
  }
  .review-product{
    font-weight:700;color:var(--red);font-size:12px;
    letter-spacing:0.08em;
  }

  /* ==========================================================
     ⑩ よくあるご質問 TOP5
     ========================================================== */
  .faq-section{padding:0 32px 0;border-bottom:2px solid var(--red);max-width:1280px;margin:0 auto}
  .faq-list{max-width:840px;margin:0 auto;padding:32px 0 56px}
  .faq-item{
    border-bottom:1px solid var(--line-soft);
  }
  .faq-q{
    display:flex;align-items:center;gap:16px;
    padding:20px 0 8px;width:100%;text-align:left;
    font-family:var(--jp-sans);font-size:16px;font-weight:700;
    letter-spacing:0.06em;color:var(--ink);
  }
  .faq-q .q-badge{
    flex-shrink:0;width:32px;height:32px;
    background:var(--red);color:var(--white);border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:14px;font-weight:900;
  }
  .faq-a{
    padding:0 0 20px 48px;
    font-family:var(--jp-sans);font-size:15px;font-weight:400;
    line-height:2;letter-spacing:0.06em;color:var(--gray);
  }

  /* ==========================================================
     ⑪ サポートバンド（安心情報4列）
     ========================================================== */
  .support-band{
    display:grid;grid-template-columns:repeat(4,1fr);
    border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
  }
  .support-item{
    padding:32px 24px;text-align:center;border-right:1px solid var(--line-soft);
  }
  .support-item:last-child{border-right:none}
  .support-icon{
    margin:0 auto 12px;display:flex;align-items:center;justify-content:center;
    width:48px;height:48px;color:var(--ink);
  }
  .support-icon svg{stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
  .support-title{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;color:var(--ink);margin-bottom:4px;
  }
  .support-desc{
    font-family:var(--jp-sans);font-size:13px;font-weight:400;
    letter-spacing:0.08em;color:var(--gray);
  }

  /* ==========================================================
     ⑫ お知らせ（NEWS）
     ========================================================== */
  .news-list{padding:24px 32px 48px;max-width:1280px;margin:0 auto}
  .news-item{
    display:grid;grid-template-columns:120px auto 1fr auto;
    align-items:center;gap:16px;
    padding:18px 0;border-bottom:1px solid var(--line-soft);
  }
  .news-date{
    font-family:var(--sans);font-size:13px;font-weight:500;
    letter-spacing:0.1em;color:var(--gray);
  }
  .news-tag{
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    letter-spacing:0.08em;padding:4px 12px;
    border:1px solid var(--red);
  }
  .news-tag.collab{border-color:var(--red);color:var(--red)}
  .news-title{
    font-family:var(--jp-sans);font-size:15px;font-weight:500;
    letter-spacing:0.06em;
  }
  .news-arrow{font-size:16px;color:var(--gray)}
  .news-item:hover .news-title{color:var(--red)}

  /* ==========================================================
     ⑬ フッター（充実の安心ゾーン）
     ========================================================== */
  footer{
    background:var(--black);color:var(--white);
    padding:80px 32px 32px;
  }
  .foot-top{
    display:grid;grid-template-columns:2fr 1fr 1fr 1fr;
    gap:48px;padding-bottom:64px;border-bottom:1px solid #333;
    max-width:1280px;margin:0 auto;
  }
  .foot-brand .mark{
    display:flex;align-items:center;gap:14px;margin-bottom:14px;
  }
  /* フッターイボンヌ顔アイコン（そのまま表示） */
  .foot-icon{
    height:56px;width:auto;display:block;
  }
  /* フッターテキストロゴ（白文字SVGなので色反転不要） */
  .foot-logo-text{
    height:44px;width:auto;display:block;
  }
  .foot-brand .desc{
    font-family:var(--jp-serif);font-weight:400;font-size:14px;
    line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px;
  }
  .foot-contact{
    margin-top:24px;padding-top:20px;border-top:1px solid #333;
    font-family:var(--jp-sans);
  }
  .foot-contact .tel-label{
    font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px;
  }
  .foot-contact .tel{
    font-family:var(--sans);font-size:24px;font-weight:700;
    letter-spacing:0.05em;color:var(--white);
  }
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.25em;margin-bottom:20px;color:var(--white);
  }
  .foot-col h4 .en{
    display:block;font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:4px;
  }
  .foot-col ul{list-style:none}
  .foot-col li{margin-bottom:12px}
  .foot-col li a{
    font-family:var(--jp-sans);font-size:14px;font-weight:400;
    letter-spacing:0.08em;color:#CCC;
  }
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{
    display:flex;justify-content:space-between;align-items:center;
    padding-top:32px;flex-wrap:wrap;gap:16px;
    max-width:1280px;margin:0 auto;
    font-family:var(--sans);font-size:12px;font-weight:500;
    letter-spacing:0.2em;color:var(--gray-light);
  }
  .foot-bottom .red{color:var(--red);font-weight:900}

  /* ===== スキップリンク ===== */
  .skip-link{
    position:absolute;top:-100px;left:16px;
    background:var(--red);color:var(--white);
    padding:12px 24px;font-family:var(--jp-sans);font-size:14px;font-weight:700;
    z-index:9999;border-radius:0 0 4px 4px;transition:top 0.2s;
  }
  .skip-link:focus{top:0}

  /* ===== H1リセット（ヘッダーブランドマーク） ===== */
  h1.brand-mark{margin:0}
  h1.brand-mark a{color:inherit;text-decoration:none}

  /* ===== パンくずリスト ===== */
  .breadcrumb{
    max-width:1280px;margin:0 auto;
    padding:14px 32px;
    font-family:var(--jp-sans);font-size:13px;color:var(--gray);
  }
  .breadcrumb ol{
    list-style:none;margin:0;padding:0;
    display:flex;flex-wrap:wrap;align-items:center;gap:0;
  }
  .breadcrumb li+li::before{
    content:'›';margin:0 10px;color:var(--gray-light);
  }
  .breadcrumb a{color:var(--gray);text-decoration:none;transition:color .2s}
  .breadcrumb a:hover{color:var(--red)}
  .breadcrumb li[aria-current="page"]{color:var(--ink);font-weight:500}

  /* ==========================================================
     レスポンシブ — タブレット（768px〜1279px）
     ========================================================== */
  @media (max-width:1279px){
    /* ヘッダー：パディング縮小 */
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}
    .gnav .en{font-size:10px}

    /* セクション見出し */
    .sec-head{padding:40px 20px 16px}
    .sec-head h2{font-size:30px}

    /* Hero */
    .hero{max-width:100%}
    .hero-left{padding:28px 24px}
    .hero-title{font-size:clamp(32px,4.5vw,52px)}

    /* ランキング：3+2列に変更 */
    .ranking{grid-template-columns:repeat(3,1fr);max-width:100%;gap:20px 16px;padding:0 20px}

    /* カテゴリ：4列維持だがmax-width解除 */
    .categories{max-width:100%}

    /* ギフトガイド：3列維持 */
    .scene-grid{max-width:100%}

    /* 新着：3列に変更（5件×3列＝3+2でランキングと同じ段階変化） */
    .new-items{grid-template-columns:repeat(3,1fr);max-width:100%}
    .new-item:nth-child(3n){border-right:none}
    .new-item:nth-child(n+4){border-top:1px solid var(--line-soft)}

    /* レビュー */
    .reviews{max-width:100%}

    /* FAQ */
    .faq-section{max-width:100%}
    .faq-list{max-width:100%}

    /* サポートバンド：2列 */
    .support-band{grid-template-columns:repeat(2,1fr);max-width:100%}
    .support-item:nth-child(2){border-right:none}
    .support-item:nth-child(n+3){border-top:1px solid var(--line-soft)}

    /* ニュース */
    .news-list{padding:24px 20px 40px;max-width:100%}

    /* フッター */
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* ==========================================================
     レスポンシブ — モバイル（〜767px）
     ========================================================== */
  @media (max-width:767px){
    /* ===== 基本 ===== */
    body{font-size:16px;line-height:1.8}

    /* ===== ティッカー ===== */
    .top-ticker{font-size:12px;padding:8px 0}
    .top-ticker-track > .ticker-item{padding:0 18px}
    .top-ticker .sep{height:10px}
    /* SPは速度をやや速く（文字数が長く感じられるため） */
    .top-ticker-track{animation-duration:35s}

    /* ===== ヘッダー：常時ハンバーガーモード ===== */
    .header-util{display:none}
    .header-main{
      grid-template-columns:1fr auto;
      padding:12px 16px;gap:12px;
    }
    .search-bar{display:none}
    .header-logo{height:36px}
    /* モバイル：常にハンバーガー表示 */
    .burger{
      visibility:visible;opacity:1;width:auto;min-width:44px;
      padding:6px 8px;
    }
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    /* gnavは非表示（ドロワーに集約） */
    .gnav{display:none}

    /* ===== ドロワー ===== */
    .drawer{width:min(320px, 85vw)}

    /* ===== Hero ===== */
    .hero{
      grid-template-columns:1fr;aspect-ratio:auto;max-width:100%;
    }
    .hero-left{padding:24px 16px;text-align:center}
    /* v2 SP：縦積みを維持しつつサイズ縮小、白枠もスリム化 */
    .hero.hero-v2 .hero-left{padding:32px 18px 36px}
    .hero.hero-v2 .hero-left::before{inset:12px} /* SPでは枠の内側余白を詰める */
    .hero.hero-v2 .hero-lockup-stack{
      gap:10px;margin:0 auto 16px;
    }
    .hero.hero-v2 .hero-lockup-img{width:180px;height:auto}
    .hero.hero-v2 .hero-lockup-svg{max-width:240px}
    .hero-title{font-size:36px}
    .hero-subcopy{font-size:14px}
    .hero-ctas{justify-content:center}
    .hero-cta{padding:14px 20px;font-size:14px;width:100%}
    .hero-right{
      grid-template-columns:1fr 1fr;padding:8px;gap:6px;
      border-left:none;border-top:1px solid var(--line-soft);
    }
    .hero-prod-name{font-size:12px}
    .hero-prod-price{font-size:13px}

    /* ===== セクション見出し ===== */
    .sec-head{
      padding:32px 16px 14px;gap:10px;
      flex-wrap:wrap;
    }
    .sec-head h2{font-size:24px}
    .sec-head .jp{font-size:15px}
    .sec-head .more{font-size:13px}

    /* ===== お知らせ ===== */
    .news-list{padding:16px 16px 32px}
    .news-item{
      grid-template-columns:auto 1fr;gap:8px;
      padding:14px 0;
    }
    /* タグは内容幅に収める（justify-self:startを付けないと1fr列いっぱいに伸びる） */
    .news-tag{grid-row:1;grid-column:2;justify-self:start}
    .news-date{font-size:12px}
    .news-title{grid-column:1 / -1;font-size:14px}
    .news-arrow{display:none}

    /* ===== ランキング：2列 ===== */
    .ranking{grid-template-columns:repeat(2,1fr);gap:16px 12px;padding:0 16px}
    .product-body{padding:12px 12px 16px}
    .product-name{font-size:14px}
    .product-price{font-size:16px}
    .rank-badge{width:30px;height:30px;font-size:13px;top:8px;left:8px}

    /* ===== カテゴリ：2列（PCの3列ボーダールールを打ち消して2列用に再設定） ===== */
    .categories{grid-template-columns:repeat(2,1fr)}
    .cat:nth-child(n){border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
    .cat:nth-child(2n){border-right:none}
    .cat:nth-child(n+5){border-bottom:none}
    .cat-jp{font-size:13px}

    /* ===== ギフトガイド：1列 ===== */
    .scene-grid{grid-template-columns:1fr}
    .scene-card{border-right:none;border-bottom:1px solid var(--line-soft)}
    .scene-card:last-child{border-bottom:none}
    .scene-body{padding:16px}
    .scene-title{font-size:16px}

    /* ===== 新着商品：2列 ===== */
    .new-items{grid-template-columns:repeat(2,1fr);padding:20px 16px 24px}
    .new-item:nth-child(2n){border-right:none}
    .new-item:nth-child(n+3){border-top:1px solid var(--line-soft)}
    .new-item{padding:16px 12px}
    .new-item-name{font-size:14px}
    .new-item-price{font-size:15px}

    /* ===== レビュー：1列 ===== */
    .reviews{grid-template-columns:1fr}
    .review-card{border-right:none;border-bottom:1px solid var(--line-soft)}
    .review-card:last-child{border-bottom:none}
    .review-card{padding:24px 16px}

    /* ===== FAQ ===== */
    .faq-section{padding:0 16px}
    .faq-list{padding:24px 0 40px}
    .faq-q{font-size:15px;gap:12px;padding:16px 0 6px}
    .faq-q .q-badge{width:28px;height:28px;font-size:12px}
    .faq-a{padding:0 0 16px 40px;font-size:14px}

    /* ===== サポートバンド：1列 ===== */
    .support-band{grid-template-columns:1fr}
    .support-item{
      border-right:none;border-bottom:1px solid var(--line-soft);
      padding:20px 16px;text-align:left;
      display:grid;grid-template-columns:48px 1fr;gap:12px;align-items:center;
    }
    .support-item:last-child{border-bottom:none}
    .support-icon{margin:0}
    .support-title{margin-bottom:0}

    /* ===== フッター：1列 ===== */
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{
      flex-direction:column;align-items:flex-start;
      gap:8px;font-size:11px;
    }

    /* ===== ドロワー内検索バー：モバイルで表示 ===== */
    .drawer-search{display:block}
  }

  /* ==========================================================
     外部リンクアイコン（↗）
     別ドメインへの遷移に付与。ラベル末尾に小さな矢印を表示。
     ========================================================== */
  .is-ext::after{
    content:"";
    display:inline-block;
    width:.75em;height:.75em;
    margin-left:.35em;
    vertical-align:-.08em;
    background:currentColor;
    -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M7 17L17 7'/><path d='M8 7h9v9'/></svg>") center/contain no-repeat;
            mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M7 17L17 7'/><path d='M8 7h9v9'/></svg>") center/contain no-repeat;
    opacity:.6;
  }
  /* フッター内の仕切り線（ABOUT列で内部/外部リンクを区切る） */
  .foot-col li.foot-sep{
    list-style:none;padding:0;margin:8px 0 14px;
    height:1px;background:rgba(255,255,255,.12);line-height:0;
  }
  .foot-tax-note{font-size:11px;line-height:1.7;color:rgba(255,255,255,.55);padding:12px 20px;border-top:1px solid rgba(255,255,255,.08);margin:16px 0 0;text-align:center}
  .foot-legal{display:flex;gap:20px;flex-wrap:wrap}.foot-legal a{color:inherit;text-decoration:none;transition:opacity .2s}.foot-legal a:hover{opacity:.7}

  /* ==========================================================
     ページ固有: category
     ========================================================== */

  .cat-header{
    max-width:1280px;margin:0 auto;
    padding:48px 32px 40px;
    border-bottom:2px solid var(--red);
  }
  .cat-header-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .cat-header-title{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:48px;line-height:1;letter-spacing:-0.01em;margin-bottom:8px;
  }
  .cat-header-jp{
    font-family:var(--jp-sans);font-size:18px;font-weight:700;
    letter-spacing:0.12em;margin-bottom:16px;
  }
  .cat-header-desc{
    font-family:var(--jp-sans);font-size:14px;line-height:1.9;
    color:var(--gray);max-width:640px;
  }
  .cat-header-count{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray);margin-top:16px;
  }
  .cat-header-count strong{color:var(--ink);font-weight:900}

  /* ==========================================================
     ⑤ フィルタバー（並び替え・表示切替）
     ========================================================== */
  .filter-bar{
    display:flex;justify-content:space-between;align-items:center;
    max-width:1280px;margin:0 auto;
    padding:14px 32px;border-bottom:1px solid var(--line-soft);
  }
  .filter-left{display:flex;align-items:center;gap:16px}
  .filter-label{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.08em;color:var(--gray);
  }
  .filter-select{
    padding:8px 12px;border:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:13px;
    background:var(--white);border-radius:0;
  }
  .filter-select:focus{border-color:var(--red)}

  /* ==========================================================
     ⑥ 商品グリッド
     ========================================================== */
  .product-grid{
    display:grid;grid-template-columns:repeat(4,1fr);gap:24px 20px;
    max-width:1280px;margin:0 auto;
    padding:0 32px;
  }
  .product-badge{
    position:absolute;top:10px;left:10px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:11px;font-weight:700;
    padding:4px 10px;letter-spacing:0.08em;z-index:1;
  }
  .product-badge.new{background:var(--red)}
  .product-badge.sale{background:var(--gold)}
  /* 商品情報 */
  .product-body{padding:16px 16px 20px;flex:1;display:flex;flex-direction:column}
  .product-cat-label{
    font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.2em;color:var(--gray-light);margin-bottom:4px;
  }
  .tax-legend{
    max-width:1280px;margin:0 auto;padding:12px 32px 0;
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);
  }
  .tax-legend strong{color:var(--red)}
  /* 商品一覧セクション下の余白（フッター手前） */
  #product_page #main-content{padding-bottom:80px}
  /* レビュー星 */
  .product-stars{
    display:flex;align-items:center;gap:6px;margin-top:6px;
    font-family:var(--jp-sans);font-size:12px;
  }
  .product-cart{
    margin-top:auto;padding:10px 16px;width:100%;
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.08em;color:var(--white);
    border:2px solid var(--red);transition:all 0.2s;
    display:inline-flex;align-items:center;justify-content:center;gap:6px;
    background:var(--red);
  }
  /* ホバー：白背景＋赤文字（反転） */
  .product-cart:hover{background:var(--white);border-color:var(--red);color:var(--red)}
  /* 商品を見るボタン：.product-card > a の color:inherit を上書き。通常=白文字／ホバー=赤文字 */
  .product-card > a.product-cart{color:var(--white)}
  .product-card > a.product-cart:hover{color:var(--red)}

  /* ==========================================================
     ⑦ ページネーション
     ========================================================== */
  .pagination{
    display:flex;justify-content:center;align-items:center;gap:4px;
    max-width:1280px;margin:0 auto;
    padding:32px;border-bottom:2px solid var(--red);
  }
  .page-btn{
    width:44px;height:44px;display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:14px;font-weight:700;
    border:1px solid var(--line-soft);transition:all 0.15s;
    color:var(--ink);background:var(--white);
  }
  .page-btn:hover{border-color:var(--red);color:var(--red)}
  .page-btn.active{background:var(--red);color:var(--white);border-color:var(--red)}
  .page-btn.disabled{opacity:0.3;pointer-events:none}
  .page-dots{
    width:44px;height:44px;display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:14px;color:var(--gray);
  }
  @media (max-width:1279px){
    .breadcrumb{padding:12px 20px}
    .cat-header{padding:36px 20px 32px}
    .cat-header-title{font-size:40px}
    .filter-bar{padding:12px 20px}
    /* 3列に変更 */
    .product-grid{grid-template-columns:repeat(3,1fr);gap:20px 16px;padding:0 20px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .breadcrumb{padding:10px 16px;font-size:12px}
    .cat-header{padding:28px 16px 24px}
    .cat-header-title{font-size:30px}
    .cat-header-jp{font-size:16px}
    .cat-header-desc{font-size:13px}
    .filter-bar{padding:10px 16px;flex-wrap:wrap;gap:10px}
    .filter-left{flex:1;min-width:200px}
    /* 2列に変更 */
    .product-grid{grid-template-columns:repeat(2,1fr);gap:16px 12px;padding:0 16px}
    .product-body{padding:12px 12px 16px}
    .product-name{font-size:14px}
    .product-price{font-size:16px}
    .product-cart{padding:10px 12px;font-size:12px}
    .pagination{padding:24px 16px}
    .page-btn{width:40px;height:40px;font-size:13px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: pdp
     ========================================================== */

  .pdp-main{
    /* minmax(0,1fr)で列の最小幅を0に。1frのままだと大きい商品画像の自然幅にギャラリー列が膨張してレイアウトが崩れる（CSS gridのブローアウト対策） */
    display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;
    align-items:start; /* 左ギャラリーをsticky化するため各カラム上揃え（stretchさせない） */
    max-width:1280px;margin:0 auto;
    border-bottom:2px solid var(--red);
  }
  /* 右カラム：商品情報＋タブを縦に積む。min-width:0でグリッド内の溢れ防止 */
  .pdp-col-right{min-width:0;display:flex;flex-direction:column}
  .pdp-gallery{
    border-right:1px solid var(--line-soft);
    padding:32px;
    /* 右カラムをスクロールしても画像が見えるよう左カラムを追従(sticky)させる */
    position:sticky;top:16px;align-self:start;
  }
  .pdp-gallery-main{
    width:100%;aspect-ratio:1/1;background:var(--cream);
    display:flex;align-items:center;justify-content:center;
    border:1px solid var(--line-soft);margin-bottom:12px;
    overflow:hidden;cursor:zoom-in;position:relative;
  }
  .pdp-gallery-main img{
    width:100%;height:100%;object-fit:contain;
    transition:transform 0.3s;
  }
  .pdp-gallery-main:hover img{transform:scale(1.05)}
  /* サムネイル列 */
  .pdp-thumbs{
    /* サムネが多い商品（色違い等で多数）でも列幅を超えないよう、はみ出さず横スクロールにする */
    display:flex;gap:8px;flex-wrap:nowrap;
    overflow-x:auto;overflow-y:hidden;padding-bottom:6px;
    scrollbar-width:thin;
  }
  .pdp-thumb{
    width:80px;height:80px;background:var(--cream);
    border:2px solid var(--line-soft);cursor:pointer;
    overflow:hidden;transition:border-color 0.15s;
    flex-shrink:0;
  }
  .pdp-thumb:hover,.pdp-thumb.active{border-color:var(--red)}
  .pdp-thumb img{width:100%;height:100%;object-fit:cover}

  /* --- 右カラム：商品情報 --- */
  .pdp-info{
    padding:32px;display:flex;flex-direction:column;
  }
  .pdp-cat{
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .pdp-name{
    font-family:var(--jp-sans);font-size:26px;font-weight:700;
    letter-spacing:0.05em;line-height:1.4;margin-bottom:8px;
  }
  .pdp-sku{
    font-family:var(--sans);font-size:12px;font-weight:500;
    letter-spacing:0.15em;color:var(--gray-light);margin-bottom:16px;
  }
  .pdp-review-summary{
    display:flex;align-items:center;gap:8px;margin-bottom:20px;
    font-family:var(--jp-sans);font-size:14px;
  }
  .pdp-stars{color:var(--gold);font-size:16px;letter-spacing:2px}
  .pdp-review-count{color:var(--gray);font-size:13px}
  .pdp-review-count a{color:var(--red);text-decoration:underline}
  .pdp-review-count a:hover{text-decoration:none}
  /* 価格エリア */
  .pdp-price-area{
    padding:20px 0;border-top:1px solid var(--line-soft);
    border-bottom:1px solid var(--line-soft);margin-bottom:20px;
  }
  .pdp-price{
    font-family:var(--jp-sans);font-size:36px;font-weight:900;
    color:var(--ink);letter-spacing:0.02em;
  }
  .pdp-price .yen{font-size:22px;font-weight:700;margin-right:2px}
  .pdp-price .tax{font-size:14px;font-weight:400;color:var(--gray);margin-left:6px}
  .pdp-shipping-note{
    font-family:var(--jp-sans);font-size:13px;color:var(--gray);margin-top:6px;
  }
  .pdp-shipping-note .red{color:var(--red);font-weight:700}
  /* ポイント表示 */
  .pdp-points{
    font-family:var(--jp-sans);font-size:13px;color:var(--gray);margin-top:8px;
    display:inline-flex;align-items:center;gap:6px;
  }
  .pdp-points .pt-badge{
    display:inline-flex;align-items:center;gap:4px;
    background:#FFF9E6;color:#8B6914;border:1px solid var(--gold);
    padding:3px 8px;border-radius:3px;
    font-size:12px;font-weight:700;letter-spacing:0.05em;
  }
  .pdp-points .pt-badge strong{color:var(--gold);font-family:var(--sans);font-size:13px}
  /* 軽減税率対象 ※ マーク（価格横） */
  .pdp-tax-reduced{
    display:inline-block;background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:11px;font-weight:700;
    padding:3px 8px;border-radius:3px;letter-spacing:0.05em;
    margin-left:10px;vertical-align:middle;
  }
  .pdp-cart-area{margin-bottom:24px}
  .pdp-qty-row{
    display:flex;align-items:center;gap:16px;margin-bottom:16px;
  }
  .pdp-qty-label{
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.08em;min-width:48px;
  }
  .pdp-qty-select{
    padding:10px 16px;border:2px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:16px;font-weight:500;
    min-width:80px;background:var(--white);
    border-radius:0;appearance:auto;
  }
  .pdp-qty-select:focus{border-color:var(--red)}
  /* 数量変更時の小計（赤字でリアルタイム反映） */
  .pdp-qty-subtotal{
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    color:var(--red);margin-left:auto;letter-spacing:0.04em;
  }
  .pdp-cart-btn{
    display:flex;align-items:center;justify-content:center;gap:10px;
    width:100%;padding:18px 24px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:17px;font-weight:700;
    letter-spacing:0.12em;border:2px solid var(--red);
    transition:all 0.2s;cursor:pointer;
  }
  .pdp-cart-btn:hover{background:var(--red-dark);border-color:var(--red-dark)}
  .pdp-cart-btn:disabled{opacity:.6;cursor:wait}
  .pdp-cart-btn svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}
  /* 投入直後の "追加中..." アニメ用 */
  .pdp-cart-btn.is-adding{background:#7a0815;border-color:#7a0815}
  /* お気に入りボタン */
  .pdp-fav-btn{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:14px 24px;margin-top:10px;
    background:var(--white);color:var(--ink);
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--line-soft);
    transition:all 0.2s;cursor:pointer;
  }
  .pdp-fav-btn:hover{border-color:var(--red);color:var(--red)}
  .pdp-fav-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}
  /* 追加済み（aria-pressed=true）の状態：赤塗り */
  .pdp-fav-btn[aria-pressed="true"]{
    border-color:var(--red);color:var(--white);background:var(--red);
  }
  .pdp-fav-btn[aria-pressed="true"] svg{fill:currentColor}

  /* 配送情報 */
  .pdp-delivery{
    padding:16px 0;border-top:1px solid var(--line-soft);
    margin-top:auto;
  }
  .pdp-delivery-item{
    display:flex;align-items:flex-start;gap:10px;
    font-family:var(--jp-sans);font-size:13px;color:var(--gray);
    margin-bottom:8px;
  }
  .pdp-delivery-item:last-child{margin-bottom:0}
  .pdp-delivery-item svg{
    width:18px;height:18px;stroke:var(--gray);fill:none;
    stroke-width:1.6;flex-shrink:0;margin-top:2px;
  }
  .pdp-delivery-item strong{color:var(--ink);font-weight:700}

  /* ==========================================================
     ⑤ 商品説明タブ
     ========================================================== */
  .pdp-tabs{
    /* 右カラム内に配置するため中央寄せ・最大幅・下線(section側の赤線と重複)を解除 */
    max-width:none;margin:0;
  }
  .pdp-tab-nav{
    display:flex;border-bottom:1px solid var(--line-soft);
  }
  .pdp-tab-btn{
    flex:1;padding:18px 16px;text-align:center;
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;color:var(--gray);
    border-bottom:3px solid transparent;
    transition:all 0.15s;cursor:pointer;
    background:none;border-top:none;border-left:none;border-right:none;
  }
  .pdp-tab-btn:hover{color:var(--red)}
  .pdp-tab-btn.active{
    color:var(--ink);border-bottom-color:var(--red);
  }
  .pdp-tab-btn .en{
    display:block;font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.2em;color:var(--gray-light);margin-top:2px;
  }
  .pdp-tab-btn.active .en{color:var(--gray)}
  /* タブコンテンツ */
  .pdp-tab-content{
    padding:40px 32px;display:none;
  }
  .pdp-tab-content.active{display:block}

  /* 商品説明テキスト */
  .pdp-desc{
    /* タブ内テキスト（商品説明・配送返品等）を表示幅いっぱいに広げる（旧:800px制限で右に余白が出ていた） */
    max-width:none;
  }
  .pdp-desc h3{
    font-family:var(--jp-sans);font-size:18px;font-weight:700;
    letter-spacing:0.08em;margin-bottom:12px;padding-bottom:10px;
    border-bottom:1px solid var(--line-soft);
  }
  .pdp-desc p{
    font-family:var(--jp-sans);font-size:15px;line-height:2;
    color:var(--ink);margin-bottom:24px;
  }
  .pdp-desc .taste-grid{
    display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
    margin:32px 0;
  }
  .taste-card{text-align:center}
  .taste-card-img{
    width:100%;aspect-ratio:1/1;background:var(--cream);
    border:1px solid var(--line-soft);margin-bottom:10px;
    display:flex;align-items:center;justify-content:center;overflow:hidden;
  }
  .taste-card-img img{width:100%;height:100%;object-fit:cover}
  .taste-card-name{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.08em;margin-bottom:4px;
  }
  .taste-card-desc{
    font-family:var(--jp-sans);font-size:13px;color:var(--gray);
    line-height:1.7;
  }
  .pdp-spec-table{
    width:100%;max-width:800px;border-collapse:collapse;
  }
  .pdp-spec-table th,.pdp-spec-table td{
    padding:14px 16px;text-align:left;
    font-family:var(--jp-sans);font-size:14px;
    border-bottom:1px solid var(--line-soft);
  }
  .pdp-spec-table th{
    font-weight:700;letter-spacing:0.08em;width:140px;
    background:var(--off-white);color:var(--ink);
    vertical-align:top;
  }
  .pdp-spec-table td{
    font-weight:400;color:var(--ink);line-height:1.8;
  }
  .pdp-reviews-section{
    max-width:1280px;margin:0 auto;
    border-bottom:2px solid var(--red);padding:40px 32px;
  }
  .pdp-reviews-head{
    display:flex;align-items:baseline;gap:16px;margin-bottom:32px;
    padding-bottom:16px;border-bottom:1px solid var(--line-soft);
  }
  .pdp-reviews-head h2{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:30px;line-height:1;
  }
  .pdp-reviews-head .jp{
    font-family:var(--jp-sans);font-weight:700;font-size:16px;
    letter-spacing:0.1em;
  }
  .pdp-review-stats{
    display:flex;gap:40px;margin-bottom:32px;
    padding:24px;background:var(--off-white);
    border:1px solid var(--line-soft);
  }
  .pdp-review-avg{text-align:center;min-width:140px}
  .pdp-review-avg .score{
    font-family:var(--sans);font-size:48px;font-weight:900;
    color:var(--ink);line-height:1;
  }
  .pdp-review-avg .stars{
    color:var(--gold);font-size:20px;letter-spacing:3px;margin:8px 0;
  }
  .pdp-review-avg .count{
    font-family:var(--jp-sans);font-size:13px;color:var(--gray);
  }
  .pdp-review-bars{flex:1}
  .review-bar-row{
    display:flex;align-items:center;gap:10px;margin-bottom:6px;
    font-family:var(--jp-sans);font-size:13px;
  }
  .review-bar-label{min-width:40px;text-align:right;font-weight:500}
  .review-bar-track{
    flex:1;height:10px;background:var(--line-soft);border-radius:5px;overflow:hidden;
  }
  .review-bar-fill{height:100%;background:var(--gold);border-radius:5px}
  .review-bar-count{min-width:30px;color:var(--gray)}
  /* 個別レビュー */
  .review-item{
    padding:24px 0;border-bottom:1px solid var(--line-soft);
  }
  .review-item:last-child{border-bottom:none}
  .review-meta{
    display:flex;align-items:center;gap:12px;margin-bottom:8px;
  }
  .review-author{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.08em;
  }
  .review-date{
    font-family:var(--sans);font-size:12px;color:var(--gray-light);
  }
  .review-title{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.05em;margin-bottom:6px;
  }
  .review-body{
    font-family:var(--jp-sans);font-size:14px;line-height:1.8;color:var(--ink);
  }
  .related-items{
    display:grid;grid-template-columns:repeat(5,1fr);gap:0;
    border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
  }
  .related-item{
    padding:24px 16px;border-right:1px solid var(--line-soft);
    text-align:center;transition:background 0.15s;cursor:pointer;
  }
  .related-item:last-child{border-right:none}
  .related-item:hover{background:var(--off-white)}
  .related-img{
    width:100%;aspect-ratio:1/1;background:var(--cream);
    display:flex;align-items:center;justify-content:center;
    margin-bottom:12px;border:1px solid var(--line-soft);overflow:hidden;
  }
  .related-img img{width:100%;height:100%;object-fit:contain}
  .related-name{
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.05em;line-height:1.4;margin-bottom:4px;
    overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  }
  .related-price{
    font-family:var(--jp-sans);font-size:16px;font-weight:700;color:var(--ink);
  }
  .related-price .yen{font-size:12px;font-weight:500;margin-right:1px}
  .related-price .tax{font-size:11px;font-weight:400;color:var(--gray);margin-left:4px}
  .related-price .reduced-mark{
    display:inline-block;color:var(--red);font-weight:700;
    margin-left:3px;font-size:10px;vertical-align:super;
  }
  .recent-items{
    display:flex;gap:0;
    border-bottom:2px solid var(--red);
    max-width:1280px;margin:0 auto;
    overflow-x:auto;
  }
  .recent-item{
    min-width:150px;max-width:180px;padding:16px 12px;
    border-right:1px solid var(--line-soft);
    text-align:center;flex-shrink:0;transition:background 0.15s;cursor:pointer;
  }
  .recent-item:last-child{border-right:none}
  .recent-item:hover{background:var(--off-white)}
  .recent-img{
    width:100%;aspect-ratio:1/1;background:var(--cream);
    display:flex;align-items:center;justify-content:center;
    margin-bottom:8px;border:1px solid var(--line-soft);overflow:hidden;
  }
  .recent-img img{width:100%;height:100%;object-fit:contain}
  .recent-name{
    font-family:var(--jp-sans);font-size:12px;font-weight:500;
    line-height:1.4;margin-bottom:4px;
    overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  }
  .recent-price{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
  }
  .recent-price .yen{font-size:11px;font-weight:500}
  .recent-price .tax{font-size:10px;font-weight:400;color:var(--gray)}

  /* ==========================================================
     ⑨ フッター（TOPと同一）
     ========================================================== */
  footer{
    background:var(--black);color:var(--white);padding:80px 32px 32px;
  }
  @media (max-width:1279px){
    .pdp-gallery{padding:24px 20px}
    .pdp-info{padding:24px 20px}
    .pdp-name{font-size:22px}
    .pdp-price{font-size:30px}

    /* タブ */
    .pdp-tab-content{padding:32px 20px}
    .pdp-desc .taste-grid{gap:16px}

    /* レビュー */
    .pdp-reviews-section{padding:32px 20px}
    .pdp-review-stats{gap:24px;padding:20px}

    /* 関連商品 */
    .sec-head{padding:40px 20px 16px}
    .sec-head h2{font-size:30px}
    .related-items{grid-template-columns:repeat(3,1fr)}
    .related-item:nth-child(3){border-right:none}
    .related-item:nth-child(n+4){border-top:1px solid var(--line-soft)}

    /* フッター */
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .pdp-main{grid-template-columns:minmax(0,1fr)}
    .pdp-gallery{border-right:none;border-bottom:1px solid var(--line-soft);padding:16px;position:static}
    .pdp-thumbs{gap:6px}
    .pdp-thumb{width:64px;height:64px}
    .pdp-info{padding:20px 16px}
    .pdp-name{font-size:20px}
    .pdp-price{font-size:28px}
    .pdp-price .yen{font-size:18px}
    .pdp-price .tax{font-size:13px}
    .pdp-cart-btn{padding:16px 20px;font-size:16px}
    .pdp-fav-btn{padding:12px 20px;font-size:14px}

    /* タブ */
    .pdp-tab-nav{overflow-x:auto}
    .pdp-tab-btn{padding:14px 12px;font-size:13px;white-space:nowrap;min-width:auto}
    .pdp-tab-btn .en{font-size:9px}
    .pdp-tab-content{padding:24px 16px}
    .pdp-desc h3{font-size:16px}
    .pdp-desc p{font-size:14px}
    .pdp-desc .taste-grid{grid-template-columns:1fr;gap:20px}
    .pdp-spec-table th{width:100px;font-size:13px;padding:10px 12px}
    .pdp-spec-table td{font-size:13px;padding:10px 12px}

    /* レビュー */
    .pdp-reviews-section{padding:24px 16px}
    .pdp-reviews-head h2{font-size:24px}
    .pdp-review-stats{flex-direction:column;gap:20px;padding:16px}
    .pdp-review-avg{min-width:auto}
    .review-title{font-size:14px}
    .review-body{font-size:13px}

    /* 関連商品 */
    .sec-head{padding:32px 16px 14px;gap:10px;flex-wrap:wrap}
    .sec-head h2{font-size:24px}
    .sec-head .jp{font-size:15px}
    .related-items{grid-template-columns:repeat(2,1fr)}
    .related-item:nth-child(2n){border-right:none}
    .related-item:nth-child(n+3){border-top:1px solid var(--line-soft)}
    .related-item{padding:16px 12px}
    .related-name{font-size:13px}
    .related-price{font-size:15px}

    /* 最近チェック */
    .recent-item{min-width:130px;max-width:150px;padding:12px 10px}

    /* フッター */
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: cart
     ========================================================== */

  .cart-page-header{
    max-width:1280px;margin:0 auto;
    padding:40px 32px 32px;
    border-bottom:2px solid var(--red);
  }
  .cart-page-header-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .cart-page-header h1{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:42px;line-height:1.1;letter-spacing:-0.01em;
  }
  .step-bar{
    max-width:1280px;margin:0 auto;
    padding:24px 32px;
    border-bottom:1px solid var(--line-soft);
    display:flex;justify-content:center;align-items:center;gap:0;
  }
  .step{
    display:flex;align-items:center;gap:10px;
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    letter-spacing:0.08em;color:var(--gray-light);
  }
  .step.active{color:var(--red);font-weight:700}
  .step.done{color:var(--ink)}
  .step-num{
    width:28px;height:28px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:12px;font-weight:700;
    border:2px solid var(--gray-light);color:var(--gray-light);
  }
  .step.active .step-num{background:var(--red);color:var(--white);border-color:var(--red)}
  .step.done .step-num{background:#F4CDD2;color:var(--red);border-color:#E1A6AD}
  .step-arrow{
    width:32px;text-align:center;
    font-family:var(--sans);font-size:14px;color:var(--gray-light);
  }
  /* ステップ間の連結線（Shopping/login・nonmember等のグローバルstep-bar用。
     index/confirm/complete は各Twigのインライン<style>が優先される） */
  .step-line{flex:1;height:1px;background:var(--line-soft);min-width:32px;margin:0 8px}
  /* ログイン認証エラー表示枠（Shopping/login・Mypage/login用） */
  .form-error-box{
    margin:0 0 20px;padding:12px 16px;
    background:#fff5f5;border:1px solid var(--red);border-radius:4px;
  }
  .form-error-box p{
    margin:0;font-family:var(--jp-sans);font-size:13px;line-height:1.6;color:var(--red);
  }
  .cart-layout{
    display:grid;grid-template-columns:1fr 380px;gap:0;
    max-width:1280px;margin:0 auto;
    min-height:400px;
  }
  .cart-items{padding:32px 32px 32px 32px;border-right:1px solid var(--line-soft)}

  .cart-item{
    display:grid;grid-template-columns:120px 1fr auto;gap:20px;
    padding:24px 0;border-bottom:1px solid var(--line-soft);
    align-items:start;
  }
  .cart-item:first-child{padding-top:0}
  .cart-item:last-child{border-bottom:none}

  /* 商品画像 */
  .cart-item-img{
    width:120px;height:120px;background:var(--cream);
    overflow:hidden;flex-shrink:0;
  }
  .cart-item-img img{width:100%;height:100%;object-fit:contain}

  /* 商品情報 */
  .cart-item-info{display:flex;flex-direction:column;gap:4px}
  .cart-item-cat{
    font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.2em;color:var(--gray-light);
  }
  .cart-item-name{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.05em;line-height:1.4;
  }
  .cart-item-name a{transition:color 0.15s}
  .cart-item-name a:hover{color:var(--red)}
  .cart-item-spec{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);
    margin-top:2px;
  }
  .cart-item-price{
    font-family:var(--jp-sans);font-size:16px;font-weight:900;
    margin-top:8px;
  }
  .cart-item-price .yen{font-size:12px;font-weight:700;margin-right:1px}
  .cart-item-price .tax{font-size:11px;font-weight:400;color:var(--gray);margin-left:4px}
  .cart-item-price .reduced-mark,
  .free-gift-mark .reduced-mark{
    display:inline-block;color:var(--red);font-weight:700;
    margin-left:4px;font-size:11px;vertical-align:super;
  }
  .cart-tax-note{
    margin-top:12px;padding:10px 14px;
    background:var(--off-white,#F5F4F0);border:1px dashed var(--line-soft);
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);line-height:1.7;
  }
  .cart-tax-note strong{color:var(--red);font-weight:700}

  /* 数量・削除 */
  .cart-item-actions{display:flex;flex-direction:column;align-items:flex-end;gap:12px}
  .qty-control{
    display:flex;align-items:center;border:1px solid var(--line-soft);
  }
  .qty-btn{
    width:36px;height:36px;display:flex;align-items:center;justify-content:center;
    font-size:18px;font-weight:700;color:var(--gray);
    transition:all 0.15s;
  }
  .qty-btn:hover{background:var(--off-white);color:var(--red)}
  .qty-input{
    width:48px;height:36px;text-align:center;border:none;
    border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    outline:none;
  }
  .cart-item-remove{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);
    transition:color 0.15s;padding:4px 0;
  }
  .cart-item-remove:hover{color:var(--red)}
  .cart-item-subtotal{
    font-family:var(--jp-sans);font-size:14px;font-weight:900;
    color:var(--ink);margin-top:4px;text-align:right;
  }
  .cart-item-subtotal .yen{font-size:11px;font-weight:700;margin-right:1px}

  /* — 右カラム：注文サマリー — */
  .cart-summary{
    padding:32px;background:var(--off-white);
    position:sticky;top:140px;align-self:start;
  }
  .cart-summary-title{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:20px;
    padding-bottom:12px;border-bottom:2px solid var(--red);
  }
  .cart-summary-row{
    display:flex;justify-content:space-between;align-items:center;
    font-family:var(--jp-sans);font-size:14px;
    padding:10px 0;border-bottom:1px solid var(--line-soft);
  }
  .cart-summary-row .label{color:var(--gray);font-weight:500}
  .cart-summary-row .value{font-weight:700;text-align:right}
  .cart-summary-row.total{
    border-bottom:none;padding:16px 0 0;margin-top:8px;
    border-top:2px solid var(--red);
  }
  .cart-summary-row.total .label{
    font-size:16px;font-weight:700;color:var(--ink);
  }
  .cart-summary-row.total .value{
    font-size:24px;font-weight:900;color:var(--red);
  }
  .cart-summary-row.total .value .yen{font-size:16px;margin-right:2px}
  .cart-summary-row.total .value .tax{font-size:12px;font-weight:400;color:var(--gray);margin-left:4px}
  /* 獲得予定ポイント（合計直下） */
  .cart-summary-row.earn-points{
    border-bottom:none;padding:8px 0 0;font-size:13px;
    color:var(--gray);
  }
  .cart-summary-row.earn-points .label{color:var(--gray);font-weight:500}
  .cart-summary-row.earn-points .value{
    color:#8B6914;font-weight:700;background:#FFF9E6;
    padding:2px 8px;border-radius:3px;border:1px solid var(--gold,#D4A847);
    font-size:12px;
  }
  .cart-summary-row.earn-points .value strong{
    color:var(--gold,#D4A847);font-family:var(--sans);
    font-size:13px;margin-right:1px;
  }
  .free-ship-bar{
    margin:20px 0;padding:14px 16px;
    background:var(--white);border:1px solid var(--line-soft);
  }
  .free-ship-bar-text{
    font-family:var(--jp-sans);font-size:12px;font-weight:500;
    color:var(--gray);margin-bottom:8px;text-align:center;
  }
  .free-ship-bar-text strong{color:var(--red);font-weight:900}
  .free-ship-progress{
    width:100%;height:6px;background:var(--line-soft);
    border-radius:3px;overflow:hidden;
  }
  .free-ship-progress-fill{
    height:100%;background:var(--red);border-radius:3px;
    transition:width 0.3s;
  }
  .free-ship-bar-msg{
    font-family:var(--jp-sans);font-size:12px;color:var(--green);
    font-weight:700;text-align:center;margin-top:8px;
    display:none; /* 10,000円以上でdisplay:blockに */
    animation:fadeInUp 0.3s ease;
  }
  .free-ship-bar-msg.show{display:block}
  /* 達成時はバー全体を緑系に */
  .free-ship-bar.achieved{background:#F1F8F2;border-color:var(--green)}
  .free-ship-bar.achieved .free-ship-progress-fill{background:var(--green)}
  @keyframes fadeInUp{
    from{opacity:0;transform:translateY(4px)}
    to{opacity:1;transform:translateY(0)}
  }
  .qty-btn:disabled{
    color:var(--line-soft);cursor:not-allowed;
    background:transparent;
  }
  .qty-btn:disabled:hover{
    background:transparent;color:var(--line-soft);
  }
  .qty-stock-warn{
    font-family:var(--jp-sans);font-size:10px;color:var(--red);
    font-weight:500;text-align:right;margin-top:4px;
    display:none;
  }
  .qty-stock-warn.show{display:block}

  /* ===== お気に入りに移動ボタン ===== */
  .cart-item-action-row{
    display:flex;gap:12px;align-items:center;
    font-family:var(--jp-sans);font-size:12px;
  }
  .cart-item-action-row .sep{color:var(--line-soft)}
  .cart-item-fav{
    color:var(--gray);transition:color 0.15s;padding:4px 0;
    display:inline-flex;align-items:center;gap:4px;
  }
  .cart-item-fav:hover{color:var(--red)}
  .cart-item-fav svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.8}

  /* ===== クーポン入力欄 ===== */
  .coupon-section{
    margin:20px 0 0;padding:14px;
    background:var(--white);border:1px dashed var(--line-soft);
  }
  .coupon-toggle{
    display:flex;justify-content:space-between;align-items:center;
    cursor:pointer;font-family:var(--jp-sans);font-size:13px;
    font-weight:700;color:var(--ink);
  }
  .coupon-toggle .arrow{
    transition:transform 0.2s;font-size:11px;color:var(--gray);
  }
  .coupon-section.open .coupon-toggle .arrow{transform:rotate(180deg)}
  .coupon-form{
    display:none;margin-top:12px;
    flex-direction:column;gap:8px;
  }
  .coupon-section.open .coupon-form{display:flex}
  .coupon-input-row{display:flex;gap:6px}
  .coupon-input{
    flex:1;padding:8px 10px;
    border:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:13px;
    outline:none;text-transform:uppercase;letter-spacing:0.05em;
  }
  .coupon-input:focus{border-color:var(--red)}
  .coupon-apply{
    padding:0 14px;background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    letter-spacing:0.08em;transition:background 0.15s;
  }
  .coupon-apply:hover{background:var(--red)}
  .coupon-msg{
    font-family:var(--jp-sans);font-size:11px;line-height:1.5;
    padding:6px 8px;border-radius:2px;display:none;
  }
  .coupon-msg.show{display:block}
  .coupon-msg.ok{background:#F1F8F2;color:var(--green)}
  .coupon-msg.ng{background:var(--red-light);color:var(--red-dark)}
  .coupon-hint{
    font-family:var(--jp-sans);font-size:10px;color:var(--gray-light);
    line-height:1.5;
  }
  .coupon-hint code{
    font-family:var(--sans);background:var(--off-white);
    padding:1px 4px;font-size:10px;
  }
  .delivery-section{
    margin:16px 0 0;padding:14px;
    background:var(--white);border:1px solid var(--line-soft);
  }
  .delivery-label{
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    color:var(--ink);margin-bottom:8px;display:flex;align-items:center;gap:6px;
  }
  .delivery-label svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8}
  .delivery-select{
    width:100%;padding:8px 10px;
    border:1px solid var(--line-soft);background:var(--white);
    font-family:var(--jp-sans);font-size:13px;
    outline:none;cursor:pointer;
  }
  .delivery-select:focus{border-color:var(--red)}
  .delivery-note{
    font-family:var(--jp-sans);font-size:10px;color:var(--gray-light);
    margin-top:6px;line-height:1.5;
  }
  .cart-summary-row.discount{
    color:var(--red);
  }
  .cart-summary-row.discount .label{color:var(--red);font-weight:700}
  .cart-summary-row.discount .value{color:var(--red);font-weight:900}
  .cart-summary-row.hidden{display:none}

  /* ===== 空状態UI（カート0件） ===== */
  .cart-empty{
    display:none;text-align:center;padding:80px 32px;
    max-width:1280px;margin:0 auto;
  }
  .cart-empty.show{display:block}
  .cart-empty-icon{margin:0 auto 24px;width:80px;height:80px;color:var(--gray-light)}
  .cart-empty-icon svg{width:80px;height:80px;stroke:currentColor;fill:none;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
  .cart-empty-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:28px;line-height:1.2;margin-bottom:12px;color:var(--ink);
  }
  .cart-empty-text{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
    line-height:1.8;margin-bottom:32px;
  }
  .cart-empty-cta{
    display:inline-flex;align-items:center;gap:8px;
    padding:14px 32px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.08em;border:2px solid var(--red);
    transition:all 0.2s;
  }
  .cart-empty-cta:hover{background:var(--red-dark);border-color:var(--red-dark)}
  .cart-empty-cta svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}

  /* ===== トースト通知 ===== */
  .toast{
    position:fixed;bottom:32px;left:50%;transform:translateX(-50%) translateY(20px);
    background:var(--red);color:var(--white);
    padding:14px 24px;border-radius:4px;
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    letter-spacing:0.05em;
    box-shadow:0 4px 16px rgba(0,0,0,0.2);
    z-index:1000;opacity:0;pointer-events:none;
    transition:opacity 0.25s ease, transform 0.25s ease;
    display:flex;align-items:center;gap:10px;
    max-width:90vw;
  }
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
  .toast svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;flex-shrink:0}
  .toast.success svg{color:var(--green)}
  .toast.info svg{color:var(--white)}

  /* カート行フェードアウト用 */
  .cart-item.removing{
    transition:opacity 0.3s ease, transform 0.3s ease, max-height 0.4s ease, padding 0.4s ease, margin 0.4s ease;
    opacity:0;transform:translateX(-20px);
    max-height:0;padding-top:0;padding-bottom:0;
    overflow:hidden;border-bottom:none;
  }
  .cart-cta{margin-top:24px;display:flex;flex-direction:column;gap:10px}
  .btn-primary{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:16px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);
    transition:all 0.2s;
  }
  .btn-primary:hover{background:var(--red-dark);border-color:var(--red-dark)}
  .btn-secondary{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:14px;
    background:var(--white);color:var(--ink);
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.08em;border:1px solid var(--line-soft);
    transition:all 0.2s;
  }
  .btn-secondary:hover{border-color:var(--red);color:var(--red)}

  /* 注意書き */
  .cart-notes{
    margin-top:20px;padding-top:16px;border-top:1px solid var(--line-soft);
  }
  .cart-notes li{
    font-family:var(--jp-sans);font-size:11px;color:var(--gray);
    line-height:1.7;margin-bottom:4px;list-style:none;
    padding-left:1.2em;text-indent:-1.2em;
  }
  .cart-notes li::before{content:'※';margin-right:0.3em}

  /* ==========================================================
     ⑥ おすすめ商品（カート下部）
     ========================================================== */
  .cart-recommend{
    max-width:1280px;margin:0 auto;
    padding:48px 32px;border-top:2px solid var(--red);
  }
  .cart-recommend-title{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:6px;
  }
  .cart-recommend-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:28px;line-height:1.1;margin-bottom:24px;
  }
  .recommend-grid{
    display:grid;grid-template-columns:repeat(4,1fr);gap:20px;
  }
  .recommend-card{
    border:1px solid var(--line-soft);overflow:hidden;
    display:flex;flex-direction:column;cursor:pointer;
    transition:all 0.15s;
  }
  .recommend-card:hover img{transform:scale(1.05)}
  .recommend-card-img{
    width:100%;aspect-ratio:1/1;background:var(--cream);
    overflow:hidden;
  }
  .recommend-card-img img{
    width:100%;height:100%;object-fit:contain;
    transition:transform 0.3s;
  }
  .recommend-card-body{padding:14px;flex:1;display:flex;flex-direction:column}
  .recommend-card-name{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;line-height:1.4;margin-bottom:6px;
    overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  }
  .recommend-card-price{
    font-family:var(--jp-sans);font-size:15px;font-weight:900;margin-top:auto;
  }
  .recommend-card-price .yen{font-size:11px;font-weight:700;margin-right:1px}
  .recommend-card-price .tax{font-size:10px;font-weight:400;color:var(--gray);margin-left:3px}

  /* ==========================================================
     ⑦ フッター（共通）
     ========================================================== */
  footer{background:var(--red);color:var(--white);padding:80px 32px 32px}
  .foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
  .foot-brand .mark{display:flex;align-items:center;gap:14px;margin-bottom:14px}
  .foot-icon{height:56px;width:auto;display:block}
  .foot-logo-text{height:44px;width:auto;display:block}
  .foot-brand .desc{font-family:var(--jp-serif);font-weight:400;font-size:14px;line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px}
  .foot-contact{margin-top:24px;padding-top:20px;border-top:1px solid #333;font-family:var(--jp-sans)}
  .foot-contact .tel-label{font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px}
  .foot-contact .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--white)}
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.25em;margin-bottom:20px;color:var(--white)}
  .foot-col h4 .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:4px}
  .foot-col ul{list-style:none}
  .foot-col li{margin-bottom:12px}
  .foot-col li.foot-sep{list-style:none;padding:0;margin:8px 0 14px;height:1px;background:rgba(255,255,255,.12);line-height:0}
  .foot-col li a{font-family:var(--jp-sans);font-size:14px;font-weight:400;letter-spacing:0.08em;color:#CCC}
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;flex-wrap:wrap;gap:16px;max-width:1280px;margin:0 auto;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:0.2em;color:var(--gray-light)}


  /* ==========================================================
     レスポンシブ — タブレット（768px〜1279px）
     ========================================================== */
  @media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}
    .gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .cart-page-header{padding:32px 20px 28px}
    .step-bar{padding:20px 20px}
    .cart-layout{grid-template-columns:1fr 320px}
    .cart-items{padding:24px 20px}
    .cart-summary{padding:24px 20px}
    .cart-recommend{padding:36px 20px}
    .recommend-grid{grid-template-columns:repeat(3,1fr);gap:16px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .cart-page-header{padding:24px 16px 20px}
    .cart-page-header h1{font-size:30px}
    .step-bar{padding:16px 16px;gap:0}
    .step{font-size:11px;gap:6px}
    .step-num{width:24px;height:24px;font-size:10px}
    .step-arrow{width:20px;font-size:12px}
    /* モバイルは1カラムに */
    .cart-layout{grid-template-columns:1fr}
    .cart-items{padding:20px 16px;border-right:none;border-bottom:1px solid var(--line-soft)}
    .cart-item{grid-template-columns:90px 1fr;gap:14px}
    .cart-item-img{width:90px;height:90px}
    .cart-item-actions{flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px 16px;grid-column:1 / -1;margin-top:8px;justify-content:space-between}
    .cart-item-actions .qty-control{order:1}
    .cart-item-actions .cart-item-subtotal{order:2;margin-left:auto;text-align:right}
    .cart-item-actions .qty-stock-warn{order:3;width:100%}
    .cart-item-actions .cart-item-action-row{order:4;width:100%;justify-content:flex-end}
    .coupon-section,.delivery-section{padding:12px}
    .toast{bottom:16px;font-size:12px;padding:12px 18px}
    .cart-summary{position:static;padding:20px 16px}
    .cart-recommend{padding:32px 16px}
    .recommend-grid{grid-template-columns:repeat(2,1fr);gap:12px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: checkout
     ========================================================== */

  .checkout-header{
    max-width:1280px;margin:0 auto;
    padding:40px 32px 32px;
    border-bottom:2px solid var(--red);
  }
  .checkout-header-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .checkout-header h1{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:42px;line-height:1.1;letter-spacing:-0.01em;
  }
  .checkout-layout{
    display:grid;grid-template-columns:1fr 380px;gap:0;
    max-width:1280px;margin:0 auto;
    min-height:600px;
  }
  .checkout-form{padding:40px 32px;border-right:1px solid var(--line-soft)}

  /* フォーム共通部品 */
  .form-section{margin-bottom:40px}
  .form-section:last-child{margin-bottom:0}
  .form-section-title{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:6px;
  }
  .form-section-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:24px;line-height:1.2;margin-bottom:20px;
    padding-bottom:12px;border-bottom:2px solid var(--red);
  }
  .radio-card-group{display:flex;flex-direction:column;gap:12px}
  .radio-card{
    display:flex;align-items:flex-start;gap:14px;
    padding:16px 20px;
    border:2px solid var(--line-soft);
    cursor:pointer;transition:all 0.15s;
    position:relative;
  }
  .radio-card:hover{border-color:var(--kraft)}
  .radio-card.selected{border-color:var(--red);background:var(--red-light)}
  .radio-card input[type="radio"]{
    appearance:none;-webkit-appearance:none;
    width:20px;height:20px;border:2px solid var(--gray-light);
    border-radius:50%;flex-shrink:0;margin-top:2px;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
  .radio-card input[type="radio"]:checked{border-color:var(--red)}
  .radio-card input[type="radio"]:checked::after{
    content:'';position:absolute;top:3px;left:3px;
    width:10px;height:10px;background:var(--red);border-radius:50%;
  }
  .radio-card-content{flex:1}
  .radio-card-label{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.05em;margin-bottom:4px;
  }
  .radio-card-detail{
    font-family:var(--jp-sans);font-size:13px;color:var(--gray);
    line-height:1.6;
  }
  .radio-card-badge{
    display:inline-block;padding:2px 8px;
    font-family:var(--jp-sans);font-size:10px;font-weight:700;
    letter-spacing:0.1em;margin-left:8px;
    border-radius:2px;
  }
  .radio-card-badge.default{background:var(--red);color:var(--white)}
  .radio-card-badge.new{background:var(--red);color:var(--white)}

  /* アドレスカード内の変更リンク */
  .radio-card-edit{
    font-family:var(--jp-sans);font-size:12px;color:var(--red);
    font-weight:700;margin-top:8px;display:inline-block;
    transition:color 0.15s;
  }
  .radio-card-edit:hover{color:var(--red-dark)}

  /* 新しいお届け先追加ボタン */
  .add-address-btn{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:14px;
    border:2px dashed var(--line-soft);
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.08em;color:var(--gray);
    transition:all 0.15s;
  }
  .add-address-btn:hover{border-color:var(--red);color:var(--red)}
  .add-address-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}

  /* セレクトボックス・テキストエリア */
  .form-row{display:flex;gap:16px;margin-bottom:16px}
  .form-row:last-child{margin-bottom:0}
  .form-group{flex:1;display:flex;flex-direction:column;gap:6px}
  .form-label{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);
  }
  .form-label .optional{
    font-size:11px;font-weight:400;color:var(--gray);margin-left:6px;
  }
  .form-select{
    width:100%;padding:12px 14px;
    border:2px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:14px;
    background:var(--white);color:var(--ink);
    appearance:none;-webkit-appearance:none;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat:no-repeat;
    background-position:right 14px center;
    cursor:pointer;transition:border-color 0.15s;
  }
  .form-select:focus{border-color:var(--red)}
  /* テキスト入力（カード番号・名入れ等）— form-select と同じ寸法に統一 */
  .form-input{
    width:100%;padding:12px 14px;
    border:2px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:14px;
    background:var(--white);color:var(--ink);
    line-height:1.5;
    transition:border-color 0.15s;
    box-sizing:border-box;
  }
  .form-input:focus{border-color:var(--red);outline:none}
  .form-input::placeholder{color:var(--gray-light)}
  .form-textarea{
    width:100%;padding:12px 14px;
    border:2px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:14px;
    line-height:1.7;resize:vertical;min-height:100px;
    transition:border-color 0.15s;
  }
  .form-textarea:focus{border-color:var(--red)}
  .form-textarea::placeholder{color:var(--gray-light)}

  /* 文字数カウンター（お問い合わせ欄用） */
  .textarea-counter{
    display:flex;justify-content:flex-end;
    margin-top:4px;font-family:var(--jp-sans);
    font-size:12px;color:var(--gray);letter-spacing:0.02em;
  }
  .textarea-counter.is-over{color:var(--red);font-weight:700}

  /* ===== ポイント利用欄（実EC shop.yagimilk.jp 準拠 1%付与 / 1pt=1円） ===== */
  .co-points{
    margin:16px 0 12px;padding:14px;
    background:var(--red-light);border:1px solid var(--red);border-radius:6px;
  }
  .co-points-head{
    display:flex;justify-content:space-between;align-items:baseline;
    margin-bottom:10px;
  }
  .co-points-title{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--red);
  }
  .co-points-avail{
    font-family:var(--jp-sans);font-size:12px;color:var(--ink);
  }
  .co-points-avail strong{
    font-family:var(--jp-serif);font-size:16px;color:var(--red);
    font-weight:700;margin:0 2px;
  }
  .co-points-row{display:flex;gap:6px;align-items:center}
  .co-points-input{
    flex:1;padding:8px 10px;
    font-family:var(--jp-sans);font-size:13px;text-align:right;
    background:#fff;border:1.5px solid var(--line-soft);
    border-radius:3px;transition:border-color 0.15s;
  }
  .co-points-input:focus{border-color:var(--red);outline:none}
  .co-points-unit{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);padding:0 4px;
  }
  .co-points-allbtn{
    padding:0 10px;font-family:var(--jp-sans);font-size:11px;font-weight:700;
    background:var(--red);color:#fff;border:none;border-radius:3px;
    cursor:pointer;white-space:nowrap;transition:background 0.15s;
  }
  .co-points-allbtn:hover{background:var(--red)}
  .co-points-msg{
    display:none;margin-top:8px;padding:6px 10px;
    font-family:var(--jp-sans);font-size:12px;border-radius:3px;
  }
  .co-points-msg.show{display:block}
  .co-points-msg.ng{background:#fff;color:var(--red-dark);border:1px solid var(--red)}
  .co-points-earn{
    margin-top:10px;padding-top:10px;
    border-top:1px dashed var(--line-soft);
    font-family:var(--jp-sans);font-size:11px;color:var(--gray);
  }
  .co-points-earn strong{color:var(--red);font-weight:700}

  /* ===== 右カラム用クーポン入力欄（checkout_coupon） ===== */
  .co-coupon{
    margin:16px 0 12px;padding:12px;
    background:var(--cream,#F7F1E3);
    border:1px solid var(--kraft,#D9C9A8);border-radius:6px;
  }
  .co-coupon-title{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);margin-bottom:8px;
  }
  .co-coupon-row{display:flex;gap:6px}
  .co-coupon-input{
    flex:1;padding:8px 10px;
    font-family:var(--jp-sans);font-size:13px;
    background:#fff;border:1.5px solid var(--line-soft);
    border-radius:3px;transition:border-color 0.15s;
  }
  .co-coupon-input:focus{border-color:var(--red);outline:none}
  .co-coupon-apply{
    padding:0 14px;
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    background:var(--red);color:#fff;border:none;border-radius:3px;
    cursor:pointer;transition:background 0.15s;
  }
  .co-coupon-apply:hover{background:var(--red)}
  .co-coupon-msg{
    display:none;margin-top:8px;padding:8px 10px;
    font-family:var(--jp-sans);font-size:12px;border-radius:3px;
  }
  .co-coupon-msg.show{display:block}
  .co-coupon-msg.ok{background:#F1F8F2;color:var(--green)}
  .co-coupon-msg.ng{background:var(--red-light);color:var(--red-dark)}
  .co-coupon-applied{
    display:flex;justify-content:space-between;align-items:center;
    margin-top:8px;padding:6px 10px;
    background:#fff;border:1px dashed var(--green);
    font-family:var(--jp-sans);font-size:12px;color:var(--green);
  }
  .co-coupon-remove{
    font-family:var(--jp-sans);font-size:11px;color:var(--gray);
    background:none;border:none;cursor:pointer;text-decoration:underline;
  }
  .co-coupon-remove:hover{color:var(--red)}

  /* のし・ラッピングオプション */
  .checkbox-group{display:flex;flex-direction:column;gap:12px}
  .checkbox-item{
    display:flex;align-items:flex-start;gap:10px;
    cursor:pointer;
  }
  .checkbox-item input[type="checkbox"]{
    appearance:none;-webkit-appearance:none;
    width:20px;height:20px;border:2px solid var(--gray-light);
    border-radius:3px;flex-shrink:0;margin-top:2px;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
  .checkbox-item input[type="checkbox"]:checked{
    background:var(--red);border-color:var(--red);
  }
  .checkbox-item input[type="checkbox"]:checked::after{
    content:'✓';position:absolute;top:-1px;left:3px;
    color:var(--white);font-size:14px;font-weight:700;
  }
  .checkbox-label{
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    line-height:1.5;
  }
  .checkbox-desc{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);
    margin-top:2px;
  }
  .checkout-summary{
    padding:32px;background:var(--off-white);
    position:sticky;top:140px;align-self:start;
  }
  .checkout-summary-title{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:20px;
    padding-bottom:12px;border-bottom:2px solid var(--red);
  }
  .mini-cart-item{
    display:flex;gap:12px;align-items:start;
    padding:12px 0;border-bottom:1px solid var(--line-soft);
  }
  .mini-cart-item:first-child{padding-top:0}
  .mini-cart-item:last-child{border-bottom:none}
  .mini-cart-img{
    width:56px;height:56px;background:var(--cream);
    overflow:hidden;flex-shrink:0;
  }
  .mini-cart-img img{width:100%;height:100%;object-fit:contain}
  .mini-cart-info{flex:1}
  .mini-cart-name{
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    line-height:1.4;margin-bottom:2px;
    overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  }
  .mini-cart-qty{font-family:var(--jp-sans);font-size:11px;color:var(--gray)}
  .mini-cart-price{
    font-family:var(--jp-sans);font-size:13px;font-weight:900;
    white-space:nowrap;flex-shrink:0;
  }
  .mini-cart-price .yen{font-size:10px;font-weight:700;margin-right:1px}

  /* 合計行 */
  .summary-row{
    display:flex;justify-content:space-between;align-items:center;
    font-family:var(--jp-sans);font-size:14px;
    padding:10px 0;border-bottom:1px solid var(--line-soft);
  }
  .summary-row .label{color:var(--gray);font-weight:500}
  .summary-row .value{font-weight:700;text-align:right}
  .summary-row.total{
    border-bottom:none;padding:16px 0 0;margin-top:8px;
    border-top:2px solid var(--red);
  }
  .summary-row.total .label{font-size:16px;font-weight:700;color:var(--ink)}
  .summary-row.total .value{font-size:24px;font-weight:900;color:var(--red)}
  .summary-row.total .value .yen{font-size:16px;margin-right:2px}
  .summary-row.total .value .tax{font-size:12px;font-weight:400;color:var(--gray);margin-left:4px}

  /* 支払い方法：クレジットカード／銀行振込 の2択（2026-04現在）
     ラジオ選択 + 方法ごとの詳細パネル（payment-panel）で切替表示 */
  .payment-panel{margin-top:4px}
  .payment-panel[hidden]{display:none}

  /* 銀行振込選択時の案内パネル */
  .payment-bank-info{
    margin-top:8px;padding:20px;background:var(--cream,#F7F1E3);
    border:1px solid var(--kraft,#D9C9A8);border-radius:6px;
    font-family:var(--jp-sans);font-size:14px;line-height:1.8;
  }
  .payment-bank-info p{margin:0 0 10px}
  .payment-bank-info p:last-child{margin-bottom:0}
  .payment-bank-info strong{color:var(--red)}
  .payment-bank-info .note{
    margin-top:12px;padding-top:12px;border-top:1px dashed var(--line-soft);
    font-size:12px;color:var(--gray);
  }
  .required{
    display:inline-block;margin-left:6px;padding:2px 6px;
    background:var(--red);color:#fff;border-radius:2px;
    font-family:var(--jp-sans);font-size:10px;font-weight:700;letter-spacing:0.05em;
  }
  .gift-extra{
    margin-top:16px;padding:20px;background:var(--cream,#F7F1E3);
    border:1px solid var(--line-soft);border-radius:6px;
  }
  .gift-extra[hidden]{display:none}

  /* 入力エラー表示 */
  .form-input.error,
  .form-select.error{border-color:var(--red);background:#fff5f5}
  .form-error{
    display:block;margin-top:4px;font-family:var(--jp-sans);
    font-size:12px;color:var(--red);
  }
  .checkout-cta{margin-top:24px;display:flex;flex-direction:column;gap:10px}
  .btn-primary{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:16px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);
    transition:all 0.2s;cursor:pointer;
  }
  .btn-primary:disabled{opacity:.55;cursor:not-allowed;background:var(--gray);border-color:var(--gray)}
  .btn-primary.is-loading{cursor:wait;opacity:.85}
  .btn-back{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:14px;
    background:var(--white);color:var(--ink);
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.08em;border:1px solid var(--line-soft);
    transition:all 0.2s;
  }
  .btn-back:hover{border-color:var(--red);color:var(--red)}

  /* カート編集リンク */
  .summary-edit{
    display:block;text-align:center;
    margin-top:12px;
    font-family:var(--jp-sans);font-size:12px;font-weight:500;
    color:var(--gray);transition:color 0.15s;
  }
  .summary-edit:hover{color:var(--red)}

  /* ==========================================================
     フッター（共通）
     ========================================================== */
  footer{background:var(--red);color:var(--white);padding:80px 32px 32px}
  .foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
  .foot-brand .mark{display:flex;align-items:center;gap:14px;margin-bottom:14px}
  .foot-icon{height:56px;width:auto;display:block}
  .foot-logo-text{height:44px;width:auto;display:block}
  .foot-brand .desc{font-family:var(--jp-serif);font-weight:400;font-size:14px;line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px}
  .foot-contact{margin-top:24px;padding-top:20px;border-top:1px solid #333;font-family:var(--jp-sans)}
  .foot-contact .tel-label{font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px}
  .foot-contact .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--white)}
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.25em;margin-bottom:20px;color:var(--white)}
  .foot-col h4 .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:4px}
  .foot-col ul{list-style:none}
  .foot-col li{margin-bottom:12px}
  .foot-col li a{font-family:var(--jp-sans);font-size:14px;font-weight:400;letter-spacing:0.08em;color:#CCC}
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;flex-wrap:wrap;gap:16px;max-width:1280px;margin:0 auto;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:0.2em;color:var(--gray-light)}


  /* ==========================================================
     レスポンシブ — タブレット（768px〜1279px）
     ========================================================== */
  @media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}
    .gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .checkout-header{padding:32px 20px 28px}
    .step-bar{padding:20px 20px}
    .checkout-layout{grid-template-columns:1fr 320px}
    .checkout-form{padding:32px 20px}
    .checkout-summary{padding:24px 20px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .checkout-header{padding:24px 16px 20px}
    .checkout-header h1{font-size:30px}
    .step-bar{padding:16px 16px;gap:0}
    .step{font-size:11px;gap:6px}
    .step-num{width:24px;height:24px;font-size:10px}
    .step-arrow{width:20px;font-size:12px}
    /* モバイルは1カラム（フォームが上・サマリーが下） */
    .checkout-layout{grid-template-columns:1fr}
    .checkout-form{padding:24px 16px;border-right:none}
    .checkout-summary{position:static;padding:20px 16px}
    .form-row{flex-direction:column;gap:12px}
    .radio-card{padding:14px 16px;gap:10px}
    .radio-card-label{font-size:14px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }
  .checkout-tax-note{font-size:11px;line-height:1.6;color:#888;margin:10px 0 0;padding-top:10px;border-top:1px dashed #eee}
  .checkout-tax-note span{color:var(--red,#a71414);font-weight:700}
  .foot-tax-note{font-size:11px;line-height:1.7;color:rgba(255,255,255,.55);padding:12px 20px;border-top:1px solid rgba(255,255,255,.08);margin:16px 0 0;text-align:center}
  .foot-legal{display:flex;gap:20px;flex-wrap:wrap}.foot-legal a{color:inherit;text-decoration:none;transition:opacity .2s}.foot-legal a:hover{opacity:.7}
  

  /* ==========================================================
     ページ固有: confirm
     ========================================================== */

  /* ===== ページヘッダー ===== */
  .confirm-header{
    max-width:1280px;margin:0 auto;
    padding:40px 32px 32px;
    border-bottom:2px solid var(--red);
  }
  .confirm-header-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .confirm-header h1{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:42px;line-height:1.1;letter-spacing:-0.01em;
  }
  .confirm-layout{
    display:grid;grid-template-columns:1fr 380px;gap:0;
    max-width:1280px;margin:0 auto;
    min-height:500px;
  }
  .confirm-detail{padding:40px 32px;border-right:1px solid var(--line-soft)}

  /* 確認セクション */
  .confirm-section{margin-bottom:36px}
  .confirm-section:last-child{margin-bottom:0}
  .confirm-section-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:6px;
  }
  .confirm-section-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:22px;line-height:1.2;margin-bottom:16px;
    padding-bottom:10px;border-bottom:2px solid var(--red);
    display:flex;justify-content:space-between;align-items:baseline;
  }
  .confirm-edit{
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    color:var(--red);transition:color 0.15s;
  }
  .confirm-edit:hover{color:var(--red-dark)}

  /* 確認テーブル（dl形式） */
  .confirm-dl{display:grid;grid-template-columns:140px 1fr;gap:0}
  .confirm-dl dt{
    padding:12px 0;border-bottom:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    color:var(--gray);
  }
  .confirm-dl dd{
    padding:12px 0;border-bottom:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    line-height:1.7;
  }
  .confirm-items{width:100%;border-collapse:collapse}
  .confirm-items th{
    padding:10px 12px;
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.2em;color:var(--gray);
    text-align:left;border-bottom:2px solid var(--red);
  }
  .confirm-items th:last-child{text-align:right}
  .confirm-items td{
    padding:14px 12px;
    font-family:var(--jp-sans);font-size:14px;
    border-bottom:1px solid var(--line-soft);
    vertical-align:middle;
  }
  .confirm-items td:last-child{text-align:right;font-weight:900;white-space:nowrap}
  .confirm-item-row{display:flex;align-items:center;gap:12px}
  .confirm-item-img{
    width:48px;height:48px;background:var(--cream);
    overflow:hidden;flex-shrink:0;
  }
  .confirm-item-img img{width:100%;height:100%;object-fit:contain}
  .confirm-item-name{
    font-size:13px;font-weight:700;line-height:1.4;
  }
  .confirm-item-spec{font-size:11px;color:var(--gray);margin-top:2px}

  /* — 右カラム：注文サマリー — */
  .confirm-summary{
    padding:32px;background:var(--off-white);
    position:sticky;top:140px;align-self:start;
  }
  .confirm-summary-title{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:20px;
    padding-bottom:12px;border-bottom:2px solid var(--red);
  }
  .tax-breakdown{
    margin-top:8px;padding:10px 12px;
    background:var(--off-white);
    border:1px dashed var(--line-soft);
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);
    line-height:1.7;
  }
  .tax-breakdown-title{
    font-weight:700;color:var(--ink);margin-bottom:4px;
    letter-spacing:0.08em;
  }
  .tax-breakdown-row{
    display:flex;justify-content:space-between;align-items:baseline;
    padding:2px 0;
  }
  .tax-breakdown-row .tx-label{}
  .tax-breakdown-row .tx-label .reduced{
    display:inline-block;background:var(--red);color:var(--white);
    font-size:10px;font-weight:700;padding:1px 5px;border-radius:2px;
    margin-right:6px;letter-spacing:0.05em;
  }
  .tax-breakdown-row .tx-value{font-weight:700;color:var(--ink)}
  .tax-breakdown-note{
    margin-top:4px;font-size:11px;color:var(--gray-light);
  }
  .reduced-mark{
    display:inline-block;color:var(--red);font-weight:700;
    margin-left:4px;font-size:11px;vertical-align:super;
  }
  .agree-row{
    display:flex;align-items:flex-start;gap:10px;
    margin-top:20px;padding:14px 16px;
    background:var(--cream,#F7F1E3);border:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:13px;line-height:1.7;color:var(--ink);
    cursor:pointer;
  }
  .agree-row input{margin-top:3px;flex-shrink:0;accent-color:var(--red);width:16px;height:16px}
  .agree-row a{color:var(--red);text-decoration:underline}

  .confirm-cta{margin-top:16px;display:flex;flex-direction:column;gap:10px}
  .btn-order{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:18px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:16px;font-weight:900;
    letter-spacing:0.12em;border:2px solid var(--red);
    transition:all 0.2s;cursor:pointer;
  }
  .btn-order:hover{background:var(--red-dark);border-color:var(--red-dark)}
  .btn-order:disabled{opacity:.4;cursor:not-allowed;background:var(--gray);border-color:var(--gray)}
  .btn-order.is-loading{cursor:wait;opacity:.85}

  /* 注文確定中フルスクリーンオーバーレイ */
  .order-overlay{
    position:fixed;inset:0;background:rgba(26,26,26,.85);color:#fff;
    display:none;align-items:center;justify-content:center;flex-direction:column;
    gap:24px;z-index:9998;
    font-family:var(--jp-sans);font-size:16px;letter-spacing:.1em;
  }
  .order-overlay.show{display:flex}
  .order-overlay .spinner{
    width:60px;height:60px;border:3px solid rgba(255,255,255,.2);
    border-top-color:#fff;border-radius:50%;
    animation:spin 0.9s linear infinite;
  }
  .confirm-notice{
    margin-top:20px;padding:14px 16px;
    background:var(--white);border:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:11px;color:var(--gray);
    line-height:1.7;
  }
  .confirm-notice strong{color:var(--ink);font-weight:700}

  /* ==========================================================
     フッター（共通）
     ========================================================== */
  footer{background:var(--red);color:var(--white);padding:80px 32px 32px}
  .foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
  .foot-brand .mark{display:flex;align-items:center;gap:14px;margin-bottom:14px}
  .foot-icon{height:56px;width:auto;display:block}
  .foot-logo-text{height:44px;width:auto;display:block}
  .foot-brand .desc{font-family:var(--jp-serif);font-weight:400;font-size:14px;line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px}
  .foot-contact{margin-top:24px;padding-top:20px;border-top:1px solid #333;font-family:var(--jp-sans)}
  .foot-contact .tel-label{font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px}
  .foot-contact .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--white)}
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.25em;margin-bottom:20px;color:var(--white)}
  .foot-col h4 .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:4px}
  .foot-col ul{list-style:none}
  .foot-col li{margin-bottom:12px}
  .foot-col li a{font-family:var(--jp-sans);font-size:14px;font-weight:400;letter-spacing:0.08em;color:#CCC}
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;flex-wrap:wrap;gap:16px;max-width:1280px;margin:0 auto;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:0.2em;color:var(--gray-light)}


  /* ==========================================================
     レスポンシブ — タブレット
     ========================================================== */
  @media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .confirm-header{padding:32px 20px 28px}
    .step-bar{padding:20px 20px}
    .confirm-layout{grid-template-columns:1fr 320px}
    .confirm-detail{padding:32px 20px}
    .confirm-summary{padding:24px 20px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .confirm-header{padding:24px 16px 20px}
    .confirm-header h1{font-size:30px}
    .step-bar{padding:16px 16px;gap:0}
    .step{font-size:11px;gap:6px}
    .step-num{width:24px;height:24px;font-size:10px}
    .step-arrow{width:20px;font-size:12px}
    /* モバイルは1カラム（確認情報が上・サマリーが下） */
    .confirm-layout{grid-template-columns:1fr}
    .confirm-detail{padding:24px 16px;border-right:none}
    .confirm-summary{position:static;padding:20px 16px}
    .confirm-dl{grid-template-columns:100px 1fr;gap:0}
    .confirm-dl dt,.confirm-dl dd{font-size:13px;padding:10px 0}
    .confirm-items th{font-size:10px;padding:8px 6px}
    .confirm-items td{padding:10px 6px;font-size:13px}
    .confirm-item-img{width:40px;height:40px}
    .confirm-item-name{font-size:12px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: complete
     ========================================================== */

  .complete-wrap{
    max-width:800px;margin:0 auto;
    padding:64px 32px 80px;
    text-align:center;
  }
  .complete-icon{
    width:80px;height:80px;
    margin:0 auto 28px;
    background:var(--red);border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    animation:popIn 0.4s ease-out;
  }
  .complete-icon svg{width:40px;height:40px;stroke:var(--white);fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
  @keyframes popIn{
    0%{transform:scale(0);opacity:0}
    60%{transform:scale(1.15)}
    100%{transform:scale(1);opacity:1}
  }
  .complete-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .complete-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:42px;line-height:1.1;letter-spacing:-0.01em;
    margin-bottom:16px;
  }
  .complete-message{
    font-family:var(--jp-sans);font-size:15px;color:var(--gray);
    line-height:2;margin-bottom:40px;
  }
  .complete-message strong{color:var(--ink);font-weight:700}

  /* 注文番号カード */
  .order-card{
    background:var(--off-white);padding:32px;
    margin-bottom:40px;text-align:center;
  }
  .order-card-label{
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .order-number-row{
    display:flex;align-items:center;justify-content:center;gap:12px;
    margin-bottom:16px;flex-wrap:wrap;
  }
  .order-number{
    font-family:var(--sans);font-size:32px;font-weight:900;
    letter-spacing:0.1em;color:var(--ink);
  }
  .order-copy-btn{
    display:inline-flex;align-items:center;gap:6px;
    padding:6px 12px;background:var(--white);
    border:1px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:12px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);cursor:pointer;
    transition:all .15s;
  }
  .order-copy-btn:hover{border-color:var(--red);color:var(--red)}
  .order-copy-btn.copied{background:#1f7a4d;border-color:#1f7a4d;color:#fff}
  .order-copy-btn.copied svg{display:none}
  .order-summary-mini{
    display:flex;justify-content:center;gap:32px;
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
  }
  .order-summary-mini .val{font-weight:900;color:var(--ink);margin-left:4px}
  .order-summary-mini .val.total{color:var(--red);font-size:18px}

  /* ポイントカード（獲得・保有ポイント表示） */
  .points-card{
    background:#FFF9E6;
    border:1px solid var(--gold);
    padding:24px 32px;
    margin-bottom:40px;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:24px;
    text-align:center;
  }
  .points-card-block{}
  .points-card-block + .points-card-block{
    border-left:1px dashed var(--gold);
    padding-left:24px;
  }
  .points-card-label{
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .points-card-value{
    font-family:var(--sans);font-size:28px;font-weight:900;
    letter-spacing:0.05em;color:var(--ink);
  }
  .points-card-value .pt{
    font-size:13px;font-weight:700;margin-left:4px;color:var(--gray);
  }
  .points-card-value.earn{color:var(--gold)}
  .points-card-note{
    font-family:var(--jp-sans);font-size:11px;color:var(--gray);
    margin-top:6px;line-height:1.6;
  }
  .complete-info{
    text-align:left;margin-bottom:40px;
    border:1px solid var(--line-soft);
  }
  .complete-info-title{
    padding:14px 20px;
    background:var(--red);color:var(--white);
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.3em;
  }
  .complete-info-body{padding:20px}
  .complete-info-body p{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
    line-height:1.9;margin-bottom:12px;
  }
  .complete-info-body p:last-child{margin-bottom:0}
  .complete-info-body strong{color:var(--ink);font-weight:700}

  /* CTAボタン群 */
  .complete-actions{
    display:flex;justify-content:center;gap:16px;
    flex-wrap:wrap;
  }
  .btn-complete{
    display:inline-flex;align-items:center;gap:8px;
    padding:14px 32px;
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.08em;
    transition:all 0.2s;
  }
  .btn-complete svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
  .btn-complete.primary{
    background:var(--red);color:var(--white);
    border:2px solid var(--red);
  }
  .btn-complete.primary:hover{background:var(--red-dark);border-color:var(--red-dark)}
  .btn-complete.secondary{
    background:var(--white);color:var(--ink);
    border:1px solid var(--line-soft);
  }
  .btn-complete.secondary:hover{border-color:var(--red);color:var(--red)}

  /* ==========================================================
     おすすめ商品
     ========================================================== */
  .complete-recommend{
    max-width:1280px;margin:0 auto;
    padding:48px 32px;border-top:2px solid var(--red);
  }
  .complete-recommend-title{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:6px;
  }
  .complete-recommend-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:28px;line-height:1.1;margin-bottom:24px;
  }
  .recommend-card-price .reduced-mark{
    display:inline-block;color:var(--red);font-weight:700;
    margin-left:3px;font-size:10px;vertical-align:super;
  }
  @media (max-width:1279px){
    .complete-wrap{padding:48px 20px 60px}
    .complete-recommend{padding:36px 20px}
    .recommend-grid{grid-template-columns:repeat(3,1fr);gap:16px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .complete-wrap{padding:40px 16px 48px}
    .complete-icon{width:64px;height:64px;margin-bottom:20px}
    .complete-icon svg{width:32px;height:32px}
    .complete-heading{font-size:30px}
    .complete-message{font-size:14px}
    .order-number{font-size:24px}
    .order-card{padding:20px 16px}
    .order-summary-mini{flex-direction:column;gap:8px;align-items:center}
    .points-card{grid-template-columns:1fr;gap:16px;padding:20px 16px}
    .points-card-block + .points-card-block{border-left:none;border-top:1px dashed var(--gold);padding-left:0;padding-top:16px}
    .points-card-value{font-size:24px}
    .complete-actions{flex-direction:column;gap:10px}
    .btn-complete{justify-content:center;width:100%}
    .complete-recommend{padding:32px 16px}
    .recommend-grid{grid-template-columns:repeat(2,1fr);gap:12px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: register
     ========================================================== */

  .reg-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .reg-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:36px;line-height:1.1;letter-spacing:-0.01em;
    margin-bottom:8px;
  }
  .reg-sub{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
    margin-bottom:36px;
  }
  .reg-steps{
    display:flex;align-items:center;justify-content:center;gap:0;
    margin-bottom:40px;padding:20px 0;
    border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  }
  .reg-step{
    display:flex;align-items:center;gap:10px;
    padding:0 24px;
  }
  .reg-step:not(:last-child)::after{
    content:'›';display:block;
    font-family:var(--sans);font-size:16px;color:var(--gray-light);
    margin-left:24px;
  }
  .reg-step-num{
    width:28px;height:28px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:12px;font-weight:700;
    background:var(--line-soft);color:var(--gray);
    flex-shrink:0;
  }
  .reg-step.active .reg-step-num{
    background:var(--red);color:var(--white);
  }
  .reg-step.done .reg-step-num{
    background:var(--red);color:var(--white);
  }
  .reg-step-text{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray-light);letter-spacing:0.05em;
  }
  .reg-step.active .reg-step-text{color:var(--ink);font-weight:700}
  .reg-step.done .reg-step-text{color:var(--ink)}

  /* フォームセクション */
  .reg-section{margin-bottom:36px}
  .reg-section-title{
    font-family:var(--serif);font-style:italic;font-weight:600;
    font-size:20px;letter-spacing:0.01em;
    margin-bottom:20px;padding-bottom:12px;
    border-bottom:1px solid var(--line-soft);
  }
  .form-group:last-child{margin-bottom:0}
  .form-label{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);
  }
  .form-label .required{
    font-size:10px;font-weight:700;color:var(--red);
    margin-left:6px;padding:1px 6px;
    border:1px solid var(--red);border-radius:2px;
  }
  .form-hint{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray-light);
    margin-top:2px;
  }
  select.form-input{
    appearance:none;-webkit-appearance:none;
    background:var(--white) url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 16px center;
    padding-right:40px;cursor:pointer;
  }
  .form-password-wrap{position:relative}
  .form-password-wrap .form-input{padding-right:48px}
  .pw-toggle{
    position:absolute;right:14px;top:50%;transform:translateY(-50%);
    color:var(--gray-light);padding:4px;
    transition:color 0.15s;
  }
  .pw-toggle:hover{color:var(--red)}
  .pw-toggle svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6}

  /* 郵便番号横の検索ボタン */
  .form-zip-row{display:flex;gap:12px;align-items:flex-start}
  .form-zip-row .form-input{max-width:200px}
  .btn-zip{
    padding:14px 20px;
    border:2px solid var(--red);
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);
    background:var(--white);transition:all 0.15s;
    flex-shrink:0;
  }
  .btn-zip:hover{background:var(--red-dark);color:var(--white)}

  /* ラジオボタン（性別） */
  .form-radio-group{display:flex;gap:20px;padding-top:4px}
  .form-radio{
    display:flex;align-items:center;gap:8px;cursor:pointer;
  }
  .form-radio input[type="radio"]{
    appearance:none;-webkit-appearance:none;
    width:18px;height:18px;border:2px solid var(--gray-light);
    border-radius:50%;flex-shrink:0;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
  .form-radio input[type="radio"]:checked{
    border-color:var(--red);
  }
  .form-radio input[type="radio"]:checked::after{
    content:'';position:absolute;top:3px;left:3px;
    width:8px;height:8px;border-radius:50%;
    background:var(--red);
  }
  .form-radio span{
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    color:var(--ink);
  }
  .form-checkbox{
    display:flex;align-items:flex-start;gap:10px;
    cursor:pointer;padding:16px 20px;
    background:var(--off-white);border:1px solid var(--line-soft);
  }
  .form-checkbox input[type="checkbox"]{
    appearance:none;-webkit-appearance:none;
    width:20px;height:20px;border:2px solid var(--gray-light);
    border-radius:3px;flex-shrink:0;margin-top:2px;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
  .form-checkbox input[type="checkbox"]:checked{
    background:var(--red);border-color:var(--red);
  }
  .form-checkbox input[type="checkbox"]:checked::after{
    content:'✓';position:absolute;top:-1px;left:3px;
    color:var(--white);font-size:14px;font-weight:700;
  }
  .form-checkbox .checkbox-text{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--ink);line-height:1.7;
  }
  .form-checkbox .checkbox-text a{
    color:var(--red);border-bottom:1px solid var(--red);
    transition:color 0.15s;
  }
  .form-checkbox .checkbox-text a:hover{color:var(--red-dark)}

  /* 送信ボタン */
  .reg-actions{
    margin-top:40px;display:flex;flex-direction:column;
    align-items:center;gap:16px;
  }
  .btn-submit{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;max-width:400px;padding:18px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:16px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);
    transition:all 0.2s;
  }
  .btn-submit:hover{background:var(--red-dark);border-color:var(--red-dark)}
  .btn-submit svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
  .back-link{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray);transition:color 0.15s;
  }
  .back-link:hover{color:var(--red)}

  /* メール受信オプション */
  .form-checkbox-simple{
    display:flex;align-items:center;gap:8px;
    cursor:pointer;
  }
  .form-checkbox-simple input[type="checkbox"]{
    appearance:none;-webkit-appearance:none;
    width:18px;height:18px;border:2px solid var(--gray-light);
    border-radius:3px;flex-shrink:0;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
  .form-checkbox-simple input[type="checkbox"]:checked{
    background:var(--red);border-color:var(--red);
  }
  .form-checkbox-simple input[type="checkbox"]:checked::after{
    content:'✓';position:absolute;top:-1px;left:2px;
    color:var(--white);font-size:13px;font-weight:700;
  }
  .form-checkbox-simple span{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray);
  }
  @media (max-width:1279px){
    .register-wrap{padding:40px 20px 60px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .register-wrap{padding:28px 16px 60px}
    .reg-heading{font-size:28px}
    .reg-steps{gap:0;padding:16px 0}
    .reg-step{padding:0 12px;gap:6px}
    .reg-step-num{width:24px;height:24px;font-size:11px}
    .reg-step-text{font-size:12px}
    .reg-step:not(:last-child)::after{margin-left:12px;font-size:14px}
    .form-row{grid-template-columns:1fr}
    .form-zip-row{flex-direction:column}
    .form-zip-row .form-input{max-width:100%}
    .btn-zip{width:100%}
    .btn-submit{max-width:100%}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: favorites
     ========================================================== */

  .fav-page-header{
    max-width:1280px;margin:0 auto;
    padding:40px 32px 32px;
    border-bottom:2px solid var(--red);
  }
  .fav-page-header-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
  .fav-page-header h1{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:42px;line-height:1.1;letter-spacing:-0.01em;
  }
  .fav-page-count{
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    color:var(--gray);margin-top:12px;
  }
  .fav-page-count strong{
    font-weight:900;color:var(--ink);font-size:18px;margin:0 2px;
  }
  .fav-section{
    max-width:1280px;margin:0 auto;
    padding:32px 32px 48px;
  }
  .fav-grid{
    display:grid;grid-template-columns:repeat(4,1fr);
    gap:24px 20px;
  }
  .product-card:hover{box-shadow:0 4px 16px rgba(0,0,0,0.08)}

  /* お気に入り解除ボタン（ハートアイコン） */
  .fav-remove{
    position:absolute;top:12px;right:12px;z-index:10;
    width:36px;height:36px;
    background:var(--white);border:1px solid var(--line-soft);
    border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    transition:all 0.15s;
    box-shadow:0 1px 4px rgba(0,0,0,0.08);
  }
  .fav-remove svg{width:18px;height:18px;fill:var(--red);stroke:var(--red);stroke-width:1.6}
  .fav-remove:hover{background:var(--red-light);border-color:var(--red);transform:scale(1.1)}

  .product-img{
    width:100%;aspect-ratio:1/1;background:var(--cream);
    overflow:hidden;
  }
  .product-card:hover .product-img img{transform:scale(1.05)}

  .product-body{padding:14px 16px;flex:1;display:flex;flex-direction:column}
  .product-cat{
    font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.2em;color:var(--gray-light);margin-bottom:4px;
  }
  .product-name a{transition:color 0.15s}
  .product-name a:hover{color:var(--red)}
  .product-price{
    font-family:var(--jp-sans);font-size:16px;font-weight:900;
    margin-bottom:10px;
  }
  .product-cart svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}

  /* ==========================================================
     ⑥ 空状態（お気に入りが0件の場合）
     ========================================================== */
  .fav-empty{
    display:none; /* 商品があるときは非表示。JSで切り替え */
    text-align:center;padding:80px 32px;
  }
  .fav-empty.show{display:block}

  .fav-empty-icon{margin:0 auto 24px;width:80px;height:80px;color:var(--gray-light)}
  .fav-empty-icon svg{width:80px;height:80px;stroke:currentColor;fill:none;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
  .fav-empty-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:28px;line-height:1.2;margin-bottom:12px;color:var(--ink);
  }
  .fav-empty-text{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
    line-height:1.8;margin-bottom:32px;
  }
  .fav-empty-cta{
    display:inline-flex;align-items:center;gap:8px;
    padding:14px 32px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.08em;border:2px solid var(--red);
    transition:all 0.2s;
  }
  .fav-empty-cta:hover{background:var(--red-dark);border-color:var(--red-dark)}
  .fav-empty-cta svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}

  /* ==========================================================
     ⑦ おすすめ商品（お気に入り下部）
     ========================================================== */
  .fav-recommend{
    max-width:1280px;margin:0 auto;
    padding:48px 32px;border-top:2px solid var(--red);
  }
  .fav-recommend-title{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:6px;
  }
  .fav-recommend-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:28px;line-height:1.1;margin-bottom:24px;
  }
  @media (max-width:1279px){
    .fav-page-header{padding:32px 20px 28px}
    .fav-section{padding:24px 20px 36px}
    .fav-grid{grid-template-columns:repeat(3,1fr);gap:20px 16px}
    .fav-recommend{padding:36px 20px}
    .recommend-grid{grid-template-columns:repeat(3,1fr);gap:16px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .fav-page-header{padding:24px 16px 20px}
    .fav-page-header h1{font-size:30px}
    .fav-section{padding:20px 16px 32px}
    .fav-grid{grid-template-columns:repeat(2,1fr);gap:16px 12px}
    .fav-remove{width:32px;height:32px;top:8px;right:8px}
    .fav-remove svg{width:15px;height:15px}
    .product-body{padding:10px 12px}
    .product-name{font-size:12px}
    .product-price{font-size:14px;margin-bottom:8px}
    .product-cart{font-size:12px;padding:8px}
    .fav-empty{padding:60px 16px}
    .fav-empty-icon{width:60px;height:60px}
    .fav-empty-icon svg{width:60px;height:60px}
    .fav-empty-heading{font-size:22px}
    .fav-recommend{padding:32px 16px}
    .recommend-grid{grid-template-columns:repeat(2,1fr);gap:12px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: guide
     ========================================================== */

  .guide-wrap{max-width:900px;margin:0 auto;padding:48px 32px 80px}

  .guide-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
  .guide-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:40px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:12px;color:var(--ink)}
  .guide-sub{font-family:var(--jp-sans);font-size:15px;color:var(--gray);margin-bottom:48px;line-height:2}

  /* セクション見出し
     scroll-margin-top：ヘッダー追従分だけアンカージャンプ先を下にずらす
     （スクロール後の縮小ヘッダー≒60px＋余白40pxで 100px 確保） */
  .guide-section{margin-bottom:48px;scroll-margin-top:100px}
  .guide-section-heading{font-family:var(--serif);font-style:italic;font-weight:600;font-size:24px;line-height:1.2;letter-spacing:-0.01em;margin-bottom:24px;color:var(--ink);border-bottom:2px solid var(--line-soft);padding-bottom:12px}

  /* 本文テキスト */
  .guide-section p{font-family:var(--jp-sans);font-size:15px;line-height:1.9;color:var(--ink);margin-bottom:16px}
  .guide-section ul{list-style-position:inside;margin-left:0;margin-bottom:16px}
  .guide-section li{font-family:var(--jp-sans);font-size:15px;line-height:1.9;color:var(--ink);margin-bottom:8px}

  /* テーブル（送料表） */
  .guide-table{width:100%;border-collapse:collapse;margin-bottom:24px;font-family:var(--jp-sans)}
  .guide-table th{background:var(--off-white);padding:14px 16px;text-align:left;font-size:14px;font-weight:700;color:var(--ink);border:1px solid var(--line-soft)}
  .guide-table td{padding:14px 16px;font-size:14px;color:var(--ink);border:1px solid var(--line-soft)}
  .guide-table tbody tr:nth-child(even){background:var(--cream)}

  /* アコーディオン */
  .faq-accordion{margin-top:24px}
  .faq-accordion .faq-item{border:1px solid var(--line-soft);margin-bottom:12px}
  /* 質問行（button 要素）：
     - width:100% と text-align:left で親要素いっぱいに広げる（buttonはデフォルトで縮む）
     - display:flex + justify-content:space-between で末尾の疑似要素アイコンを右寄せ
     - border:0 / margin:0 は <button> のブラウザ既定スタイル打ち消し */
  .faq-question{
    display:flex;align-items:center;justify-content:space-between;gap:16px;
    width:100%;margin:0;border:0;text-align:left;
    padding:16px 20px;background:var(--off-white);cursor:pointer;
    transition:background-color 0.2s;
    font-family:var(--jp-sans);font-size:15px;font-weight:600;color:var(--ink);
  }
  .faq-question:hover{background:var(--cream)}
  /* 開閉アイコン（＋ ⇄ ×）：疑似要素でHTMLを汚さず描画。
     2本のグラデーションを重ねて「＋」を作り、開いたら 45°回転で「×」に見せる */
  .faq-question::after{
    content:'';display:block;
    width:16px;height:16px;flex-shrink:0;
    background:
      linear-gradient(var(--red),var(--red)) center/16px 2px no-repeat,
      linear-gradient(var(--red),var(--red)) center/2px 16px no-repeat;
    transition:transform 0.3s ease;
  }
  .faq-item.open .faq-question::after{transform:rotate(45deg)}
  .faq-answer{display:none;padding:20px;background:var(--white);font-family:var(--jp-sans);font-size:14px;line-height:1.9;color:var(--gray)}
  .faq-item.open .faq-answer{display:block}

  /* ==========================================================
     フッター（共通）
     ========================================================== */
  footer{background:var(--red);color:var(--white);padding:80px 32px 32px}
  .foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
  .foot-brand .mark{display:flex;align-items:center;gap:14px;margin-bottom:14px}
  .foot-icon{height:56px;width:auto;display:block}
  .foot-logo-text{height:44px;width:auto;display:block}
  .foot-brand .desc{font-family:var(--jp-serif);font-weight:400;font-size:14px;line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px}
  .foot-contact{margin-top:24px;padding-top:20px;border-top:1px solid #333;font-family:var(--jp-sans)}
  .foot-contact .tel-label{font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px}
  .foot-contact .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--white)}
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.25em;margin-bottom:20px;color:var(--white)}
  .foot-col h4 .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:4px}
  .foot-col ul{list-style:none}.foot-col li{margin-bottom:12px}
  .foot-col li a{font-family:var(--jp-sans);font-size:14px;font-weight:400;letter-spacing:0.08em;color:#CCC}
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;flex-wrap:wrap;gap:16px;max-width:1280px;margin:0 auto;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:0.2em;color:var(--gray-light)}


  /* レスポンシブ */
  @media (max-width:1279px){
    .header-util{padding:8px 20px}.header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}.gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}.guide-wrap{padding:40px 20px 60px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}.foot-bottom{max-width:100%}footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .guide-wrap{padding:28px 16px 60px}
    .guide-heading{font-size:32px}
    .guide-section-heading{font-size:20px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}.foot-icon{height:40px}.foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}.foot-col h4{margin-bottom:14px}.foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: news_detail
     ========================================================== */

  .article-wrap{max-width:760px;margin:0 auto;padding:48px 32px 80px}

  /* 記事ヘッダー
     ※ページ共通の header{position:sticky;top:0;z-index:100} を継承してしまい、
        記事タイトルがスクロールでサイトヘッダーに追従＆被る問題を防ぐため、
        .article-header 側で position 系を明示的にリセットする */
  .article-header{
    position:static;
    top:auto;
    z-index:auto;
    background:transparent;
    border-bottom:2px solid var(--line-soft);
    margin-bottom:48px;
    padding-bottom:32px;
  }
  .article-meta{display:flex;align-items:center;gap:14px;margin-bottom:20px;flex-wrap:wrap}
  .article-date{font-family:var(--sans);font-size:14px;font-weight:500;letter-spacing:0.12em;color:var(--gray)}
  .article-tag{font-family:var(--jp-sans);font-size:12px;font-weight:700;letter-spacing:0.08em;padding:5px 14px;border:1px solid var(--red);color:var(--ink)}
  .article-tag.collab{border-color:var(--red);color:var(--red)}
  .article-tag.new{background:var(--red);color:var(--white)}
  .article-tag.campaign{border-color:var(--gold);color:var(--gold)}
  .article-title{font-family:var(--jp-serif);font-weight:700;font-size:32px;line-height:1.5;letter-spacing:0.02em;color:var(--ink)}

  /* ヒーロー画像 */
  .article-hero{margin:0 -32px 40px;max-width:none;width:calc(100% + 64px)}
  .article-hero img{width:100%;height:auto;display:block}
  .article-hero-caption{font-family:var(--jp-sans);font-size:12px;color:var(--gray-light);text-align:center;margin-top:8px}

  /* 本文 */
  .article-body{font-family:var(--jp-sans);font-size:16px;line-height:2;color:var(--ink)}
  .article-body p{margin-bottom:28px}
  .article-body h2{font-family:var(--jp-serif);font-size:22px;font-weight:700;line-height:1.5;margin:48px 0 20px;padding-left:16px;border-left:4px solid var(--red);color:var(--ink)}
  .article-body h3{font-family:var(--jp-sans);font-size:18px;font-weight:700;line-height:1.6;margin:32px 0 16px;color:var(--ink)}
  .article-body ul,.article-body ol{margin:0 0 28px 24px;padding-left:8px}
  .article-body li{margin-bottom:8px}
  .article-body a{color:var(--red);text-decoration:underline;text-underline-offset:3px}
  .article-body a:hover{color:var(--red-dark)}
  .article-body strong{font-weight:700;color:var(--ink)}
  .article-body blockquote{margin:24px 0;padding:20px 24px;background:var(--off-white);border-left:4px solid var(--kraft);font-family:var(--jp-serif);font-style:italic;color:var(--gray)}
  .article-body img{margin:24px 0;border-radius:4px}

  /* 関連商品ボタン */
  .article-cta{margin:40px 0;padding:32px;background:var(--off-white);text-align:center}
  .article-cta-label{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
  .article-cta-title{font-family:var(--jp-serif);font-size:20px;font-weight:700;margin-bottom:20px;color:var(--ink)}
  .article-cta a{
    display:inline-block;background:var(--red);color:var(--white);
    padding:14px 36px;font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.15em;transition:background 0.15s
  }
  .article-cta a:hover{background:var(--red-dark);color:var(--white)}

  /* 記事フッター（シェア＋ナビ）
     ※ページ下部の <footer>（黒背景＋白文字）の指定を継承してしまうので、
        .article-footer では明示的にリセットして記事エリアの淡色配色に戻す */
  .article-footer{
    background:transparent;
    color:var(--ink);
    padding:32px 0 0;
    margin-top:56px;
    border-top:1px solid var(--line-soft);
  }
  .article-share{margin-bottom:32px;text-align:center}
  .article-share-label{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:14px}
  .article-share-list{display:flex;justify-content:center;gap:14px}
  .article-share-list a{
    display:inline-flex;align-items:center;justify-content:center;
    width:44px;height:44px;border:1px solid var(--line-soft);
    color:var(--ink);transition:all 0.15s
  }
  .article-share-list a:hover{border-color:var(--red);color:var(--red)}

  .article-nav{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:center;margin-top:32px}
  .article-nav-item{display:block;padding:16px 20px;border:1px solid var(--line-soft);transition:all 0.15s}
  .article-nav-item:hover{border-color:var(--red)}
  .article-nav-item.prev{text-align:left}
  .article-nav-item.next{text-align:right}
  .article-nav-label{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.2em;color:var(--gray);margin-bottom:6px}
  .article-nav-title{font-family:var(--jp-sans);font-size:13px;font-weight:500;color:var(--ink);line-height:1.5}
  .article-nav-back{
    display:inline-flex;align-items:center;justify-content:center;
    padding:14px 20px;background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.15em;
    transition:background 0.15s;white-space:nowrap
  }
  .article-nav-back:hover{background:var(--red);color:var(--white)}

  /* ==========================================================
     フッター（モダン版・index.htmlと統一）
     ========================================================== */
  footer{background:var(--red);color:var(--white);padding:80px 32px 32px}
  .foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
  .foot-brand .mark{display:flex;align-items:center;gap:14px;margin-bottom:14px}
  .foot-icon{height:56px;width:auto;display:block}
  .foot-logo-text{height:44px;width:auto;display:block}
  .foot-brand .desc{font-family:var(--jp-serif);font-weight:400;font-size:14px;line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px}
  .foot-contact{margin-top:24px;padding-top:20px;border-top:1px solid #333;font-family:var(--jp-sans)}
  .foot-contact .tel-label{font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px}
  .foot-contact .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--white)}
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.25em;margin-bottom:20px;color:var(--white)}
  .foot-col h4 .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:4px}
  .foot-col ul{list-style:none}.foot-col li{margin-bottom:12px}
  .foot-col li a{font-family:var(--jp-sans);font-size:14px;font-weight:400;letter-spacing:0.08em;color:#CCC}
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;flex-wrap:wrap;gap:16px;max-width:1280px;margin:0 auto;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:0.2em;color:var(--gray-light)}


  /* ===== レスポンシブ：タブレット（～1279px） ===== */
  @media (max-width:1279px){
    .header-util{padding:8px 20px}.header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}.gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .article-wrap{padding:40px 20px 60px}
    .article-title{font-size:28px}
    .article-hero{margin:0 -20px 32px;width:calc(100% + 40px)}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .article-wrap{padding:28px 16px 60px}
    .article-title{font-size:22px;line-height:1.5}
    .article-hero{margin:0 -16px 28px;width:calc(100% + 32px)}
    .article-body{font-size:15px}
    .article-body h2{font-size:19px}
    .article-body h3{font-size:16px}
    .article-cta{padding:24px 16px}
    .article-cta-title{font-size:17px}
    .article-nav{grid-template-columns:1fr;gap:8px}
    .article-nav-back{order:-1}

    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}.foot-icon{height:40px}.foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}.foot-col h4{margin-bottom:14px}.foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: journal
     ========================================================== */

  .journal-wrap{max-width:900px;margin:0 auto;padding:64px 32px 80px;text-align:center}

  .journal-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
  .journal-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:56px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:16px;color:var(--ink)}
  .journal-jp{font-family:var(--jp-serif);font-size:15px;color:var(--gray);letter-spacing:0.25em;margin-bottom:48px}

  /* 準備中メッセージ */
  .coming-soon{
    max-width:640px;margin:0 auto 56px;padding:48px 32px;
    background:var(--cream);border:1px solid var(--kraft)
  }
  .coming-soon-icon{
    font-family:var(--serif);font-style:italic;font-size:40px;font-weight:700;
    color:var(--red);margin-bottom:16px
  }
  .coming-soon-title{
    font-family:var(--jp-serif);font-size:22px;font-weight:700;
    color:var(--ink);margin-bottom:16px;letter-spacing:0.08em
  }
  .coming-soon-text{
    font-family:var(--jp-sans);font-size:15px;line-height:2;color:var(--gray);
    text-align:left
  }
  .journal-preview-heading{
    font-family:var(--serif);font-style:italic;font-size:24px;font-weight:700;
    color:var(--ink);margin-bottom:8px;margin-top:32px
  }
  .journal-preview-sub{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);margin-bottom:32px
  }
  .journal-category-list{
    display:grid;grid-template-columns:repeat(4,1fr);gap:20px;max-width:800px;margin:0 auto
  }
  .journal-category{
    padding:28px 20px;border:1px solid var(--line-soft);text-align:center;
    transition:all 0.15s
  }
  .journal-category:hover{border-color:var(--red);background:var(--off-white)}
  .journal-category-en{
    font-family:var(--serif);font-style:italic;font-size:22px;font-weight:700;
    color:var(--ink);margin-bottom:6px;letter-spacing:-0.01em
  }
  .journal-category-jp{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);
    letter-spacing:0.15em
  }
  .journal-back{margin-top:56px;text-align:center}
  .journal-back a{
    display:inline-flex;align-items:center;gap:8px;
    padding:14px 32px;background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:14px;font-weight:700;letter-spacing:0.15em;
    transition:background 0.15s
  }
  .journal-back a:hover{background:var(--red)}

  /* ==========================================================
     フッター（モダン版・index.htmlと統一）
     ========================================================== */
  footer{background:var(--red);color:var(--white);padding:80px 32px 32px}
  .foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
  .foot-brand .mark{display:flex;align-items:center;gap:14px;margin-bottom:14px}
  .foot-icon{height:56px;width:auto;display:block}
  .foot-logo-text{height:44px;width:auto;display:block}
  .foot-brand .desc{font-family:var(--jp-serif);font-weight:400;font-size:14px;line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px}
  .foot-contact{margin-top:24px;padding-top:20px;border-top:1px solid #333;font-family:var(--jp-sans)}
  .foot-contact .tel-label{font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px}
  .foot-contact .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--white)}
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.25em;margin-bottom:20px;color:var(--white)}
  .foot-col h4 .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:4px}
  .foot-col ul{list-style:none}.foot-col li{margin-bottom:12px}
  .foot-col li a{font-family:var(--jp-sans);font-size:14px;font-weight:400;letter-spacing:0.08em;color:#CCC}
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;flex-wrap:wrap;gap:16px;max-width:1280px;margin:0 auto;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:0.2em;color:var(--gray-light)}


  /* ===== レスポンシブ：タブレット（～1279px） ===== */
  @media (max-width:1279px){
    .header-util{padding:8px 20px}.header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}.gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .journal-wrap{padding:48px 20px 60px}
    .journal-heading{font-size:44px}
    .journal-category-list{grid-template-columns:repeat(2,1fr)}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .journal-wrap{padding:32px 16px 60px}
    .journal-heading{font-size:36px}
    .coming-soon{padding:32px 20px}
    .coming-soon-title{font-size:18px}
    .coming-soon-text{font-size:14px}
    .journal-category-list{grid-template-columns:1fr;gap:12px}
    .journal-category{padding:20px}

    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}.foot-icon{height:40px}.foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}.foot-col h4{margin-bottom:14px}.foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: contact
     ========================================================== */

  .contact-wrap{max-width:720px;margin:0 auto;padding:48px 32px 80px}

  .ct-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
  .ct-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:36px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:8px}
  .ct-sub{font-family:var(--jp-sans);font-size:14px;color:var(--gray);margin-bottom:36px;line-height:1.8}

  /* ステップインジケーター（横並び） */
  .ct-steps{
    display:flex;align-items:center;justify-content:center;gap:0;
    margin-bottom:40px;padding:20px 0;
    border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  }
  .ct-step{display:flex;align-items:center;gap:10px;padding:0 24px}
  .ct-step:not(:last-child)::after{
    content:'›';display:block;font-family:var(--sans);font-size:16px;color:var(--gray-light);margin-left:24px;
  }
  .ct-step-num{
    width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:12px;font-weight:700;background:var(--line-soft);color:var(--gray);flex-shrink:0;
  }
  .ct-step.active .ct-step-num{background:var(--red);color:var(--white)}
  .ct-step.done .ct-step-num{background:var(--red);color:var(--white)}
  .ct-step-text{font-family:var(--jp-sans);font-size:13px;font-weight:500;color:var(--gray-light);letter-spacing:0.05em}
  .ct-step.active .ct-step-text{color:var(--ink);font-weight:700}
  .ct-step.done .ct-step-text{color:var(--ink)}

  /* 電話案内ボックス */
  .ct-phone-box{
    padding:24px;background:var(--off-white);border:1px solid var(--line-soft);
    margin-bottom:36px;text-align:center;
  }
  .ct-phone-box .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--ink)}
  .ct-phone-box .hours{font-family:var(--jp-sans);font-size:12px;color:var(--gray);margin-top:4px}

  /* フォーム */
  .form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:20px}
  .form-label{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.05em;color:var(--ink)}
  .form-label .required{font-size:10px;font-weight:700;color:var(--red);margin-left:6px;padding:1px 6px;border:1px solid var(--red);border-radius:2px}
  .form-label .optional{font-size:10px;font-weight:500;color:var(--gray-light);margin-left:6px;padding:1px 6px;border:1px solid var(--line-soft);border-radius:2px}
  .form-input,.form-textarea{
    width:100%;padding:14px 16px;border:2px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:15px;transition:border-color 0.15s;background:var(--white);
  }
  .form-input:focus,.form-textarea:focus{border-color:var(--red)}
  .form-input::placeholder,.form-textarea::placeholder{color:var(--gray-light)}
  .form-textarea{min-height:180px;resize:vertical;line-height:1.8}
  select.form-input{
    appearance:none;-webkit-appearance:none;
    background:var(--white) url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 16px center;
    padding-right:40px;cursor:pointer;
  }
  .ct-actions{margin-top:40px;display:flex;flex-direction:column;align-items:center;gap:16px}
  .btn-submit{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;max-width:400px;padding:18px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:16px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);transition:all 0.2s;
  }
  .btn-back svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}

  /* 確認ステート */
  .confirm-dl{display:grid;grid-template-columns:120px 1fr;gap:0;margin-bottom:24px}
  .confirm-dl dt{padding:14px 0;font-family:var(--jp-sans);font-size:13px;font-weight:700;color:var(--gray);border-bottom:1px solid var(--line-soft)}
  .confirm-dl dd{padding:14px 0;font-family:var(--jp-sans);font-size:14px;font-weight:500;color:var(--ink);border-bottom:1px solid var(--line-soft);white-space:pre-line}

  /* 完了ステート */
  .ct-check{
    width:80px;height:80px;border-radius:50%;background:var(--red);color:var(--white);
    display:flex;align-items:center;justify-content:center;margin:0 auto 28px;
    animation:popIn 0.4s ease;
  }
  .ct-check svg{width:40px;height:40px;stroke:currentColor;fill:none;stroke-width:2.5}
  @keyframes popIn{0%{transform:scale(0);opacity:0}70%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}

  .ct-complete-text{font-family:var(--jp-sans);font-size:15px;font-weight:500;color:var(--ink);line-height:2;text-align:center;margin-bottom:32px}
  .btn-home{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;max-width:320px;padding:16px;margin:0 auto;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);transition:all 0.2s;
  }
  .btn-home:hover{background:var(--red);border-color:var(--red)}

  /* ステート切り替え */
  .state{display:none}
  .state.show{display:block}

  /* ==========================================================
     フッター（共通）
     ========================================================== */
  footer{background:var(--red);color:var(--white);padding:80px 32px 32px}
  .foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
  .foot-brand .mark{display:flex;align-items:center;gap:14px;margin-bottom:14px}
  .foot-icon{height:56px;width:auto;display:block}
  .foot-logo-text{height:44px;width:auto;display:block}
  .foot-brand .desc{font-family:var(--jp-serif);font-weight:400;font-size:14px;line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px}
  .foot-contact{margin-top:24px;padding-top:20px;border-top:1px solid #333;font-family:var(--jp-sans)}
  .foot-contact .tel-label{font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px}
  .foot-contact .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--white)}
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.25em;margin-bottom:20px;color:var(--white)}
  .foot-col h4 .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:4px}
  .foot-col ul{list-style:none}.foot-col li{margin-bottom:12px}
  .foot-col li a{font-family:var(--jp-sans);font-size:14px;font-weight:400;letter-spacing:0.08em;color:#CCC}
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;flex-wrap:wrap;gap:16px;max-width:1280px;margin:0 auto;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:0.2em;color:var(--gray-light)}


  /* レスポンシブ */
  @media (max-width:1279px){
    .header-util{padding:8px 20px}.header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}.gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}.contact-wrap{padding:40px 20px 60px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}.foot-bottom{max-width:100%}footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .contact-wrap{padding:28px 16px 60px}
    .ct-heading{font-size:28px}
    .ct-steps{gap:0;padding:16px 0}
    .ct-step{padding:0 12px;gap:6px}
    .ct-step-num{width:24px;height:24px;font-size:11px}
    .ct-step-text{font-size:12px}
    .ct-step:not(:last-child)::after{margin-left:12px;font-size:14px}
    .confirm-dl{grid-template-columns:100px 1fr}
    .btn-submit,.btn-back,.btn-home{max-width:100%}
    .ct-check{width:64px;height:64px}.ct-check svg{width:32px;height:32px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}.foot-icon{height:40px}.foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}.foot-col h4{margin-bottom:14px}.foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* ==========================================================
     ページ固有: tokushoho
     ========================================================== */

  .legal-wrap{max-width:900px;margin:0 auto;padding:48px 32px 80px}

  .legal-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
  .legal-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:40px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:12px;color:var(--ink)}
  .legal-sub{font-family:var(--jp-sans);font-size:15px;color:var(--gray);margin-bottom:48px;line-height:2}

  /* 定義リスト */
  .legal-dl{display:grid;grid-template-columns:180px 1fr;gap:0;margin-bottom:24px;border-top:2px solid var(--line-soft)}
  .legal-dl dt{padding:16px 20px;font-family:var(--jp-sans);font-size:14px;font-weight:700;color:var(--white);background:var(--red);border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
  .legal-dl dd{padding:16px 20px;font-family:var(--jp-sans);font-size:14px;color:var(--ink);border-bottom:1px solid var(--line-soft);background:var(--off-white)}
  .legal-dl dd a{color:var(--red);text-decoration:underline}
  .legal-dl dd a:hover{color:var(--red-dark)}

  /* ==========================================================
     フッター（共通）
     ========================================================== */
  footer{background:var(--red);color:var(--white);padding:80px 32px 32px}
  .foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
  .foot-brand .mark{display:flex;align-items:center;gap:14px;margin-bottom:14px}
  .foot-icon{height:56px;width:auto;display:block}
  .foot-logo-text{height:44px;width:auto;display:block}
  .foot-brand .desc{font-family:var(--jp-serif);font-weight:400;font-size:14px;line-height:2.2;letter-spacing:0.12em;color:#CCC;max-width:380px}
  .foot-contact{margin-top:24px;padding-top:20px;border-top:1px solid #333;font-family:var(--jp-sans)}
  .foot-contact .tel-label{font-size:12px;font-weight:700;letter-spacing:0.2em;color:var(--gray-light);margin-bottom:6px}
  .foot-contact .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--white)}
  .foot-contact .tel-hours{font-size:12px;color:var(--gray-light);margin-top:4px}
  .foot-col h4{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.25em;margin-bottom:20px;color:var(--white)}
  .foot-col h4 .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:4px}
  .foot-col ul{list-style:none}.foot-col li{margin-bottom:12px}
  .foot-col li a{font-family:var(--jp-sans);font-size:14px;font-weight:400;letter-spacing:0.08em;color:#CCC}
  .foot-col li a:hover{color:var(--red)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;flex-wrap:wrap;gap:16px;max-width:1280px;margin:0 auto;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:0.2em;color:var(--gray-light)}


  /* レスポンシブ */
  @media (max-width:1279px){
    .header-util{padding:8px 20px}.header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}.gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}.legal-wrap{padding:40px 20px 60px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}.foot-bottom{max-width:100%}footer{padding:60px 20px 24px}
  }
  @media (max-width:767px){
    .legal-wrap{padding:28px 16px 60px}
    .legal-heading{font-size:32px}
    .legal-dl{grid-template-columns:1fr}
    .legal-dl dt{border-right:none;border-bottom:1px solid var(--line-soft)}
    .legal-dl dd{border-bottom:1px solid var(--line-soft)}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}.foot-icon{height:40px}.foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}.foot-col h4{margin-bottom:14px}.foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }
  /* category レスポンシブ */

@media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}
    .gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .cat-header{padding:36px 20px 32px}
    .cat-header-title{font-size:40px}
    .filter-bar{padding:12px 20px}
    /* 3列に変更 */
    .product-grid{grid-template-columns:repeat(3,1fr);gap:20px 16px;padding:0 20px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* category レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}
    .drawer{width:min(320px, 85vw)}
    .drawer-search{display:block}
    .breadcrumb{padding:10px 16px;font-size:12px}
    .cat-header{padding:28px 16px 24px}
    .cat-header-title{font-size:30px}
    .cat-header-jp{font-size:16px}
    .cat-header-desc{font-size:13px}
    .filter-bar{padding:10px 16px;flex-wrap:wrap;gap:10px}
    .filter-left{flex:1;min-width:200px}
    /* 2列に変更 */
    .product-grid{grid-template-columns:repeat(2,1fr);gap:16px 12px;padding:0 16px}
    .product-body{padding:12px 12px 16px}
    .product-name{font-size:14px}
    .product-price{font-size:16px}
    .product-cart{padding:10px 12px;font-size:12px}
    .pagination{padding:24px 16px}
    .page-btn{width:40px;height:40px;font-size:13px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* pdp レスポンシブ */

@media (max-width:1279px){
    /* ヘッダー */
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}
    .gnav .en{font-size:10px}

    /* パンくず */
    .breadcrumb{padding:12px 20px}

    /* PDP メイン：2カラム維持、パディング縮小 */
    .pdp-gallery{padding:24px 20px}
    .pdp-info{padding:24px 20px}
    .pdp-name{font-size:22px}
    .pdp-price{font-size:30px}

    /* タブ */
    .pdp-tab-content{padding:32px 20px}
    .pdp-desc .taste-grid{gap:16px}

    /* レビュー */
    .pdp-reviews-section{padding:32px 20px}
    .pdp-review-stats{gap:24px;padding:20px}

    /* 関連商品 */
    .sec-head{padding:40px 20px 16px}
    .sec-head h2{font-size:30px}
    .related-items{grid-template-columns:repeat(3,1fr)}
    .related-item:nth-child(3){border-right:none}
    .related-item:nth-child(n+4){border-top:1px solid var(--line-soft)}

    /* フッター */
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* pdp レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}

    /* ティッカー */
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}

    /* ヘッダー：常時ハンバーガー */
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}

    /* ドロワー */
    .drawer{width:min(320px, 85vw)}
    .drawer-search{display:block}

    /* パンくず */
    .breadcrumb{padding:10px 16px;font-size:12px}

    /* PDP メイン：1カラムに変更 */
    .pdp-main{grid-template-columns:minmax(0,1fr)}
    .pdp-gallery{border-right:none;border-bottom:1px solid var(--line-soft);padding:16px;position:static}
    .pdp-thumbs{gap:6px}
    .pdp-thumb{width:64px;height:64px}
    .pdp-info{padding:20px 16px}
    .pdp-name{font-size:20px}
    .pdp-price{font-size:28px}
    .pdp-price .yen{font-size:18px}
    .pdp-price .tax{font-size:13px}
    .pdp-cart-btn{padding:16px 20px;font-size:16px}
    .pdp-fav-btn{padding:12px 20px;font-size:14px}

    /* タブ */
    .pdp-tab-nav{overflow-x:auto}
    .pdp-tab-btn{padding:14px 12px;font-size:13px;white-space:nowrap;min-width:auto}
    .pdp-tab-btn .en{font-size:9px}
    .pdp-tab-content{padding:24px 16px}
    .pdp-desc h3{font-size:16px}
    .pdp-desc p{font-size:14px}
    .pdp-desc .taste-grid{grid-template-columns:1fr;gap:20px}
    .pdp-spec-table th{width:100px;font-size:13px;padding:10px 12px}
    .pdp-spec-table td{font-size:13px;padding:10px 12px}

    /* レビュー */
    .pdp-reviews-section{padding:24px 16px}
    .pdp-reviews-head h2{font-size:24px}
    .pdp-review-stats{flex-direction:column;gap:20px;padding:16px}
    .pdp-review-avg{min-width:auto}
    .review-title{font-size:14px}
    .review-body{font-size:13px}

    /* 関連商品 */
    .sec-head{padding:32px 16px 14px;gap:10px;flex-wrap:wrap}
    .sec-head h2{font-size:24px}
    .sec-head .jp{font-size:15px}
    .related-items{grid-template-columns:repeat(2,1fr)}
    .related-item:nth-child(2n){border-right:none}
    .related-item:nth-child(n+3){border-top:1px solid var(--line-soft)}
    .related-item{padding:16px 12px}
    .related-name{font-size:13px}
    .related-price{font-size:15px}

    /* 最近チェック */
    .recent-item{min-width:130px;max-width:150px;padding:12px 10px}

    /* フッター */
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* cart レスポンシブ */

@media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}
    .gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .cart-page-header{padding:32px 20px 28px}
    .step-bar{padding:20px 20px}
    .cart-layout{grid-template-columns:1fr 320px}
    .cart-items{padding:24px 20px}
    .cart-summary{padding:24px 20px}
    .cart-recommend{padding:36px 20px}
    .recommend-grid{grid-template-columns:repeat(3,1fr);gap:16px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* cart レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}
    .drawer{width:min(320px,85vw)}
    .drawer-search{display:block}
    .breadcrumb{padding:10px 16px;font-size:12px}
    .cart-page-header{padding:24px 16px 20px}
    .cart-page-header h1{font-size:30px}
    .step-bar{padding:16px 16px;gap:0}
    .step{font-size:11px;gap:6px}
    .step-num{width:24px;height:24px;font-size:10px}
    .step-arrow{width:20px;font-size:12px}
    /* モバイルは1カラムに */
    .cart-layout{grid-template-columns:1fr}
    .cart-items{padding:20px 16px;border-right:none;border-bottom:1px solid var(--line-soft)}
    .cart-item{grid-template-columns:90px 1fr;gap:14px}
    .cart-item-img{width:90px;height:90px}
    .cart-item-actions{flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px 16px;grid-column:1 / -1;margin-top:8px;justify-content:space-between}
    .cart-item-actions .qty-control{order:1}
    .cart-item-actions .cart-item-subtotal{order:2;margin-left:auto;text-align:right}
    .cart-item-actions .qty-stock-warn{order:3;width:100%}
    .cart-item-actions .cart-item-action-row{order:4;width:100%;justify-content:flex-end}
    .coupon-section,.delivery-section{padding:12px}
    .toast{bottom:16px;font-size:12px;padding:12px 18px}
    .cart-summary{position:static;padding:20px 16px}
    .cart-recommend{padding:32px 16px}
    .recommend-grid{grid-template-columns:repeat(2,1fr);gap:12px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* checkout レスポンシブ */

@media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}
    .gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .checkout-header{padding:32px 20px 28px}
    .step-bar{padding:20px 20px}
    .checkout-layout{grid-template-columns:1fr 320px}
    .checkout-form{padding:32px 20px}
    .checkout-summary{padding:24px 20px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* checkout レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}
    .drawer{width:min(320px,85vw)}
    .drawer-search{display:block}
    .breadcrumb{padding:10px 16px;font-size:12px}
    .checkout-header{padding:24px 16px 20px}
    .checkout-header h1{font-size:30px}
    .step-bar{padding:16px 16px;gap:0}
    .step{font-size:11px;gap:6px}
    .step-num{width:24px;height:24px;font-size:10px}
    .step-arrow{width:20px;font-size:12px}
    /* モバイルは1カラム（フォームが上・サマリーが下） */
    .checkout-layout{grid-template-columns:1fr}
    .checkout-form{padding:24px 16px;border-right:none}
    .checkout-summary{position:static;padding:20px 16px}
    .form-row{flex-direction:column;gap:12px}
    .radio-card{padding:14px 16px;gap:10px}
    .radio-card-label{font-size:14px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* confirm レスポンシブ */

@media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .confirm-header{padding:32px 20px 28px}
    .step-bar{padding:20px 20px}
    .confirm-layout{grid-template-columns:1fr 320px}
    .confirm-detail{padding:32px 20px}
    .confirm-summary{padding:24px 20px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* confirm レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}
    .drawer{width:min(320px,85vw)}
    .drawer-search{display:block}
    .breadcrumb{padding:10px 16px;font-size:12px}
    .confirm-header{padding:24px 16px 20px}
    .confirm-header h1{font-size:30px}
    .step-bar{padding:16px 16px;gap:0}
    .step{font-size:11px;gap:6px}
    .step-num{width:24px;height:24px;font-size:10px}
    .step-arrow{width:20px;font-size:12px}
    /* モバイルは1カラム（確認情報が上・サマリーが下） */
    .confirm-layout{grid-template-columns:1fr}
    .confirm-detail{padding:24px 16px;border-right:none}
    .confirm-summary{position:static;padding:20px 16px}
    .confirm-dl{grid-template-columns:100px 1fr;gap:0}
    .confirm-dl dt,.confirm-dl dd{font-size:13px;padding:10px 0}
    .confirm-items th{font-size:10px;padding:8px 6px}
    .confirm-items td{padding:10px 6px;font-size:13px}
    .confirm-item-img{width:40px;height:40px}
    .confirm-item-name{font-size:12px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* complete レスポンシブ */

@media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .step-bar{padding:20px 20px}
    .complete-wrap{padding:48px 20px 60px}
    .complete-recommend{padding:36px 20px}
    .recommend-grid{grid-template-columns:repeat(3,1fr);gap:16px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* complete レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}
    .drawer{width:min(320px,85vw)}
    .drawer-search{display:block}
    .step-bar{padding:16px 16px;gap:0}
    .step{font-size:11px;gap:6px}
    .step-num{width:24px;height:24px;font-size:10px}
    .step-arrow{width:20px;font-size:12px}
    .complete-wrap{padding:40px 16px 48px}
    .complete-icon{width:64px;height:64px;margin-bottom:20px}
    .complete-icon svg{width:32px;height:32px}
    .complete-heading{font-size:30px}
    .complete-message{font-size:14px}
    .order-number{font-size:24px}
    .order-card{padding:20px 16px}
    .order-summary-mini{flex-direction:column;gap:8px;align-items:center}
    .points-card{grid-template-columns:1fr;gap:16px;padding:20px 16px}
    .points-card-block + .points-card-block{border-left:none;border-top:1px dashed var(--gold);padding-left:0;padding-top:16px}
    .points-card-value{font-size:24px}
    .complete-actions{flex-direction:column;gap:10px}
    .btn-complete{justify-content:center;width:100%}
    .complete-recommend{padding:32px 16px}
    .recommend-grid{grid-template-columns:repeat(2,1fr);gap:12px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* login レスポンシブ */

@media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .auth-login{padding:36px 32px}
    .auth-register{padding:36px 32px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* login レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}
    .drawer{width:min(320px,85vw)}
    .drawer-search{display:block}
    .breadcrumb{padding:10px 16px;font-size:12px}
    /* モバイルは1カラム：ログイン→会員登録誘導 */
    .auth-layout{grid-template-columns:1fr}
    .auth-login{padding:32px 16px;border-right:none;border-bottom:1px solid var(--line-soft)}
    .auth-heading{font-size:28px}
    .auth-register{padding:32px 16px}
    .register-icon{width:48px;height:48px;margin-bottom:16px}
    .register-icon svg{width:48px;height:48px}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* register レスポンシブ */

@media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .register-wrap{padding:40px 20px 60px}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* register レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}
    .drawer{width:min(320px,85vw)}
    .drawer-search{display:block}
    .breadcrumb{padding:10px 16px;font-size:12px}
    .register-wrap{padding:28px 16px 60px}
    .reg-heading{font-size:28px}
    .reg-steps{gap:0;padding:16px 0}
    .reg-step{padding:0 12px;gap:6px}
    .reg-step-num{width:24px;height:24px;font-size:11px}
    .reg-step-text{font-size:12px}
    .reg-step:not(:last-child)::after{margin-left:12px;font-size:14px}
    .form-row{grid-template-columns:1fr}
    .form-zip-row{flex-direction:column}
    .form-zip-row .form-input{max-width:100%}
    .btn-zip{width:100%}
    .btn-submit{max-width:100%}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

  /* mypage レスポンシブ */

@media (max-width:1279px){
    .header-util{padding:8px 20px}
    .header-main{padding:14px 20px;gap:20px}
    .gnav a{padding:12px 12px;min-width:auto;font-size:12px}
    .gnav .jp{font-size:12px}.gnav .en{font-size:10px}
    .breadcrumb{padding:12px 20px}
    .mypage{padding:24px 20px;gap:24px}
    .my-grid{grid-template-columns:repeat(2,1fr)}
    .foot-top{grid-template-columns:1fr 1fr;gap:32px;max-width:100%}
    .foot-bottom{max-width:100%}
    footer{padding:60px 20px 24px}
  }

  /* mypage レスポンシブ */

@media (max-width:767px){
    body{font-size:16px;line-height:1.8}
    .top-ticker{font-size:12px;padding:10px 16px}
    .top-ticker .sep{margin:0 8px}
    .header-util{display:none}
    .header-main{grid-template-columns:1fr auto;padding:12px 16px;gap:12px}
    .search-bar{display:none}
    .header-logo{height:36px}
    .burger{visibility:visible;opacity:1;width:auto;min-width:44px;padding:6px 8px}
    .burger .label-text{display:none}
    .header-action .label-text{display:none}
    .header-action{min-width:44px;padding:6px 8px}
    .gnav{display:none}
    .drawer{width:min(320px,85vw)}
    .drawer-search{display:block}
    .breadcrumb{padding:10px 16px;font-size:12px}
    /* モバイル：1カラム化 */
    .mypage{grid-template-columns:1fr;padding:16px;gap:16px}
    .my-side{position:static}
    .my-heading{font-size:28px}
    .my-grid{grid-template-columns:1fr}
    .my-section{padding:20px 16px}
    .order-card-header{flex-wrap:wrap;gap:8px;padding:12px 16px}
    .order-card-body{padding:12px 16px}
    .my-info-dl{grid-template-columns:100px 1fr}
    footer{padding:48px 16px 20px}
    .foot-top{grid-template-columns:1fr;gap:32px}
    .foot-icon{height:40px}
    .foot-logo-text{height:28px}
    .foot-brand .desc{font-size:13px}
    .foot-col h4{margin-bottom:14px}
    .foot-col li{margin-bottom:10px}
    .foot-bottom{flex-direction:column;align-items:flex-start;gap:8px;font-size:11px}
  }

/* ============================================================
   Footer cascade fix（暫定）
   @media漏出は修正済み（2026-05-27）。本セクションは漏出対策の名残。
   デプロイ後にブラウザで表示確認し、問題なければ削除してよい。
   ============================================================ */
.foot-top{display:grid!important;grid-template-columns:2fr 1fr 1fr 1fr!important;gap:48px!important;padding-bottom:64px;border-bottom:1px solid #333;max-width:1280px;margin:0 auto}
@media(max-width:1279px){.foot-top{grid-template-columns:1fr 1fr!important;gap:32px!important;max-width:100%}}
@media(max-width:767px){.foot-top{grid-template-columns:1fr!important;gap:32px!important}}

/* ============================================================
   フッター赤背景のコントラスト調整（2026-06-01）
   背景を赤にしたため、元々赤文字/濃グレーだった要素を白系へ。
   ============================================================ */
footer .foot-col h4 .en{color:rgba(255,255,255,0.75)}
footer .foot-col li a{color:rgba(255,255,255,0.9)}
footer .foot-col li a:hover{color:var(--white);opacity:0.7}
footer .foot-brand .desc{color:rgba(255,255,255,0.85)}
footer .foot-contact .tel-hours{color:rgba(255,255,255,0.8)}
footer .foot-bottom{color:rgba(255,255,255,0.8)}
footer .foot-bottom .red{color:var(--white)}
footer .foot-legal a:hover{color:var(--white);opacity:0.7}
footer .foot-top{border-bottom-color:rgba(255,255,255,0.3)}
footer .foot-contact{border-top-color:rgba(255,255,255,0.3)}

/* ============================================================
   下層ページ本文スタイル（about / guide / 法務ページ）
   2026-06-01 追加：EC-CUBE化で未移植だった本文CSSを新規作成
   ============================================================ */
.about-page-content,.guide-page-content,.legal-page{
  max-width:960px;margin:0 auto;padding:56px 32px 88px;
}
/* ---- 共通ページヘッダー ---- */
.page-header{margin-bottom:48px;padding-bottom:24px;border-bottom:2px solid var(--red)}
.page-header-en{display:block;font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--red);margin-bottom:10px}
.page-header-title{font-family:var(--jp-serif);font-size:30px;font-weight:600;letter-spacing:0.06em;color:var(--ink);line-height:1.3}
/* ---- about ---- */
.about-section{margin-bottom:56px}
.about-section-inner{max-width:100%}
.about-section-title{font-family:var(--jp-sans);font-size:20px;font-weight:700;letter-spacing:0.08em;color:var(--ink);margin-bottom:18px;padding-left:14px;border-left:4px solid var(--red)}
.about-section-title .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.28em;color:var(--gray);margin-bottom:2px}
.about-section-body{font-family:var(--jp-sans);font-size:15px;line-height:2.1;color:var(--ink)}
.about-section-body p{margin:0 0 1em}
.about-yvonne-intro{display:flex;gap:32px;align-items:flex-start;flex-wrap:wrap}
.about-yvonne-img{flex:0 0 220px;max-width:220px}
.about-yvonne-img img{width:100%;height:auto;border-radius:8px;background:var(--cream)}
.about-yvonne-text{flex:1;min-width:260px}
.about-cta{margin-top:40px;display:flex;gap:16px;flex-wrap:wrap}
/* ブランドストーリーCTA：.btn-outline 未定義によるお問い合わせボタンのスタイル切れを修正（2026-06-29）。
   グローバルの .btn-primary は width:100% のため about-cta 内では width:auto で上書きし2ボタン横並びにする。 */
.about-cta .btn-primary,
.about-cta .btn-outline{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:auto;min-width:220px;padding:16px 32px;
  font-family:var(--jp-sans);font-size:15px;font-weight:700;letter-spacing:0.1em;
  text-decoration:none;border:2px solid var(--red);
  transition:all 0.2s;cursor:pointer;
}
.about-cta .btn-primary{background:var(--red);color:var(--white)}
.about-cta .btn-primary:hover{background:var(--red-dark);border-color:var(--red-dark);color:var(--white)}
.about-cta .btn-outline{background:var(--white);color:var(--red)}
.about-cta .btn-outline:hover{background:var(--red);color:var(--white)}
@media(max-width:767px){
  .about-cta{flex-direction:column}
  .about-cta .btn-primary,.about-cta .btn-outline{width:100%;min-width:0}
}
/* ---- guide ---- */
.guide-anchor-nav{display:flex;flex-wrap:wrap;gap:10px 18px;margin-bottom:48px;padding-bottom:24px;border-bottom:1px solid var(--line-soft)}
.guide-anchor-nav a{font-family:var(--jp-sans);font-size:14px;color:var(--ink);text-decoration:none;padding:6px 0;border-bottom:2px solid transparent;transition:border-color .2s,color .2s}
.guide-anchor-nav a:hover{color:var(--red);border-bottom-color:var(--red)}
.guide-section{margin-bottom:56px;scroll-margin-top:120px}
.guide-section-title{font-family:var(--jp-sans);font-size:20px;font-weight:700;letter-spacing:0.08em;color:var(--ink);margin-bottom:20px;padding-left:14px;border-left:4px solid var(--red)}
.guide-section-title .en{display:block;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:0.28em;color:var(--gray);margin-bottom:2px}
.guide-section-body{font-family:var(--jp-sans);font-size:15px;line-height:2;color:var(--ink)}
.guide-dl{margin:0}
.guide-dl dt{font-weight:700;font-size:15px;color:var(--ink);margin-top:20px;padding-bottom:6px;border-bottom:1px dotted var(--line-soft)}
.guide-dl dt:first-child{margin-top:0}
.guide-dl dd{margin:8px 0 0;font-size:14px;line-height:1.9;color:var(--gray)}
/* guide 連絡先CTA */
.guide-contact-cta{margin-top:48px;padding:32px;background:var(--cream);border-radius:8px;text-align:center}
.guide-contact-actions{margin-top:16px;display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.guide-tel-label{font-family:var(--jp-sans);font-size:13px;color:var(--gray)}
.guide-tel-number{font-family:var(--sans);font-size:26px;font-weight:700;color:var(--ink);letter-spacing:0.04em}
.guide-tel-hours{font-size:12px;color:var(--gray)}
/* FAQ */
.faq-list{margin:0;border-top:1px solid var(--line-soft)}
.faq-item{border-bottom:1px solid var(--line-soft);padding:20px 4px}
.faq-q{font-family:var(--jp-sans);font-size:15px;font-weight:700;color:var(--ink);position:relative;padding-left:28px}
/* .faq-q::before は撤去：TOP静的FAQ(.q-badge併用)でQが二重化するため。guideはsummary.faq-q::beforeで描画 */
.faq-a{margin-top:10px;font-size:14px;line-height:1.9;color:var(--gray);padding-left:28px;position:relative}
.faq-a::before{content:"A";position:absolute;left:0;top:0;color:var(--gray);font-weight:700}
/* ---- 法務ページ（特商法・プライバシー・利用規約） ---- */
.legal-body{font-family:var(--jp-sans);font-size:14px;line-height:2;color:var(--ink)}
.legal-body h3,.legal-body h2{font-size:17px;font-weight:700;margin:32px 0 12px;padding-left:12px;border-left:3px solid var(--red);color:var(--ink)}
.legal-body p{margin:0 0 1em}
.legal-body dl{margin:0 0 1.5em}
.legal-body dt{font-weight:700;margin-top:16px;color:var(--ink)}
.legal-body dd{margin:4px 0 0;color:var(--gray)}
.legal-body a{color:var(--red);text-decoration:underline}
.legal-footer{margin-top:48px;padding-top:24px;border-top:1px solid var(--line-soft)}
/* ---- 下層ページ レスポンシブ ---- */
@media(max-width:767px){
  .about-page-content,.guide-page-content,.legal-page{padding:36px 18px 64px}
  .page-header-title{font-size:24px}
  .about-yvonne-intro{gap:20px}
  .about-yvonne-img{flex:0 0 140px;max-width:140px}
  .guide-tel-number{font-size:22px}
}
/* ---- 商品詳細：規格(バリエーション)セレクト 追加: 2026-06-02 ---- */
.pdp-class-row{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.pdp-class-label{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:.05em;color:var(--ink)}
.pdp-class-select{width:100%;max-width:360px;font-family:var(--jp-sans);font-size:15px;color:var(--ink);background:var(--white);border:1px solid var(--kraft);border-radius:8px;padding:12px 14px}
.pdp-class-select:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px var(--red-light)}

/* ============================================================
   モック由来 フォーム/法務/マイページCSS（design/shiawase-ec-mock/ 各ページの<style>から抽出）
   追加: 2026-06-02  承認済みデザインの正本を反映
   ============================================================ */
.auth-layout{
    display:grid;grid-template-columns:1fr 1fr;gap:0;
    max-width:1280px;margin:0 auto;
    min-height:600px;
  }
.auth-login{
    padding:48px 48px;
    border-right:1px solid var(--line-soft);
  }
.auth-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
.auth-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:36px;line-height:1.1;letter-spacing:-0.01em;
    margin-bottom:8px;
  }
.auth-sub{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
    margin-bottom:32px;
  }
.auth-form{display:flex;flex-direction:column;gap:20px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-label{
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);
  }
.form-label .required{
    font-size:10px;font-weight:700;color:var(--red);
    margin-left:6px;padding:1px 6px;
    border:1px solid var(--red);border-radius:2px;
  }
.form-input{
    width:100%;padding:14px 16px;
    border:2px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:15px;
    transition:border-color 0.15s;
    background:var(--white);
  }
.form-input:focus{border-color:var(--red)}
.form-input::placeholder{color:var(--gray-light)}
.form-password-wrap{position:relative}
.form-password-wrap .form-input{padding-right:48px}
.pw-toggle{
    position:absolute;right:14px;top:50%;transform:translateY(-50%);
    color:var(--gray-light);padding:4px;
    transition:color 0.15s;
  }
.pw-toggle:hover{color:var(--red)}
.pw-toggle svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6}
.form-checkbox{
    display:flex;align-items:center;gap:8px;
    cursor:pointer;
  }
.form-checkbox input[type="checkbox"]{
    appearance:none;-webkit-appearance:none;
    width:18px;height:18px;border:2px solid var(--gray-light);
    border-radius:3px;flex-shrink:0;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
.form-checkbox input[type="checkbox"]:checked{
    background:var(--red);border-color:var(--red);
  }
.form-checkbox input[type="checkbox"]:checked::after{
    content:'✓';position:absolute;top:-1px;left:2px;
    color:var(--white);font-size:13px;font-weight:700;
  }
.form-checkbox span{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray);
  }
.btn-login{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:16px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);
    transition:all 0.2s;margin-top:8px;
  }
.btn-login:hover{background:var(--red-dark);border-color:var(--red-dark)}
.btn-login svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.forgot-link{
    text-align:center;margin-top:16px;
  }
.forgot-link a{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray);transition:color 0.15s;
    border-bottom:1px solid var(--line-soft);
    padding-bottom:2px;
  }
.forgot-link a:hover{color:var(--red);border-bottom-color:var(--red)}
.auth-divider{
    display:flex;align-items:center;gap:16px;
    margin:28px 0;
  }
.auth-divider::before,.auth-divider::after{
    content:'';flex:1;height:1px;background:var(--line-soft);
  }
.auth-divider span{
    font-family:var(--sans);font-size:11px;font-weight:700;
    letter-spacing:0.2em;color:var(--gray-light);
  }
.social-login{display:flex;flex-direction:column;gap:10px}
.btn-social{
    display:flex;align-items:center;justify-content:center;gap:10px;
    width:100%;padding:13px;
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;
    border:2px solid var(--line-soft);
    transition:all 0.15s;
  }
.btn-social:hover{border-color:var(--red-dark)}
.btn-social svg{width:20px;height:20px}
.auth-register{
    padding:48px 48px;
    background:var(--off-white);
    display:flex;flex-direction:column;justify-content:center;
  }
.register-icon{
    width:64px;height:64px;margin-bottom:24px;
    color:var(--red);
  }
.register-icon svg{width:64px;height:64px;stroke:currentColor;fill:none;stroke-width:1.2}
.register-benefits{
    margin:24px 0 32px;
  }
.register-benefit{
    display:flex;align-items:flex-start;gap:12px;
    padding:12px 0;border-bottom:1px solid var(--line-soft);
  }
.register-benefit:last-child{border-bottom:none}
.register-benefit-icon{
    width:28px;height:28px;flex-shrink:0;
    color:var(--red);margin-top:2px;
  }
.register-benefit-icon svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:1.6}
.register-benefit-text{
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    line-height:1.6;
  }
.register-benefit-text strong{font-weight:700}
.btn-register{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:16px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);
    transition:all 0.2s;
  }
.btn-register:hover{background:var(--red-dark);border-color:var(--red-dark);color:var(--white)}
.btn-register svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.register-wrap{
    max-width:720px;margin:0 auto;padding:48px 32px 80px;
  }
.reg-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
.reg-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:36px;line-height:1.1;letter-spacing:-0.01em;
    margin-bottom:8px;
  }
.reg-sub{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
    margin-bottom:36px;
  }
.reg-steps{
    display:flex;align-items:center;justify-content:center;gap:0;
    margin-bottom:40px;padding:20px 0;
    border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  }
.reg-step{
    display:flex;align-items:center;gap:10px;
    padding:0 24px;
  }
.reg-step:not(:last-child)::after{
    content:'›';display:block;
    font-family:var(--sans);font-size:16px;color:var(--gray-light);
    margin-left:24px;
  }
.reg-step-num{
    width:28px;height:28px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:12px;font-weight:700;
    background:var(--line-soft);color:var(--gray);
    flex-shrink:0;
  }
.reg-step.active .reg-step-num{
    background:var(--red);color:var(--white);
  }
.reg-step.done .reg-step-num{
    background:var(--red);color:var(--white);
  }
.reg-step-text{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray-light);letter-spacing:0.05em;
  }
.reg-step.active .reg-step-text{color:var(--ink);font-weight:700}
.reg-step.done .reg-step-text{color:var(--ink)}
.reg-section{margin-bottom:36px}
.reg-section-title{
    font-family:var(--serif);font-style:italic;font-weight:600;
    font-size:20px;letter-spacing:0.01em;
    margin-bottom:20px;padding-bottom:12px;
    border-bottom:1px solid var(--line-soft);
  }
.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:18px}
.form-group:last-child{margin-bottom:0}
.form-label .optional{
    font-size:10px;font-weight:500;color:var(--gray-light);
    margin-left:6px;padding:1px 6px;
    border:1px solid var(--line-soft);border-radius:2px;
  }
.form-hint{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray-light);
    margin-top:2px;
  }
select.form-input{
    appearance:none;-webkit-appearance:none;
    background:var(--white) url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 16px center;
    padding-right:40px;cursor:pointer;
  }
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-zip-row{display:flex;gap:12px;align-items:flex-start}
.form-zip-row .form-input{max-width:200px}
.btn-zip{
    padding:14px 20px;
    border:2px solid var(--red);
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);
    background:var(--white);transition:all 0.15s;
    flex-shrink:0;
  }
.btn-zip:hover{background:var(--red-dark);color:var(--white)}
.form-radio-group{display:flex;gap:20px;padding-top:4px}
.form-radio{
    display:flex;align-items:center;gap:8px;cursor:pointer;
  }
.form-radio input[type="radio"]{
    appearance:none;-webkit-appearance:none;
    width:18px;height:18px;border:2px solid var(--gray-light);
    border-radius:50%;flex-shrink:0;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
.form-radio input[type="radio"]:checked{
    border-color:var(--red);
  }
.form-radio input[type="radio"]:checked::after{
    content:'';position:absolute;top:3px;left:3px;
    width:8px;height:8px;border-radius:50%;
    background:var(--red);
  }
.form-radio span{
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    color:var(--ink);
  }
.form-checkbox{
    display:flex;align-items:flex-start;gap:10px;
    cursor:pointer;padding:16px 20px;
    background:var(--off-white);border:1px solid var(--line-soft);
  }
.form-checkbox input[type="checkbox"]{
    appearance:none;-webkit-appearance:none;
    width:20px;height:20px;border:2px solid var(--gray-light);
    border-radius:3px;flex-shrink:0;margin-top:2px;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
.form-checkbox input[type="checkbox"]:checked::after{
    content:'✓';position:absolute;top:-1px;left:3px;
    color:var(--white);font-size:14px;font-weight:700;
  }
.form-checkbox .checkbox-text{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--ink);line-height:1.7;
  }
.form-checkbox .checkbox-text a{
    color:var(--red);border-bottom:1px solid var(--red);
    transition:color 0.15s;
  }
.form-checkbox .checkbox-text a:hover{color:var(--red-dark)}
.reg-actions{
    margin-top:40px;display:flex;flex-direction:column;
    align-items:center;gap:16px;
  }
.btn-submit{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;max-width:400px;padding:18px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:16px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);
    transition:all 0.2s;
  }
.btn-submit:hover{background:var(--red-dark);border-color:var(--red-dark)}
.btn-submit svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.back-link{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray);transition:color 0.15s;
  }
.back-link:hover{color:var(--red)}
.form-checkbox-simple{
    display:flex;align-items:center;gap:8px;
    cursor:pointer;
  }
.form-checkbox-simple input[type="checkbox"]{
    appearance:none;-webkit-appearance:none;
    width:18px;height:18px;border:2px solid var(--gray-light);
    border-radius:3px;flex-shrink:0;
    position:relative;cursor:pointer;transition:all 0.15s;
  }
.form-checkbox-simple input[type="checkbox"]:checked{
    background:var(--red);border-color:var(--red);
  }
.form-checkbox-simple input[type="checkbox"]:checked::after{
    content:'✓';position:absolute;top:-1px;left:2px;
    color:var(--white);font-size:13px;font-weight:700;
  }
.form-checkbox-simple span{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray);
  }
.contact-wrap{max-width:720px;margin:0 auto;padding:48px 32px 80px}
.ct-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
.ct-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:36px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:8px}
.ct-sub{font-family:var(--jp-sans);font-size:14px;color:var(--gray);margin-bottom:36px;line-height:1.8}
.ct-steps{
    display:flex;align-items:center;justify-content:center;gap:0;
    margin-bottom:40px;padding:20px 0;
    border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  }
.ct-step{display:flex;align-items:center;gap:10px;padding:0 24px}
.ct-step:not(:last-child)::after{
    content:'›';display:block;font-family:var(--sans);font-size:16px;color:var(--gray-light);margin-left:24px;
  }
.ct-step-num{
    width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:12px;font-weight:700;background:var(--line-soft);color:var(--gray);flex-shrink:0;
  }
.ct-step.active .ct-step-num{background:var(--red);color:var(--white)}
.ct-step.done .ct-step-num{background:var(--red);color:var(--white)}
.ct-step-text{font-family:var(--jp-sans);font-size:13px;font-weight:500;color:var(--gray-light);letter-spacing:0.05em}
.ct-step.active .ct-step-text{color:var(--ink);font-weight:700}
.ct-step.done .ct-step-text{color:var(--ink)}
.ct-phone-box{
    padding:24px;background:var(--off-white);border:1px solid var(--line-soft);
    margin-bottom:36px;text-align:center;
  }
.ct-phone-box .tel{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:0.05em;color:var(--ink)}
.ct-phone-box .hours{font-family:var(--jp-sans);font-size:12px;color:var(--gray);margin-top:4px}
.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:20px}
.form-label{font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:0.05em;color:var(--ink)}
.form-label .required{font-size:10px;font-weight:700;color:var(--red);margin-left:6px;padding:1px 6px;border:1px solid var(--red);border-radius:2px}
.form-label .optional{font-size:10px;font-weight:500;color:var(--gray-light);margin-left:6px;padding:1px 6px;border:1px solid var(--line-soft);border-radius:2px}
.form-input,.form-textarea{
    width:100%;padding:14px 16px;border:2px solid var(--line-soft);
    font-family:var(--jp-sans);font-size:15px;transition:border-color 0.15s;background:var(--white);
  }
.form-input:focus,.form-textarea:focus{border-color:var(--red)}
.form-input::placeholder,.form-textarea::placeholder{color:var(--gray-light)}
.form-textarea{min-height:180px;resize:vertical;line-height:1.8}
.form-hint{font-family:var(--jp-sans);font-size:12px;color:var(--gray-light);margin-top:2px}
.ct-actions{margin-top:40px;display:flex;flex-direction:column;align-items:center;gap:16px}
.btn-back{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;max-width:400px;padding:16px;
    background:var(--white);color:var(--ink);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);transition:all 0.15s;
  }
.btn-back:hover{background:var(--red-dark);color:var(--white)}
.btn-back svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.confirm-dl{display:grid;grid-template-columns:120px 1fr;gap:0;margin-bottom:24px}
.confirm-dl dt{padding:14px 0;font-family:var(--jp-sans);font-size:13px;font-weight:700;color:var(--gray);border-bottom:1px solid var(--line-soft)}
.confirm-dl dd{padding:14px 0;font-family:var(--jp-sans);font-size:14px;font-weight:500;color:var(--ink);border-bottom:1px solid var(--line-soft);white-space:pre-line}
.ct-check{
    width:80px;height:80px;border-radius:50%;background:var(--red);color:var(--white);
    display:flex;align-items:center;justify-content:center;margin:0 auto 28px;
    animation:popIn 0.4s ease;
  }
.ct-check svg{width:40px;height:40px;stroke:currentColor;fill:none;stroke-width:2.5}
@keyframes popIn{0%{transform:scale(0);opacity:0}70%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}
.ct-complete-text{font-family:var(--jp-sans);font-size:15px;font-weight:500;color:var(--ink);line-height:2;text-align:center;margin-bottom:32px}
.btn-home{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;max-width:320px;padding:16px;margin:0 auto;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);transition:all 0.2s;
  }
.btn-home:hover{background:var(--red);border-color:var(--red)}
.state{display:none}
.state.show{display:block}
.mypage{
    max-width:1280px;margin:0 auto;padding:32px;
    display:grid;grid-template-columns:240px 1fr;gap:32px;
  }
.my-side{position:sticky;top:120px;align-self:start}
.my-welcome{
    background:var(--white);padding:24px;margin-bottom:20px;
    border:1px solid var(--line-soft);
  }
.my-welcome-name{
    font-family:var(--jp-sans);font-size:18px;font-weight:700;
    letter-spacing:0.05em;margin-bottom:4px;
  }
.my-welcome-email{
    font-family:var(--sans);font-size:12px;font-weight:400;
    color:var(--gray-light);word-break:break-all;
  }
.my-nav{
    background:var(--white);border:1px solid var(--line-soft);
    list-style:none;
  }
.my-nav li{border-bottom:1px solid var(--line-soft)}
.my-nav li:last-child{border-bottom:none}
.my-nav a{
    display:flex;align-items:center;gap:12px;
    padding:14px 20px;
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    color:var(--ink);transition:all 0.15s;
  }
.my-nav a:hover{background:var(--off-white);color:var(--red)}
.my-nav a.active{color:var(--red);font-weight:700;border-left:3px solid var(--red)}
.my-nav a svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6;flex-shrink:0}
.my-nav .logout{color:var(--gray-light);font-size:13px}
.my-nav .logout:hover{color:var(--red)}
.my-main{}
.my-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
.my-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:36px;line-height:1.1;letter-spacing:-0.01em;
    margin-bottom:32px;
  }
.my-grid{
    display:grid;grid-template-columns:repeat(3,1fr);gap:20px;
    margin-bottom:40px;
  }
.my-card{
    background:var(--white);padding:28px 24px;
    border:1px solid var(--line-soft);
    transition:all 0.2s;display:flex;flex-direction:column;
  }
.my-card:hover{border-color:var(--red);box-shadow:0 4px 16px rgba(0,0,0,0.06)}
.my-card-icon{
    width:40px;height:40px;margin-bottom:16px;color:var(--red);
  }
.my-card-icon svg{width:40px;height:40px;stroke:currentColor;fill:none;stroke-width:1.4}
.my-card-title{
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.05em;margin-bottom:6px;
  }
.my-card-desc{
    font-family:var(--jp-sans);font-size:12px;color:var(--gray);
    line-height:1.6;margin-bottom:16px;flex:1;
  }
.my-card-link{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.1em;color:var(--red);
    display:flex;align-items:center;gap:4px;
    transition:gap 0.2s;
  }
.my-card:hover .my-card-link{gap:8px}
.my-card-link svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2}
.my-section{
    background:var(--white);padding:32px;
    border:1px solid var(--line-soft);margin-bottom:24px;
  }
.my-section-title{
    font-family:var(--serif);font-style:italic;font-weight:600;
    font-size:22px;margin-bottom:20px;
    padding-bottom:12px;border-bottom:1px solid var(--line-soft);
    display:flex;align-items:center;justify-content:space-between;
  }
.my-section-link{
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--red);transition:color 0.15s;
  }
.my-section-link:hover{color:var(--red-dark)}
.order-card{
    border:1px solid var(--line-soft);margin-bottom:16px;
    transition:border-color 0.15s;
  }
.order-card:last-child{margin-bottom:0}
.order-card:hover{border-color:var(--red)}
.order-card-header{
    display:flex;justify-content:space-between;align-items:center;
    padding:14px 20px;background:var(--off-white);
    border-bottom:1px solid var(--line-soft);
  }
.order-num{
    font-family:var(--sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);
  }
.order-date{
    font-family:var(--sans);font-size:12px;font-weight:500;
    color:var(--gray);
  }
.order-status{
    font-family:var(--jp-sans);font-size:11px;font-weight:700;
    padding:3px 10px;border-radius:2px;letter-spacing:0.05em;
  }
.order-status.shipped{background:#E8F5E9;color:#2E7D32}
.order-status.processing{background:#FFF3E0;color:#E65100}
.order-status.delivered{background:var(--off-white);color:var(--gray)}
.order-card-body{
    display:flex;align-items:center;gap:16px;
    padding:16px 20px;
  }
.order-thumb{
    width:56px;height:56px;background:var(--cream);flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--sans);font-size:10px;color:var(--gray-light);
  }
.order-info{flex:1}
.order-items-text{
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    color:var(--ink);
  }
.order-total{
    font-family:var(--sans);font-size:13px;font-weight:700;
    color:var(--ink);margin-top:2px;
  }
.order-arrow{
    color:var(--gray-light);flex-shrink:0;
  }
.order-arrow svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.my-info-dl{
    display:grid;grid-template-columns:120px 1fr;gap:0;
  }
.my-info-dl dt{
    padding:12px 0;font-family:var(--jp-sans);font-size:13px;
    font-weight:700;color:var(--gray);
    border-bottom:1px solid var(--line-soft);
  }
.my-info-dl dd{
    padding:12px 0;font-family:var(--jp-sans);font-size:14px;
    font-weight:500;color:var(--ink);
    border-bottom:1px solid var(--line-soft);
  }
a:hover {
      color: var(--red);
    }
.ticker {
      background-color: var(--cream);
      padding: 10px 0;
      text-align: center;
      font-size: 13px;
      color: var(--ink);
      border-bottom: 1px solid var(--line-soft);
      font-weight: 500;
    }
/* 旧ドロワー実装の残骸を撤去：#drawer{display:none} がID詳細度で現行スライドイン式
   ドロワーを常時非表示にし、.openによる開閉を無効化していたため削除。
   現行ドロワーは .drawer / .drawer.open（右からスライドイン）で制御する。 */
header.hide {
      transform: translateY(-100%);
    }
header.show-shadow {
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
    }
.header-content {
      max-width: 1280px;
      margin: 0 auto;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
.logo {
      font-family: var(--serif);
      font-size: 20px;
      font-weight: 700;
      color: var(--ink);
    }
.header-nav {
      display: flex;
      gap: 24px;
      align-items: center;
    }
.header-nav a {
      font-size: 14px;
      color: var(--ink);
      transition: color 0.2s ease;
    }
.header-nav a:hover {
      color: var(--red);
    }
.breadcrumb span {
      margin: 0 8px;
    }
.container {
      max-width: 1280px;
      margin: 0 auto;
      padding: 0 20px;
      flex: 1;
    }
.dashboard {
      display: grid;
      grid-template-columns: 240px 1fr;
      gap: 40px;
      padding: 40px 0;
    }
.sidebar {
      position: sticky;
      top: 120px;
      height: fit-content;
    }
.welcome-card {
      background-color: var(--white);
      border: 1px solid var(--line-soft);
      padding: 20px 16px;
      margin-bottom: 24px;
      border-radius: 4px;
    }
.welcome-card .user-name {
      font-family: var(--jp-sans);
      font-size: 15px;
      font-weight: 700;
      color: var(--ink);
      margin-bottom: 4px;
    }
.welcome-card .user-email {
      font-family: var(--jp-sans);
      font-size: 12px;
      color: var(--gray-light);
    }
.sidebar-nav {
      list-style: none;
    }
.sidebar-nav li {
      margin-bottom: 0;
    }
.sidebar-nav a {
      display: flex;
      align-items: center;
      gap: 12px;
      padding: 12px 16px;
      border-left: 3px solid transparent;
      font-size: 14px;
      color: var(--ink);
      transition: all 0.2s ease;
      position: relative;
    }
.sidebar-nav a:hover {
      background-color: var(--off-white);
    }
.sidebar-nav a.active {
      border-left-color: var(--red);
      color: var(--red);
      font-weight: 700;
    }
.sidebar-nav svg {
      width: 16px;
      height: 16px;
      stroke: currentColor;
      fill: none;
      stroke-width: 2;
    }
.main {
      background-color: var(--white);
      border: 1px solid var(--line-soft);
      padding: 40px;
      border-radius: 4px;
    }
.page-header {
      margin-bottom: 32px;
      padding-bottom: 24px;
      border-bottom: 1px solid var(--line-soft);
    }
.page-title {
      font-family: var(--serif);
      font-size: 32px;
      font-style: italic;
      color: var(--ink);
      margin-bottom: 8px;
    }
.page-label {
      font-family: var(--jp-sans);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 2px;
      color: var(--gray);
      text-transform: uppercase;
    }
.form-group {
      margin-bottom: 24px;
    }
.form-group label {
      display: block;
      font-family: var(--jp-sans);
      font-size: 13px;
      font-weight: 700;
      color: var(--ink);
      margin-bottom: 6px;
    }
.form-group.required > label::before {
      content: '必須';
      display: inline-block;
      background-color: var(--red);
      color: var(--white);
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.05em;
      padding: 2px 6px;
      margin-right: 8px;
      border-radius: 2px;
      vertical-align: 1px;
    }
.form-row {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 16px;
      margin-bottom: 24px;
    }
.form-row .form-group {
      margin-bottom: 0;
    }
.form-row + .form-row {
      margin-top: -16px;
    }
.form-group.required:has(> label:only-child) {
      margin-bottom: 10px;
    }
.form-row .form-group label[style*="visibility:hidden"],
    .form-row .form-group label[style*="visibility: hidden"] {
      display: none;
    }
input[type="text"],
    input[type="email"],
    input[type="tel"],
    input[type="password"],
    input[type="date"],
    select {
      width: 100%;
      padding: 12px 16px;
      border: 1px solid var(--line-soft);
      font-size: 15px;
      font-family: var(--jp-sans);
      color: var(--ink);
      background-color: var(--white);
      transition: border-color 0.2s ease, box-shadow 0.2s ease;
      border-radius: 2px;
    }
input[type="text"]:focus,
    input[type="email"]:focus,
    input[type="tel"]:focus,
    input[type="password"]:focus,
    input[type="date"]:focus,
    select:focus {
      outline: none;
      border-color: var(--red);
      box-shadow: 0 0 0 3px rgba(195, 13, 35, 0.1);
    }
.password-input-wrapper {
      position: relative;
    }
.password-toggle {
      position: absolute;
      right: 12px;
      top: 50%;
      transform: translateY(-50%);
      background: none;
      border: none;
      cursor: pointer;
      color: var(--gray);
      font-size: 12px;
      font-weight: 700;
      padding: 0;
      transition: color 0.2s ease;
    }
.password-toggle:hover {
      color: var(--ink);
    }
.form-options {
      display: flex;
      gap: 24px;
      margin-top: 8px;
    }
.radio-group,
    .checkbox-group {
      display: flex;
      align-items: center;
      gap: 8px;
    }
input[type="radio"],
    input[type="checkbox"] {
      width: 18px;
      height: 18px;
      cursor: pointer;
      accent-color: var(--red);
    }
.radio-group label,
    .checkbox-group label {
      margin-bottom: 0;
      font-weight: 400;
      cursor: pointer;
      font-size: 14px;
    }
.postal-search-wrapper {
      display: flex;
      gap: 8px;
      align-items: flex-end;
    }
.postal-search-wrapper input {
      flex: 0 0 200px;
    }
.postal-search-btn {
      padding: 12px 16px;
      background-color: var(--white);
      border: 1px solid var(--line-soft);
      color: var(--ink);
      font-size: 13px;
      font-weight: 700;
      cursor: pointer;
      transition: all 0.2s ease;
      border-radius: 2px;
      white-space: nowrap;
    }
.postal-search-btn:hover {
      background-color: var(--off-white);
      border-color: var(--red);
    }
.password-section {
      border-top: 1px solid var(--line-soft);
      padding-top: 24px;
      margin-top: 24px;
    }
.password-section-title {
      font-family: var(--jp-sans);
      font-size: 14px;
      font-weight: 700;
      color: var(--ink);
      margin-bottom: 16px;
    }
.password-note {
      font-size: 12px;
      color: var(--gray);
      margin-bottom: 16px;
      padding: 12px 16px;
      background-color: var(--off-white);
      border-radius: 2px;
    }
.section-header {
      margin-bottom: 24px;
      padding-bottom: 16px;
      border-bottom: 1px solid var(--line-soft);
    }
.section-title {
      font-family: var(--serif);
      font-size: 18px;
      font-style: italic;
      color: var(--ink);
      margin-bottom: 6px;
    }
.section-label {
      font-family: var(--jp-sans);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: 1px;
      color: var(--gray-light);
      text-transform: uppercase;
    }
.button-group {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 16px;
      margin-top: 40px;
    }
.btn {
      padding: 16px 32px;
      border: none;
      border-radius: 2px;
      font-family: var(--jp-sans);
      font-size: 14px;
      font-weight: 700;
      cursor: pointer;
      transition: all 0.2s ease;
      text-decoration: none;
      display: inline-block;
    }
.back-link {
      font-size: 13px;
      color: var(--gray);
      transition: color 0.2s ease;
    }
.back-link:hover {
      color: var(--red);
    }
.footer-content {
      max-width: 1280px;
      margin: 0 auto;
    }
.footer-section {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
      gap: 40px;
      margin-bottom: 40px;
    }
.footer-column h3 {
      font-family: var(--serif);
      font-size: 16px;
      margin-bottom: 16px;
      font-weight: 400;
    }
.footer-column ul {
      list-style: none;
    }
.footer-column li {
      margin-bottom: 12px;
    }
.footer-column a {
      font-size: 13px;
      color: var(--white);
      transition: color 0.2s ease;
    }
.footer-column a:hover {
      color: var(--gold);
    }
.footer-info {
      border-top: 1px solid rgba(255, 255, 255, 0.1);
      padding-top: 24px;
      text-align: center;
      font-size: 12px;
    }
.footer-phone {
      font-size: 14px;
      font-weight: 700;
      margin-bottom: 8px;
    }
.footer-hours {
      font-size: 12px;
      color: rgba(255, 255, 255, 0.7);
    }
@media (max-width: 1279px) {
      .dashboard {
        grid-template-columns: 1fr;
        gap: 24px;
      }

      .sidebar {
        position: static;
        display: grid;
        grid-template-columns: 200px 1fr;
        gap: 20px;
        margin-bottom: 24px;
      }

      .sidebar-nav {
        grid-column: 2;
      }

      .main {
        padding: 32px;
      }

      .form-row {
        grid-template-columns: 1fr;
      }
    }
@media (max-width: 767px) {
      .header-nav {
        display: none;
      }

      .drawer-toggle {
        display: block;
        background: none;
        border: none;
        cursor: pointer;
        font-size: 20px;
      }

      .sidebar {
        display: none;
      }

      .dashboard {
        padding: 24px 0;
      }

      .main {
        padding: 24px;
        border: none;
        background-color: var(--white);
      }

      .page-title {
        font-size: 24px;
      }

      .page-header {
        margin-bottom: 24px;
      }

      .form-row {
        grid-template-columns: 1fr;
      }

      .postal-search-wrapper {
        flex-direction: column;
      }

      .postal-search-wrapper input {
        flex: 1;
      }

      .postal-search-btn {
        width: 100%;
      }

      .section-header {
        margin-bottom: 20px;
      }

      .section-title {
        font-size: 16px;
      }

      .btn-primary {
        width: 100%;
      }

      footer {
        padding: 32px 20px;
      }

      .footer-section {
        grid-template-columns: 1fr;
        gap: 24px;
        margin-bottom: 24px;
      }
    }
input,select,textarea{font-family:inherit}
.mypage{max-width:1280px;margin:0 auto;padding:32px;display:grid;grid-template-columns:240px 1fr;gap:32px}
.my-welcome{background:var(--white);padding:24px;margin-bottom:20px;border:1px solid var(--line-soft)}
.my-welcome-name{font-family:var(--jp-sans);font-size:18px;font-weight:700;letter-spacing:0.05em;margin-bottom:4px}
.my-welcome-email{font-family:var(--sans);font-size:12px;font-weight:400;color:var(--gray-light);word-break:break-all}
.my-nav{background:var(--white);border:1px solid var(--line-soft);list-style:none}
.my-nav a{display:flex;align-items:center;gap:12px;padding:14px 20px;font-family:var(--jp-sans);font-size:14px;font-weight:500;color:var(--ink);transition:all 0.15s}
.my-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
.my-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:36px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:32px}
.address-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--line-soft)}
.address-header .address-title{margin:0}
.add-button{
    display:inline-flex;align-items:center;gap:8px;
    background:var(--white);border:2px solid var(--red);color:var(--red);
    padding:12px 20px;font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.05em;border-radius:4px;transition:all 0.15s;cursor:pointer;
  }
.add-button:hover{background:var(--red-light)}
.add-button svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.address-card{
    background:var(--white);border:1px solid var(--line-soft);
    padding:24px;margin-bottom:16px;
    position:relative;
  }
.address-card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}
.address-info-left{flex:1}
.address-default-badge{
    display:inline-block;background:var(--red-light);color:var(--red);
    font-size:11px;font-weight:700;padding:3px 10px;border-radius:2px;
    letter-spacing:0.05em;margin-bottom:8px;
  }
.address-name{
    font-size:16px;font-weight:700;color:var(--ink);margin-bottom:8px;
  }
.address-postal,.address-phone{
    font-size:14px;color:var(--gray);margin-bottom:4px;line-height:1.6;
  }
.address-actions{
    display:flex;align-items:center;gap:16px;margin-top:16px;
  }
.btn-edit{
    background:var(--red);color:var(--white);
    padding:10px 20px;font-family:var(--jp-sans);font-size:13px;font-weight:700;
    border-radius:4px;transition:all 0.15s;border:none;cursor:pointer;
  }
.btn-edit:hover{background:var(--red-dark)}
.link-action{
    color:var(--gray);font-size:13px;font-weight:500;
    transition:color 0.15s;cursor:pointer;
  }
.link-action:hover{color:var(--red)}
.address-form-wrapper{
    background:var(--white);border:1px solid var(--line-soft);
    padding:24px;margin-bottom:32px;
    display:none;
  }
.address-form-wrapper.show{display:block}
.form-section{margin-bottom:24px}
.form-section:last-child{margin-bottom:0}
.form-label{
    display:block;font-family:var(--jp-sans);font-size:14px;font-weight:700;
    color:var(--ink);margin-bottom:8px;
  }
.form-label.required::after{content:'*';color:var(--red);margin-left:4px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.form-field{display:flex;flex-direction:column}
.form-input,
  .form-select{
    border:1px solid var(--line-soft);padding:12px 14px;
    font-family:var(--jp-sans);font-size:14px;background:var(--white);
    color:var(--ink);border-radius:4px;transition:border-color 0.15s;
  }
.form-input:focus,
  .form-select:focus{border-color:var(--red)}
.postal-group{display:flex;align-items:flex-end;gap:8px}
.postal-group .form-field{flex:1}
.postal-search-btn{
    background:var(--white);border:1px solid var(--line-soft);
    padding:12px 16px;font-family:var(--jp-sans);font-size:13px;font-weight:700;
    color:var(--gray);transition:all 0.15s;border-radius:4px;cursor:pointer;
  }
.postal-search-btn:hover{border-color:var(--red);color:var(--red)}
.checkbox-group{
    display:flex;align-items:center;gap:8px;margin-top:16px;
  }
/* 旧名残：素の .form-checkbox{width:18px} がログインの .form-checkbox（input+ラベルの
   flexコンテナ）を18px幅に潰し、ラベルが縦書き化していた。対象を入力要素に限定して衝突を解消。 */
.checkbox-group input[type="checkbox"]{
    width:18px;height:18px;accent-color:var(--red);cursor:pointer;
  }
.checkbox-label{
    font-family:var(--jp-sans);font-size:14px;color:var(--ink);cursor:pointer;
  }
.form-actions{
    display:flex;gap:12px;align-items:center;margin-top:32px;padding-top:24px;
    border-top:1px solid var(--line-soft);
  }
.btn-submit{
    background:var(--red);color:var(--white);
    padding:12px 32px;font-family:var(--jp-sans);font-size:14px;font-weight:700;
    border-radius:4px;transition:all 0.15s;border:none;cursor:pointer;
    letter-spacing:0.05em;
  }
.btn-submit:hover{background:var(--red-dark)}
.btn-cancel{
    color:var(--gray);font-size:13px;font-weight:500;
    transition:color 0.15s;cursor:pointer;
  }
.btn-cancel:hover{color:var(--red)}
.header-action.active{color:var(--red)}
.header-action.active .icon svg{fill:var(--red);stroke:var(--red)}
.fav-page-header{
    max-width:1280px;margin:0 auto;
    padding:40px 32px 32px;
    border-bottom:2px solid var(--red);
  }
.fav-page-header-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
.fav-page-header h1{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:42px;line-height:1.1;letter-spacing:-0.01em;
  }
.fav-page-count{
    font-family:var(--jp-sans);font-size:14px;font-weight:500;
    color:var(--gray);margin-top:12px;
  }
.fav-page-count strong{
    font-weight:900;color:var(--ink);font-size:18px;margin:0 2px;
  }
.fav-section{
    max-width:1280px;margin:0 auto;
    padding:32px 32px 48px;
  }
.fav-grid{
    display:grid;grid-template-columns:repeat(4,1fr);
    gap:24px 20px;
  }
.product-card:hover{box-shadow:0 4px 16px rgba(0,0,0,0.08)}
.fav-remove{
    position:absolute;top:12px;right:12px;z-index:10;
    width:36px;height:36px;
    background:var(--white);border:1px solid var(--line-soft);
    border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    transition:all 0.15s;
    box-shadow:0 1px 4px rgba(0,0,0,0.08);
  }
.fav-remove svg{width:18px;height:18px;fill:var(--red);stroke:var(--red);stroke-width:1.6}
.fav-remove:hover{background:var(--red-light);border-color:var(--red);transform:scale(1.1)}
.product-cat{
    font-family:var(--sans);font-size:10px;font-weight:700;
    letter-spacing:0.2em;color:var(--gray-light);margin-bottom:4px;
  }
.product-name a{transition:color 0.15s}
.product-name a:hover{color:var(--red)}
.product-cart svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.fav-empty{
    display:none; 
    text-align:center;padding:80px 32px;
  }
.fav-empty.show{display:block}
.fav-empty-icon{margin:0 auto 24px;width:80px;height:80px;color:var(--gray-light)}
.fav-empty-icon svg{width:80px;height:80px;stroke:currentColor;fill:none;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.fav-empty-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:28px;line-height:1.2;margin-bottom:12px;color:var(--ink);
  }
.fav-empty-text{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
    line-height:1.8;margin-bottom:32px;
  }
.fav-empty-cta{
    display:inline-flex;align-items:center;gap:8px;
    padding:14px 32px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:14px;font-weight:700;
    letter-spacing:0.08em;border:2px solid var(--red);
    transition:all 0.2s;
  }
.fav-empty-cta:hover{background:var(--red-dark);border-color:var(--red-dark)}
.fav-empty-cta svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.fav-recommend{
    max-width:1280px;margin:0 auto;
    padding:48px 32px;border-top:2px solid var(--red);
  }
.fav-recommend-title{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:6px;
  }
.fav-recommend-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:28px;line-height:1.1;margin-bottom:24px;
  }
.product-price .reduced-mark,
  .recommend-card-price .reduced-mark{
    display:inline-block;color:var(--red);font-weight:700;
    margin-left:3px;font-size:10px;vertical-align:super;
  }
.order-card{
    background:var(--white);border:1px solid var(--line-soft);
    margin-bottom:20px;transition:border-color 0.15s;
  }
.order-header{
    display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;
    padding:16px 24px;background:var(--off-white);
    border-bottom:1px solid var(--line-soft);gap:12px;
  }
.order-header-left{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.order-num{font-family:var(--sans);font-size:14px;font-weight:700;letter-spacing:0.03em}
.order-date{font-family:var(--sans);font-size:12px;font-weight:500;color:var(--gray)}
.order-status{
    font-family:var(--jp-sans);font-size:11px;font-weight:700;
    padding:3px 12px;border-radius:2px;letter-spacing:0.05em;
  }
.order-status.delivered{background:var(--off-white);color:var(--gray);border:1px solid var(--line-soft)}
.order-body{padding:20px 24px}
.order-items{display:flex;flex-direction:column;gap:16px;margin-bottom:20px}
.order-item{
    display:flex;align-items:center;gap:16px;
    padding-bottom:16px;border-bottom:1px solid var(--line-soft);
  }
.order-item:last-child{padding-bottom:0;border-bottom:none}
.order-item-img{
    width:64px;height:64px;background:var(--cream);flex-shrink:0;overflow:hidden;
  }
.order-item-img img{width:100%;height:100%;object-fit:cover}
.order-item-info{flex:1}
.order-item-name{font-family:var(--jp-sans);font-size:14px;font-weight:500;margin-bottom:2px}
.order-item-qty{font-family:var(--sans);font-size:12px;color:var(--gray)}
.order-item-price{font-family:var(--sans);font-size:14px;font-weight:700;flex-shrink:0}
.order-totals{
    display:flex;justify-content:flex-end;align-items:center;gap:24px;
    padding-top:16px;border-top:2px solid var(--red);
  }
.order-totals-label{font-family:var(--jp-sans);font-size:14px;font-weight:700}
.order-totals-value{font-family:var(--sans);font-size:20px;font-weight:900;color:var(--red)}
.order-totals-value .yen{font-size:14px}
.order-totals-value .tax{font-size:11px;font-weight:500;color:var(--gray);margin-left:4px}
.order-actions{
    display:flex;justify-content:flex-end;gap:12px;
    padding:16px 24px;border-top:1px solid var(--line-soft);
  }
.btn-order-detail{
    padding:10px 20px;
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--ink);
    border:2px solid var(--red);background:var(--white);
    transition:all 0.15s;
  }
.btn-order-detail:hover{background:var(--red-dark);color:var(--white)}
.btn-reorder{
    padding:10px 20px;
    font-family:var(--jp-sans);font-size:13px;font-weight:700;
    letter-spacing:0.05em;color:var(--white);
    background:var(--red);border:2px solid var(--red);
    transition:all 0.15s;display:flex;align-items:center;gap:6px;
  }
.btn-reorder:hover{background:var(--red-dark);border-color:var(--red-dark)}
.btn-reorder svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.pagination a,.pagination span{
    display:flex;align-items:center;justify-content:center;
    width:40px;height:40px;
    font-family:var(--sans);font-size:14px;font-weight:700;
    border:1px solid var(--line-soft);background:var(--white);
    color:var(--ink);transition:all 0.15s;
  }
.pagination a:hover{border-color:var(--red);color:var(--red)}
.pagination .current{background:var(--red);color:var(--white);border-color:var(--red)}
.pagination .dots{border:none;background:none;color:var(--gray-light)}
.pw-reset-wrap{
    max-width:520px;margin:0 auto;padding:60px 32px 100px;
    text-align:center;
  }
.pw-label{
    font-family:var(--sans);font-size:12px;font-weight:700;
    letter-spacing:0.3em;color:var(--gray);margin-bottom:8px;
  }
.pw-heading{
    font-family:var(--serif);font-style:italic;font-weight:700;
    font-size:36px;line-height:1.1;letter-spacing:-0.01em;
    margin-bottom:8px;
  }
.pw-sub{
    font-family:var(--jp-sans);font-size:14px;color:var(--gray);
    margin-bottom:36px;line-height:1.8;
  }
.pw-icon{
    width:72px;height:72px;margin:0 auto 24px;
    color:var(--red);
  }
.pw-icon svg{width:72px;height:72px;stroke:currentColor;fill:none;stroke-width:1.2}
.pw-form{text-align:left;margin-bottom:24px}
.btn-reset{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;padding:16px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);
    transition:all 0.2s;
  }
.btn-reset:hover{background:var(--red-dark);border-color:var(--red-dark)}
.btn-reset svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.back-link{
    display:inline-block;margin-top:24px;
    font-family:var(--jp-sans);font-size:13px;font-weight:500;
    color:var(--gray);transition:color 0.15s;
  }
.pw-complete{display:none}
.pw-complete.show{display:block}
.pw-form-state{display:block}
.pw-form-state.hide{display:none}
.pw-check{
    width:80px;height:80px;border-radius:50%;
    background:var(--red);color:var(--white);
    display:flex;align-items:center;justify-content:center;
    margin:0 auto 28px;
    animation:popIn 0.4s ease;
  }
.pw-check svg{width:40px;height:40px;stroke:currentColor;fill:none;stroke-width:2.5}
.pw-complete-text{
    font-family:var(--jp-sans);font-size:15px;font-weight:500;
    color:var(--ink);line-height:2;margin-bottom:16px;
  }
.pw-complete-email{
    font-family:var(--sans);font-size:16px;font-weight:700;
    color:var(--red);letter-spacing:0.02em;
  }
.pw-notice{
    margin-top:28px;padding:20px 24px;
    background:var(--off-white);
    font-family:var(--jp-sans);font-size:13px;
    color:var(--gray);line-height:1.8;
    text-align:left;
  }
.pw-notice strong{color:var(--ink);font-weight:700}
.pw-complete-actions{
    margin-top:32px;display:flex;flex-direction:column;
    align-items:center;gap:16px;
  }
.btn-back-login{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;max-width:320px;padding:16px;
    background:var(--red);color:var(--white);
    font-family:var(--jp-sans);font-size:15px;font-weight:700;
    letter-spacing:0.1em;border:2px solid var(--red);
    transition:all 0.2s;
  }
.btn-back-login:hover{background:var(--red);border-color:var(--red)}
.btn-back-login svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.terms-wrap{max-width:900px;margin:0 auto;padding:48px 32px 80px}
.terms-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
.terms-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:40px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:12px;color:var(--ink)}
.terms-sub{font-family:var(--jp-sans);font-size:15px;color:var(--gray);margin-bottom:48px;line-height:2}
.terms-section{margin-bottom:40px}
.terms-section h2{font-family:var(--serif);font-style:italic;font-weight:600;font-size:24px;line-height:1.2;letter-spacing:-0.01em;margin-bottom:16px;color:var(--ink);border-bottom:2px solid var(--line-soft);padding-bottom:12px}
.terms-section p{font-family:var(--jp-sans);font-size:15px;line-height:1.9;color:var(--ink);margin-bottom:14px}
.terms-section ul{list-style-position:inside;margin-left:0;margin-bottom:16px}
.terms-section li{font-family:var(--jp-sans);font-size:15px;line-height:1.9;color:var(--ink);margin-bottom:8px}
.legal-wrap{max-width:900px;margin:0 auto;padding:48px 32px 80px}
.legal-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
.legal-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:40px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:12px;color:var(--ink)}
.legal-sub{font-family:var(--jp-sans);font-size:15px;color:var(--gray);margin-bottom:48px;line-height:2}
.legal-dl{display:grid;grid-template-columns:180px 1fr;gap:0;margin-bottom:24px;border-top:2px solid var(--line-soft)}
.legal-dl dt{padding:16px 20px;font-family:var(--jp-sans);font-size:14px;font-weight:700;color:var(--white);background:var(--red);border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.legal-dl dd{padding:16px 20px;font-family:var(--jp-sans);font-size:14px;color:var(--ink);border-bottom:1px solid var(--line-soft);background:var(--off-white)}
.legal-dl dd a{color:var(--red);text-decoration:underline}
.legal-dl dd a:hover{color:var(--red-dark)}
.privacy-wrap{max-width:900px;margin:0 auto;padding:48px 32px 80px}
.privacy-label{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0.3em;color:var(--gray);margin-bottom:8px}
.privacy-heading{font-family:var(--serif);font-style:italic;font-weight:700;font-size:40px;line-height:1.1;letter-spacing:-0.01em;margin-bottom:12px;color:var(--ink)}
.privacy-sub{font-family:var(--jp-sans);font-size:15px;color:var(--gray);margin-bottom:48px;line-height:2}
.privacy-section{margin-bottom:40px}
.privacy-section h2{font-family:var(--serif);font-style:italic;font-weight:600;font-size:24px;line-height:1.2;letter-spacing:-0.01em;margin-bottom:16px;color:var(--ink);border-bottom:2px solid var(--line-soft);padding-bottom:12px}
.privacy-section p{font-family:var(--jp-sans);font-size:15px;line-height:1.9;color:var(--ink);margin-bottom:14px}
.privacy-section ul{list-style-position:inside;margin-left:0;margin-bottom:16px}
.privacy-section li{font-family:var(--jp-sans);font-size:15px;line-height:1.9;color:var(--ink);margin-bottom:8px}
/* ---- お問い合わせ：EC-CUBE標準フォーム出力をモックの見た目に合わせる 追加: 2026-06-02 ---- */
.ct-phone-cap{font-family:var(--jp-sans);font-size:12px;font-weight:700;letter-spacing:.2em;color:var(--gray);margin-bottom:6px}
.contact-wrap .mb-3{margin-bottom:20px}
.contact-wrap fieldset{border:0;padding:0;margin:0 0 20px}
.contact-wrap legend{font-family:var(--jp-sans);font-size:14px;font-weight:700;color:var(--ink);margin-bottom:10px;padding:0;width:auto;border:0;letter-spacing:.04em}
.contact-wrap .form-label,
.contact-wrap .col-form-label{display:block;font-family:var(--jp-sans);font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--ink);margin-bottom:6px}
.contact-wrap input[type="text"],
.contact-wrap input[type="email"],
.contact-wrap input[type="tel"],
.contact-wrap input[type="number"],
.contact-wrap select,
.contact-wrap textarea,
.contact-wrap .form-control{width:100%;font-family:var(--jp-sans);font-size:15px;color:var(--ink);background:var(--white);border:1px solid var(--kraft);border-radius:8px;padding:13px 15px;box-sizing:border-box;transition:border-color .2s,box-shadow .2s}
.contact-wrap input:focus,
.contact-wrap select:focus,
.contact-wrap textarea:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px var(--red-light)}
.contact-wrap textarea{min-height:140px;resize:vertical}
.contact-wrap #contact_name,
.contact-wrap #contact_kana{display:flex;gap:14px}
.contact-wrap #contact_name > .mb-3,
.contact-wrap #contact_kana > .mb-3{flex:1;margin-bottom:0}
.contact-wrap .required::after{content:"必須";display:inline-block;font-size:10px;font-weight:700;color:#fff;background:var(--red);margin-left:8px;padding:2px 7px;border-radius:3px;vertical-align:middle;letter-spacing:.02em}
.contact-wrap .invalid-feedback{display:block;color:var(--red);font-size:13px;margin-top:6px;font-family:var(--jp-sans)}
.ct-actions{margin-top:28px;text-align:center}
@media(max-width:767px){
  .contact-wrap #contact_name,
  .contact-wrap #contact_kana{flex-direction:column;gap:0}
  .contact-wrap #contact_name > .mb-3{margin-bottom:14px}
}

/* ---- マイページ：空表示・注文詳細(history) 追加: 2026-06-02 ---- */
.my-empty{text-align:center;padding:64px 24px;background:var(--cream);border-radius:12px}
.my-empty-text{font-family:var(--jp-sans);font-size:14px;color:var(--gray);margin-bottom:22px}

.order-detail-summary{background:var(--cream);border-radius:12px;padding:22px 24px;margin-bottom:28px}
.order-detail-dl{margin:0}
.order-detail-row{display:flex;gap:16px;padding:8px 0;border-bottom:1px solid rgba(0,0,0,.06);font-family:var(--jp-sans)}
.order-detail-row:last-child{border-bottom:0}
.order-detail-row dt{flex:0 0 120px;font-size:12px;color:var(--gray);margin:0}
.order-detail-row dd{flex:1;font-size:14px;color:var(--ink);margin:0}
.order-detail-heading{font-family:var(--jp-sans);font-size:15px;font-weight:700;color:var(--ink);letter-spacing:.04em;margin:0 0 14px;padding-left:12px;border-left:4px solid var(--red)}
.order-detail-items{margin-bottom:28px}
.order-table{width:100%;border-collapse:collapse;font-family:var(--jp-sans);font-size:14px}
.order-table th,.order-table td{padding:12px 10px;border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:top}
.order-table th{font-size:12px;font-weight:700;color:var(--gray);letter-spacing:.04em}
.order-table-class{display:block;font-size:12px;color:var(--gray);margin-top:2px}
.order-table-price,.order-table-qty,.order-table-subtotal{text-align:right;white-space:nowrap}
.order-detail-totals{max-width:360px;margin-left:auto;margin-bottom:28px}
.order-totals-dl{margin:0}
.order-totals-row{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--jp-sans);font-size:14px;padding:6px 0}
.order-totals-row dt{margin:0;color:var(--gray)}
.order-totals-row dd{margin:0;color:var(--ink)}
.order-totals-row--total{border-top:1px solid var(--line-soft);margin-top:8px;padding-top:12px;font-weight:700;font-size:16px}
.order-totals-row--total dd{font-family:var(--serif);font-size:20px;font-weight:700;color:var(--red)}
.order-detail-shipping{background:var(--cream);border-radius:12px;padding:22px 24px;margin-bottom:28px}
.order-detail-back{margin-top:8px}
@media(max-width:767px){
  .order-table th,.order-table td{padding:10px 6px;font-size:13px}
  .order-detail-totals{max-width:100%}
}

/* ============================================================
   2026-06-02 不具合修正パッチ（末尾＝最優先で上書き）
   ① ご利用ガイドFAQのアコーディオン分離
   ② 「必須」「任意」バッジの可読性是正
   ③ 会員登録フォームのEC-CUBE標準ウィジェット体裁
   ============================================================ */

/* ---- ① ご利用ガイドFAQ：details/summary型アコーディオン ----
   トップページの静的FAQ（div.faq-q + span.q-badge / display:flex）と
   クラス名を共有しているため、要素型で限定して衝突を避ける。
   guide.twig は <details class="faq-item"><summary class="faq-q"> 構造。 */
details.faq-item{border-bottom:1px solid var(--line-soft)}
summary.faq-q{
  display:block;list-style:none;cursor:pointer;position:relative;
  gap:0;align-items:initial;
  padding:20px 44px 20px 30px;
  font-family:var(--jp-sans);font-size:16px;font-weight:700;
  letter-spacing:0.04em;color:var(--ink);
}
summary.faq-q::-webkit-details-marker{display:none}
summary.faq-q::before{
  content:"Q";position:absolute;left:0;top:20px;
  color:var(--red);font-family:var(--sans);font-weight:700;font-size:16px;
}
/* 右端の開閉インジケータ（赤いシェブロン。閉=下向き／開=上向き） */
summary.faq-q::after{
  content:"";position:absolute;right:14px;top:24px;
  width:8px;height:8px;
  border-right:2px solid var(--red);border-bottom:2px solid var(--red);
  transform:rotate(45deg);transition:transform 0.2s ease;
}
details.faq-item[open] summary.faq-q::after{transform:rotate(-135deg)}
summary.faq-q:hover{color:var(--red)}
details.faq-item .faq-a{
  position:relative;padding:0 8px 24px 30px;
  font-family:var(--jp-sans);font-size:15px;line-height:1.9;color:var(--gray);
}
details.faq-item .faq-a::before{
  content:"A";position:absolute;left:0;top:0;
  color:var(--gray);font-family:var(--sans);font-weight:700;
}
@media (max-width:767px){
  summary.faq-q{font-size:15px;padding:16px 40px 16px 26px}
  summary.faq-q::before{top:16px}
  summary.faq-q::after{top:20px}
  details.faq-item .faq-a{padding:0 8px 18px 26px;font-size:14px}
}

/* ---- ② 必須／任意バッジ：色の競合で文字が同化する不具合を是正 ----
   旧来 .required(赤背景) と .form-label .required(赤文字) が合成され
   「赤地に赤文字」で必須の文字が消えていた。赤地に白文字で固定する。 */
.form-label .required{
  display:inline-block;vertical-align:middle;
  color:#fff;background:var(--red);border:1px solid var(--red);border-radius:3px;
  font-size:10px;font-weight:700;letter-spacing:0.04em;
  margin-left:6px;padding:2px 7px;line-height:1.5;
}
.form-label .optional{
  display:inline-block;vertical-align:middle;
  color:var(--gray);background:transparent;border:1px solid var(--line-soft);border-radius:3px;
  font-size:10px;font-weight:700;letter-spacing:0.04em;
  margin-left:6px;padding:2px 7px;line-height:1.5;
}

/* ---- ③ 会員登録フォーム：EC-CUBE標準ウィジェット出力の体裁 ----
   会社名・職業はinputに.form-inputを付与済み。生年月日(3select)・性別(radio群)・
   規約同意(checkbox)はウィジェット既定のマークアップをサイト体裁へ整える。
   いずれも .reg-form 配下に限定し他ページへ影響させない。 */
.reg-form select{
  width:100%;padding:14px 16px;border:2px solid var(--line-soft);border-radius:0;
  font-family:var(--jp-sans);font-size:15px;background:var(--white);color:var(--ink);
  transition:border-color 0.15s;
}
.reg-form select:focus{border-color:var(--red);outline:none}
.reg-form .visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.reg-form .reg-birth #entry_birth{width:100%}
.reg-form .reg-birth .input-group{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:12px}
.reg-form .reg-birth select{width:100%}
.reg-form .reg-radio-group{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;padding-top:4px}
.reg-form .reg-radio-group label{
  display:inline-flex;align-items:center;gap:6px;margin:0;cursor:pointer;
  font-family:var(--jp-sans);font-size:14px;font-weight:500;color:var(--ink);
}
.reg-form .reg-radio-group input{width:18px;height:18px;accent-color:var(--red);cursor:pointer;margin:0}
.reg-form .reg-agree{
  display:flex;align-items:center;gap:10px;
  padding:16px 20px;background:var(--off-white);border:1px solid var(--line-soft);
}
.reg-form .reg-agree label,.reg-form .reg-agree .form-check{
  display:flex;align-items:center;gap:10px;margin:0;cursor:pointer;
  font-family:var(--jp-sans);font-size:14px;font-weight:500;color:var(--ink);
}
.reg-form .reg-agree input[type="checkbox"]{
  width:20px;height:20px;accent-color:var(--red);flex-shrink:0;cursor:pointer;margin:0;
}
.reg-form .reg-agree-links{margin-top:10px;font-family:var(--jp-sans);font-size:13px;color:var(--gray)}
.reg-form .reg-agree-links a{color:var(--red);border-bottom:1px solid var(--red)}
.reg-form .reg-agree-links a:hover{color:var(--red-dark)}
@media (max-width:767px){
  .reg-form .reg-birth .input-group{grid-template-columns:1fr 1fr 1fr;gap:8px}
  .reg-form .reg-birth select{padding:12px 8px;font-size:14px}
}

/* ============================================================
   2026-06-02 追加修正パッチ2（末尾＝最優先）
   (1)規約同意ラベルのマーカー除去 (4)フッター手前の余白
   (8)お問い合わせフォームのEC-CUBEウィジェット体裁
   ============================================================ */

/* (1) 規約同意チェックのラベルに .required(赤バッジ)が当たって赤マーカー化するのを解除 */
.reg-form .reg-agree .form-check-label,
.reg-form .reg-agree label.required,
.reg-form .reg-agree .form-check-label.required{
  background:transparent;color:var(--ink);border:0;padding:0;margin:0;
  font-family:var(--jp-sans);font-size:14px;font-weight:500;border-radius:0;letter-spacing:0;
}

/* (4) コンテンツ最下部とフッターの間に余白（密着解消） */
#main-content{padding-bottom:64px}

/* (8) お問い合わせフォーム：EC-CUBE標準ウィジェット出力をサイト体裁へ（reg-formと同等） */
.contact-form select{
  width:100%;padding:14px 16px;border:2px solid var(--line-soft);border-radius:0;
  font-family:var(--jp-sans);font-size:15px;background:var(--white);color:var(--ink);
  transition:border-color 0.15s;
}
.contact-form select:focus{border-color:var(--red);outline:none}
.contact-form .visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.contact-form .input-group{display:grid;grid-template-columns:1fr;gap:12px}

/* (5) お知らせ：URL未設定のお知らせは非クリック表示。リンクの装飾/ホバーを無効化 */
.news-item--static{cursor:default}
.news-item--static:hover{background:inherit;color:inherit;transform:none;opacity:1}
.news-item--static .news-title{color:inherit}

/* (8追補) お問い合わせ：.contact-wrap .required::after が「必須」を追加生成し、
   明示スパンの必須バッジと二重化していたため ::after を無効化 */
.contact-wrap .required::after{content:none}
/* (5追補) 非クリックのお知らせはホバーで文字色を変えない */
.news-item--static:hover .news-title{color:var(--ink)}

/* ============================================================
   2026-06-02 修正パッチ3（末尾＝最優先）
   (1)ティッカーhoverで止めない (3)フッターの不要な下線除去
   (4)モバイルでサポート帯の縦詰まり解消 (6)ボタンhoverを白透過に
   ============================================================ */

/* (1) ティッカー：hoverでも停止しない */
.top-ticker:hover .top-ticker-track{animation-play-state:running !important}

/* (3) フッターの重複下線を除去（区切りは foot-top 下の1本に集約） */
.foot-contact{border-top:none !important;padding-top:0 !important}
.foot-tax-note{border-top:none !important}

/* (6) ボタンhover：濃赤への変化をやめ、赤地に白を薄く重ねて明るくする（白透過） */
.btn-primary:hover,.btn-submit:hover,.btn-login:hover,.btn-register:hover,
.btn-complete:hover,.btn-complete.primary:hover,.cart-empty-cta:hover,.fav-empty-cta:hover,
.btn-back:hover,.btn-order-detail:hover,.btn-reorder:hover,.btn-reset:hover,.btn-zip:hover,
.pdp-cart-btn:hover,.pdp-cart-btn.add-cart:hover,.btn-lg:hover{
  background-color:var(--red) !important;
  border-color:var(--red) !important;
  color:var(--white) !important;
  box-shadow:inset 0 0 0 999px rgba(255,255,255,.18) !important;
}
/* アウトライン系（白地→赤fill）も白透過の質感に揃える */
.btn-text:hover,.back-link:hover,.forgot-link a:hover{color:var(--red-dark)}

/* (4) モバイル(≤767)：サポート帯を1列・横並び（アイコン＋テキスト）にして縦詰まり解消
   2026-07-01 指示書項目13：「お問い合わせ」行のみ左右逆に見える不具合を修正。
   原因＝.support-item(48px 1fr の2列グリッド)の子要素が icon/title/desc の3つあり、
   3つ目(desc)が2列目(タイトルの下)ではなく1列目(アイコン幅48pxの下)に回り込んで
   縦につぶれて折り返していた。特に「お問い合わせ」行はdescが電話番号で長いため
   最も崩れて見えていた。ここでicon/title/descのgrid位置を明示指定して解消する。 */
@media (max-width:767px){
  .support-band{grid-template-columns:1fr !important;border-bottom:2px solid var(--red)}
  .support-item{
    display:grid;grid-template-columns:48px 1fr;column-gap:12px;row-gap:2px;align-items:center;
    text-align:left;border-right:none;border-bottom:1px solid var(--line-soft);
    padding:20px 16px;width:auto;
  }
  .support-item:last-child{border-bottom:none}
  .support-icon{margin:0;grid-column:1;grid-row:1 / span 2;align-self:center}
  .support-title{grid-column:2;grid-row:1;text-align:left;width:auto;white-space:normal}
  .support-desc{grid-column:2;grid-row:2;text-align:left;width:auto;white-space:normal}
}

/* ============================================================
   表示密度アップ（2026-06-28 BEN承認：標準的に詰める）
   余白約-20〜25% / 見出し-10〜15% / 画像-10% / 本文ほぼ据置
   ※ 末尾追記でオーバーライド（既存ルールは変更しない）。
   ※ デスクトップ(≥768px)中心。モバイルは既に高密度＆シニア
     可読性のため本文サイズは据置、大余白のみ微縮小。
   ============================================================ */
@media (min-width:768px){
  /* ※ sec-head/product-body/price/footer/foot-top はv2・型スケール見直しブロックへ集約（重複削除 2026-06-29） */

  /* --- ヒーロー見出し（-15%程度） --- */
  .hero-title{font-size:clamp(34px,4.4vw,54px)}

  /* --- 商品グリッド間隔（768-1023px用。カード内寸法はv2側に集約） --- */
  .product-grid{gap:18px 16px}
  #product_page #main-content{padding-bottom:56px}

  /* --- カテゴリ一覧などセクション下余白 --- */
  .tax-legend{padding:10px 32px 0}

  /* --- 商品詳細(PDP)：余白・見出し・価格を一回り圧縮 --- */
  .pdp-gallery{padding:24px}
  .pdp-gallery-main{margin-bottom:10px}
  .pdp-info{padding:24px 28px}
  .pdp-name{font-size:23px}
  .pdp-sku{margin-bottom:12px}
  .pdp-review-summary{margin-bottom:14px}
  .pdp-price-area{padding:16px 0;margin-bottom:16px}
  .pdp-price{font-size:31px}
  .pdp-price .yen{font-size:19px}
  .pdp-cart-area{margin-bottom:18px}
  .pdp-qty-row{margin-bottom:12px}
  .pdp-cart-btn{padding:15px 24px;font-size:16px}
  .pdp-delivery{padding:14px 0}
  .pdp-tab-btn{padding:14px 16px}
  .pdp-tab-content{padding:28px 28px}
}

/* --- モバイル(≤767px)：大余白のみ微縮小（フォントは据置） --- */
@media (max-width:767px){
  footer{padding:40px 16px 18px}
  #product_page #main-content{padding-bottom:40px}
}

/* ============================================================
   表示密度アップ v2（2026-06-29 BEN承認：ZOZO/楽天寄りの高密度）
   情報量優先。ベース微縮小＋商品一覧の列増＋カード/余白を強めに圧縮。
   末尾追記オーバーライド（既存は変更せず／このブロック削除で元に戻る）。
   モバイル(≤767px)は既に高密度のため原則据置。
   ============================================================ */

/* --- 全体ベース：本文を一段小さく（情報量UP） --- */
body{font-size:15px}

/* --- 商品カード：型スケール・比率・要素を再設計（高密度＆バランス重視）
   ・名前は細く小さく／価格を主役に（メリハリ）
   ・「商品を見る」ボタンは撤去しカード全体をリンク（list.twigで対応）
   ・角丸＋ヘアライン＋ホバーで軽く持ち上げ
   ※一覧・TOPランキング共通 --- */
.product-card{border:1px solid #ece7dc;border-radius:10px}
.product-card:hover{box-shadow:0 6px 18px rgba(26,26,26,0.09);transform:translateY(-2px)}
.product-card:hover .product-name{color:var(--red)}
.product-name{font-weight:400;color:#2a2a28;transition:color .15s}
/* 価格：赤・カード右下に配置（2026-06-29 BEN指示）。product-bodyはflex縦なのでmargin-top:autoで最下部へ。税込はグレー維持で階層を保つ */
.product-price{font-weight:700;color:var(--red);margin-top:auto;text-align:right}
.product-cart{display:none}

/* メインカード（ヒーロー右の注目商品）も価格を赤・右下に統一（2026-06-29 BEN指示）。
   flex縦＋height:100%でmargin-top:autoを効かせ最下部へ。税込はグレー維持 */
.hero-prod{display:flex;flex-direction:column;height:100%}
.hero-prod-price{color:var(--red);margin-top:auto;text-align:right}

/* 見出し（赤ライン）とカードの間に余白を追加（2026-06-29 BEN指示） */
.sec-head{margin-bottom:20px}

/* --- 商品画像の背景を白に（2026-06-29 BEN指示・ベージュ→白） --- */
.product-img,.hero-prod-img,.pdp-gallery,.pdp-gallery-main,.pdp-thumb{background:#fff}

/* --- ページャー：標準pagerをブランドCSSに適合。無効ボタンは淡色化 --- */
.pagination{flex-wrap:wrap}
.pagination .disabled{opacity:.35;pointer-events:none}

/* --- ヘッダー高密度化（2026-06-29 BEN指示：余白・ロゴ・ナビを引き締め） --- */
@media (min-width:768px){
  .header-util{padding:6px 32px}
  .header-main{padding:10px 32px;gap:24px}
  .header-logo{height:48px}
  .search-bar input{padding:11px 16px;font-size:14px}
  .search-bar button{padding:0 22px}
  .gnav{max-height:64px}
  .gnav a{padding:9px 16px;min-width:84px}
  .gnav .jp{font-size:13px;margin-top:1px;margin-bottom:1px}
  .gnav .en{font-size:10px}
}

/* --- 商品一覧グリッド：列を増やして1画面の商品数を最大化 --- */
@media (min-width:1280px){
  #product_page .product-grid{grid-template-columns:repeat(5,1fr);gap:16px 14px;padding:0 24px}
}
@media (min-width:1024px) and (max-width:1279px){
  #product_page .product-grid{grid-template-columns:repeat(4,1fr);gap:18px 14px;padding:0 24px}
}

/* --- カード内の型スケール（一覧・TOPランキング共通） --- */
@media (min-width:768px){
  .product-body{padding:9px 11px 13px}
  .product-cat-label{font-size:11px;font-weight:700;letter-spacing:0.14em;color:var(--gray);margin-bottom:4px}
  .product-name{font-size:13px;line-height:1.5;letter-spacing:.01em;margin-bottom:5px}
  .product-desc{font-size:11px;line-height:1.55;color:var(--gray);margin-bottom:7px;-webkit-line-clamp:1}
  .product-price{font-size:16px}
  .product-price .yen{font-size:11px;font-weight:500}
  .product-price .tax{font-size:10px}
  .product-badge{font-size:10px;padding:3px 8px;top:8px;left:8px}
  .rank-badge{width:26px;height:26px;font-size:12px;top:8px;left:8px}

  /* --- セクション見出し：上余白はセクション区切りとして確保、見出し下は詰める --- */
  .sec-head{padding:56px 32px 12px}
  .sec-head h2{font-size:26px}
  .sec-head .jp{font-size:14px}
}

/* --- ヘッダー・フッター・全体の型スケール見直し（2026-06-29）
   縮小だけでなく階層を保ったまま引き締め、情報量と一貫性を両立 --- */
@media (min-width:768px){
  /* ヘッダー上部ユーティリティ */
  .header-util-links a,.header-util-right a{font-size:12px;letter-spacing:0.03em}

  /* フッター：リンク・連絡先・見出し・余白を一段引き締め */
  footer{padding:44px 32px 24px}
  .foot-top{gap:28px;padding-bottom:36px}
  .foot-brand .desc{font-size:13px;line-height:1.95;letter-spacing:0.08em}
  .foot-contact .tel-label{font-size:11px;margin-bottom:5px}
  .foot-contact .tel{font-size:21px}
  .foot-contact .tel-hours{font-size:11px}
  .foot-col h4{font-size:13px;letter-spacing:0.18em;margin-bottom:14px}
  .foot-col h4 .en{font-size:10px;letter-spacing:0.26em;margin-bottom:3px}
  .foot-col li{margin-bottom:2px}
  .foot-col li a{font-size:13px;letter-spacing:0.05em}
  .foot-bottom{font-size:11px;padding-top:24px}
  .foot-tax-note{font-size:11px}
}

/* === 新着商品カードを商品カードに完全統一（2026-06-29 BEN承認） ===
   .new-item を .product-card と同じ体裁に：角丸＋ヘアライン＋ホバー持ち上げ＋名前赤、
   画像1:1・背景白、名前細め13px、価格を赤・右下。NEWバッジ＆日付は維持。
   セレクタは .new-items を前置して既存(モバイルnth-child罫線含む)を後勝ちで上書き。 */
.new-items{gap:16px}
.new-items .new-item{
  padding:0;border:1px solid #ece7dc;border-radius:10px;overflow:hidden;
  background:#fff;display:flex;flex-direction:column;
  transition:box-shadow .15s ease,transform .15s ease;
}
.new-items .new-item:hover{
  background:#fff;box-shadow:0 6px 18px rgba(26,26,26,0.09);transform:translateY(-2px);
}
.new-items .new-item:hover .new-item-name{color:var(--red)}
.new-items .new-item-img{
  width:100%;aspect-ratio:1/1;background:#fff;border:none;border-radius:0;margin-bottom:0;
}
.new-item-body{padding:9px 11px 13px;flex:1;display:flex;flex-direction:column}
.new-item-body .new-item-date{
  font-size:11px;font-weight:400;color:var(--gray);margin-bottom:3px;letter-spacing:.04em;
}
.new-item-body .new-item-name{
  font-size:13px;font-weight:400;color:#2a2a28;line-height:1.5;letter-spacing:.01em;
  margin-bottom:5px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
}
.new-item-body .new-item-price{
  font-size:16px;font-weight:700;color:var(--red);margin-top:auto;text-align:right;
}
.new-item-body .new-item-price .yen{font-size:11px;font-weight:500;margin-right:1px}
.new-item-body .new-item-price .tax{font-size:10px;font-weight:400;color:var(--gray);margin-left:4px}
@media (max-width:767px){
  .new-items .new-item-body .new-item-name{font-size:13px}
  .new-items .new-item-body .new-item-price{font-size:15px}
}

/* ---- 情報入力フォーム 未入力・入力エラー表示の統一（2026-07-01・指示書項目10） ----
   従来はEntry(会員登録)とContact(お問い合わせ)のみ個別に赤色を定義しており、
   Shopping/nonmember・Mypage/change・Forgot（パスワード再設定）は無指定のため
   ブラウザ既定の黒文字で表示され、赤/黒が混在していた。
   全ページ共通のグローバル既定値をここに追加して統一する
   （.reg-form .invalid-feedback／.contact-wrap .invalid-feedback は各13pxで同値のため、
   ページ側の詳細度が優先されても見た目は変わらない）。 */
.invalid-feedback{
  display:block;margin-top:6px;
  font-family:var(--jp-sans);font-size:13px;color:var(--red);
}
.is-invalid{border-color:var(--red) !important}

/* ---- モバイル(≤767) フッター：電話番号1行固定＋縦の詰まり緩和（2026-07-01・指示書項目14） ----
   これまでフッターの型スケール見直し(型スケール見直しブロック)は min-width:768px のみが対象で、
   モバイル向けの余白詰めが未着手だった。SHOP/ABOUT/SUPPORTの3列とブランド情報が1列で
   積み上がるため縦に長くなっている。電話番号は white-space:nowrap で折返しを禁止し、
   極小幅の端末でも1行に収まるよう font-size を可変(clamp)にした。
   フッター内の余白（列間・電話番号ブロック上・見出し下・リスト行間・上下padding）を
   一段引き締めて縦の圧迫感を緩和する。数値の再調整はこのブロックのみで完結する。 */
@media (max-width:767px){
  .foot-contact .tel{white-space:nowrap;font-size:clamp(19px,5.8vw,24px)}
  .foot-top{gap:24px}
  .foot-contact{margin-top:18px;padding-top:16px}
  .foot-col h4{margin-bottom:10px}
  .foot-col li{margin-bottom:8px}
  .foot-bottom{padding-top:20px}
  footer{padding:36px 16px 16px}
}

/* ============================================================
   本番（ibnテンプレ環境）専用オーバーライド 2026-07-12
   ステージングとの環境差（frame無編集運用）を吸収する。
   ============================================================ */

/* ibnの旧トップスライダー（frame直書きinclude・削除不可）を非表示 */
.ec-sliderRole_area{display:none !important}

/* ibnの商品一覧バナー（frame直書きinclude・削除不可）を非表示 */
.category_pagebanner_area{display:none !important}

/* ibnのページトップボタン（新デザイン外のUI）を非表示 */
.ec-blockTopBtn{display:none !important}

/* frameラッパー差の吸収：.site-wrap → .ec-layoutRole */
.ec-layoutRole{background:var(--white);width:auto;max-width:none}

/* ibn標準ページャー（pager.twigはibn版を継続使用）のスタイル合わせ */
.ec-pagerRole{padding:32px 0}
.ec-pager{display:flex;justify-content:center;gap:6px;list-style:none;margin:0;padding:0}
.ec-pager .pagination{display:flex;gap:6px;list-style:none;margin:0;padding:0}
.ec-pager li a,.ec-pager li span{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:36px;height:36px;padding:0 10px;
  border:1px solid #ddd;border-radius:4px;
  font-size:13px;color:var(--charcoal,#1A1A1A);text-decoration:none;
  font-family:'Noto Sans JP',sans-serif;
}
.ec-pager li.active a,.ec-pager li.active span{
  background:var(--yvonne-red,#C30D23);border-color:var(--yvonne-red,#C30D23);color:#fff;
}
.ec-pager li a:hover{border-color:var(--yvonne-red,#C30D23)}

/* Shopping系（ibn版Twig継続ページ）：新デザインのbase/resetの影響を最小化しつつ
   フォントだけ揃える。レイアウトはibn/style.cssの既存値を尊重する。 */
#page_shopping .ec-layoutRole,
#page_shopping_confirm .ec-layoutRole,
#page_shopping_complete .ec-layoutRole{font-family:'Noto Sans JP',sans-serif}

/* body id差の吸収：ステージング=#product_page ⇔ 本番=class .product_page */
.product_page #main-content{padding-bottom:80px}
.product_page #main-content{padding-bottom:56px}
.product_page #main-content{padding-bottom:40px}
.product_page .product-grid{grid-template-columns:repeat(5,1fr);gap:16px 14px;padding:0 24px}
.product_page .product-grid{grid-template-columns:repeat(4,1fr);gap:18px 14px;padding:0 24px}

/* ==========================================================
   Bootstrap 3（ibn frame同梱）クラス衝突の打ち消し（2026-07-12）
   ibn frameはbootstrap 3.4.1を読み込むため、同名クラスの
   デフォルト装飾を無効化する。新規クラス追加時も命名に注意。
   ========================================================== */
/* .mark = bootstrapがクリーム背景(#fcf8e3)+paddingを付与 → フッターロゴ帯の崩れ */
.foot-brand .mark{background:transparent;padding:0}
/* .breadcrumb = bootstrapがグレー背景+角丸+余白を付与 */
.breadcrumb{background:transparent;border-radius:0;margin-bottom:0}
/* .badge = bootstrapのグレーピル装飾の残り（padding/line-height）を打ち消し */
.header-action .badge{padding:0;line-height:1;white-space:nowrap}

/* ==========================================================
   2026-07-13 トップ微調整（BEN指摘）
   ①メインビジュアル背景のベージュ（バナー画像のcreamレターボックス）除去＋余白詰め
   ②ヘッダー追従：body overflow-x:hidden がsticky破壊→clipに変更（上部で対応）＋保険
   ========================================================== */
/* ① ヒーロー左バナー：contain（バナー全体を表示）、余白は白（BEN指示・coverは不使用） */
.hero.hero-v2 .hero-slider{height:100%;overflow:hidden;background:#fff}
.hero.hero-v2 .hero-slider .hero-slide{display:block;width:100%;height:100%;background:#fff}
.hero.hero-v2 .hero-slider .hero-slide img{
  width:100%!important;height:100%!important;object-fit:contain!important;
  background:transparent!important;
}
/* ①' 左右の中央に入っていた縦の境界線を削除（BEN指示 2026-07-13） */
.hero.hero-v2 .hero-right{border-left:none!important}
/* ② ヘッダー追従：body側のclipは line41 で対応済み。
   html（ルート）へのclipはfixedなドロワーをクリップし得るため付けない。 */
/* ②' 追従の本命：<header>のsticky親 .ec-layoutRole__header がヘッダー高さしかなく
   stick範囲が実質0だったため追従しなかった。親ラッパー自体を .ec-layoutRole（ページ全体）
   基準でstickyにして追従させる。z-index=100（コンテンツより上／ドロワー200・オーバーレイ199より下）。
   ドロワー/オーバーレイは .ec-layoutRole の外の兄弟要素のため閉じ込めは起きない（2026-07-13）。 */
.ec-layoutRole__header{position:sticky;top:0;z-index:100;background:#fff}
/* ②'' ドロワー表示の根本修正（2026-07-13）：
   shiawaseドロワー(#drawer,fixed)はibnの .ec-drawerRole の中にあるが、
   .ec-drawerRole は transform:translateX(-300px)・幅260px・黒背景・overflow-y:scroll を持ち、
   その transform が fixed の基準をビューポートから奪い、ドロワーを画面外(左)へ押し出していた。
   包み要素を無効化して、ドロワー本来の「右からスライドイン」を復活させる。
   子の #drawer(z-index:200)/overlay(199) はヘッダー(100)より前面になる。 */
.ec-drawerRole{
  transform:none!important;position:static!important;overflow:visible!important;
  width:auto!important;height:auto!important;background:transparent!important;z-index:auto!important;
}
