/* ==========================================================
   Courses
========================================================== */

.alp-courses .l-container {
	max-width: 1400px;
}

.alp-courses {
	padding: 100px 0;
}

.alp-courses__list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 40px 28px;
}

.alp-course-item__label,
.alp-course-item__text,
.alp-course-item__meta {
	margin: 0;
}


/* =========================================================
   Course card
========================================================= */

.alp-course-item {
	position: relative;
	display: flex;
	flex-direction: column;

	min-height: 100%;
	padding: 32px;

	border: 1px solid #dbe2e9;
	border-radius: 14px;

	background: #fff;

	transition:
		border-color 0.25s ease,
		box-shadow 0.25s ease,
		transform 0.25s ease;
}

.alp-course-item::before {
	content: "";

	position: absolute;
	top: 0;
	right: 24px;
	left: 24px;

	height: 4px;

	border-radius: 0 0 4px 4px;
	background: #0b2b50;
}

.alp-course-item:hover {
	border-color: #b8c6d4;

	box-shadow:
		0 16px 36px rgba(11, 43, 80, 0.09);

	transform: translateY(-4px);
}


/* =========================================================
   Card contents
========================================================= */

.alp-course-item__labels {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-start;
	gap: 8px;

	margin: 0 0 20px;
}

.alp-course-item__label {
	display: inline-flex;
	align-items: center;

	min-height: 30px;
	margin: 0;
	padding: 4px 12px;

	border: 1px solid #ccd7e2;
	border-radius: 999px;

	background: #fff;
	color: #0b2b50;

	font-size: 0.8rem;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	white-space: nowrap;
}

.alp-course-item__label:hover,
.alp-course-item__label:focus-visible {
	border-color: #a52a2a;
	color: #a52a2a;
}

.alp-course-item__title {
	margin: 0 0 16px;

	font-family: "Outfit", sans-serif;
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.4;

	color: #111827;
}

.alp-course-item__text {
	margin: 0 0 20px;

	color: #000;
	line-height: 1.8;
}

.alp-course-item__meta {
	list-style: none;

	margin: 0 0 24px;
	padding: 0;

	color: #000;
	line-height: 1.8;
}

.alp-course-item__meta li {
	position: relative;
	padding-left: 0.9em;
}

.alp-course-item__meta li::before {
	content: "・";
	position: absolute;
	left: 0;
}


/* =========================================================
   Price
========================================================= */

.alp-course-item__price {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: flex-end;
    gap: 6px;
    margin: auto 0 24px;
    text-align: right;
    font-family: "Outfit", sans-serif;
    color: #0b2b50;
}

/* 通常価格：割引がある場合のみ表示 */
.alp-course-item__price-regular {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: flex-end;
    gap: 8px;
    color: #64748b;
    font-size: 0.85rem;
    font-weight: 400;
}

.alp-course-item__price-regular del {
    text-decoration: line-through;
}

/* 実際の購入金額 */
.alp-course-item__price-current {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: flex-end;
    gap: 8px;
}

.alp-course-item__price-label {
    color: #1b1414;
    font-size: 0.85rem;
    font-weight: 400;
}

.alp-course-item__price-value {
    color: #a52a2a;
    font-family: "Outfit", sans-serif;
    font-size: 2rem;
    font-weight: 700;
    line-height: 1;
}

.alp-course-item__price-tax {
    color: #64748b;
    font-size: 0.8rem;
}

/* 割引時の特別価格ラベル */
.alp-course-item__price-regular
  + .alp-course-item__price-current
  .alp-course-item__price-label {
    display: inline-block;
    padding: 5px 8px;
    border-radius: 4px;
    background: #a52a2a;
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
    line-height: 1.4;
}

/* =========================================================
   Card actions
========================================================= */

.alp-course-item__actions {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 8px;
}

.alp-course-item__actions a {
	display: inline-flex;
	align-items: center;
	justify-content: center;

	min-width: 0;
	min-height: 46px;
	padding: 10px 5px;

	border-radius: 8px;

	font-size: 0.85rem;
	font-weight: 600;
	white-space: nowrap;
	text-decoration: none;

	transition:
		background-color 0.25s ease,
		border-color 0.25s ease,
		color 0.25s ease,
		transform 0.25s ease;
}

.alp-course-item__detail {
	border: 1px solid #0b2b50;

	background: #fff;
	color: #0b2b50;
}

.alp-course-item__detail:hover,
.alp-course-item__detail:focus-visible {
	background: #eef5f8;
	transform: translateY(-2px);
}

.alp-course-item__purchase {
	border: 1px solid #0b2b50;

	background: #0b2b50;
	color: #fff;
}

.alp-course-item__purchase:hover,
.alp-course-item__purchase:focus-visible {
	border-color: #a52a2a;

	background: #a52a2a;
	color: #fff;

	transform: translateY(-2px);
}


/* =========================================================
   講座タイトル
========================================================= */

/* 共通の講座シリーズ名 */
.alp-course-item__title-series {
	display: block;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.5;
}

/* 各講座の学習テーマ */
.alp-course-item__title-name {
	display: block;
	margin-top: 5px;
	font-size: 22px;
	font-weight: 800;
	line-height: 1.4;
	color: #0b2d55;
}


/* =========================================================
   セット講座の強調
========================================================= */

/* ゴールド枠＋薄いクリーム背景 */
.alp-course-item--bundle {
	border: 2px solid #d9a441;
	background: #fffaf0;
}

/* ホバー時もゴールド枠を維持 */
.alp-course-item--bundle:hover {
	border-color: #d9a441;
}

/* セット商品のタイトル */
.alp-course-item--bundle .alp-course-item__title-name {
	color: #a65b13;
}

/* セット商品のお得バッジ */
.alp-course-item__deal-badge {
    display: inline-block;
    vertical-align: middle;
    margin-left: 6px;
    padding: 4px 8px;

    border-radius: 4px;
    background: #a65b13;
    color: #fff;

    font-family: sans-serif;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.4;
    white-space: nowrap;
}

/* セット商品の上部ライン */
.alp-course-item--bundle::before {
	background: #d9a441;
}


/* =========================================================
   Motion
========================================================= */

@media (prefers-reduced-motion: reduce) {
	.alp-course-item,
	.alp-course-item__actions a {
		transition: none;
	}
}


/* =========================================================
   Thumbnail
========================================================= */

.alp-course-item__thumbnail {
	aspect-ratio: 16 / 11;

	display: flex;
	align-items: center;
	justify-content: center;

	margin: -32px -32px 24px;
	border-radius: 14px 14px 0 0;

	background: linear-gradient(
		135deg,
		#eef2f7,
		#dfe6ee
	);

	color: #94a3b8;
	font-family: "Outfit", sans-serif;
	font-size: 0.95rem;
	font-weight: 600;
	letter-spacing: .05em;

	border-bottom: 1px solid #dbe2e9;
}

.alp-course-item__thumbnail span {
	opacity: .8;
}


/* =========================================================
   More button
========================================================= */

.alp-courses__more {
	display: flex;
	justify-content: center;
	margin-top: 48px;
}

.alp-courses__more-button {
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;

	min-width: 280px;
	min-height: 56px;
	padding: 0 24px;

	border: 1px solid #0b2b50;
	border-radius: 8px;

	background: #0b2b50;
	color: #fff;

	font-weight: 600;
	text-decoration: none;

	transition:
		background-color 0.25s ease,
		border-color 0.25s ease,
		transform 0.25s ease;
}

.alp-courses__more-button span:last-child {
	transition: transform 0.25s ease;
}

.alp-courses__more-button:hover,
.alp-courses__more-button:focus-visible {
	border-color: #a52a2a;
	background: #a52a2a;
	color: #fff;
	transform: translateY(-2px);
}

.alp-courses__more-button:hover span:last-child,
.alp-courses__more-button:focus-visible span:last-child {
	transform: translateX(5px);
}


/* =========================================================
   Courses - Tablet
========================================================= */

@media (max-width: 1024px) {

	.alp-courses__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}


/* =========================================================
   Courses - Mobile
========================================================= */

@media (max-width: 768px) {

	.alp-courses {
		padding: 72px 0;
	}

	.alp-courses__list {
		grid-template-columns: 1fr;
		gap: 24px;
	}

	/* トップページはスマホで4講座まで表示 */
	.alp-courses__list > .alp-course-item:nth-child(n+5) {
		display: none;
	}

	.alp-course-item {
		padding: 24px;
		border-radius: 12px;
	}

	.alp-course-item::before {
		right: 18px;
		left: 18px;
	}

	.alp-course-item__thumbnail {
		aspect-ratio: auto;
		height: auto;
		margin: -24px -24px 20px;
		border-radius: 12px 12px 0 0;
		overflow: hidden;
	}

	.alp-course-item__image {
		display: block;
		width: 100%;
		height: auto;
		object-fit: contain;
	}

	.alp-course-item__label {
		margin-bottom: 14px;
		font-size: 0.75rem;
	}

	.alp-course-item__title {
		margin-bottom: 12px;
		font-size: 1.35rem;
		line-height: 1.4;
	}

	.alp-course-item__text {
		margin-bottom: 16px;
		line-height: 1.7;
	}

	.alp-course-item__meta {
		margin-bottom: 20px;
		line-height: 1.7;
	}

	.alp-course-item__price {
		margin-bottom: 20px;
		font-size: 1.35rem;
	}

	.alp-course-item__actions {
		grid-template-columns: 1fr;
		gap: 10px;
	}

	.alp-course-item__actions a {
		width: 100%;
		min-height: 48px;
	}

	.alp-courses__more {
		margin-top: 36px;
	}

	.alp-courses__more-button {
		width: 100%;
		min-width: 0;
	}
}