/* Udemy クーポンのカード（gmcp-* のクラスは Geek MCP Server と同じ）。Geek テーマの色があればそれに合わせる。 */
.gmcp-card {
	--gmcp-a: #4f46e5;
	--gmcp-b: #0d9488;
	--gmcp-bg: var(--g-surface, #fff);
	--gmcp-line: var(--g-line, #e2e6ef);
	--gmcp-text: var(--g-heading, #0a1020);
	--gmcp-muted: var(--g-muted, #5d6679);
	position: relative;
	margin: 1.8em 0;
}
/* テーマに関係なく、カードの幅と高さに padding を含める（無いとグリッドの中でカードが重なる）。 */
.gmcp-card, .gmcp-card *, .gmcp-card *::before, .gmcp-card *::after { box-sizing: border-box; }
.gmcp-card__link {
	position: relative;
	display: flex;
	gap: 18px;
	align-items: center;
	overflow: hidden;
	padding: 16px;
	border: 1px solid var(--gmcp-line);
	border-radius: 18px;
	background: var(--gmcp-bg);
	color: var(--gmcp-text) !important;
	text-decoration: none !important;
	box-shadow: 0 1px 2px rgba(15, 23, 42, .05), 0 18px 40px -24px rgba(15, 23, 42, .35);
	transition: transform .25s cubic-bezier(.2, .8, .2, 1), box-shadow .25s;
}
.gmcp-card__link:hover { transform: translateY(-4px); box-shadow: 0 30px 60px -30px rgba(79, 70, 229, .5); }
.gmcp-card__link::before {
	content: "";
	position: absolute;
	inset: 0;
	padding: 1.5px;
	border-radius: inherit;
	background: linear-gradient(120deg, var(--gmcp-a), #8b5cf6 45%, var(--gmcp-b));
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask-composite: exclude;
	opacity: 0;
	transition: opacity .25s;
	pointer-events: none;
}
.gmcp-card__link:hover::before { opacity: 1; }
.gmcp-card__media { flex: none; width: 210px; max-width: 44%; overflow: hidden; border-radius: 12px; }
.gmcp-card__media img { display: block; width: 100%; height: auto; border: 0 !important; border-radius: 0 !important; transition: transform .5s cubic-bezier(.2, .8, .2, 1); }
.gmcp-card__link:hover .gmcp-card__media img { transform: scale(1.05); }
.gmcp-card__body { display: flex; flex: 1; flex-direction: column; min-width: 0; }
.gmcp-card__title { margin-bottom: 6px; font-weight: 800; font-size: 1.05em; line-height: 1.5; }
.gmcp-card__meta { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 8px; }
.gmcp-card__expiry { color: var(--gmcp-muted); font: .78em var(--wp--preset--font-family--mono, ui-monospace, monospace); }
.gmcp-card__code {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 12px;
	padding: 6px 10px;
	border-radius: 9px;
	background: #0b1020;
	color: #c7d2fe;
	font: .86em var(--wp--preset--font-family--mono, ui-monospace, monospace);
	letter-spacing: .03em;
}
.gmcp-card__copy-btn {
	display: inline-grid;
	place-items: center;
	width: 24px;
	height: 24px;
	border-radius: 6px;
	background: rgba(255, 255, 255, .12);
	cursor: pointer;
	line-height: 1;
	transition: background .15s;
}
.gmcp-card__copy-btn:hover, .gmcp-card__copy-btn:focus-visible { background: rgba(255, 255, 255, .28); outline: none; }
.gmcp-card__copy-btn.is-copied { background: #22c55e; }
.gmcp-card__cta, .gmcp-btn {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 9px 18px;
	border-radius: 999px;
	background: linear-gradient(120deg, var(--gmcp-a, #4f46e5), #8b5cf6 45%, var(--gmcp-b, #0d9488));
	color: #fff !important;
	font-weight: 800;
	text-decoration: none !important;
	box-shadow: 0 10px 24px -10px rgba(79, 70, 229, .7);
}
.gmcp-btn { padding: 11px 22px; transition: transform .2s; }
.gmcp-btn:hover { transform: translateY(-2px); }
.gmcp-card__arrow { transition: transform .25s; }
.gmcp-card__link:hover .gmcp-card__arrow, .gmcp-btn:hover .gmcp-card__arrow { transform: translateX(4px); }
.gmcp-card__ribbon {
	position: absolute;
	top: 14px;
	left: 0;
	z-index: 3;
	padding: 4px 12px 4px 10px;
	border-radius: 0 8px 8px 0;
	background: linear-gradient(120deg, #f43f5e, #fb923c);
	color: #fff;
	font-size: .72em;
	font-weight: 800;
	box-shadow: 0 4px 12px rgba(244, 63, 94, .45);
	animation: gmcp-pulse 2.4s ease-in-out infinite;
}
.gmcp-card__link:not(:has(> .gmcp-card__media)) .gmcp-card__body { padding-top: 28px; }
.gmcp-card__shine { position: absolute; top: 0; left: -70%; width: 45%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255, 255, 255, .35), transparent); transform: skewX(-20deg); pointer-events: none; }
.gmcp-card__link:hover .gmcp-card__shine { animation: gmcp-shine .9s ease; }
@keyframes gmcp-shine { to { left: 140%; } }
@keyframes gmcp-pulse { 50% { transform: scale(1.06); } }

.gmcp-reco { margin: 3em 0 1em; padding-top: 2em; border-top: 1px solid var(--g-line, #e2e6ef); }
.gmcp-reco__heading { margin: 0 0 .8em; font-size: 1.25em; font-weight: 800; line-height: 1.4; }
.gmcp-reco__heading::before { content: none !important; }
.gmcp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 18px; margin: 1.6em 0; }
.gmcp-grid .gmcp-card { margin: 0; }
.gmcp-grid .gmcp-card__link { flex-direction: column; align-items: stretch; height: 100%; }
.gmcp-grid .gmcp-card__media { width: 100%; max-width: 100%; }
.gmcp-grid .gmcp-card__cta { align-self: stretch; justify-content: center; margin-top: auto; }

@media (max-width: 560px) {
	.gmcp-card__link { flex-direction: column; align-items: stretch; }
	.gmcp-card__media { width: 100%; max-width: 100%; }
	.gmcp-card__cta { align-self: stretch; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
	.gmcp-card__link, .gmcp-card__media img, .gmcp-card__arrow, .gmcp-btn { transition: none; }
	.gmcp-card__ribbon, .gmcp-card__link:hover .gmcp-card__shine { animation: none; }
}
