/**
 * SGMR フロントエンド ストアフロント スタイルシート
 *
 * .sgmr- スコープ限定。テーマ（TCD ICONIC）非汚染。
 * モバイルファースト・高級感・ダークすぎない・画像比率維持。
 * 商品カード / タイプバッジ / 購入ボタン / カート / チェックアウト /
 * マイページタブ / 言語切替 / CTA を網羅。
 *
 * @package SGGroup\MegaRetailer
 */

/* ==========================================================================
   デザイントークン（フロント）
   ========================================================================== */
:root {
	/* ブランドカラー（上品・誠実） */
	--sgmr-c-brand:        #1a56db;
	--sgmr-c-brand-dark:   #1341b5;
	--sgmr-c-brand-light:  #eff6ff;
	--sgmr-c-accent:       #0e9f6e;   /* 成功・在庫あり */
	--sgmr-c-warn:         #c27803;   /* 警告・残りわずか */
	--sgmr-c-danger:       #e02424;   /* エラー・在庫切れ */

	/* テキスト */
	--sgmr-c-text:         #111827;
	--sgmr-c-text-sub:     #374151;
	--sgmr-c-text-muted:   #6b7280;
	--sgmr-c-text-inv:     #ffffff;

	/* 背景 */
	--sgmr-c-bg:           #f9fafb;
	--sgmr-c-surface:      #ffffff;
	--sgmr-c-surface-2:    #f3f4f6;

	/* ボーダー */
	--sgmr-c-border:       #e5e7eb;
	--sgmr-c-border-hover: #9ca3af;

	/* シャドウ */
	--sgmr-s-card:   0 1px 3px rgba(0,0,0,.08), 0 4px 12px rgba(0,0,0,.06);
	--sgmr-s-hover:  0 4px 16px rgba(0,0,0,.12), 0 8px 24px rgba(0,0,0,.06);
	--sgmr-s-modal:  0 16px 40px rgba(0,0,0,.15);

	/* 角丸 */
	--sgmr-r-xs:  4px;
	--sgmr-r-sm:  6px;
	--sgmr-r-md:  10px;
	--sgmr-r-lg:  14px;
	--sgmr-r-xl:  20px;
	--sgmr-r-pill: 9999px;

	/* タイポグラフィ */
	--sgmr-font:      -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Noto Sans JP", sans-serif;
	--sgmr-font-mono: "Cascadia Code", "Consolas", monospace;
	--sgmr-lh:        1.8;   /* 日本語可読性 */
	--sgmr-lh-tight:  1.4;

	/* スペーシング */
	--sgmr-sp-xs:  .25rem;
	--sgmr-sp-sm:  .5rem;
	--sgmr-sp-md:  1rem;
	--sgmr-sp-lg:  1.5rem;
	--sgmr-sp-xl:  2rem;
	--sgmr-sp-2xl: 3rem;

	/* トランジション */
	--sgmr-ease:      200ms ease;
	--sgmr-ease-slow: 350ms ease;
}

/* ==========================================================================
   ベース（.sgmr-wrap スコープ）
   ========================================================================== */
.sgmr-wrap {
	font-family: var(--sgmr-font);
	color: var(--sgmr-c-text);
	line-height: var(--sgmr-lh);
	box-sizing: border-box;
}

.sgmr-wrap *,
.sgmr-wrap *::before,
.sgmr-wrap *::after {
	box-sizing: inherit;
}

.sgmr-wrap img {
	max-width: 100%;
	height: auto;
	display: block;
}

/* ==========================================================================
   商品グリッド
   ========================================================================== */
.sgmr-product-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: var(--sgmr-sp-lg);
}

/* ==========================================================================
   商品カード
   ========================================================================== */
.sgmr-product-card {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	box-shadow: var(--sgmr-s-card);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition: box-shadow var(--sgmr-ease), transform var(--sgmr-ease), border-color var(--sgmr-ease);
}

.sgmr-product-card:hover {
	box-shadow: var(--sgmr-s-hover);
	transform: translateY(-2px);
	border-color: var(--sgmr-c-border-hover);
}

/* サムネイル（アスペクト比維持） */
.sgmr-product-card__thumb {
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--sgmr-c-surface-2);
	position: relative;
	flex-shrink: 0;
}

.sgmr-product-card__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--sgmr-ease-slow);
}

.sgmr-product-card:hover .sgmr-product-card__thumb img {
	transform: scale(1.03);
}

/* サムネイルがない場合のフォールバック */
.sgmr-product-card__thumb--empty {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 3rem;
	color: var(--sgmr-c-text-muted);
}

/* カード本体 */
.sgmr-product-card__body {
	padding: var(--sgmr-sp-lg);
	display: flex;
	flex-direction: column;
	flex: 1;
	gap: var(--sgmr-sp-sm);
}

.sgmr-product-card__header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--sgmr-sp-sm);
}

.sgmr-product-card__title {
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--sgmr-c-text);
	line-height: var(--sgmr-lh-tight);
	margin: 0;
}

.sgmr-product-card__title a {
	color: inherit;
	text-decoration: none;
	transition: color var(--sgmr-ease);
}

.sgmr-product-card__title a:hover { color: var(--sgmr-c-brand); }

.sgmr-product-card__excerpt {
	font-size: .875rem;
	color: var(--sgmr-c-text-muted);
	line-height: var(--sgmr-lh);
	flex: 1;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}

/* 価格 */
.sgmr-product-card__price {
	font-size: 1.25rem;
	font-weight: 700;
	color: var(--sgmr-c-text);
}

.sgmr-product-card__price .sgmr-price-orig {
	font-size: .875rem;
	font-weight: 400;
	text-decoration: line-through;
	color: var(--sgmr-c-text-muted);
	margin-right: .375rem;
}

.sgmr-product-card__price .sgmr-price-sale {
	color: var(--sgmr-c-danger);
}

.sgmr-product-card__footer {
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	border-top: 1px solid var(--sgmr-c-border);
	display: flex;
	gap: var(--sgmr-sp-sm);
	align-items: center;
}

/* ==========================================================================
   商品タイプバッジ
   アクセシビリティ: 色 + テキスト + アイコン
   ========================================================================== */
.sgmr-type-badge {
	display: inline-flex;
	align-items: center;
	gap: .25em;
	padding: .2em .6em;
	border-radius: var(--sgmr-r-pill);
	font-size: .6875rem;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	white-space: nowrap;
	flex-shrink: 0;
}

/* デジタルファイル */
.sgmr-type-badge--digital_file {
	background: #eff6ff;
	color: #1d4ed8;
	border: 1px solid #bfdbfe;
}
.sgmr-type-badge--digital_file::before { content: "⬇ "; }

/* ライセンス */
.sgmr-type-badge--license {
	background: #faf5ff;
	color: #7e22ce;
	border: 1px solid #e9d5ff;
}
.sgmr-type-badge--license::before { content: "🔑 "; }

/* 招待制 */
.sgmr-type-badge--tradingview_invite,
.sgmr-type-badge--metatrader {
	background: #fff7ed;
	color: #c2410c;
	border: 1px solid #fed7aa;
}
.sgmr-type-badge--tradingview_invite::before { content: "📩 "; }
.sgmr-type-badge--metatrader::before         { content: "📩 "; }

/* コード */
.sgmr-type-badge--code {
	background: #ecfdf5;
	color: #065f46;
	border: 1px solid #a7f3d0;
}
.sgmr-type-badge--code::before { content: "{} "; }

/* テキスト */
.sgmr-type-badge--text {
	background: var(--sgmr-c-surface-2);
	color: var(--sgmr-c-text-sub);
	border: 1px solid var(--sgmr-c-border);
}
.sgmr-type-badge--text::before { content: "✏ "; }

/* SaaS */
.sgmr-type-badge--saas {
	background: #f0fdf4;
	color: #15803d;
	border: 1px solid #bbf7d0;
}
.sgmr-type-badge--saas::before { content: "☁ "; }

/* 物理 */
.sgmr-type-badge--physical {
	background: #fff1f2;
	color: #9f1239;
	border: 1px solid #fecdd3;
}
.sgmr-type-badge--physical::before { content: "📦 "; }

/* サービス */
.sgmr-type-badge--service {
	background: #f0f9ff;
	color: #075985;
	border: 1px solid #bae6fd;
}
.sgmr-type-badge--service::before { content: "🔧 "; }

/* ==========================================================================
   購入ボタン
   ========================================================================== */
.sgmr-buy-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .375em;
	padding: .6875rem 1.5rem;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.4;
	border-radius: var(--sgmr-r-md);
	border: 2px solid transparent;
	cursor: pointer;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color var(--sgmr-ease), border-color var(--sgmr-ease),
	            color var(--sgmr-ease), transform var(--sgmr-ease), box-shadow var(--sgmr-ease);
	user-select: none;
	width: 100%;
}

.sgmr-buy-btn:focus-visible {
	outline: 3px solid var(--sgmr-c-brand);
	outline-offset: 2px;
}

.sgmr-buy-btn--primary {
	background: var(--sgmr-c-brand);
	color: var(--sgmr-c-text-inv);
}
.sgmr-buy-btn--primary:hover {
	background: var(--sgmr-c-brand-dark);
	transform: translateY(-1px);
	box-shadow: 0 4px 12px rgba(26,86,219,.35);
}
.sgmr-buy-btn--primary:active { transform: translateY(0); }

/* 在庫切れ / 未対応 */
.sgmr-buy-btn--disabled,
.sgmr-buy-btn:disabled {
	background: var(--sgmr-c-surface-2);
	color: var(--sgmr-c-text-muted);
	border-color: var(--sgmr-c-border);
	cursor: not-allowed;
	transform: none;
	box-shadow: none;
}

/* カートに追加 */
.sgmr-buy-btn--cart {
	background: var(--sgmr-c-accent);
	color: var(--sgmr-c-text-inv);
}
.sgmr-buy-btn--cart:hover { background: #047857; transform: translateY(-1px); }

/* アウトライン（詳細を見る等） */
.sgmr-buy-btn--outline {
	background: transparent;
	border-color: var(--sgmr-c-brand);
	color: var(--sgmr-c-brand);
}
.sgmr-buy-btn--outline:hover { background: var(--sgmr-c-brand-light); }

/* ローディング状態 */
.sgmr-buy-btn.is-loading {
	pointer-events: none;
	opacity: .8;
}

.sgmr-buy-btn.is-loading::after {
	content: '';
	display: inline-block;
	width: .875em;
	height: .875em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: sgmr-spin .7s linear infinite;
	margin-left: .375em;
}

@keyframes sgmr-spin {
	to { transform: rotate(360deg); }
}

/* ==========================================================================
   カート
   ========================================================================== */
.sgmr-cart {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	overflow: hidden;
}

.sgmr-cart__header {
	padding: var(--sgmr-sp-lg);
	border-bottom: 1px solid var(--sgmr-c-border);
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.sgmr-cart__title {
	font-size: 1.125rem;
	font-weight: 700;
	margin: 0;
}

.sgmr-cart__count {
	background: var(--sgmr-c-brand);
	color: #fff;
	border-radius: var(--sgmr-r-pill);
	font-size: .75rem;
	font-weight: 700;
	padding: .1em .5em;
	min-width: 1.5em;
	text-align: center;
}

/* カートアイテム */
.sgmr-cart-item {
	display: grid;
	grid-template-columns: 64px 1fr auto;
	align-items: center;
	gap: var(--sgmr-sp-md);
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	border-bottom: 1px solid var(--sgmr-c-border);
	transition: background-color var(--sgmr-ease);
}

.sgmr-cart-item:last-child { border-bottom: none; }
.sgmr-cart-item:hover { background: var(--sgmr-c-bg); }

.sgmr-cart-item__thumb {
	width: 64px;
	height: 48px;
	border-radius: var(--sgmr-r-sm);
	overflow: hidden;
	background: var(--sgmr-c-surface-2);
	flex-shrink: 0;
}

.sgmr-cart-item__thumb img { width: 100%; height: 100%; object-fit: cover; }

.sgmr-cart-item__name {
	font-size: .9375rem;
	font-weight: 600;
	color: var(--sgmr-c-text);
	margin-bottom: .2rem;
}

.sgmr-cart-item__meta {
	font-size: .8125rem;
	color: var(--sgmr-c-text-muted);
}

.sgmr-cart-item__qty {
	display: flex;
	align-items: center;
	gap: .25rem;
}

.sgmr-qty-btn {
	width: 28px;
	height: 28px;
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-xs);
	background: var(--sgmr-c-surface);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1rem;
	font-weight: 700;
	color: var(--sgmr-c-text-sub);
	transition: background-color var(--sgmr-ease), border-color var(--sgmr-ease);
}

.sgmr-qty-btn:hover { background: var(--sgmr-c-brand-light); border-color: var(--sgmr-c-brand); color: var(--sgmr-c-brand); }
.sgmr-qty-btn:focus-visible { outline: 2px solid var(--sgmr-c-brand); outline-offset: 1px; }

.sgmr-qty-input {
	width: 42px;
	height: 28px;
	text-align: center;
	font-family: inherit;
	font-size: .9375rem;
	font-weight: 600;
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-xs);
	background: var(--sgmr-c-surface);
	color: var(--sgmr-c-text);
	-moz-appearance: textfield;
}

.sgmr-qty-input::-webkit-inner-spin-button,
.sgmr-qty-input::-webkit-outer-spin-button { -webkit-appearance: none; }

/* カートサマリー */
.sgmr-cart__summary {
	padding: var(--sgmr-sp-lg);
	background: var(--sgmr-c-bg);
}

.sgmr-cart__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	font-size: .9375rem;
	padding: .375rem 0;
}

.sgmr-cart__row--total {
	border-top: 2px solid var(--sgmr-c-border);
	margin-top: var(--sgmr-sp-sm);
	padding-top: var(--sgmr-sp-sm);
	font-size: 1.125rem;
	font-weight: 700;
}

.sgmr-cart__row-label { color: var(--sgmr-c-text-sub); }
.sgmr-cart__row-value { font-weight: 600; color: var(--sgmr-c-text); }

.sgmr-cart__actions {
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg) var(--sgmr-sp-lg);
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-sm);
}

/* カート空状態 */
.sgmr-cart-empty {
	padding: var(--sgmr-sp-2xl);
	text-align: center;
	color: var(--sgmr-c-text-muted);
}

.sgmr-cart-empty__icon { font-size: 3rem; margin-bottom: var(--sgmr-sp-md); opacity: .4; }
.sgmr-cart-empty__text { font-size: 1rem; }

/* ==========================================================================
   チェックアウト
   ========================================================================== */
.sgmr-checkout {
	max-width: 720px;
	margin: 0 auto;
}

.sgmr-checkout__layout {
	display: grid;
	grid-template-columns: 1fr 340px;
	gap: var(--sgmr-sp-xl);
	align-items: start;
}

.sgmr-checkout__section {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	padding: var(--sgmr-sp-xl);
	margin-bottom: var(--sgmr-sp-lg);
}

.sgmr-checkout__section-title {
	font-size: 1.125rem;
	font-weight: 700;
	margin: 0 0 var(--sgmr-sp-lg);
	padding-bottom: var(--sgmr-sp-md);
	border-bottom: 1px solid var(--sgmr-c-border);
}

/* フォームフィールド */
.sgmr-field {
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-field__label {
	display: block;
	font-size: .875rem;
	font-weight: 600;
	color: var(--sgmr-c-text-sub);
	margin-bottom: .375rem;
}

.sgmr-field__label abbr {
	color: var(--sgmr-c-danger);
	text-decoration: none;
	margin-left: .2em;
}

.sgmr-field__input,
.sgmr-field__select,
.sgmr-field__textarea {
	width: 100%;
	font-family: inherit;
	font-size: 1rem;
	color: var(--sgmr-c-text);
	background: var(--sgmr-c-surface);
	border: 1.5px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-sm);
	padding: .625rem .875rem;
	line-height: 1.5;
	transition: border-color var(--sgmr-ease), box-shadow var(--sgmr-ease);
}

.sgmr-field__input:focus,
.sgmr-field__select:focus,
.sgmr-field__textarea:focus {
	outline: none;
	border-color: var(--sgmr-c-brand);
	box-shadow: 0 0 0 3px rgba(26,86,219,.15);
}

.sgmr-field__input--error,
.sgmr-field__select--error {
	border-color: var(--sgmr-c-danger);
}

.sgmr-field__error {
	font-size: .8125rem;
	color: var(--sgmr-c-danger);
	margin-top: .25rem;
	display: flex;
	align-items: center;
	gap: .25em;
}

.sgmr-field__error::before { content: "⚠ "; }

/* Stripe カード要素コンテナ */
.sgmr-stripe-element {
	border: 1.5px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-sm);
	padding: .75rem .875rem;
	background: var(--sgmr-c-surface);
	transition: border-color var(--sgmr-ease), box-shadow var(--sgmr-ease);
	min-height: 42px;
}

.sgmr-stripe-element.StripeElement--focus {
	border-color: var(--sgmr-c-brand);
	box-shadow: 0 0 0 3px rgba(26,86,219,.15);
}

.sgmr-stripe-element.StripeElement--invalid {
	border-color: var(--sgmr-c-danger);
}

/* 決済方法バッジ */
.sgmr-payment-badge {
	display: inline-flex;
	align-items: center;
	gap: .375em;
	font-size: .8125rem;
	color: var(--sgmr-c-text-muted);
	background: var(--sgmr-c-surface-2);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-xs);
	padding: .2em .6em;
	font-weight: 500;
}

/* 注文サマリー（右カラム） */
.sgmr-order-summary {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	overflow: hidden;
	position: sticky;
	top: 1.5rem;
}

.sgmr-order-summary__header {
	padding: var(--sgmr-sp-lg);
	background: var(--sgmr-c-bg);
	border-bottom: 1px solid var(--sgmr-c-border);
	font-weight: 700;
	font-size: 1rem;
}

.sgmr-order-summary__items {
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
}

.sgmr-order-summary__item {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	font-size: .9375rem;
	padding: .375rem 0;
	gap: var(--sgmr-sp-md);
}

.sgmr-order-summary__name { color: var(--sgmr-c-text-sub); flex: 1; }
.sgmr-order-summary__price { font-weight: 600; white-space: nowrap; }

.sgmr-order-summary__total {
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	border-top: 2px solid var(--sgmr-c-border);
	display: flex;
	justify-content: space-between;
	font-weight: 700;
	font-size: 1.125rem;
}

/* セキュリティ表示 */
.sgmr-secure-badge {
	display: flex;
	align-items: center;
	gap: .375em;
	font-size: .8125rem;
	color: var(--sgmr-c-text-muted);
	justify-content: center;
	margin-top: var(--sgmr-sp-sm);
}

.sgmr-secure-badge::before { content: "🔒 "; }

/* ==========================================================================
   マイページ（アカウント）
   ========================================================================== */
.sgmr-account {
	max-width: 900px;
	margin: 0 auto;
}

/* マイページタブ */
.sgmr-account-tabs {
	display: flex;
	gap: 0;
	border-bottom: 2px solid var(--sgmr-c-border);
	margin-bottom: var(--sgmr-sp-xl);
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.sgmr-account-tabs__tab {
	display: inline-flex;
	align-items: center;
	gap: .375em;
	padding: .75rem 1.25rem;
	font-size: .9375rem;
	font-weight: 500;
	color: var(--sgmr-c-text-muted);
	text-decoration: none;
	border-bottom: 2px solid transparent;
	margin-bottom: -2px;
	white-space: nowrap;
	transition: color var(--sgmr-ease), border-color var(--sgmr-ease);
}

.sgmr-account-tabs__tab:hover { color: var(--sgmr-c-text); }

.sgmr-account-tabs__tab.is-active,
.sgmr-account-tabs__tab[aria-current="page"] {
	color: var(--sgmr-c-brand);
	border-bottom-color: var(--sgmr-c-brand);
	font-weight: 600;
}

.sgmr-account-tabs__badge {
	background: var(--sgmr-c-brand);
	color: #fff;
	border-radius: var(--sgmr-r-pill);
	font-size: .6875rem;
	font-weight: 700;
	padding: 0 .4em;
	min-width: 1.4em;
	text-align: center;
	line-height: 1.5;
}

/* タブパネル */
.sgmr-account-panel { display: none; }
.sgmr-account-panel.is-active { display: block; }

/* ==========================================================================
   ダウンロード・ライセンス・招待 — マイページ一覧
   ========================================================================== */
.sgmr-entitlement-card {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-md);
	padding: var(--sgmr-sp-lg);
	margin-bottom: var(--sgmr-sp-md);
	transition: box-shadow var(--sgmr-ease);
}

.sgmr-entitlement-card:hover { box-shadow: var(--sgmr-s-card); }

.sgmr-entitlement-card__header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--sgmr-sp-md);
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-entitlement-card__name {
	font-weight: 700;
	font-size: 1rem;
	color: var(--sgmr-c-text);
}

.sgmr-entitlement-card__meta {
	font-size: .875rem;
	color: var(--sgmr-c-text-muted);
	display: flex;
	flex-wrap: wrap;
	gap: var(--sgmr-sp-md);
}

.sgmr-entitlement-card__meta-item {
	display: flex;
	align-items: center;
	gap: .25em;
}

/* ライセンスキー表示 */
.sgmr-license-key-wrap {
	background: #1e293b;
	border-radius: var(--sgmr-r-sm);
	padding: .75rem 1rem;
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-sm);
	margin: var(--sgmr-sp-sm) 0;
}

.sgmr-license-key {
	font-family: var(--sgmr-font-mono);
	font-size: .9375rem;
	color: #e2e8f0;
	letter-spacing: .06em;
	flex: 1;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.sgmr-license-key--masked {
	letter-spacing: .15em;
	color: #94a3b8;
}

.sgmr-copy-btn {
	background: #334155;
	border: none;
	border-radius: var(--sgmr-r-xs);
	color: #94a3b8;
	cursor: pointer;
	font-size: .8125rem;
	padding: .3rem .6rem;
	white-space: nowrap;
	transition: background-color var(--sgmr-ease), color var(--sgmr-ease);
	display: flex;
	align-items: center;
	gap: .25em;
}

.sgmr-copy-btn:hover { background: #475569; color: #e2e8f0; }
.sgmr-copy-btn:focus-visible { outline: 2px solid #60a5fa; outline-offset: 1px; }
.sgmr-copy-btn.is-copied { background: #14532d; color: #86efac; }

.sgmr-mask-btn {
	background: transparent;
	border: none;
	color: #94a3b8;
	cursor: pointer;
	font-size: .8125rem;
	padding: .3rem;
	transition: color var(--sgmr-ease);
}
.sgmr-mask-btn:hover { color: #e2e8f0; }
.sgmr-mask-btn:focus-visible { outline: 2px solid #60a5fa; outline-offset: 1px; }

/* ==========================================================================
   ダウンロードボタン
   ========================================================================== */
.sgmr-download-btn {
	display: inline-flex;
	align-items: center;
	gap: .375em;
	padding: .5rem 1.125rem;
	font-family: inherit;
	font-size: .9375rem;
	font-weight: 600;
	border-radius: var(--sgmr-r-sm);
	background: var(--sgmr-c-brand);
	color: #fff;
	text-decoration: none;
	border: none;
	cursor: pointer;
	transition: background-color var(--sgmr-ease), transform var(--sgmr-ease);
}

.sgmr-download-btn:hover { background: var(--sgmr-c-brand-dark); transform: translateY(-1px); }
.sgmr-download-btn::before { content: "⬇ "; }

/* ==========================================================================
   招待申請フォーム（TradingView ユーザー名登録）
   ========================================================================== */
.sgmr-invite-form {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	padding: var(--sgmr-sp-xl);
}

.sgmr-invite-form__title {
	font-size: 1.125rem;
	font-weight: 700;
	margin: 0 0 var(--sgmr-sp-md);
}

.sgmr-invite-status {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	background: var(--sgmr-c-bg);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-sm);
	padding: var(--sgmr-sp-md);
	margin-bottom: var(--sgmr-sp-md);
	font-size: .9375rem;
}

/* ==========================================================================
   言語切替ウィジェット
   ========================================================================== */
.sgmr-lang-switcher {
	display: inline-flex;
	align-items: center;
	gap: var(--sgmr-sp-xs);
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-pill);
	padding: .2rem;
	font-size: .875rem;
}

.sgmr-lang-switcher__btn {
	display: flex;
	align-items: center;
	gap: .3em;
	padding: .3em .75em;
	border-radius: var(--sgmr-r-pill);
	border: none;
	background: transparent;
	color: var(--sgmr-c-text-muted);
	font-family: inherit;
	font-size: inherit;
	font-weight: 500;
	cursor: pointer;
	text-decoration: none;
	transition: background-color var(--sgmr-ease), color var(--sgmr-ease);
}

.sgmr-lang-switcher__btn:hover { background: var(--sgmr-c-bg); color: var(--sgmr-c-text); }
.sgmr-lang-switcher__btn:focus-visible { outline: 2px solid var(--sgmr-c-brand); outline-offset: 1px; }

.sgmr-lang-switcher__btn.is-active,
.sgmr-lang-switcher__btn[aria-current="true"] {
	background: var(--sgmr-c-brand);
	color: #fff;
}

.sgmr-lang-switcher__flag {
	font-size: 1em;
	line-height: 1;
}

/* ==========================================================================
   CTA セクション（コンタクト・詳細・見積等）
   ========================================================================== */
.sgmr-cta {
	text-align: center;
	padding: var(--sgmr-sp-2xl) var(--sgmr-sp-xl);
	border-radius: var(--sgmr-r-xl);
	background: linear-gradient(135deg, var(--sgmr-c-brand-light) 0%, #e0e7ff 100%);
	border: 1px solid #c7d2fe;
}

.sgmr-cta__title {
	font-size: 1.5rem;
	font-weight: 800;
	color: var(--sgmr-c-text);
	margin: 0 0 var(--sgmr-sp-sm);
	line-height: var(--sgmr-lh-tight);
}

.sgmr-cta__sub {
	font-size: 1rem;
	color: var(--sgmr-c-text-sub);
	margin-bottom: var(--sgmr-sp-lg);
	line-height: var(--sgmr-lh);
}

.sgmr-cta__actions {
	display: flex;
	gap: var(--sgmr-sp-sm);
	justify-content: center;
	flex-wrap: wrap;
}

.sgmr-cta__link {
	display: inline-flex;
	align-items: center;
	gap: .375em;
	padding: .75rem 1.75rem;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 700;
	border-radius: var(--sgmr-r-md);
	text-decoration: none;
	transition: background-color var(--sgmr-ease), transform var(--sgmr-ease), box-shadow var(--sgmr-ease);
}

.sgmr-cta__link--primary {
	background: var(--sgmr-c-brand);
	color: #fff;
}
.sgmr-cta__link--primary:hover { background: var(--sgmr-c-brand-dark); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(26,86,219,.35); }

.sgmr-cta__link--secondary {
	background: var(--sgmr-c-surface);
	color: var(--sgmr-c-brand);
	border: 2px solid var(--sgmr-c-brand);
}
.sgmr-cta__link--secondary:hover { background: var(--sgmr-c-brand-light); transform: translateY(-1px); }

/* 連絡先情報 */
.sgmr-contact-meta {
	font-size: .875rem;
	color: var(--sgmr-c-text-muted);
	margin-top: var(--sgmr-sp-md);
	display: flex;
	gap: var(--sgmr-sp-lg);
	justify-content: center;
	flex-wrap: wrap;
}

/* ==========================================================================
   サポートボックス
   ========================================================================== */
.sgmr-support-box {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	padding: var(--sgmr-sp-xl);
	text-align: center;
}

.sgmr-support-box__icon {
	font-size: 2.5rem;
	margin-bottom: var(--sgmr-sp-sm);
	line-height: 1;
}

.sgmr-support-box__title {
	font-size: 1.125rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-sm);
}

.sgmr-support-box__desc {
	font-size: .9375rem;
	color: var(--sgmr-c-text-muted);
	margin-bottom: var(--sgmr-sp-lg);
	line-height: var(--sgmr-lh);
}

/* ==========================================================================
   ストア（一覧ページ）ヘッダー
   ========================================================================== */
.sgmr-store-header {
	margin-bottom: var(--sgmr-sp-xl);
}

.sgmr-store-header__title {
	font-size: 2rem;
	font-weight: 800;
	color: var(--sgmr-c-text);
	margin: 0 0 var(--sgmr-sp-sm);
	line-height: var(--sgmr-lh-tight);
}

.sgmr-store-header__desc {
	font-size: 1rem;
	color: var(--sgmr-c-text-sub);
	max-width: 640px;
}

.sgmr-store-filter {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sgmr-sp-sm);
	margin-bottom: var(--sgmr-sp-lg);
}

.sgmr-store-filter__chip {
	display: inline-flex;
	align-items: center;
	gap: .25em;
	padding: .3em .875em;
	border-radius: var(--sgmr-r-pill);
	font-size: .875rem;
	font-weight: 500;
	border: 1.5px solid var(--sgmr-c-border);
	background: var(--sgmr-c-surface);
	color: var(--sgmr-c-text-sub);
	cursor: pointer;
	text-decoration: none;
	transition: background-color var(--sgmr-ease), border-color var(--sgmr-ease), color var(--sgmr-ease);
}

.sgmr-store-filter__chip:hover { border-color: var(--sgmr-c-brand); color: var(--sgmr-c-brand); background: var(--sgmr-c-brand-light); }

.sgmr-store-filter__chip.is-active,
.sgmr-store-filter__chip[aria-pressed="true"] {
	background: var(--sgmr-c-brand);
	border-color: var(--sgmr-c-brand);
	color: #fff;
}

/* ==========================================================================
   通知・アラート（フロント）
   ========================================================================== */
.sgmr-alert {
	display: flex;
	align-items: flex-start;
	gap: var(--sgmr-sp-md);
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	border-radius: var(--sgmr-r-md);
	font-size: .9375rem;
	line-height: var(--sgmr-lh);
}

.sgmr-alert--success { background: #f0fdf4; border: 1px solid #bbf7d0; color: #14532d; }
.sgmr-alert--error   { background: #fef2f2; border: 1px solid #fecaca; color: #7f1d1d; }
.sgmr-alert--info    { background: #eff6ff; border: 1px solid #bfdbfe; color: #1e3a8a; }
.sgmr-alert--warning { background: #fffbeb; border: 1px solid #fde68a; color: #78350f; }

.sgmr-alert__icon { flex-shrink: 0; font-size: 1.125rem; }
.sgmr-alert--success .sgmr-alert__icon::before { content: "✓"; }
.sgmr-alert--error   .sgmr-alert__icon::before { content: "✕"; }
.sgmr-alert--info    .sgmr-alert__icon::before { content: "ℹ"; }
.sgmr-alert--warning .sgmr-alert__icon::before { content: "⚠"; }

/* ==========================================================================
   空状態（フロント）
   ========================================================================== */
.sgmr-empty-state {
	padding: var(--sgmr-sp-2xl);
	text-align: center;
	color: var(--sgmr-c-text-muted);
}

.sgmr-empty-state__icon  { font-size: 3.5rem; margin-bottom: var(--sgmr-sp-md); opacity: .35; line-height: 1; }
.sgmr-empty-state__title { font-size: 1.25rem; font-weight: 700; color: var(--sgmr-c-text-sub); margin-bottom: var(--sgmr-sp-sm); }
.sgmr-empty-state__desc  { font-size: .9375rem; max-width: 400px; margin: 0 auto var(--sgmr-sp-lg); }

/* ==========================================================================
   ローダー（フロント）
   ========================================================================== */
.sgmr-loader {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--sgmr-sp-sm);
	padding: var(--sgmr-sp-xl);
	color: var(--sgmr-c-text-muted);
	font-size: .9375rem;
}

.sgmr-loader__spinner {
	width: 1.25rem;
	height: 1.25rem;
	border: 2px solid var(--sgmr-c-border);
	border-top-color: var(--sgmr-c-brand);
	border-radius: 50%;
	animation: sgmr-spin .7s linear infinite;
	flex-shrink: 0;
}

/* ==========================================================================
   レスポンシブ — モバイルファースト
   ========================================================================== */
/* モバイル（デフォルト）: 1カラム */
.sgmr-product-grid {
	grid-template-columns: 1fr;
}

/* タブレット以上 */
@media ( min-width: 600px ) {
	.sgmr-product-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.sgmr-checkout__layout {
		grid-template-columns: 1fr;
	}
}

/* デスクトップ */
@media ( min-width: 960px ) {
	.sgmr-product-grid {
		grid-template-columns: repeat(3, 1fr);
	}
	.sgmr-checkout__layout {
		grid-template-columns: 1fr 340px;
	}
}

@media ( min-width: 1200px ) {
	.sgmr-product-grid {
		grid-template-columns: repeat(4, 1fr);
	}
}

/* カート — モバイルで縦積み */
@media ( max-width: 599px ) {
	.sgmr-cart-item {
		grid-template-columns: 48px 1fr;
		grid-template-rows: auto auto;
	}

	.sgmr-cart-item__qty {
		grid-column: 2;
	}

	.sgmr-cta {
		padding: var(--sgmr-sp-xl) var(--sgmr-sp-lg);
	}

	.sgmr-cta__title {
		font-size: 1.25rem;
	}

	.sgmr-account-tabs {
		gap: 0;
	}

	.sgmr-account-tabs__tab {
		padding: .625rem .875rem;
		font-size: .875rem;
	}
}

/* ==========================================================================
   スクリーンリーダー専用テキスト
   ========================================================================== */
.sgmr-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0,0,0,0);
	white-space: nowrap;
	border-width: 0;
}

/* ==========================================================================
   ストアセクション（注目 / 新着 / ランキング / おすすめ / 最近見た）
   ========================================================================== */
.sgmr-store-section {
	margin-top: var(--sgmr-sp-2xl);
	padding-top: var(--sgmr-sp-xl);
	border-top: 1px solid var(--sgmr-c-border);
}

.sgmr-store-section__title {
	font-size: 1.25rem;
	font-weight: 800;
	color: var(--sgmr-c-text);
	margin: 0 0 var(--sgmr-sp-lg);
	line-height: var(--sgmr-lh-tight);
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-sm);
}

/* セクション別アイコン */
.sgmr-store-section--featured    .sgmr-store-section__title::before { content: "⭐ "; }
.sgmr-store-section--new          .sgmr-store-section__title::before { content: "🆕 "; }
.sgmr-store-section--ranking-sales .sgmr-store-section__title::before { content: "📈 "; }
.sgmr-store-section--ranking-popular .sgmr-store-section__title::before { content: "🔥 "; }
.sgmr-store-section--trend        .sgmr-store-section__title::before { content: "✨ "; }
.sgmr-store-section--recommendations .sgmr-store-section__title::before { content: "💡 "; }
.sgmr-store-section--recently-viewed .sgmr-store-section__title::before { content: "👁 "; }

/* ==========================================================================
   ランキングリスト — 番号バッジ付き
   ========================================================================== */
.sgmr-ranking-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-sm);
}

.sgmr-ranking-item {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-md);
	padding: var(--sgmr-sp-sm) var(--sgmr-sp-md);
	transition: box-shadow var(--sgmr-ease), border-color var(--sgmr-ease);
}

.sgmr-ranking-item:hover {
	box-shadow: var(--sgmr-s-card);
	border-color: var(--sgmr-c-border-hover);
}

/* ランク番号バッジ */
.sgmr-ranking-badge {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	border-radius: var(--sgmr-r-sm);
	font-size: .875rem;
	font-weight: 800;
	flex-shrink: 0;
	color: var(--sgmr-c-text-inv);
	background: var(--sgmr-c-text-muted);
}

/* 上位3位は金・銀・銅 */
.sgmr-ranking-item:nth-child(1) .sgmr-ranking-badge {
	background: #b7791f;
	/* gold */
	background: linear-gradient(135deg, #f6ad55 0%, #dd6b20 100%);
	box-shadow: 0 2px 6px rgba(221,107,32,.35);
}

.sgmr-ranking-item:nth-child(2) .sgmr-ranking-badge {
	/* silver */
	background: linear-gradient(135deg, #cbd5e0 0%, #718096 100%);
	box-shadow: 0 2px 6px rgba(113,128,150,.3);
}

.sgmr-ranking-item:nth-child(3) .sgmr-ranking-badge {
	/* bronze */
	background: linear-gradient(135deg, #fbd38d 0%, #c05621 100%);
	box-shadow: 0 2px 6px rgba(192,86,33,.3);
}

.sgmr-ranking-item__thumb {
	width: 48px;
	height: 36px;
	border-radius: var(--sgmr-r-xs);
	overflow: hidden;
	flex-shrink: 0;
	background: var(--sgmr-c-surface-2);
}

.sgmr-ranking-item__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.sgmr-ranking-item__body {
	flex: 1;
	min-width: 0;
}

.sgmr-ranking-item__name {
	font-size: .9375rem;
	font-weight: 600;
	color: var(--sgmr-c-text);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.sgmr-ranking-item__name a {
	color: inherit;
	text-decoration: none;
	transition: color var(--sgmr-ease);
}

.sgmr-ranking-item__name a:hover { color: var(--sgmr-c-brand); }

.sgmr-ranking-item__meta {
	font-size: .8125rem;
	color: var(--sgmr-c-text-muted);
	margin-top: .125rem;
}

.sgmr-ranking-item__score {
	font-size: .875rem;
	font-weight: 700;
	color: var(--sgmr-c-brand);
	white-space: nowrap;
	flex-shrink: 0;
}

/* トレンドバッジ（上昇/下降） */
.sgmr-trend-badge {
	display: inline-flex;
	align-items: center;
	gap: .15em;
	font-size: .75rem;
	font-weight: 700;
	padding: .1em .4em;
	border-radius: var(--sgmr-r-xs);
	white-space: nowrap;
}

.sgmr-trend-badge--up   { background: #f0fdf4; color: #15803d; }
.sgmr-trend-badge--down { background: #fef2f2; color: #b91c1c; }
.sgmr-trend-badge--new  { background: #eff6ff; color: #1d4ed8; }
.sgmr-trend-badge--up::before   { content: "▲"; }
.sgmr-trend-badge--down::before { content: "▼"; }
.sgmr-trend-badge--new::before  { content: "NEW "; font-size: .65rem; }

/* ==========================================================================
   お気に入り / 比較 ボタン
   ========================================================================== */
.sgmr-favorite-btn,
.sgmr-compare-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	border-radius: var(--sgmr-r-pill);
	border: 1.5px solid var(--sgmr-c-border);
	background: var(--sgmr-c-surface);
	cursor: pointer;
	font-size: 1rem;
	line-height: 1;
	transition: background-color var(--sgmr-ease), border-color var(--sgmr-ease),
	            color var(--sgmr-ease), transform var(--sgmr-ease);
	flex-shrink: 0;
}

.sgmr-favorite-btn:focus-visible,
.sgmr-compare-btn:focus-visible {
	outline: 2px solid var(--sgmr-c-brand);
	outline-offset: 2px;
}

/* お気に入り */
.sgmr-favorite-btn        { color: var(--sgmr-c-text-muted); }
.sgmr-favorite-btn:hover  { border-color: #e11d48; color: #e11d48; background: #fff1f2; }

.sgmr-favorite-btn.is-active,
.sgmr-favorite-btn[aria-pressed="true"] {
	background: #e11d48;
	border-color: #e11d48;
	color: #fff;
}

.sgmr-favorite-btn::before { content: "♡"; }
.sgmr-favorite-btn.is-active::before,
.sgmr-favorite-btn[aria-pressed="true"]::before { content: "♥"; }

/* 比較 */
.sgmr-compare-btn       { color: var(--sgmr-c-text-muted); }
.sgmr-compare-btn:hover { border-color: var(--sgmr-c-brand); color: var(--sgmr-c-brand); background: var(--sgmr-c-brand-light); }

.sgmr-compare-btn.is-active,
.sgmr-compare-btn[aria-pressed="true"] {
	background: var(--sgmr-c-brand);
	border-color: var(--sgmr-c-brand);
	color: #fff;
}

.sgmr-compare-btn::before { content: "⇄"; }

/* カードフッタのボタン群 */
.sgmr-product-card__actions {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-xs);
	flex-shrink: 0;
}

/* ==========================================================================
   比較トレイ（画面下部固定）
   ========================================================================== */
.sgmr-compare-tray {
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	background: var(--sgmr-c-surface);
	border-top: 2px solid var(--sgmr-c-border);
	box-shadow: 0 -4px 20px rgba(0,0,0,.1);
	padding: var(--sgmr-sp-md) var(--sgmr-sp-xl);
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	flex-wrap: wrap;
	transform: translateY(100%);
	transition: transform var(--sgmr-ease-slow);
}

.sgmr-compare-tray.is-visible {
	transform: translateY(0);
}

.sgmr-compare-tray__label {
	font-size: .9375rem;
	font-weight: 600;
	color: var(--sgmr-c-text-sub);
	flex-shrink: 0;
}

.sgmr-compare-tray__items {
	display: flex;
	gap: var(--sgmr-sp-sm);
	flex: 1;
	flex-wrap: wrap;
}

.sgmr-compare-tray__item {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-xs);
	background: var(--sgmr-c-bg);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-sm);
	padding: .25rem .625rem;
	font-size: .875rem;
	font-weight: 500;
}

.sgmr-compare-tray__item-remove {
	background: none;
	border: none;
	color: var(--sgmr-c-text-muted);
	cursor: pointer;
	font-size: .75rem;
	padding: 0 .15rem;
	line-height: 1;
	transition: color var(--sgmr-ease);
}

.sgmr-compare-tray__item-remove:hover { color: var(--sgmr-c-danger); }

.sgmr-compare-tray__actions {
	display: flex;
	gap: var(--sgmr-sp-sm);
	flex-shrink: 0;
}

.sgmr-compare-tray__clear {
	background: none;
	border: 1.5px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-sm);
	color: var(--sgmr-c-text-muted);
	font-family: inherit;
	font-size: .875rem;
	font-weight: 500;
	padding: .4rem .875rem;
	cursor: pointer;
	transition: border-color var(--sgmr-ease), color var(--sgmr-ease);
}

.sgmr-compare-tray__clear:hover { border-color: var(--sgmr-c-danger); color: var(--sgmr-c-danger); }

/* ==========================================================================
   クーポンウォレット
   ========================================================================== */
.sgmr-coupon-wallet {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-md);
}

.sgmr-coupon-card {
	background: var(--sgmr-c-surface);
	border: 1.5px dashed var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	transition: border-color var(--sgmr-ease), box-shadow var(--sgmr-ease);
	position: relative;
	overflow: hidden;
}

.sgmr-coupon-card::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 4px;
	background: var(--sgmr-c-brand);
	border-radius: 0 2px 2px 0;
}

.sgmr-coupon-card:hover {
	border-color: var(--sgmr-c-brand);
	box-shadow: var(--sgmr-s-card);
}

.sgmr-coupon-card--expired {
	opacity: .55;
}

.sgmr-coupon-card--expired::before { background: var(--sgmr-c-text-muted); }

.sgmr-coupon-card__icon {
	font-size: 1.75rem;
	flex-shrink: 0;
	line-height: 1;
}

.sgmr-coupon-card__body {
	flex: 1;
	min-width: 0;
}

.sgmr-coupon-card__code {
	font-family: var(--sgmr-font-mono);
	font-size: 1rem;
	font-weight: 700;
	color: var(--sgmr-c-text);
	letter-spacing: .06em;
}

.sgmr-coupon-card__label {
	font-size: .875rem;
	color: var(--sgmr-c-text-sub);
	margin-top: .15rem;
}

.sgmr-coupon-card__meta {
	font-size: .8125rem;
	color: var(--sgmr-c-text-muted);
	margin-top: .25rem;
}

.sgmr-coupon-card__discount {
	font-size: 1.375rem;
	font-weight: 800;
	color: var(--sgmr-c-brand);
	flex-shrink: 0;
	text-align: right;
}

.sgmr-coupon-card__apply-btn {
	display: inline-flex;
	align-items: center;
	gap: .3em;
	background: var(--sgmr-c-brand);
	color: #fff;
	border: none;
	border-radius: var(--sgmr-r-sm);
	font-family: inherit;
	font-size: .875rem;
	font-weight: 600;
	padding: .4rem .875rem;
	cursor: pointer;
	transition: background-color var(--sgmr-ease), transform var(--sgmr-ease);
	flex-shrink: 0;
	white-space: nowrap;
}

.sgmr-coupon-card__apply-btn:hover {
	background: var(--sgmr-c-brand-dark);
	transform: translateY(-1px);
}

.sgmr-coupon-card__apply-btn:focus-visible {
	outline: 2px solid var(--sgmr-c-brand);
	outline-offset: 2px;
}

.sgmr-coupon-card__apply-btn.is-loading {
	pointer-events: none;
	opacity: .75;
}

.sgmr-coupon-card__apply-btn.is-applied {
	background: var(--sgmr-c-accent);
}

/* クーポン入力フォーム（チェックアウト用） */
.sgmr-coupon-input-row {
	display: flex;
	gap: var(--sgmr-sp-sm);
	align-items: center;
}

.sgmr-coupon-input-row .sgmr-field__input {
	flex: 1;
	font-family: var(--sgmr-font-mono);
	letter-spacing: .05em;
	text-transform: uppercase;
}

/* ==========================================================================
   サブスク概要カード（マイページ）
   ========================================================================== */
.sgmr-subscription-summary {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-md);
}

.sgmr-subscription-card {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	padding: var(--sgmr-sp-lg);
	display: grid;
	grid-template-columns: 1fr auto;
	gap: var(--sgmr-sp-md);
	align-items: start;
	transition: box-shadow var(--sgmr-ease);
}

.sgmr-subscription-card:hover { box-shadow: var(--sgmr-s-card); }

.sgmr-subscription-card__name {
	font-size: 1rem;
	font-weight: 700;
	color: var(--sgmr-c-text);
	margin-bottom: .25rem;
}

.sgmr-subscription-card__plan {
	font-size: .875rem;
	color: var(--sgmr-c-text-sub);
}

.sgmr-subscription-card__meta {
	font-size: .8125rem;
	color: var(--sgmr-c-text-muted);
	display: flex;
	flex-wrap: wrap;
	gap: var(--sgmr-sp-sm);
	margin-top: var(--sgmr-sp-sm);
}

.sgmr-subscription-card__meta-item {
	display: flex;
	align-items: center;
	gap: .25em;
}

.sgmr-subscription-card__actions {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-xs);
	align-items: flex-end;
}

/* サブスクステータスバッジ */
.sgmr-sub-badge {
	display: inline-flex;
	align-items: center;
	gap: .3em;
	padding: .2em .6em;
	border-radius: var(--sgmr-r-pill);
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .03em;
	white-space: nowrap;
}

.sgmr-sub-badge--active    { background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; }
.sgmr-sub-badge--trialing  { background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; }
.sgmr-sub-badge--past_due  { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }
.sgmr-sub-badge--grace     { background: #fff7ed; color: #c2410c; border: 1px solid #fed7aa; }
.sgmr-sub-badge--canceled  { background: #f9fafb; color: #6b7280; border: 1px solid #e5e7eb; }
.sgmr-sub-badge--expired   { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }
.sgmr-sub-badge--paused    { background: #faf5ff; color: #6d28d9; border: 1px solid #ddd6fe; }

/* ==========================================================================
   マイページ追加セクション共通（サブスク / ウォレット / お気に入り / 最近見た）
   ========================================================================== */
.sgmr-account-section {
	margin-top: var(--sgmr-sp-xl);
	padding-top: var(--sgmr-sp-lg);
	border-top: 1px solid var(--sgmr-c-border);
}

.sgmr-account-section__title {
	font-size: 1.125rem;
	font-weight: 700;
	color: var(--sgmr-c-text);
	margin: 0 0 var(--sgmr-sp-md);
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-sm);
}

.sgmr-account-section--subscriptions .sgmr-account-section__title::before { content: "🔄 "; }
.sgmr-account-section--wallet        .sgmr-account-section__title::before { content: "🎟 "; }
.sgmr-account-section--favorites     .sgmr-account-section__title::before { content: "♥ "; }
.sgmr-account-section--recently-viewed .sgmr-account-section__title::before { content: "👁 "; }
.sgmr-account-section--recommendations .sgmr-account-section__title::before { content: "💡 "; }
.sgmr-account-section--support       .sgmr-account-section__title::before { content: "💬 "; }

/* ==========================================================================
   商品詳細 追加セクション（技術要件 / 互換性 / Changelog / 関連 等）
   ========================================================================== */
.sgmr-product-extra {
	margin-top: var(--sgmr-sp-2xl);
	padding-top: var(--sgmr-sp-xl);
	border-top: 1px solid var(--sgmr-c-border);
}

.sgmr-product-extra__title {
	font-size: 1.25rem;
	font-weight: 800;
	color: var(--sgmr-c-text);
	margin: 0 0 var(--sgmr-sp-lg);
	line-height: var(--sgmr-lh-tight);
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-sm);
}

.sgmr-product-extra--requirements   .sgmr-product-extra__title::before { content: "⚙ "; }
.sgmr-product-extra--compatibility  .sgmr-product-extra__title::before { content: "🔗 "; }
.sgmr-product-extra--changelog      .sgmr-product-extra__title::before { content: "📋 "; }
.sgmr-product-extra--related        .sgmr-product-extra__title::before { content: "🔍 "; }
.sgmr-product-extra--recommendations .sgmr-product-extra__title::before { content: "💡 "; }
.sgmr-product-extra--also-bought    .sgmr-product-extra__title::before { content: "🛒 "; }
.sgmr-product-extra--support        .sgmr-product-extra__title::before { content: "💬 "; }

/* 単品ページ内 購入後に受け取れるもの */
.sgmr-product-single__receive {
	margin-top: var(--sgmr-sp-lg);
	padding-top: var(--sgmr-sp-md);
	border-top: 1px solid var(--sgmr-c-border);
}

.sgmr-product-single__section-title {
	font-size: 1rem;
	font-weight: 700;
	color: var(--sgmr-c-text-sub);
	margin: 0 0 var(--sgmr-sp-sm);
}

/* ==========================================================================
   互換性マトリクステーブル
   ========================================================================== */
.sgmr-compat-table {
	width: 100%;
	border-collapse: collapse;
	font-size: .9375rem;
}

.sgmr-compat-table th,
.sgmr-compat-table td {
	padding: .625rem var(--sgmr-sp-md);
	border: 1px solid var(--sgmr-c-border);
	text-align: left;
	vertical-align: middle;
}

.sgmr-compat-table thead th {
	background: var(--sgmr-c-bg);
	font-weight: 700;
	font-size: .875rem;
	color: var(--sgmr-c-text-sub);
	white-space: nowrap;
}

.sgmr-compat-table tbody tr:hover { background: var(--sgmr-c-bg); }

.sgmr-compat-ok   { color: #15803d; font-weight: 700; }
.sgmr-compat-warn { color: #92400e; font-weight: 700; }
.sgmr-compat-no   { color: #b91c1c; font-weight: 700; }

/* Changelog */
.sgmr-changelog {
	list-style: none;
	margin: 0;
	padding: 0;
}

.sgmr-changelog__entry {
	border-left: 3px solid var(--sgmr-c-brand);
	padding: var(--sgmr-sp-sm) 0 var(--sgmr-sp-sm) var(--sgmr-sp-md);
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-changelog__version {
	font-size: .875rem;
	font-weight: 700;
	color: var(--sgmr-c-brand);
	font-family: var(--sgmr-font-mono);
	margin-bottom: .25rem;
}

.sgmr-changelog__date {
	font-size: .8125rem;
	color: var(--sgmr-c-text-muted);
	margin-left: var(--sgmr-sp-sm);
	font-family: inherit;
	font-weight: 400;
}

.sgmr-changelog__body {
	font-size: .9375rem;
	color: var(--sgmr-c-text-sub);
	line-height: var(--sgmr-lh);
}

/* ==========================================================================
   サポートBotチャット UI
   ========================================================================== */
.sgmr-support-bot {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-xl);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	max-width: 640px;
}

/* Bot ヘッダー */
.sgmr-support-bot__header {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	background: var(--sgmr-c-brand);
	color: #fff;
}

.sgmr-support-bot__avatar {
	width: 2.5rem;
	height: 2.5rem;
	border-radius: var(--sgmr-r-pill);
	background: rgba(255,255,255,.2);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.25rem;
	flex-shrink: 0;
}

.sgmr-support-bot__name {
	font-size: 1rem;
	font-weight: 700;
	flex: 1;
}

.sgmr-support-bot__status {
	font-size: .8125rem;
	opacity: .85;
}

.sgmr-support-bot__status::before {
	content: "●  ";
	color: #6ee7b7;
	font-size: .625rem;
}

/* メッセージエリア */
.sgmr-support-bot__messages {
	flex: 1;
	overflow-y: auto;
	padding: var(--sgmr-sp-lg);
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-md);
	min-height: 240px;
	max-height: 400px;
	background: var(--sgmr-c-bg);
}

/* バブル */
.sgmr-bot-msg {
	display: flex;
	gap: var(--sgmr-sp-sm);
	align-items: flex-end;
}

.sgmr-bot-msg--bot  { align-self: flex-start; }
.sgmr-bot-msg--user { align-self: flex-end; flex-direction: row-reverse; }

.sgmr-bot-msg__avatar {
	width: 1.75rem;
	height: 1.75rem;
	border-radius: var(--sgmr-r-pill);
	background: var(--sgmr-c-brand);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: .75rem;
	flex-shrink: 0;
}

.sgmr-bot-msg--user .sgmr-bot-msg__avatar {
	background: var(--sgmr-c-text-muted);
}

.sgmr-bot-msg__bubble {
	max-width: 75%;
	padding: .625rem .875rem;
	border-radius: var(--sgmr-r-lg);
	font-size: .9375rem;
	line-height: var(--sgmr-lh);
}

.sgmr-bot-msg--bot  .sgmr-bot-msg__bubble {
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-bottom-left-radius: var(--sgmr-r-xs);
	color: var(--sgmr-c-text);
}

.sgmr-bot-msg--user .sgmr-bot-msg__bubble {
	background: var(--sgmr-c-brand);
	color: #fff;
	border-bottom-right-radius: var(--sgmr-r-xs);
}

/* タイピングインジケータ */
.sgmr-bot-msg--typing .sgmr-bot-msg__bubble {
	padding: .75rem .875rem;
	display: flex;
	gap: .25rem;
	align-items: center;
}

.sgmr-bot-typing-dot {
	width: .4rem;
	height: .4rem;
	border-radius: 50%;
	background: var(--sgmr-c-text-muted);
	animation: sgmr-bot-bounce .9s infinite;
}

.sgmr-bot-typing-dot:nth-child(2) { animation-delay: .2s; }
.sgmr-bot-typing-dot:nth-child(3) { animation-delay: .4s; }

@keyframes sgmr-bot-bounce {
	0%, 80%, 100% { transform: translateY(0); }
	40%           { transform: translateY(-5px); }
}

/* 提案ボタン */
.sgmr-bot-suggestions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sgmr-sp-xs);
	padding: 0 var(--sgmr-sp-lg) var(--sgmr-sp-sm);
}

.sgmr-bot-suggestion-btn {
	display: inline-flex;
	align-items: center;
	background: var(--sgmr-c-surface);
	border: 1.5px solid var(--sgmr-c-brand);
	border-radius: var(--sgmr-r-pill);
	color: var(--sgmr-c-brand);
	font-family: inherit;
	font-size: .875rem;
	font-weight: 500;
	padding: .3em .875em;
	cursor: pointer;
	transition: background-color var(--sgmr-ease), color var(--sgmr-ease);
	white-space: nowrap;
}

.sgmr-bot-suggestion-btn:hover {
	background: var(--sgmr-c-brand);
	color: #fff;
}

.sgmr-bot-suggestion-btn:focus-visible {
	outline: 2px solid var(--sgmr-c-brand);
	outline-offset: 2px;
}

/* アクションボタン（ダウンロード / チケット等） */
.sgmr-bot-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sgmr-sp-xs);
	margin-top: var(--sgmr-sp-sm);
}

.sgmr-bot-action-btn {
	display: inline-flex;
	align-items: center;
	gap: .3em;
	background: var(--sgmr-c-accent);
	color: #fff;
	border: none;
	border-radius: var(--sgmr-r-sm);
	font-family: inherit;
	font-size: .8125rem;
	font-weight: 600;
	padding: .35em .75em;
	cursor: pointer;
	text-decoration: none;
	transition: background-color var(--sgmr-ease);
	white-space: nowrap;
}

.sgmr-bot-action-btn:hover { background: #047857; }
.sgmr-bot-action-btn:focus-visible { outline: 2px solid var(--sgmr-c-accent); outline-offset: 2px; }

/* エスカレートボタン */
.sgmr-bot-action-btn--escalate {
	background: var(--sgmr-c-warn);
}
.sgmr-bot-action-btn--escalate:hover { background: #b45309; }

/* フィードバック */
.sgmr-bot-feedback {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-sm);
	font-size: .8125rem;
	color: var(--sgmr-c-text-muted);
	padding: 0 var(--sgmr-sp-lg) var(--sgmr-sp-sm);
}

.sgmr-bot-feedback__btn {
	background: none;
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-pill);
	color: var(--sgmr-c-text-muted);
	cursor: pointer;
	font-size: .75rem;
	padding: .2em .6em;
	transition: border-color var(--sgmr-ease), color var(--sgmr-ease), background-color var(--sgmr-ease);
}

.sgmr-bot-feedback__btn:hover { border-color: var(--sgmr-c-brand); color: var(--sgmr-c-brand); }
.sgmr-bot-feedback__btn.is-selected { background: var(--sgmr-c-brand); border-color: var(--sgmr-c-brand); color: #fff; }

/* 入力エリア */
.sgmr-support-bot__input-row {
	display: flex;
	gap: var(--sgmr-sp-sm);
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	border-top: 1px solid var(--sgmr-c-border);
	background: var(--sgmr-c-surface);
}

.sgmr-support-bot__input {
	flex: 1;
	font-family: inherit;
	font-size: .9375rem;
	color: var(--sgmr-c-text);
	background: var(--sgmr-c-bg);
	border: 1.5px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-pill);
	padding: .5rem 1rem;
	line-height: 1.4;
	resize: none;
	transition: border-color var(--sgmr-ease), box-shadow var(--sgmr-ease);
}

.sgmr-support-bot__input:focus {
	outline: none;
	border-color: var(--sgmr-c-brand);
	box-shadow: 0 0 0 3px rgba(26,86,219,.12);
}

.sgmr-support-bot__send-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: var(--sgmr-r-pill);
	border: none;
	background: var(--sgmr-c-brand);
	color: #fff;
	font-size: 1rem;
	cursor: pointer;
	flex-shrink: 0;
	transition: background-color var(--sgmr-ease), transform var(--sgmr-ease);
}

.sgmr-support-bot__send-btn:hover {
	background: var(--sgmr-c-brand-dark);
	transform: scale(1.05);
}

.sgmr-support-bot__send-btn:focus-visible {
	outline: 2px solid var(--sgmr-c-brand);
	outline-offset: 2px;
}

.sgmr-support-bot__send-btn::before { content: "▶"; font-size: .875rem; }

/* 解決済みバナー */
.sgmr-support-bot__resolved {
	text-align: center;
	padding: var(--sgmr-sp-md);
	background: #f0fdf4;
	border-top: 1px solid #bbf7d0;
	color: #15803d;
	font-size: .9375rem;
	font-weight: 600;
}

/* ボット入口ボタン（商品詳細ページ上の「サポートを開く」CTA） */
.sgmr-support-bot-launcher {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	padding: .75rem 1.5rem;
	background: var(--sgmr-c-surface);
	border: 2px solid var(--sgmr-c-brand);
	border-radius: var(--sgmr-r-lg);
	color: var(--sgmr-c-brand);
	font-family: inherit;
	font-size: 1rem;
	font-weight: 700;
	cursor: pointer;
	text-decoration: none;
	transition: background-color var(--sgmr-ease), color var(--sgmr-ease), transform var(--sgmr-ease);
}

.sgmr-support-bot-launcher:hover {
	background: var(--sgmr-c-brand);
	color: #fff;
	transform: translateY(-1px);
}

.sgmr-support-bot-launcher::before { content: "💬 "; }

/* ==========================================================================
   レスポンシブ — 追加セクション
   ========================================================================== */
@media ( max-width: 599px ) {
	.sgmr-ranking-item {
		gap: var(--sgmr-sp-sm);
	}

	.sgmr-ranking-item__thumb {
		width: 40px;
		height: 30px;
	}

	.sgmr-coupon-card {
		flex-wrap: wrap;
	}

	.sgmr-coupon-card__discount {
		order: -1;
	}

	.sgmr-subscription-card {
		grid-template-columns: 1fr;
	}

	.sgmr-subscription-card__actions {
		align-items: flex-start;
	}

	.sgmr-support-bot__messages {
		min-height: 180px;
		max-height: 300px;
	}

	.sgmr-bot-msg__bubble {
		max-width: 88%;
	}

	.sgmr-compare-tray {
		padding: var(--sgmr-sp-sm) var(--sgmr-sp-md);
	}

	.sgmr-compare-tray__items {
		gap: var(--sgmr-sp-xs);
	}

	.sgmr-compat-table {
		font-size: .8125rem;
	}

	.sgmr-compat-table th,
	.sgmr-compat-table td {
		padding: .4rem .5rem;
	}

	.sgmr-store-section__title,
	.sgmr-product-extra__title {
		font-size: 1.0625rem;
	}
}

/* ==========================================================================
   タイムセール / フラッシュセール
   ========================================================================== */
.sgmr-time-sale,
.sgmr-flash-sale {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-time-sale__header,
.sgmr-flash-sale__header {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	flex-wrap: wrap;
	margin-bottom: var(--sgmr-sp-lg);
}

.sgmr-time-sale__title,
.sgmr-flash-sale__title {
	margin: 0;
	font-size: 1.375rem;
	font-weight: 700;
	color: var(--sgmr-c-text);
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-sm);
}

/* セールバッジ */
.sgmr-sale-badge {
	display: inline-flex;
	align-items: center;
	padding: .2em .6em;
	background: var(--sgmr-c-danger);
	color: var(--sgmr-c-text-inv);
	border-radius: var(--sgmr-r-pill);
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	line-height: 1.4;
}

.sgmr-sale-badge--flash {
	background: linear-gradient(135deg, #c27803, #e02424);
	animation: sgmr-flash-badge-pulse 1.2s ease-in-out infinite;
}

@keyframes sgmr-flash-badge-pulse {
	0%, 100% { opacity: 1; }
	50%       { opacity: .75; }
}

/* カウントダウン */
.sgmr-sale-countdown {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	background: var(--sgmr-c-surface-2);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-md);
	padding: .4rem .9rem;
	font-size: .9375rem;
	font-weight: 600;
	color: var(--sgmr-c-danger);
	font-variant-numeric: tabular-nums;
}

.sgmr-sale-countdown--flash .sgmr-countdown-display {
	font-size: 1.125rem;
}

.sgmr-countdown-label {
	color: var(--sgmr-c-text-sub);
	font-weight: 400;
	font-size: .8125rem;
}

.sgmr-countdown-display {
	letter-spacing: .04em;
}

/* セールカレンダー */
.sgmr-sale-calendar {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-sale-calendar__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-sale-calendar__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-sm);
}

.sgmr-sale-calendar__item {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	flex-wrap: wrap;
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-md);
	box-shadow: var(--sgmr-s-card);
}

.sgmr-sale-calendar__item--active {
	border-color: var(--sgmr-c-danger);
	background: #fff5f5;
}

.sgmr-sale-calendar__name {
	font-weight: 600;
	flex: 1;
}

.sgmr-sale-calendar__dates {
	color: var(--sgmr-c-text-muted);
	font-size: .875rem;
}

/* ==========================================================================
   待機リスト
   ========================================================================== */
.sgmr-waitlist {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-waitlist__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-sm);
}

.sgmr-waitlist__intro {
	color: var(--sgmr-c-text-sub);
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-waitlist__form {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-md);
	max-width: 480px;
}

.sgmr-waitlist__result {
	min-height: 1.5em;
	font-size: .9375rem;
}

/* ==========================================================================
   抽選販売
   ========================================================================== */
.sgmr-lottery-sale {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-lottery-sale__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-sm);
}

.sgmr-lottery-sale__intro {
	color: var(--sgmr-c-text-sub);
	margin-bottom: var(--sgmr-sp-md);
	font-size: .9375rem;
}

.sgmr-lottery-sale__form {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-md);
	max-width: 360px;
}

.sgmr-lottery-enter-btn {
	position: relative;
}

.sgmr-lottery-enter-btn[disabled] {
	opacity: .55;
	cursor: not-allowed;
}

.sgmr-lottery-sale__result {
	min-height: 1.5em;
	font-size: .9375rem;
}

/* ==========================================================================
   ギフトカード
   ========================================================================== */
.sgmr-gift-card {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-gift-card__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-gift-card__form {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-md);
	max-width: 400px;
}

.sgmr-gift-card__result {
	min-height: 1.5em;
	font-size: .9375rem;
	color: var(--sgmr-c-accent);
}

/* ==========================================================================
   B2B見積フォーム
   ========================================================================== */
.sgmr-b2b-quote {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-b2b-quote__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-b2b-quote__form {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-md);
	max-width: 600px;
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	padding: var(--sgmr-sp-xl);
}

.sgmr-b2b-quote__actions {
	display: flex;
	gap: var(--sgmr-sp-md);
}

.sgmr-b2b-quote__result {
	min-height: 1.5em;
	font-size: .9375rem;
}

.sgmr-field {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-xs);
}

.sgmr-label {
	font-weight: 600;
	font-size: .9375rem;
	color: var(--sgmr-c-text-sub);
}

.sgmr-required {
	color: var(--sgmr-c-danger);
	margin-left: .2em;
}

.sgmr-input--short {
	max-width: 120px;
}

.sgmr-textarea {
	padding: .5rem .75rem;
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-sm);
	font-family: var(--sgmr-font);
	font-size: .9375rem;
	line-height: var(--sgmr-lh);
	resize: vertical;
	transition: border-color var(--sgmr-ease);
}

.sgmr-textarea:focus {
	outline: none;
	border-color: var(--sgmr-c-brand);
	box-shadow: 0 0 0 3px rgba(26,86,219,.15);
}

/* ==========================================================================
   サポートゲート
   ========================================================================== */
.sgmr-support-gate {
	margin: var(--sgmr-sp-xl) 0;
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	padding: var(--sgmr-sp-xl);
	box-shadow: var(--sgmr-s-card);
}

.sgmr-support-gate__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-sm);
}

.sgmr-support-gate__intro {
	color: var(--sgmr-c-text-sub);
	margin-bottom: var(--sgmr-sp-lg);
	font-size: .9375rem;
}

.sgmr-support-gate__steps {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-lg);
}

.sgmr-support-gate__step {
	background: var(--sgmr-c-bg);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-md);
	padding: var(--sgmr-sp-lg);
}

.sgmr-support-gate__question {
	font-weight: 600;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-support-gate__answers {
	display: flex;
	gap: var(--sgmr-sp-md);
}

.sgmr-gate-answer {
	min-width: 80px;
}

.sgmr-support-gate__result {
	margin-top: var(--sgmr-sp-md);
	min-height: 1.5em;
}

.sgmr-support-gate__escalate {
	margin-top: var(--sgmr-sp-lg);
	padding: var(--sgmr-sp-lg);
	background: #fff5f5;
	border: 1px solid var(--sgmr-c-danger);
	border-radius: var(--sgmr-r-md);
}

/* ==========================================================================
   診断UI
   ========================================================================== */
.sgmr-support-diagnostics {
	margin: var(--sgmr-sp-xl) 0;
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-lg);
	padding: var(--sgmr-sp-xl);
	box-shadow: var(--sgmr-s-card);
}

.sgmr-diagnostics__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-sm);
}

.sgmr-diagnostics__intro {
	color: var(--sgmr-c-text-sub);
	font-size: .9375rem;
	margin-bottom: var(--sgmr-sp-lg);
}

.sgmr-diagnostics__actions {
	margin-bottom: var(--sgmr-sp-lg);
}

.sgmr-diagnostics__results {
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-sm);
}

.sgmr-diag-result {
	display: flex;
	align-items: flex-start;
	gap: var(--sgmr-sp-md);
	padding: var(--sgmr-sp-md);
	border-radius: var(--sgmr-r-sm);
	font-size: .9375rem;
}

.sgmr-diag-result--pass {
	background: #f0fdf4;
	border: 1px solid #a7f3d0;
	color: #065f46;
}

.sgmr-diag-result--fail {
	background: #fff5f5;
	border: 1px solid #fca5a5;
	color: #991b1b;
}

.sgmr-diag-result--info {
	background: var(--sgmr-c-brand-light);
	border: 1px solid #bfdbfe;
	color: #1e40af;
}

.sgmr-diag-result__icon {
	flex-shrink: 0;
	width: 18px;
	height: 18px;
}

/* ==========================================================================
   サービスステータス / サポート負荷ダッシュボード
   ========================================================================== */
.sgmr-service-status,
.sgmr-support-load-dashboard {
	margin: var(--sgmr-sp-lg) 0;
}

.sgmr-service-status__title,
.sgmr-support-load-dashboard__title {
	font-size: 1.125rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-service-status__ok {
	color: var(--sgmr-c-accent);
	font-weight: 600;
}

.sgmr-service-status__list,
.sgmr-support-load-dashboard .sgmr-support-load {
	list-style: none;
	margin: 0;
	padding: 0;
}

.sgmr-service-status__item {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	padding: var(--sgmr-sp-sm) var(--sgmr-sp-md);
	border-radius: var(--sgmr-r-sm);
}

.sgmr-service-status__dot,
.sgmr-support-load__dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	flex-shrink: 0;
}

/* 負荷レベル別の色 */
.sgmr-service-status__item--low .sgmr-service-status__dot,
.sgmr-support-load--low .sgmr-support-load__dot {
	background: var(--sgmr-c-accent);
}

.sgmr-service-status__item--medium .sgmr-service-status__dot,
.sgmr-support-load--medium .sgmr-support-load__dot {
	background: var(--sgmr-c-warn);
}

.sgmr-service-status__item--high .sgmr-service-status__dot,
.sgmr-support-load--high .sgmr-support-load__dot {
	background: #f97316;
}

.sgmr-service-status__item--critical .sgmr-service-status__dot,
.sgmr-support-load--critical .sgmr-support-load__dot {
	background: var(--sgmr-c-danger);
	animation: sgmr-critical-pulse .9s ease infinite;
}

@keyframes sgmr-critical-pulse {
	0%, 100% { opacity: 1; }
	50%       { opacity: .4; }
}

.sgmr-service-status__label,
.sgmr-support-load__label {
	font-weight: 600;
}

.sgmr-service-status__tickets,
.sgmr-support-load__stat {
	color: var(--sgmr-c-text-muted);
	font-size: .875rem;
}

.sgmr-support-load {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
}

/* ==========================================================================
   予約カレンダー
   ========================================================================== */
.sgmr-reservation-calendar {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-reservation-calendar__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-reservation-slots {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-sm);
}

.sgmr-reservation-slot {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	flex-wrap: wrap;
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-md);
}

.sgmr-reservation-slot--full {
	background: var(--sgmr-c-surface-2);
	color: var(--sgmr-c-text-muted);
}

.sgmr-reservation-slot__date {
	font-weight: 600;
	flex: 1;
}

.sgmr-reservation-slot__avail {
	font-size: .875rem;
	color: var(--sgmr-c-accent);
}

.sgmr-reservation-slot--full .sgmr-reservation-slot__avail {
	color: var(--sgmr-c-text-muted);
}

.sgmr-reservation-book {
	padding: .35rem .85rem;
	font-size: .875rem;
}

/* ==========================================================================
   業種カテゴリ
   ========================================================================== */
.sgmr-industry-categories {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-industry-categories__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-industry-categories__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--sgmr-sp-md);
}

.sgmr-industry-categories__grid.sgmr-cols-2 { grid-template-columns: repeat(2, 1fr); }
.sgmr-industry-categories__grid.sgmr-cols-3 { grid-template-columns: repeat(3, 1fr); }
.sgmr-industry-categories__grid.sgmr-cols-4 { grid-template-columns: repeat(4, 1fr); }

.sgmr-industry-category {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-md);
	padding: var(--sgmr-sp-md) var(--sgmr-sp-lg);
	background: var(--sgmr-c-surface);
	border: 1px solid var(--sgmr-c-border);
	border-radius: var(--sgmr-r-md);
	cursor: pointer;
	transition: box-shadow var(--sgmr-ease), border-color var(--sgmr-ease);
}

.sgmr-industry-category:hover {
	box-shadow: var(--sgmr-s-hover);
	border-color: var(--sgmr-c-brand);
}

.sgmr-industry-category__icon {
	font-size: 1.5rem;
	line-height: 1;
	flex-shrink: 0;
}

.sgmr-industry-category__name {
	font-weight: 600;
	font-size: .9375rem;
}

/* ==========================================================================
   ストアクレジット
   ========================================================================== */
.sgmr-store-credit {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-store-credit__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-store-credit__balance {
	margin-bottom: var(--sgmr-sp-sm);
}

.sgmr-store-credit__amount {
	font-size: 2rem;
	font-weight: 800;
	color: var(--sgmr-c-brand);
	font-variant-numeric: tabular-nums;
}

.sgmr-store-credit__note {
	color: var(--sgmr-c-text-muted);
	font-size: .875rem;
}

/* ==========================================================================
   パッケージ / ファイル拡張子
   ========================================================================== */
.sgmr-product-extensions,
.sgmr-product-package {
	margin: var(--sgmr-sp-xl) 0;
}

.sgmr-product-extensions__title,
.sgmr-product-package__title {
	font-size: 1.125rem;
	font-weight: 700;
	margin-bottom: var(--sgmr-sp-md);
}

.sgmr-product-extensions__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--sgmr-sp-sm);
}

.sgmr-package-item,
.sgmr-package {
	display: flex;
	align-items: center;
	gap: var(--sgmr-sp-sm);
	flex-wrap: wrap;
	padding: var(--sgmr-sp-sm) var(--sgmr-sp-md);
	background: var(--sgmr-c-surface-2);
	border-radius: var(--sgmr-r-sm);
}

.sgmr-package-item__name,
.sgmr-package__name {
	font-weight: 600;
}

.sgmr-package-item__version,
.sgmr-package__version {
	color: var(--sgmr-c-text-muted);
	font-size: .8125rem;
}

.sgmr-badge--pkg {
	background: var(--sgmr-c-surface);
	color: var(--sgmr-c-text-sub);
	border: 1px solid var(--sgmr-c-border);
	font-size: .75rem;
	padding: .1em .5em;
	border-radius: var(--sgmr-r-sm);
}

.sgmr-package__files {
	list-style: none;
	margin: var(--sgmr-sp-sm) 0 0;
	padding: 0 0 0 var(--sgmr-sp-lg);
	font-size: .875rem;
	color: var(--sgmr-c-text-muted);
}

@media (max-width: 600px) {
	.sgmr-industry-categories__grid {
		grid-template-columns: repeat(2, 1fr) !important;
	}

	.sgmr-b2b-quote__form {
		padding: var(--sgmr-sp-lg);
	}

	.sgmr-support-gate {
		padding: var(--sgmr-sp-lg);
	}

	.sgmr-support-gate__answers {
		flex-direction: column;
	}

	.sgmr-time-sale__header,
	.sgmr-flash-sale__header {
		flex-direction: column;
		align-items: flex-start;
	}

	.sgmr-reservation-slot {
		flex-direction: column;
		align-items: flex-start;
	}
}
}
