/* ==========================
ランキング全体
========================== */

.ranking {
    padding: 0 0 1.667cqw;
    background: #FFFFFF;
}

.ranking__inner {
    width: min(100%, 480px);
    margin: 0 auto;
    container-type: inline-size;
}

.ranking-card {
    font-size: 16px;
    color: #333333;
}

/* ==========================
ランキング見出し
========================== */

.ranking__heading {
    margin: 4.167cqw 2.083cqw 0;
}

.ranking__heading img {
    display: block;
    width: 100%;
    height: auto;
}

/* ==========================
ランキングカード大枠
========================== */

.ranking-card {
    margin: 3.333cqw 1.042cqw 0;
    border: 0.417cqw solid #FD7E9C;
    border-radius: 1.333cqw;
    background: #FFFFFF;
    overflow: hidden;
}

/* 1位のみ薄い黄色背景 */
.ranking-card--rank-1 {
    background: #FFF8D9;
}

/* カード内は大枠の背景色を継承 */
.ranking-card__header,
.ranking-card__content {
    background: transparent;
}

/* ==========================
ランキングカード上部
========================== */

.ranking-card__header {
    padding: 4.167cqw 3.333cqw 0;
}

/* ==========================
王冠と相談所名
========================== */

.ranking-card__title-row {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 12cqw;
}

/* 王冠は固定位置 */
.ranking-card__crown {
    position: absolute;
    left: 9.5cqw;
    top: 44%;
    transform: translateY(-50%);
    display: block;
    width: 10cqw;
    height: auto;
    margin: 0;
    object-fit: contain;
}

/* サイト名 */
.ranking-card__name {
    margin: 0;
    padding-left: 7.5cqw;
    color: #EF5478;
    font-size: 8cqw;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.02em;
    text-align: center;
    white-space: nowrap;
}
/* サイト名が9文字以上の場合 */
.ranking-card__name--long {
	font-size: 22px;
	letter-spacing: 0;
}

/* ==========================
ピンクのドットライン
========================== */

.ranking-card__dot-line {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    margin: 2.083cqw 0 2.917cqw;
    overflow: hidden;
}

.ranking-card__dot-line span {
    display: block;
    flex: 0 0 auto;
    width: 1.042cqw;
    height: 1.042cqw;
    border-radius: 50%;
    background: #FD7E9C;
}
/* ==========================
短い紹介文
========================== */

.ranking-card__description {
    margin: 0 0 2.917cqw;
    color: #333333;
    font-weight: 700;
    line-height: 1.8;
    text-align: center;
    white-space: pre-line;
}

.ranking-card__description > :first-child {
    margin-top: 0;
}

.ranking-card__description > :last-child {
    margin-bottom: 0;
}
/* ==========================
公式サイト画像
========================== */

.ranking-card__site-image {
    margin: 0 18px;
}

.ranking-card__site-image img {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid #DDDDDD;
    border-radius: 0;
    object-fit: cover;
}

/* ==========================
ランキングカード本文
========================== */

.ranking-card__content {
    padding: 3.75cqw 3.333cqw 5cqw;
}

/* ==========================
横型比較表
========================== */

.ranking-compare {
    container-type: inline-size;
    margin: 10px -8px 0;
}

/* テーブル本体 */
.ranking-compare-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    background: #FFFFFF;
    color: #333333;
    font-size: 12px;
    line-height: 1.45;
}

/* 列幅 */
.ranking-compare-table__col-heading {
    width: 18%;
}

.ranking-compare-table__col-icon {
    width: 8%;
}

.ranking-compare-table__col-text {
    width: 28%;
}

.ranking-compare-table__col-text-wide {
    width: 28%;
}

/* 共通セル */
.ranking-compare-table th,
.ranking-compare-table td {
    box-sizing: border-box;
    border: 1px solid #D9D9D9;
    padding: 10px 5px;
    vertical-align: middle;
}

/* ピンクの項目セル */
.ranking-compare-table th {
    background: #FD7E9C;
    color: #FFFFFF;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.35;
    text-align: center;
    overflow-wrap: anywhere;
}

/* 通常の内容セル */
.ranking-compare-table td {
    background: #FFFFFF;
    color: #333333;
    font-size: clamp(11px, 3.05cqw, 14px);
    text-align: center;
}

.ranking-compare-table__text-cell {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
}

.ranking-compare-table__text-cell br {
    display: block;
    content: "";
}

/* ==========================
評価アイコン
========================== */

/* アイコンが入るセルだけ個別調整 */
.ranking-compare-table td.ranking-compare-table__icon-cell {
    padding-top: 10px;
    padding-right: 0;
    padding-bottom: 10px;
    padding-left: 6px;

    /* アイコン右側の縦線を削除 */
    border-right: 0 !important;
}

/* 評価アイコン本体を少し大きく表示 */
.ranking-compare-table__icon-cell
.ranking-compare-table__evaluation-icon {
    display: block;
    width: 28px;
    height: 28px;
    max-width: none;
    margin: 0 auto;
}

/* アイコン右側のテキストセル */
.ranking-compare-table td.ranking-compare-table__text-cell {
    padding-top: 10px;
    padding-right: 3px;
    padding-bottom: 10px;
    padding-left: 2px;

    /* アイコン左側の縦線を削除 */
    border-left: 0 !important;
}

.ranking-compare-table__evaluation-icon {
    display: block;
    width: 25px;
    height: 25px;
    margin: 0 auto;
    object-fit: contain;
}

/* 成婚実績・サポート体制にはアイコン列なし */
.ranking-compare-table__text-cell--achievement,
.ranking-compare-table__text-cell--support {
    padding-right: 4px;
    padding-left: 4px;
    border-left: 1px solid #D9D9D9 !important;
}

/* ACF内の段落余白をリセット */
.ranking-compare-table td p {
    margin: 0;
    font-size: inherit;
    line-height: inherit;
}

/* ==========================
料金行
========================== */

.ranking-compare-table__price-row th {
    padding-top: 12px;
    padding-bottom: 12px;
}

.ranking-compare-table__price-cell {
    padding: 8px 6px 9px;

    /* アイコンとの間の縦線を削除 */
    border-left: 0 !important;
}

.ranking-compare-table__price-label {
    margin-bottom: 3px;
    color: #333333;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.4;
    text-align: center;
}

.ranking-compare-table__price-text {
    font-size: 14px;
    line-height: 1.4;
    text-align: center;
}

.ranking-compare-table__price-text p {
    margin: 0;
    font-size: inherit;
    line-height: inherit;
}

/* ==========================
比較表下の注釈
========================== */

.ranking-compare__note {
    margin: 5px 8px 0;
    color: #8B8F96;
    font-size: 9px;
    line-height: 1.5;
    text-align: left;
}

.ranking-compare__note p {
    margin: 0;
    font-size: inherit;
    line-height: inherit;
}
/* ==========================
未登録時のメッセージ
========================== */

.ranking__empty {
    margin: 0;
    padding: 8.333cqw 4.167cqw;
    text-align: center;
}

/* ==========================
詳細コンテンツ用の白枠
========================== */

.ranking-detail-box {
    margin: 18px 8px 18px;
    padding: 15px 12px 15px;
    border: 1px solid #D9D9D9;
    background: #FFFFFF;
}

/* 白枠内の各コンテンツ */
.ranking-detail-section {
    margin: 0;
}

/* ==========================
リボン見出し
========================== */

.ranking-ribbon-heading {
    position: relative;
    display: flex;
    align-items: center;
    width: calc(100% -8px);
    min-height: 46px;
    margin: 0 0 22px -12px;
    padding: 0 22px 0 46px;
    background: #FD7E9C;
    color: #FFFFFF;
    font-size: 20px;
    font-weight: 700;
    line-height: 1.2;
    text-align: left;
    overflow: hidden;
}

/* 左側の薄ピンク縦ライン */
.ranking-ribbon-heading::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 16px;
    width: 3px;
    background: #FFF2F3;
}

/* 右端のリボン切り込み */
.ranking-ribbon-heading::after {
    position: absolute;
    content: "";
    z-index: 1;
    top: 0;
    right: -1px;
    height: 100%;
    aspect-ratio: 1 / 3;
    background: #FFFFFF;
    clip-path: polygon(
        100% 0,
        0 50%,
        100% 100%
    );
}

/* 見出しテキスト */
.ranking-ribbon-heading__text {
	display: block;
	width: 100%;
	padding-right: 28px;
	font-size: clamp(20px, 5.7vw, 30px);
	line-height: 1.2;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: clip;
}
.ranking-ribbon-heading--long .ranking-ribbon-heading__text {
	font-size: 16px;
}
/* ==========================
白枠内本文
========================== */

.ranking-detail-section__body {
    padding: 0px;
}
/* ==========================
おすすめポイント一覧
========================== */

.ranking-points {
    width: 100%;
}

.ranking-point {
    margin: 0;
}

.ranking-point + .ranking-point {
    margin-top: 28px;
}

/* ==========================
ポイント見出し
========================== */

.ranking-point__heading {
    display: grid;
    grid-template-columns: 40px minmax(0, 1fr);
    align-items: center;
    column-gap: 10px;
    padding: 0 4px 8px;
    border-bottom: 2px solid #FD7E9C;
}

/* 薄ピンクの丸 */
.ranking-point__check {
	position: relative;
	display: block;
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: #FFF2F3;
}

/* チェックマーク共通 */
.ranking-point__check::before,
.ranking-point__check::after {
	content: "";
	position: absolute;
	border-radius: 999px;
	background: #EA5228;
	transform-origin: left center;
	will-change: transform;
}

/* チェックマークの短い線 */
.ranking-point__check::before {
	left: 10px;
	top: 18px;
	width: 11px;
	height: 4px;
	transform: rotate(45deg) scaleX(0);
	transition: transform 0.18s ease-out;
}

/* チェックマークの長い線 */
.ranking-point__check::after {
	left: 16px;
	top: 27px;
	width: 22px;
	height: 4px;
	transform: rotate(-52deg) scaleX(0);
	transition: transform 0.24s ease-out 0.16s;
}

/* 表示されたら短い線を描画 */
.ranking-point.is-visible .ranking-point__check::before {
	transform: rotate(45deg) scaleX(1);
}

/* 短い線に続いて長い線を描画 */
.ranking-point.is-visible .ranking-point__check::after {
	transform: rotate(-52deg) scaleX(1);
}

/* 動きを減らす設定を使用している場合 */
@media (prefers-reduced-motion: reduce) {
	.ranking-point__check::before,
	.ranking-point__check::after {
		transition: none;
		transform: rotate(45deg) scaleX(1);
	}

	.ranking-point__check::after {
		transform: rotate(-52deg) scaleX(1);
	}
}
/* 見出し */
.ranking-point__title {
    margin: 0;
    color: #333333;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.55;
    letter-spacing: 0.08em;
    text-align: left;
}

/* ==========================
ポイント本文
========================== */

.ranking-point__content {
    margin-top: 10px;
    color: #333333;
    font-size: 16px;
    line-height: 1.75;
    text-align: left;
}

.ranking-point__content > :first-child {
    margin-top: 0;
}

.ranking-point__content > :last-child {
    margin-bottom: 0;
}

.ranking-point__content p,
.ranking-point__content li {
    font-size: 16px;
    line-height: inherit;
}

/* WYSIWYG内の画像 */
.ranking-point__content img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 14px auto 0;
}

/* 太字 */
.ranking-point__content strong {
    font-weight: 700;
}

/* ==========================
9枚の特徴カード
========================== */

.ranking-feature-cards {
    width: 100%;
    margin-top: 16px;
    container-type: inline-size;
}

.ranking-feature-cards__viewport {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: 10px;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;

    /* Firefox */
    scrollbar-width: thin;
    scrollbar-color: #A9A9A9 #E8E8E8;
}

/* Chrome・Safariのスクロールバー */
.ranking-feature-cards__viewport::-webkit-scrollbar {
    height: 6px;
}

.ranking-feature-cards__viewport::-webkit-scrollbar-track {
    border-radius: 999px;
    background: #E8E8E8;
}

.ranking-feature-cards__viewport::-webkit-scrollbar-thumb {
    border-radius: 999px;
    background: #A9A9A9;
}

.ranking-feature-cards__viewport::-webkit-scrollbar-thumb:hover {
    background: #888888;
}

.ranking-feature-cards__track {
    display: flex;
    align-items: stretch;
    gap: 6px;
    width: max-content;
    padding: 0;
}

/* 1画面に3枚を均等表示 */
.ranking-feature-card {
    flex: 0 0 calc((100cqw - 12px) / 3);
    width: calc((100cqw - 12px) / 3);
    margin: 0;
    scroll-snap-align: start;
    scroll-snap-stop: always;
}

/* カード画像 */
.ranking-feature-card img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 5 / 8;

    /* 角丸なし */
    border-radius: 0;

    /* 影なし */
    box-shadow: none;

    object-fit: cover;
}

/* ==========================
口コミセクション
========================== */

.ranking-review-section {
    margin-top: 32px;
}

.ranking-review-section__body {
    padding: 0 8px;
}
/* ==========================
口コミスライダー
========================== */

.ranking-review-slider {
    width: 100%;
}

.ranking-review-slider__viewport {
    width: 100%;
    overflow: hidden;
}

.ranking-review-slider__track {
    display: flex;
    width: 100%;
    transition: transform 0.45s ease;
    will-change: transform;
}

/* ==========================
口コミカード
========================== */

.ranking-review-card {
    flex: 0 0 100%;
    width: 100%;
    box-sizing: border-box;
    padding: 12px 14px 14px;
    border: 1px solid #D2D2D2;
    background: #FFF9FA;
}

.ranking-review-card__header {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr);
    align-items: center;
    column-gap: 14px;
    padding: 0 4px 10px;
    border-bottom: 1px solid #FD7E9C;
}

/* 口コミ画像 */
.ranking-review-card__image {
    width: 77px;
    height: 74px;
    overflow: hidden;
    border-radius: 50%;
    background: #FFFFFF;
}

.ranking-review-card__image img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ranking-review-card__image-placeholder {
    display: block;
    width: 100%;
    height: 100%;
    background: #E0E0E0;
}

/* タイトル・年代・性別 */
.ranking-review-card__meta {
    min-width: 0;
    text-align: left;
}

.ranking-review-card__title {
    margin: 0;
    color: #333333;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.ranking-review-card__profile {
    margin: 2px 0 0;
    color: #333333;
    font-size: 16px;
    line-height: 1.5;
}

/* 口コミ本文 */
.ranking-review-card__content {
    padding: 12px 4px 0;
    color: #333333;
    font-size: 16px;
    line-height: 1.75;
    text-align: left;
    overflow-wrap: anywhere;
}

/* ==========================
口コミページャー
========================== */

.ranking-review-slider__dots {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    margin-top: 12px;
}

.ranking-review-slider__dot {
    width: 9px;
    height: 9px;
    margin: 0;
    padding: 0;
    border: 1px solid #9A9DA3;
    border-radius: 50%;
    background: #FFFFFF;
    appearance: none;
    cursor: pointer;
}

.ranking-review-slider__dot.is-active {
    background: #909399;
}

.ranking-review-slider__dot:focus-visible {
    outline: 2px solid #FD7E9C;
    outline-offset: 2px;
}

/* タイトルリンク */
.ranking-card__title-link{
	color: inherit;
	text-decoration: none;
	transition: opacity .2s;
}

.ranking-card__title-link:hover{
	color: inherit;
	text-decoration: none;
	opacity: .85;
}

/* サイト画像リンク */
.ranking-card__site-image-link{
	display:block;
	text-decoration:none;
}

.ranking-card__site-image-link:hover{
	opacity:.9;
}