*{margin:0;padding:0;box-sizing:border-box}

body{
    font-family:'M PLUS Rounded 1c',sans-serif;
    background:#fff8fb;
    color:#555;
    line-height:1.8;
}

img{display:block;max-width:100%}
a{text-decoration:none;color:inherit}

.container{
    width:min(1200px,95%);
    margin:auto;
}

/*==========================
 Header
==========================*/
.header-info{
	display:flex;
	justify-content:flex-end;
	gap:25px;
	padding:8px 0 12px;
	font-size:14px;
	color:#f63d7b;
}
.header{
    position:sticky;
    top:0;
    z-index:999;
    background:rgba(255,255,255,.95);
    box-shadow:0 2px 15px rgba(255,79,160,.15);
}

.header-inner{
    height:86px;
    display:flex;
    justify-content:space-between;
    align-items:center;
}

.logo img{
    height:70px;
    width:auto;
    display:block;
}

.gnav{
	display:flex;
	justify-content:center;
    gap:12px;
}

.gnav a{
	position:relative;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
    padding:10px 20px;
    border-radius:999px;
    background:#fff;
    color:#ff4fa0;
    font-weight:700;
    box-shadow:0 5px 15px rgba(255,79,160,.18);
    transition:.3s;
}

.gnav a:hover{
    background:#ff4fa0;
    color:#ff4fa0;
    transform:translateY(-3px);
}

.gnav a span{
	font-size:14px;
	font-weight:600;
	letter-spacing:3px;
	line-height:1;
}
.gnav a small{
	margin-top:5px;
	font-size:10px;
	letter-spacing:1px;
	color:#ff4fa0;
	line-height:1;
	transition:.3s;
}
.gnav a::after{
	content:"";
	position:absolute;
	left:50%;
	bottom:0;
	width:0;
	height:2px;
	background:#fae192;
	transform:translateX(-50%);
	transition:.3s;
}
.gnav a:hover{
	color:#fae192;
}
.gnav a:hover small{
	color:#efc640;
}
.gnav a:hover::after{
	width:100%;
}

.hero{
    width:100%;
    background:#fff0f7;
    overflow:hidden;
}

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

.main-btn{
    display:inline-block;
    padding:15px 38px;
    border-radius:999px;
    background:linear-gradient(90deg,#ff4fa0,#ff8ac8);
    color:#fff;
    font-weight:700;
    box-shadow:0 10px 25px rgba(255,79,160,.25);
    transition:.3s;
}

.main-btn:hover{
    transform:scale(1.05);
}

.hero-image img{
    width:100%;
    border-radius:32px;
    box-shadow:0 20px 50px rgba(255,79,160,.22);
}

.section{
    padding:40px 0;
}

.section h2{
    margin-bottom:35px;
    color:#ff4fa0;
    font-size:38px;
    text-align:center;
}

p.sub {
	color: #999;
	text-align: center;
	margin-top:-30px;
	margin-bottom:60px;
}
p.sub::before {
	content: "-";
	margin-right: 5px;
}
p.sub::after {
	content: "-";
	margin-left: 5px;
}

.cast-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:24px;
}

.cast-card{
    background:#fff;
    border-radius:26px;
    overflow:hidden;
    text-align:center;
    box-shadow:0 12px 30px rgba(255,79,160,.16);
    transition:.3s;
}

.cast-card:hover{
    transform:translateY(-8px);
}

.cast-card img{
    width:100%;
    aspect-ratio:2/3;
    object-fit:cover;
}

.cast-card h3{
    margin-top:18px;
    color:#ff4fa0;
    font-size:26px;
}

.cast-card p{
    margin:2px 0;
    color:#888;
    font-size:14px;
}

.cast-btn{
    display:block;
    width:80%;
    margin:18px auto 22px;
    padding:11px 0;
    border-radius:999px;
    background:#ff4fa0;
    color:#fff;
    font-weight:700;
    transition:.3s;
}

.cast-btn:hover{
    background:#ff2b8a;
    transform:scale(1.05);
}

.newface{
    background:#ffeaf4;
}

.newface-box{
    display:grid;
    grid-template-columns:360px 1fr;
    gap:45px;
    align-items:center;
    background:#fff;
    border-radius:32px;
    padding:35px;
    box-shadow:0 12px 30px rgba(255,79,160,.15);
}

.newface-box img{
    width:100%;
    border-radius:24px;
    aspect-ratio:2/3;
    object-fit:cover;
}

.label{
    display:inline-block;
    padding:6px 18px;
    border-radius:999px;
    background:#ff4fa0;
    color:#fff;
    font-weight:700;
    margin-bottom:15px;
}

.newface-box h3{
    color:#ff4fa0;
    font-size:36px;
    margin-bottom:12px;
}

.newface-box p{
    color:#777;
    margin-bottom:25px;
}

.news ul{
    max-width:800px;
    margin:auto;
    list-style:none;
    background:#fff;
    border-radius:24px;
    padding:20px 30px;
    box-shadow:0 12px 30px rgba(255,79,160,.12);
}

.news li{
    padding:14px 0;
    border-bottom:1px dashed #ffc1dd;
}

.news li:last-child{
    border-bottom:none;
}

.footer{
    padding:55px 0;
    text-align:center;
    background:#ff4fa0;
    color:#fff;
}

.footer h2{
    font-size:42px;
    letter-spacing:3px;
}

.footer small{
    display:block;
    margin-top:10px;
    opacity:.8;
}

@media(max-width:1000px){
    .hero-inner{
        grid-template-columns:1fr;
    }

    .cast-grid{
        grid-template-columns:repeat(2,1fr);
    }

    .newface-box{
        grid-template-columns:1fr;
    }
}

@media(max-width:768px){
    .header-inner{
        height:auto;
        padding:18px 0;
        flex-direction:column;
        gap:15px;
    }

    .gnav{
        flex-wrap:wrap;
        justify-content:center;
    }

    .hero-text h1{
        font-size:46px;
    }
}

/* ==================================================
   キャスト一覧ページ
================================================== */

.cast-page{
	padding-top:70px;
	padding-bottom:90px;
	background:#fffafb;
}

.section-heading{
	margin-bottom:40px;
	text-align:center;
}

.section-heading h2{
	display:flex;
	align-items:center;
	justify-content:center;
	gap:10px;
	margin:0;
	color:#ff6097;
	font-size:34px;
	font-weight:800;
	letter-spacing:.04em;
}

.section-heading h2 i{
	font-size:25px;
}

.section-heading p{
	margin:7px 0 0;
	color:#9e7c89;
	font-size:14px;
	font-weight:500;
	letter-spacing:.12em;
}


/* 写真全体をリンクにする */

.cast-image{
	display:block;
	overflow:hidden;
}

.cast-image img{
	display:block;
	width:100%;
	transition:transform .4s ease;
}

.cast-card:hover .cast-image img{
	transform:scale(1.04);
}


/* キャスト英字名 */

.cast-kana{
	margin-top:3px;
	color:#d98eaa;
	font-size:13px;
	font-weight:500;
	letter-spacing:.08em;
}


/* 年齢・身長 */

.cast-basic{
	margin-top:8px;
	color:#6f5962;
	font-size:13px;
	font-weight:700;
}


/* スリーサイズ */

.cast-size{
	margin-top:3px;
	color:#927b84;
	font-size:12px;
}


/* キャストがいない場合も高さを確保 */

.cast-page .cast-grid:empty{
	min-height:200px;
}


/* ==================================================
   タブレット
================================================== */

@media(max-width:900px){

	.cast-page{
		padding-top:55px;
		padding-bottom:70px;
	}

	.section-heading{
		margin-bottom:30px;
	}

	.section-heading h2{
		font-size:30px;
	}

}


/* ==================================================
   スマートフォン
================================================== */

@media(max-width:600px){

	.cast-page{
		padding-top:45px;
		padding-bottom:60px;
	}

	.cast-page .container{
		padding-left:12px;
		padding-right:12px;
	}

	.section-heading{
		margin-bottom:25px;
	}

	.section-heading h2{
		font-size:26px;
	}

	.section-heading h2 i{
		font-size:20px;
	}

	.section-heading p{
		font-size:12px;
	}

	.cast-grid{
		grid-template-columns:repeat(2,minmax(0,1fr));
		gap:20px 10px;
	}

	.cast-card h3{
		font-size:18px;
	}

	.cast-kana{
		font-size:11px;
	}

	.cast-basic{
		font-size:11px;
	}

	.cast-size{
		font-size:10px;
		line-height:1.6;
	}

	.cast-btn{
		padding:10px 5px;
		font-size:11px;
	}

}

/* ==================================================
   年齢認証ページ
================================================== */

.age-page{
	margin:0;
	color:#59464e;
	font-family:"M PLUS Rounded 1c",sans-serif;
	background:#fff8fb;
}

.age-overlay{
	position:relative;
	display:flex;
	align-items:center;
	justify-content:center;
	width:100%;
	min-height:100vh;
	padding:60px 20px;
	background-color:#fff1f6;
	background-repeat:no-repeat;
	background-position:center;
	background-size:cover;
	overflow:hidden;
	isolation:isolate;
}

.age-overlay::before{
	content:"";
	position:absolute;
	inset:0;
	z-index:-2;
	background:
		linear-gradient(
			135deg,
			rgba(255,240,246,.91),
			rgba(255,255,255,.86)
		);
}

.age-overlay::after{
	content:"";
	position:absolute;
	inset:0;
	z-index:-1;
	background-image:
		radial-gradient(
			circle at 20% 20%,
			rgba(255,129,173,.13) 0,
			rgba(255,129,173,.13) 3px,
			transparent 4px
		);
	background-size:30px 30px;
}

.age-decoration{
	position:absolute;
	z-index:-1;
	border-radius:50%;
	background:rgba(255,146,183,.17);
	filter:blur(2px);
}

.age-decoration-left{
	width:360px;
	height:360px;
	top:-160px;
	left:-120px;
}

.age-decoration-right{
	width:300px;
	height:300px;
	right:-100px;
	bottom:-140px;
}

.age-box{
	width:100%;
	max-width:600px;
	padding:55px 60px 50px;
	text-align:center;
	border:1px solid rgba(255,174,201,.65);
	border-radius:32px;
	background:rgba(255,255,255,.94);
	box-shadow:
		0 25px 70px rgba(166,92,119,.18),
		0 5px 20px rgba(166,92,119,.08);
	backdrop-filter:blur(8px);
}

.age-icon{
	display:flex;
	align-items:center;
	justify-content:center;
	width:70px;
	height:70px;
	margin:0 auto 20px;
	color:#fff;
	font-size:28px;
	border-radius:50%;
	background:linear-gradient(135deg,#ff98ba,#ff5f96);
	box-shadow:0 12px 25px rgba(255,95,150,.28);
}

.age-label{
	margin:0 0 8px;
	color:#ff659a;
	font-size:13px;
	font-weight:800;
	letter-spacing:.18em;
}

.age-box h1{
	margin:0;
	color:#4f3c43;
	font-size:40px;
	font-weight:800;
	line-height:1.3;
	letter-spacing:.05em;
}

.age-title{
	margin:28px 0 12px;
	color:#5d464f;
	font-size:22px;
	font-weight:800;
}

.age-text{
	margin:0;
	color:#8c747d;
	font-size:14px;
	line-height:2;
}

.age-form{
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:14px;
	margin-top:35px;
}

.age-btn{
	position:relative;
	display:flex;
	align-items:center;
	gap:12px;
	min-height:78px;
	padding:14px 40px 14px 15px;
	border-radius:18px;
	text-align:left;
	text-decoration:none;
	transition:
		transform .25s ease,
		box-shadow .25s ease,
		border-color .25s ease,
		background .25s ease;
}

.age-btn:hover{
	transform:translateY(-3px);
}

.age-yes{
	color:#fff;
	border:1px solid #ff669c;
	background:linear-gradient(135deg,#ff91b6,#ff5a93);
	box-shadow:0 12px 25px rgba(255,90,147,.22);
}

.age-yes:hover{
	box-shadow:0 17px 32px rgba(255,90,147,.3);
}

.age-no{
	color:#7f6b73;
	border:1px solid #eadde2;
	background:#fff;
	box-shadow:0 10px 22px rgba(116,83,95,.08);
}

.age-no:hover{
	border-color:#d9c5cd;
	background:#fffafb;
	box-shadow:0 15px 28px rgba(116,83,95,.13);
}

.age-btn-icon{
	display:flex;
	flex-shrink:0;
	align-items:center;
	justify-content:center;
	width:40px;
	height:40px;
	border-radius:50%;
}

.age-yes .age-btn-icon{
	color:#ff6198;
	background:#fff;
}

.age-no .age-btn-icon{
	color:#9b858d;
	background:#f7eff2;
}

.age-btn-text{
	display:flex;
	flex-direction:column;
	min-width:0;
}

.age-btn-text strong{
	font-size:16px;
	font-weight:800;
}

.age-btn-text small{
	margin-top:2px;
	font-size:10px;
	font-weight:500;
	opacity:.85;
}

.age-arrow{
	position:absolute;
	top:50%;
	right:16px;
	font-size:12px;
	transform:translateY(-50%);
	transition:transform .25s ease;
}

.age-btn:hover .age-arrow{
	transform:translate(3px,-50%);
}

.age-notice{
	display:flex;
	align-items:center;
	justify-content:center;
	gap:7px;
	margin:26px 0 0;
	color:#ad929c;
	font-size:11px;
}

.age-notice i{
	color:#ff8caf;
}


/* ==================================================
   リンクエリア
================================================== */

.age-link-area{
	padding:35px 20px;
	background:#fff;
}

.age-link-area .container{
	max-width:1200px;
	margin:0 auto;
}


/* ==================================================
   スマートフォン
================================================== */

@media(max-width:600px){

	.age-overlay{
		min-height:100svh;
		padding:30px 15px;
	}

	.age-box{
		padding:38px 20px 32px;
		border-radius:24px;
	}

	.age-icon{
		width:58px;
		height:58px;
		margin-bottom:17px;
		font-size:23px;
	}

	.age-label{
		font-size:11px;
	}

	.age-box h1{
		font-size:30px;
	}

	.age-title{
		margin-top:23px;
		font-size:19px;
	}

	.age-text{
		font-size:13px;
		line-height:1.9;
	}

	.age-form{
		grid-template-columns:1fr;
		gap:11px;
		margin-top:27px;
	}

	.age-btn{
		min-height:70px;
		border-radius:16px;
	}

	.age-btn-text strong{
		font-size:15px;
	}

	.age-notice{
		margin-top:21px;
	}

	.age-decoration-left{
		width:250px;
		height:250px;
	}

	.age-decoration-right{
		width:220px;
		height:220px;
	}

}

@media(min-width:601px){

	.sp-only{
		display:none;
	}

}

/*=========================================
 FOOTER
=========================================*/

footer{
	background:linear-gradient(180deg,#fff7fa 0%,#ffeef4 100%);
	padding:60px 0 35px;
	border-top:1px solid #ffd6e3;
}

.footer-nav{
	display:flex;
	justify-content:center;
	flex-wrap:wrap;
	gap:28px;
	margin-bottom:28px;
}

.footer-nav a{
	color:#8c6675;
	text-decoration:none;
	font-size:15px;
	font-weight:700;
	letter-spacing:.05em;
	transition:.3s;
}

.footer-nav a:hover{
	color:#ff5f97;
}

footer h2{
	font-family:"M PLUS Rounded 1c",sans-serif;
	font-size:42px;
	font-weight:800;
	text-align:center;
	margin:0 0 10px;
	color:#ff5f97;
	letter-spacing:.05em;
}

footer span{
	font-size:.8em;
}

.footer-catch{
	text-align:center;
	color:#9d7c89;
	font-size:15px;
	line-height:1.8;
	margin-bottom:20px;
}

footer .container img{
	display:block;
	margin:auto;
	max-width:200px;
	height:auto;
}

.footer-sns{
	margin:25px 0;
	text-align:center;
}

.footer-sns a{
	display:inline-flex;
	align-items:center;
	justify-content:center;
	width:48px;
	height:48px;
	margin:0 7px;
	border-radius:50%;
	background:#fff;
	color:#ff6ea2;
	font-size:22px;
	text-decoration:none;
	box-shadow:0 5px 15px rgba(255,110,162,.15);
	transition:.3s;
}

.footer-sns a:hover{
	background:#ff6ea2;
	color:#fff;
	transform:translateY(-4px);
	box-shadow:0 10px 25px rgba(255,110,162,.3);
}

.footer-address{
	margin:20px 0;
	color:#8c6675;
	font-size:14px;
	line-height:1.9;
	text-align:center;
}

.footer-address i{
	color:#ff76a8;
	margin-right:6px;
}

.copyright{
	padding-top:18px;
	margin-top:25px;
	border-top:1px solid #ffd6e3;
	text-align:center;
	color:#b4939f;
	font-size:13px;
	letter-spacing:.05em;
}


/*=========================================
 SP
=========================================*/

@media(max-width:600px){

	footer{
		padding:45px 0 25px;
	}

	.footer-nav{
		gap:16px;
		margin-bottom:22px;
	}

	.footer-nav a{
		font-size:13px;
	}

	footer h2{
		font-size:34px;
	}

	.footer-catch{
		font-size:13px;
	}

	.footer-sns a{
		width:42px;
		height:42px;
		font-size:20px;
		margin:0 5px;
	}

	.footer-address{
		font-size:13px;
	}

	.copyright{
		font-size:12px;
	}

}

/*=========================================
 SCHEDULE
=========================================*/

.schedule-page{
	padding:70px 0 90px;
	background:linear-gradient(180deg,#fffafb 0%,#fff3f7 100%);
}

.section-title{
	text-align:center;
	margin-bottom:45px;
}

.section-icon{
	display:flex;
	align-items:center;
	justify-content:center;
	width:70px;
	height:70px;
	margin:0 auto 18px;
	border-radius:50%;
	background:linear-gradient(135deg,#ff8eb4,#ff5d94);
	color:#fff;
	font-size:28px;
	box-shadow:0 12px 30px rgba(255,94,150,.25);
}

.section-title h2{
	margin:0;
	font-size:42px;
	font-weight:800;
	color:#ff5f97;
	letter-spacing:.08em;
}

.section-title p{
	margin-top:8px;
	font-size:15px;
	color:#9d7c89;
	letter-spacing:.08em;
}


/*=========================================
 TABLE
=========================================*/

.schedule-wrap{
	background:#fff;
	border-radius:24px;
	padding:20px;
	box-shadow:0 15px 45px rgba(255,110,162,.10);
	overflow-x:auto;
}

.schedule-table{
	width:100%;
	min-width:900px;
	border-collapse:separate;
	border-spacing:8px;
}

.schedule-table th{

	background:linear-gradient(135deg,#ff8eb4,#ff6ea2);
	color:#fff;

	padding:16px 10px;

	font-size:14px;
	font-weight:700;
	text-align:center;

	border-radius:14px;

}

.cast-col{
	width:230px;
}

.schedule-date{

	display:flex;
	flex-direction:column;
	align-items:center;

}

.schedule-date .day{

	font-size:24px;
	font-weight:800;
	line-height:1;

}

.schedule-date .week{

	margin-top:6px;
	font-size:13px;
	font-weight:500;

}


/*=========================================
 TD
=========================================*/

.schedule-table td{

	background:#fff8fb;
	border:1px solid #ffd7e4;

	border-radius:16px;

	padding:12px;

	text-align:center;
	vertical-align:middle;

}

.schedule-table tr:hover td{

	background:#fff2f7;

}

/*=========================================
 CAST
=========================================*/
.cast-info{
	text-align:center !important;
	min-width:220px;
}

.cast-info a{
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	gap:10px;
	text-decoration:none;
	color:#555;
	transition:.3s;
}

.cast-info a:hover{
	color:#ff5f97;
}

.schedule-thumb{
	width:72px;
	height:96px;
	object-fit:cover;
	border-radius:16px;
	background:#fff;
	box-shadow:0 8px 20px rgba(255,94,150,.18);
	transition:.35s;
}

.cast-info a:hover .schedule-thumb{
	transform:scale(1.05) rotate(-2deg);
	box-shadow:0 12px 30px rgba(255,94,150,.28);
}

.schedule-name{
	display:block;
	text-align:center;
	font-size:17px;
	font-weight:700;
	line-height:1.5;
}


/*=========================================
 TIME
=========================================*/

.time{
	display:inline-block;
	padding:10px 14px;
	border-radius:14px;
	background:linear-gradient(135deg,#ff96bb,#ff6a9d);
	color:#fff;
	font-size:13px;
	font-weight:700;
	line-height:1.6;
	box-shadow:0 8px 18px rgba(255,94,150,.20);
}


/*=========================================
 MEMO
=========================================*/

.memo{
	display:inline-block;
	margin-top:8px;
	padding:5px 10px;
	border-radius:30px;
	background:#ffe5ef;
	color:#ff5f97;
	font-size:11px;
	font-weight:700;
}


/*=========================================
 NONE
=========================================*/

.none{
	color:#cdb9c2;
	font-size:24px;
	font-weight:700;
}


/*=========================================
 HOVER
=========================================*/

.schedule-table tbody tr{
	transition:.25s;
}

.schedule-table tbody tr:hover{
	transform:translateY(-2px);
}

.schedule-table tbody tr:hover td{
	box-shadow:0 5px 18px rgba(255,94,150,.08);
}

/*=========================================
 TABLET
=========================================*/

@media(max-width:900px){

	.schedule-page{
		padding:55px 0 70px;
	}

	.section-title{
		margin-bottom:35px;
	}

	.section-icon{
		width:60px;
		height:60px;
		font-size:24px;
	}

	.section-title h2{
		font-size:36px;
	}

	.schedule-wrap{
		padding:15px;
		border-radius:20px;
		overflow-x:auto;
		-webkit-overflow-scrolling:touch;
	}

	.schedule-table{
		min-width:820px;
	}

}


/*=========================================
 SMART PHONE
=========================================*/

@media(max-width:600px){

	.schedule-page{
		padding:45px 0 60px;
	}

	.schedule-page .container{
		padding-left:12px;
		padding-right:12px;
	}

	.section-title{
		margin-bottom:25px;
	}

	.section-icon{
		width:54px;
		height:54px;
		font-size:20px;
		margin-bottom:15px;
	}

	.section-title h2{
		font-size:30px;
	}

	.section-title p{
		font-size:13px;
	}

	.schedule-wrap{

		padding:10px;
		border-radius:16px;

		overflow-x:auto;
		-webkit-overflow-scrolling:touch;

		box-shadow:
			0 8px 25px rgba(255,110,162,.12);

	}

	.schedule-table{

		min-width:760px;

		border-spacing:5px;

	}

	.schedule-table th{

		padding:10px 5px;
		font-size:12px;

		border-radius:10px;

	}

	.cast-col{

		width:180px;

	}

	.schedule-date .day{

		font-size:18px;

	}

	.schedule-date .week{

		font-size:11px;

		margin-top:3px;

	}

	.schedule-table td{

		padding:8px;

		border-radius:12px;

	}

	.schedule-thumb{

		width:55px;
		height:74px;

		border-radius:12px;

	}

	.schedule-name{

		font-size:14px;

	}

	.time{

		padding:7px 9px;

		font-size:11px;
		line-height:1.5;

	}

	.memo{

		padding:4px 8px;

		font-size:10px;

	}

	.none{

		font-size:18px;

	}

}


/*=========================================
 SCROLL BAR
=========================================*/

.schedule-wrap::-webkit-scrollbar{

	height:10px;

}

.schedule-wrap::-webkit-scrollbar-track{

	background:#ffe8f1;
	border-radius:20px;

}

.schedule-wrap::-webkit-scrollbar-thumb{

	background:#ff8eb4;
	border-radius:20px;

}

.schedule-wrap::-webkit-scrollbar-thumb:hover{

	background:#ff5f97;

}

/*=========================================
 RANKING
=========================================*/

.ranking-page{
	padding:70px 0 90px;
	background:linear-gradient(180deg,#fffafb 0%,#fff3f8 100%);
}


/*=========================================
 TABS
=========================================*/

.ranking-tabs{

	display:flex;
	justify-content:center;
	flex-wrap:wrap;
	gap:12px;

	margin-bottom:45px;

}

.ranking-tab{

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

	padding:12px 26px;

	background:#fff;
	color:#ff5f97;

	border:2px solid #ffd4e2;
	border-radius:999px;

	font-size:14px;
	font-weight:700;

	text-decoration:none;

	box-shadow:0 5px 15px rgba(255,95,151,.08);

	transition:.3s;

}

.ranking-tab:hover{

	background:#ff8db5;
	border-color:#ff8db5;

	color:#fff;

	transform:translateY(-2px);

}

.ranking-tab.active{

	background:linear-gradient(135deg,#ff8db5,#ff5f97);

	border-color:#ff5f97;

	color:#fff;

	box-shadow:0 10px 25px rgba(255,95,151,.22);

}


/*=========================================
 GRID
=========================================*/

.ranking-grid{

	gap:35px 28px;

}


/*=========================================
 BADGE
=========================================*/

.rank-badge{

	position:absolute;

	top:14px;
	left:14px;

	z-index:5;

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

	padding:8px 16px;

	border-radius:30px;

	color:#fff;

	font-size:13px;
	font-weight:800;

	background:linear-gradient(135deg,#ff8eb4,#ff5f97);

	box-shadow:0 8px 20px rgba(255,95,151,.25);

}


/*=========================================
 TOP3
=========================================*/

.rank-card-1{

	position:relative;

	transform:scale(1.05);

	border:2px solid #ffd35a;

	box-shadow:0 18px 40px rgba(255,180,0,.18);

}

.rank-card-2{

	position:relative;

	border:2px solid #d7d7d7;

}

.rank-card-3{

	position:relative;

	border:2px solid #d9b89d;

}


/*=========================================
 TOP3 BADGE
=========================================*/

.rank-card-1 .rank-badge{

	background:
	linear-gradient(
	135deg,
	#ffd65a,
	#ffb300
	);

}

.rank-card-2 .rank-badge{

	background:
	linear-gradient(
	135deg,
	#d9d9d9,
	#a8a8a8
	);

}

.rank-card-3 .rank-badge{

	background:
	linear-gradient(
	135deg,
	#d7a678,
	#b87846
	);

}


/*=========================================
 CROWN
=========================================*/
.rank-card-1::before{
	content:"\f521";
	font-family:"Font Awesome 6 Free";
	font-weight:900;
	position:absolute;
	top:-5px;
	right:15px;
	font-size:32px;
	color:#FFD700; /* Gold */
	z-index:20;
}

.rank-card-2::before{
	content:"\f5a2";
	font-family:"Font Awesome 6 Free";
	font-weight:900;
	position:absolute;
	top:-5px;
	right:15px;
	font-size:30px;
	color:#C0C0C0; /* Silver */
	z-index:20;
}

.rank-card-3::before{
	content:"\f5a2";
	font-family:"Font Awesome 6 Free";
	font-weight:900;
	position:absolute;
	top:-5px;
	right:15px;
	font-size:30px;
	color:#CD7F32; /* Bronze */
	z-index:20;
}

/*=========================================
 RANKING HOVER
=========================================*/

.ranking-grid .cast-card{
	position:relative;
	overflow:hidden;
	transition:
		transform .3s ease,
		box-shadow .3s ease;
}

.ranking-grid .cast-card:hover{
	transform:translateY(-6px);
	box-shadow:0 18px 40px rgba(255,95,151,.18);
}

.ranking-grid .cast-card img{
	transition:transform .45s ease;
}

.ranking-grid .cast-card:hover img{
	transform:scale(1.05);
}


/*=========================================
 EMPTY
=========================================*/

.ranking-empty{
	padding:60px 20px;
	text-align:center;
	color:#9d7c89;
	font-size:15px;
	line-height:2;
	background:#fff;
	border-radius:20px;
	box-shadow:0 8px 25px rgba(255,95,151,.08);
}


/*=========================================
 TABLET
=========================================*/

@media(max-width:900px){

	.ranking-page{
		padding:55px 0 70px;
	}

	.ranking-tabs{
		gap:10px;
		margin-bottom:35px;
	}

	.ranking-grid{
		gap:25px 18px;
	}

	.rank-card-1{
		transform:none;
	}

}


/*=========================================
 SMART PHONE
=========================================*/

@media(max-width:600px){

	.ranking-page{
		padding:45px 0 60px;
	}

	.ranking-page .container{
		padding-left:12px;
		padding-right:12px;
	}

	.ranking-tabs{
		gap:8px;
		margin-bottom:25px;
	}

	.ranking-tab{
		padding:9px 16px;
		font-size:12px;
	}

	.ranking-grid{
		grid-template-columns:repeat(2,minmax(0,1fr));
		gap:18px 10px;
	}

	.rank-badge{
		top:8px;
		left:8px;
		padding:5px 10px;
		font-size:10px;
	}

	.rank-card-1::before{
		top:-10px;
		right:8px;
		font-size:24px;
	}

	.rank-card-1,
	.rank-card-2,
	.rank-card-3{
		border-width:1px;
	}

	.ranking-empty{
		padding:40px 15px;
		font-size:13px;
	}

}


/*=========================================
 SMALL PHONE
=========================================*/

@media(max-width:400px){

	.ranking-tab{
		flex:1 1 calc(50% - 8px);
		padding:8px 10px;
		font-size:11px;
	}

	.rank-badge{
		font-size:9px;
		padding:4px 8px;
	}

}

/*=========================================
 SYSTEM
=========================================*/

.system-page{
	padding:70px 0 90px;
	background:linear-gradient(180deg,#fffafb 0%,#fff3f8 100%);
}


/*=========================================
 CONTENT
=========================================*/

.system-content,
.system-notice{

	background:#fff;

	padding:35px;

	margin-bottom:30px;

	border-radius:22px;

	box-shadow:0 10px 30px rgba(255,95,151,.08);

}

.system-notice{

	border:2px solid #ffd8e5;
	background:#fff8fb;

}


/*=========================================
 HEADLINE
=========================================*/

.system-content h2,
.system-notice h2{

	margin:0 0 20px;

	padding-bottom:12px;

	color:#ff5f97;

	font-size:28px;
	font-weight:800;

	border-bottom:2px solid #ffd8e5;

}

.system-content h3,
.system-notice h3{

	margin:35px 0 15px;

	color:#ff5f97;

	font-size:22px;
	font-weight:700;

}

.system-content h4,
.system-notice h4{

	margin:25px 0 12px;

	font-size:18px;
	font-weight:700;

	color:#666;

}


/*=========================================
 TEXT
=========================================*/

.system-content p,
.system-notice p{

	margin-bottom:18px;

	line-height:2;

	color:#666;

	font-size:15px;

}

.system-content strong,
.system-notice strong{

	color:#ff5f97;

}

.system-content a,
.system-notice a{

	color:#ff5f97;
	text-decoration:none;

}

.system-content a:hover,
.system-notice a:hover{

	text-decoration:underline;

}


/*=========================================
 LIST
=========================================*/

.system-content ul,
.system-notice ul{

	margin:18px 0;

	padding-left:20px;

}

.system-content li,
.system-notice li{

	margin-bottom:10px;

	line-height:1.8;

}


/*=========================================
 TABLE
=========================================*/

.system-content table,
.system-notice table{

	width:100%;

	margin:25px 0;

	border-collapse:collapse;

	border-radius:16px;

	overflow:hidden;

}

.system-content th,
.system-notice th{

	padding:14px;

	background:linear-gradient(135deg,#ff8db5,#ff5f97);

	color:#fff;

	text-align:center;

	font-weight:700;

}

.system-content td,
.system-notice td{

	padding:14px;

	text-align:center;

	border:1px solid #ffe0ea;

	background:#fff;

}

.system-content tr:nth-child(even) td{

	background:#fff8fb;

}


/*=========================================
 HR
=========================================*/

.system-content hr,
.system-notice hr{

	border:none;

	height:1px;

	margin:35px 0;

	background:#ffd8e5;

}


/*=========================================
 SP
=========================================*/

@media(max-width:600px){

	.system-page{

		padding:45px 0 60px;

	}

	.system-page .container{

		padding-left:12px;
		padding-right:12px;

	}

	.system-content,
	.system-notice{

		padding:20px;

		border-radius:18px;

	}

	.system-content h2,
	.system-notice h2{

		font-size:22px;

	}

	.system-content h3,
	.system-notice h3{

		font-size:18px;

	}

	.system-content h4,
	.system-notice h4{

		font-size:16px;

	}

	.system-content p,
	.system-notice p{

		font-size:14px;

	}

	.system-content table,
	.system-notice table{

		display:block;

		overflow-x:auto;

		white-space:nowrap;

	}

}

/*=========================================
 ACCESS
=========================================*/

.access-page{
	padding:70px 0 90px;
	background:linear-gradient(180deg,#fffafb 0%,#fff3f8 100%);
}


/*=========================================
 MAP
=========================================*/

.access-map{
	margin-bottom:35px;
	padding:12px;
	background:#fff;
	border-radius:22px;
	box-shadow:0 10px 30px rgba(255,95,151,.08);
	overflow:hidden;
}

.access-map iframe{
	display:block;
	width:100%;
	height:450px;
	border:0;
	border-radius:16px;
}


/*=========================================
 INFO
=========================================*/

.access-info{
	margin-bottom:35px;
	background:#fff;
	border-radius:22px;
	box-shadow:0 10px 30px rgba(255,95,151,.08);
	overflow:hidden;
}

.access-info table{
	width:100%;
	border-collapse:collapse;
}

.access-info th{
	width:180px;
	padding:18px;
	background:linear-gradient(135deg,#ff8db5,#ff5f97);
	color:#fff;
	text-align:left;
	font-size:15px;
	font-weight:700;
	white-space:nowrap;
}

.access-info th i{
	margin-right:8px;
}

.access-info td{
	padding:18px 20px;
	background:#fff;
	border-bottom:1px solid #ffe3ec;
	color:#666;
	line-height:1.8;
}

.access-info tr:last-child td,
.access-info tr:last-child th{
	border-bottom:none;
}


/*=========================================
 CONTENT
=========================================*/

.access-content{
	background:#fff;
	padding:35px;
	border-radius:22px;
	box-shadow:0 10px 30px rgba(255,95,151,.08);
}

.access-content h2{
	margin:0 0 20px;
	padding-bottom:12px;
	border-bottom:2px solid #ffd7e5;
	color:#ff5f97;
	font-size:28px;
	font-weight:800;
}

.access-content h3{
	margin:30px 0 15px;
	color:#ff5f97;
	font-size:22px;
	font-weight:700;
}

.access-content h4{
	margin:25px 0 12px;
	color:#666;
	font-size:18px;
	font-weight:700;
}

.access-content p{
	margin-bottom:18px;
	color:#666;
	font-size:15px;
	line-height:2;
}

.access-content strong{
	color:#ff5f97;
}

.access-content a{
	color:#ff5f97;
	text-decoration:none;
}

.access-content a:hover{
	text-decoration:underline;
}

.access-content ul,
.access-content ol{
	padding-left:22px;
	margin:18px 0;
}

.access-content li{
	margin-bottom:10px;
	line-height:1.8;
}

.access-content hr{
	margin:35px 0;
	border:none;
	height:1px;
	background:#ffd7e5;
}


/*=========================================
 SP
=========================================*/

@media(max-width:600px){

	.access-page{
		padding:45px 0 60px;
	}

	.access-page .container{
		padding-left:12px;
		padding-right:12px;
	}

	.access-map{
		padding:8px;
		border-radius:16px;
	}

	.access-map iframe{
		height:300px;
		border-radius:12px;
	}

	.access-info{
		border-radius:16px;
	}

	.access-info table,
	.access-info tbody,
	.access-info tr,
	.access-info th,
	.access-info td{
		display:block;
		width:100%;
	}

	.access-info tr{
		border-bottom:1px solid #ffe3ec;
	}

	.access-info tr:last-child{
		border-bottom:none;
	}

	.access-info th{
		padding:12px 15px;
		font-size:14px;
		border-radius:0;
	}

	.access-info td{
		padding:15px;
		font-size:14px;
		border-bottom:none;
	}

	.access-content{
		padding:20px;
		border-radius:16px;
	}

	.access-content h2{
		font-size:22px;
	}

	.access-content h3{
		font-size:18px;
	}

	.access-content h4{
		font-size:16px;
	}

	.access-content p{
		font-size:14px;
	}

}

/*=========================================
 RESERVATION
=========================================*/

.reservation-page{
	padding:70px 0 90px;
	background:linear-gradient(180deg,#fffafb 0%,#fff3f8 100%);
}

.reservation-form{
	background:#fff;
	padding:40px;
	border-radius:22px;
	box-shadow:0 10px 30px rgba(255,95,151,.08);
}
.complete-box{
	width:100%;
	max-width:500px;
	margin:auto;
	padding:30px;
	box-sizing:border-box;
}

/*=========================================
 FORM
=========================================*/

.form-group{
	margin-bottom:24px;
}

.form-row{
	display:flex;
	gap:20px;
}

.form-row .form-group{
	flex:1;
	margin-bottom:24px;
}

.form-group label{
	display:block;
	margin-bottom:8px;
	color:#666;
	font-size:15px;
	font-weight:700;
}


/*=========================================
 REQUIRED
=========================================*/

.required{
	display:inline-block;
	margin-left:8px;
	padding:2px 8px;
	border-radius:30px;
	background:#ff5f97;
	color:#fff;
	font-size:11px;
	font-weight:700;
}


/*=========================================
 INPUT
=========================================*/

.reservation-form input,
.reservation-form select,
.reservation-form textarea{

	width:100%;

	padding:14px 16px;

	border:2px solid #ffd8e5;
	border-radius:14px;

	background:#fff;

	font-size:15px;

	transition:.25s;

	box-sizing:border-box;

}

.reservation-form textarea{

	resize:vertical;

	min-height:160px;

}

.reservation-form input:focus,
.reservation-form select:focus,
.reservation-form textarea:focus{

	outline:none;

	border-color:#ff5f97;

	box-shadow:0 0 0 4px rgba(255,95,151,.12);

}


/*=========================================
 CAPTCHA
=========================================*/

.captcha-image{

	display:block;

	margin-bottom:15px;

	border-radius:12px;

	box-shadow:0 5px 15px rgba(255,95,151,.10);

}

.captcha-input{

	max-width:220px;

}


/*=========================================
 ERROR
=========================================*/

.error-message{

	margin-bottom:25px;

	padding:16px;

	border-radius:14px;

	background:#fff0f5;

	color:#e53935;

	font-weight:700;

	border-left:5px solid #ff5f97;

}


/*=========================================
 SUBMIT
=========================================*/

.submit-btn{

	display:block;

	width:100%;

	padding:18px;

	border:none;

	border-radius:999px;

	background:linear-gradient(
	135deg,
	#ff8db5,
	#ff5f97
	);

	color:#fff;

	font-size:17px;
	font-weight:700;

	cursor:pointer;

	box-shadow:0 12px 25px rgba(255,95,151,.20);

	transition:.3s;

}

.submit-btn:hover{

	transform:translateY(-3px);

	box-shadow:0 18px 35px rgba(255,95,151,.30);

}


/*=========================================
 SMART PHONE
=========================================*/

@media(max-width:600px){

	.reservation-page{

		padding:45px 0 60px;

	}

	.reservation-page .container{

		padding-left:12px;
		padding-right:12px;

	}

	.reservation-form{

		padding:20px;

		border-radius:18px;

	}

	.form-row{

		flex-direction:column;

		gap:0;

	}

	.form-group{

		margin-bottom:20px;

	}

	.form-group label{

		font-size:14px;

	}

	.reservation-form input,
	.reservation-form select,
	.reservation-form textarea{

		font-size:14px;

		padding:13px 14px;

	}

	.submit-btn{

		padding:15px;

		font-size:15px;

	}

	.captcha-input{

		max-width:100%;

	}

}

/*=========================================
 RECRUIT
=========================================*/

.recruit-page{
	padding:70px 0 90px;
	background:linear-gradient(180deg,#fffafb 0%,#fff3f8 100%);
}


/*=========================================
 CONTENT
=========================================*/

.recruit-content,
.recruit-notice{

	background:#fff;

	padding:35px;

	margin-bottom:30px;

	border-radius:22px;

	box-shadow:0 10px 30px rgba(255,95,151,.08);

}

.recruit-notice{

	background:#fff8fb;

	border:2px solid #ffd8e5;

}


/*=========================================
 HEADLINE
=========================================*/

.recruit-content h2,
.recruit-notice h2{

	margin:0 0 20px;

	padding-bottom:12px;

	border-bottom:2px solid #ffd8e5;

	color:#ff5f97;

	font-size:28px;
	font-weight:800;

}

.recruit-content h3,
.recruit-notice h3{

	margin:30px 0 15px;

	color:#ff5f97;

	font-size:22px;
	font-weight:700;

}

.recruit-content h4,
.recruit-notice h4{

	margin:25px 0 12px;

	color:#666;

	font-size:18px;
	font-weight:700;

}


/*=========================================
 TEXT
=========================================*/

.recruit-content p,
.recruit-notice p{

	margin-bottom:18px;

	color:#666;

	font-size:15px;

	line-height:2;

}

.recruit-content strong,
.recruit-notice strong{

	color:#ff5f97;

}

.recruit-content a,
.recruit-notice a{

	color:#ff5f97;

	text-decoration:none;

}

.recruit-content a:hover{

	text-decoration:underline;

}


/*=========================================
 LIST
=========================================*/

.recruit-content ul,
.recruit-content ol,
.recruit-notice ul,
.recruit-notice ol{

	margin:18px 0;

	padding-left:22px;

}

.recruit-content li,
.recruit-notice li{

	margin-bottom:10px;

	line-height:1.8;

}


/*=========================================
 TABLE
=========================================*/

.recruit-content table,
.recruit-notice table{

	width:100%;

	margin:25px 0;

	border-collapse:collapse;

	border-radius:16px;

	overflow:hidden;

}

.recruit-content th,
.recruit-notice th{

	padding:14px;

	background:linear-gradient(135deg,#ff8db5,#ff5f97);

	color:#fff;

	text-align:center;

	font-weight:700;

}

.recruit-content td,
.recruit-notice td{

	padding:14px;

	border:1px solid #ffe0ea;

	background:#fff;

}

.recruit-content tr:nth-child(even) td{

	background:#fff8fb;

}


/*=========================================
 HR
=========================================*/

.recruit-content hr,
.recruit-notice hr{

	margin:35px 0;

	border:none;

	height:1px;

	background:#ffd8e5;

}


/*=========================================
 SP
=========================================*/

@media(max-width:600px){

	.recruit-page{

		padding:45px 0 60px;

	}

	.recruit-page .container{

		padding-left:12px;
		padding-right:12px;

	}

	.recruit-content,
	.recruit-notice{

		padding:20px;

		border-radius:18px;

	}

	.recruit-content h2,
	.recruit-notice h2{

		font-size:22px;

	}

	.recruit-content h3,
	.recruit-notice h3{

		font-size:18px;

	}

	.recruit-content h4,
	.recruit-notice h4{

		font-size:16px;

	}

	.recruit-content p,
	.recruit-notice p{

		font-size:14px;

	}

	.recruit-content table,
	.recruit-notice table{

		display:block;

		overflow-x:auto;

		white-space:nowrap;

	}

}

/*=========================================
 CONTACT
=========================================*/

.contact-page{
	padding:70px 0 90px;
	background:linear-gradient(180deg,#fffafb 0%,#fff3f8 100%);
}

.contact-form{
	background:#fff;
	padding:40px;
	border-radius:22px;
	box-shadow:0 10px 30px rgba(255,95,151,.08);
}

.contact-lead{
	max-width:700px;
	margin:0 auto 35px;
	text-align:center;
	color:#777;
	font-size:15px;
	line-height:2;
}

@media(max-width:600px){

	.contact-page{
		padding:45px 0 60px;
	}

	.contact-page .container{
		padding-left:12px;
		padding-right:12px;
	}

	.contact-form{
		padding:20px;
		border-radius:18px;
	}

	.contact-lead{
		margin-bottom:25px;
		font-size:14px;
	}

}

/*==================================================
ハンバーガーボタン
==================================================*/
.menu-button{
	display:none;
	width:48px;
	height:48px;
	padding:0;
	border:0;
	border-radius:8px;
	background:#f384a5;
	cursor:pointer;
	position:fixed;
	top:16px;
	right:16px;
	z-index:1100;
}
.menu-button span{
	position:absolute;
	left:13px;
	width:22px;
	height:2px;
	background:#fff;
	transition:.3s;
}
.menu-button span:nth-child(1){ top:16px; }
.menu-button span:nth-child(2){ top:23px; }
.menu-button span:nth-child(3){ top:30px; }

.menu-button.is-active span:nth-child(1){
	top:23px;
	transform:rotate(45deg);
}
.menu-button.is-active span:nth-child(2){
	opacity:0;
}
.menu-button.is-active span:nth-child(3){
	top:23px;
	transform:rotate(-45deg);
}

/*==================================================
オーバーレイ
==================================================*/
.menu-overlay{
	visibility:hidden;
	opacity:0;
	position:fixed;
	inset:0;
	background:rgba(0,0,0,.55);
	z-index:900;
	transition:.3s;
}
.menu-overlay.is-visible{
	visibility:visible;
	opacity:1;
}
body.menu-open{
	overflow:hidden;
}

/*==================================================
スマホ表示
==================================================*/
@media(max-width:768px){
	.menu-button{
		display:block;
	}
	.header-info{
		display:none;
	}
	.gnav{
		position:fixed;
		top:0;
		right:-100%;
		width:min(320px,85%);
		height:100dvh;
		padding:100px 30px 40px;
		background:#ff5f97;              /* ★ピンクに変更 */
		flex-direction:column;
		gap:0;
		overflow-y:auto;
		z-index:1050;
		box-shadow:-15px 0 40px rgba(255,95,151,.4);  /* ★影の色もピンク系に */
		transition:right .4s ease;
	}
	.gnav.is-open{
		right:0;
	}
	.gnav a{
		width:100%;
		padding:18px 0;
		border-bottom:1px solid rgba(255,255,255,.3);  /* ★区切り線を明るめに */
		border-radius:0;
		background:none;
		box-shadow:none;
		flex-direction:row;
		justify-content:flex-start;
		gap:14px;
		color:#fff !important;
	}
	.gnav a span,
	.gnav a small{
		color:#fff !important;
	}
	.gnav a::after{
		display:none;
	}
	.header-inner{
		flex-direction:row;
		justify-content:space-between;
		height:auto;
		padding:18px 0;
	}
}