.snaf-favorite-action { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; }
.snaf-favorite-button { border: 1px solid #b45309; border-radius: 999px; background: #fff7ed; color: #9a3412; padding: 8px 14px; font-weight: 700; cursor: pointer; }
.snaf-favorite-button.is-saved { border-color: #0f766e; background: #f0fdfa; color: #115e59; }
.snaf-favorite-button:disabled { opacity: .65; cursor: wait; }
.snaf-favorite-status { color: #64748b; font-size: .86em; }
.snaf-favorites { margin: 24px 0; }
.snaf-favorites__header { display: flex; align-items: start; justify-content: space-between; gap: 14px; margin-bottom: 16px; }
.snaf-favorites__header h2 { margin: 0 0 6px; }
.snaf-favorites__header p { margin: 0; color: #475569; }
.snaf-favorites__mix-link, .snaf-favorite-mix__next { display: inline-block; border-radius: 7px; padding: 8px 12px; background: #0f766e; color: #fff; font-weight: 700; text-decoration: none; white-space: nowrap; }
.snaf-favorites__mix-locked { color: #64748b; font-size: .9em; }
.snaf-favorites__empty { padding: 18px; border: 1px dashed #cbd5e1; border-radius: 8px; color: #475569; }
.snaf-favorites__limit-note { margin: 14px 0 0; color: #92400e; font-size: .9em; }
.snaf-favorites__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.snaf-favorite-card { border: 1px solid #e2e8f0; border-radius: 8px; overflow: hidden; background: #fff; }
.snaf-favorite-card a { display: block; color: #1e293b; text-decoration: none; font-weight: 700; }
.snaf-favorite-card img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.snaf-favorite-card span { display: block; padding: 8px; font-size: .9em; line-height: 1.4; }
.snaf-favorite-mix, .snaf-mix-box { display: flex; flex-direction: column; align-items: center; margin: 0 auto 20px; padding: 16px; border: 2px solid #99f6e4; border-radius: 12px; background: #f0fdfa; text-align: center; box-sizing: border-box; max-width: min(100%, 600px); width: 100%; }
.snaf-favorite-mix__label, .snaf-mix-box__label { margin: 0 0 12px; font-weight: 700; color: #0f766e; font-size: 1.05em; }

/* 画像ステージ：高さ固定・アスペクト比保護 (object-fit: contain) */
.snaf-mix-box__stage { position: relative; width: 100%; height: min(48vh, 420px); min-height: 260px; background: #0f172a; border-radius: 8px; overflow: hidden; margin-bottom: 8px; }
.snaf-mix-box__image-link { display: flex !important; align-items: center; justify-content: center; width: 100% !important; height: 100% !important; text-decoration: none; box-sizing: border-box; }
.snaf-mix-box__stage img, .snaf-mix-box__image-link img { width: 100% !important; height: 100% !important; max-width: 100% !important; max-height: 100% !important; object-fit: contain !important; margin: 0 !important; display: block !important; }
.snaf-mix-box__flash { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #ffffff; opacity: 0; pointer-events: none; transition: opacity 0.2s ease-out; z-index: 10; }
.snaf-mix-box__flash.is-active { opacity: 1; transition: opacity 0.04s ease-in; }

/* 投稿タイトル領域：高さ固定 */
.snaf-mix-box__info { margin: 8px 0 12px; min-height: 2.8em; display: flex; align-items: center; justify-content: center; width: 100%; }
.snaf-mix-box__title-link { text-decoration: none; color: inherit; display: block; max-width: 100%; }
.snaf-favorite-mix strong, .snaf-mix-box__title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; line-height: 1.4; color: #134e4a; font-size: 0.98em; margin: 0; }

/* 最下部フッターボタン：連打しても位置が完全に静止 */
.snaf-mix-box__footer { width: 100%; text-align: center; margin-top: auto; padding-top: 4px; }
.snaf-favorite-mix__next, .snaf-mix-box__next-footer { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 10px 22px; background: #0f766e; color: #ffffff !important; font-weight: 700; font-size: 0.95em; border-radius: 999px; text-decoration: none; border: none; cursor: pointer; box-shadow: 0 4px 12px rgba(15, 118, 110, 0.25); transition: background-color 0.15s ease, transform 0.1s ease; white-space: nowrap; }
.snaf-favorite-mix__next:hover, .snaf-mix-box__next-footer:hover { background: #0d9488; color: #ffffff !important; text-decoration: none; transform: translateY(-1px); }
.snaf-favorite-mix__next:active, .snaf-mix-box__next-footer:active { transform: translateY(1px); }

@media (max-width: 600px) { .snaf-favorites__header { display: block; } .snaf-favorites__header > :last-child { display: inline-block; margin-top: 12px; } .snaf-favorites__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* マイページ用お気に入り要約カード */
.snaf-mypage-favorite-summary h2 { margin: 0 0 8px; }
.snaf-mypage-favorite-summary p { margin: 0 0 12px; color: #475569; }
.snaf-mypage-favorite-action-wrap { margin: 0; }

/* お気に入りペジネーション */
.snaf-favorites-pagination { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 20px 0 12px; flex-wrap: wrap; }
.snaf-favorites-pagination__page { display: inline-flex; align-items: center; justify-content: center; min-width: 36px; height: 36px; padding: 0 10px; border: 1px solid #cbd5e1; border-radius: 6px; background: #fff; color: #334155; font-weight: 700; text-decoration: none; }
.snaf-favorites-pagination__page.is-current { border-color: #0f766e; background: #0f766e; color: #fff; }
.snaf-favorites-pagination__locked { display: inline-flex; align-items: center; padding: 0 10px; height: 36px; color: #94a3b8; font-size: .88em; border: 1px dashed #cbd5e1; border-radius: 6px; }

/* 専用ページ関連のアクション */
.snaf-favorites-actions { margin-top: 24px; padding-top: 16px; border-top: 1px solid #e2e8f0; }
.snaf-favorites-actions a { color: #0f766e; font-weight: 700; text-decoration: none; }
