@charset "utf-8";
body {
	font-family: 'Noto Sans JP', sans-serif;
	/*color: #2F2F2F;*/
	margin: 0;
	padding: 0;
	letter-spacing: 0.02em;
	font-feature-settings: "palt";
}
.pc{ display: block; }
.sp{ display: none; }


/* =========================================
   Layout
   ========================================= */
:root {
    --primary-yellow: #FFE600;
    --primary-orange: #FF6F00;
    --dark-color: #1A1A1A;
    --light-text: #666666;
    --bg-gray: #F8F8F8;
    --white: #FFFFFF;
    --accent-blue: #0056B3;
    --border-color: #E0E0E0;
    --container-width: 1100px;
	--text-color: #111;
}

/* Utils */
.container {
    max-width: var(--container-width);
    margin: 0 auto;
    padding: 0 20px;
}

.text-center {
    text-align: center;
}

.mt-4 {
    margin-top: 40px;
}

/* Sections */
section {
    padding: 80px 0 0 0;
}


/* KeyVisual */
#kv {
	width: 100%;
	text-align: center;
	padding: 0;
}
	#kv .kv-inner {
		margin: 0 auto;
		width: 100%;
		display: flex;
		justify-content: center;
		align-items: center;
		font-size: 0;
		position: relative;
	}
	/*#kv .kv-inner p {
		margin: 60px auto;
		max-width: 1100px;
		position: absolute;
		z-index: 1;
	}
	#kv .kv-inner p img {
		width: 40vw;
	}*/
	#kv .kv-inner picture {
		width: 100%;
		position: relative;
	}
	#kv .kv-inner img {
		width: 100%;
		height: auto;
	}
	#kv .kv-inner .kv-content {
		flex: 1.2;
		padding: 30px 40px;
		z-index: 2;
		position: absolute;
		text-align: left;
		border-radius: 10px;
		background: rgba(255, 255, 255, 0.90);
		width: auto;
		left: 5%;
	}
	#kv .kv-inner .kv-title {
		font-size: 40px;
		font-weight: 800;
		margin-bottom: 24px;
		line-height: 1.3;
		letter-spacing: -0.02em;
	}
	#kv .kv-inner .kv-title .highlight {
		background: linear-gradient(transparent 60%, var(--primary-yellow) 60%);
		display: inline;
		font-weight: 800;
	}
	#kv .kv-inner .kv-subtitle {
		font-size: 1.25rem;
		margin-bottom: 40px;
		color: var(--text-color);
		font-weight: 500;
		line-height: 1.6;
	}

.cta {
	text-align: center;
	margin-top: 40px;
}
.cta-btm {
	text-align: center;
}

a.cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 20px 48px;
    font-weight: 800;
    font-size: 20px;
    border-radius: 50px;
    border: none;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
a.cta-button2 {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 25px 55px;
    font-weight: 800;
    font-size: 24px;
    border-radius: 50px;
    border: none;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
	a.cta-button.cl1,
	a.cta-button2.cl1 {
		background-color: var(--primary-yellow);
		color: var(--dark-color);
		margin-right: 20px;
	}
	a.cta-button.cl2,
	a.cta-button2.cl2 {
		background-color: var(--primary-orange);
		color: var(--white);
	}

	/*.cta-button:hover {
		transform: translateY(-5px) scale(1.02);
		box-shadow: 0 15px 40px rgba(255, 230, 0, 0.5);
	}*/
	a.cta-button:hover,
	a.cta-button2:hover {
		text-decoration: none;
	}
	a.cta-button .play-icon,
	a.cta-button2 .play-icon {
		font-size: 0.8em;
		margin-right: 10px;
	}

/* Intro & Lead Text */
.intro {
    /* padding-bottom: 40px; */
}

.intro-text {
    max-width: 800px;
    margin: 0 auto;
    font-size: 1.25rem;
    text-align: center;
    line-height: 2;
    font-weight: 500;
}

/* Section Common */
.section-title {
    font-size: 2rem;
    font-weight: 800;
    margin-bottom: 40px;
    line-height: 1.4;
    position: relative;
    padding-bottom: 40px;
}

.section-title::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 40%;
    height: 4px;
    background-color: var(--primary-yellow);
}

/* Highlight Title (Black & Yellow) */
.section-title-highlight {
    font-size: 1.8rem;
    font-weight: 800;
    margin-bottom: 50px;
    padding: 15px 30px;
    background-color: var(--dark-color);
    color: var(--primary-yellow);
    display: table;
    /* To fit content width or use inline-block */
    margin-left: auto;
    margin-right: auto;
    position: relative;
    box-shadow: 4px 4px 0 var(--primary-yellow);
}

/* Obligations & Points Grid */
.card-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    margin-top: 40px;
}

.card {
    background: var(--primary-yellow);
    padding: 0;
    /* Remove padding to flush image */
    border-radius: 8px;
    overflow: hidden;
    /* For image corners */
    transition: 0.3s;
    height: 100%;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--border-color);
	
	opacity: 0;
    transform: translateY(40px);
    transition:
        opacity 0.8s ease,
        transform 0.8s ease;
}
	.card.is-show {
		opacity: 1;
		transform: translateY(0);
	}

.obligations .card h4,
.points .card h4 {
    font-size: 20px;
    margin: 0 auto 20px auto;
    font-weight: 700;
    text-align: center;
    border-bottom: 2px solid var(--text-color);
    display: inline-block;
    padding-bottom: 5px;
}
/*.card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.05);
    border-color: var(--primary-yellow);
}*/

.card-image-wrapper {
    width: 100%;
    /*height: 200px;*/
    /*background-color: #eee;*/
    overflow: hidden;
}
	.card-image-wrapper img {
		width: 100%;
	}

.card-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}

/*.card:hover .card-img {
    transform: scale(1.05);
}*/

.card-body {
    padding: 24px;
    flex: 1;
    display: inline-block;
    background: var(--primary-yellow);
	text-align: center;
}

/* Reuse .card styles for Points section but add border logic */
.card.bordered {
    background: var(--white);
    border: 1px solid var(--border-color);
}

.card .card-body h4 {
    font-size: 20px;
    margin: 0 auto 20px auto;
    font-weight: 700;
    text-align: center;
    border-bottom: 2px solid var(--text-color);
    display: inline-block;
    padding-bottom: 5px;
    /* align-self: center; */
}
.card .card-body p {
	text-align: left;
	font-size: 16px;
	line-height: 26px;
}

/* Feature Cards Unification */
.feature-card {
    background: var(--white);
    border: 1px solid var(--border-color);
    margin-bottom: 20px;
	
    opacity: 0;
    transform: translateY(40px);
    transition:
        opacity 0.8s ease,
        transform 0.8s ease;
}
	.feature-card.is-show {
		opacity: 1;
		transform: translateY(0);
	}
.feature-card h4 {
	padding: 20px 0 10px 20px;
}

.check-list {
    list-style: none;
    padding: 0 20px;
    margin-top: 10px;
}
	.check-list li {
		text-indent: -0.9em;
		padding-left: 0.9em;
		display: inline-block;
	}
	.check-list li::before {
		content: "・";
		margin-right: 5px;
	}
.feature-list {
    list-style: none;
    padding: 0 20px;
    margin-top: 10px;
}
	.feature-list li {
		margin-bottom: 10px;
		position: relative;
		padding-left: 15px;
		font-size: 0.95rem;
	}
	.feature-list li::before {
		content: "✓";
		position: absolute;
		left: 0;
		color: var(--accent-blue);
		font-weight: bold;
	}

.feature-sm-text {
    padding: 0 20px;
    font-size: 0.95rem;
    line-height: 1.6;
    color: var(--light-text);
}

/* Badge Title (Old style removal/reset if needed, or keep for legacy) */
.badge-title {
    display: none;
    /* Replaced by section-title-highlight */
}

.source-link {
    margin-top: 20px;
    font-size: 0.875rem;
    text-align: right;
}

.source-link a {
    color: var(--accent-blue);
    text-decoration: underline;
}

/* Service Intro */
.service-intro {
    background-color: var(--primary-yellow);
    border-radius: 12px;
    padding: 50px 40px;
    margin: 80px 0 0 0;
    text-align: center;
}

.service-title {
    font-size: 2rem;
    margin-bottom: 40px;
    font-weight: 700;
}

.brand-name {
    font-weight: 800;
    color: var(--accent-blue);
    font-size: 2.2rem;
}

.service-points {
    display: inline-block;
    text-align: left;
    margin-bottom: 40px;
    background: var(--white);
    padding: 30px 50px;
    border-radius: 8px;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
}
	.service-points ul {
		list-style: none;
	}
		.service-points li {
			position: relative;
			padding-left: 30px;
			margin-bottom: 15px;
			font-weight: 700;
			font-size: 1.1rem;
		}
			.service-points li:last-child {
				margin-bottom: 0;
			}
			.service-points li::before {
				content: "✓";
				position: absolute;
				left: 0;
				color: var(--primary-yellow);
				/* Yellow checkmark for theme consistency */
				background: var(--dark-color);
				width: 20px;
				height: 20px;
				border-radius: 50%;
				font-size: 12px;
				display: flex;
				align-items: center;
				justify-content: center;
				top: 3px;
			}
	.service-desc p {
		max-width: 800px;
		margin: 0 auto;
		font-size: 1rem;
		line-height: 1.8;
	}

/* Features Headers */
.feature-heading {
    text-align: center;
    padding: 20px;
    margin-bottom: 30px;
    font-size: 2rem;
    font-weight: 800;
}
.feature-group .card-image-wrapper img {
	font-size: 0;
	border-bottom: 1px solid #E0E0E0;
}
.feature-group .card h4 {
	font-size: 16px;
	line-height: 22px;
	text-align: left;
	font-weight: 700;
}
.group-title {
    border-left: 8px solid var(--primary-yellow);
    padding-left: 15px;
    margin-bottom: 30px;
    font-size: 1.5rem;
    font-weight: 700;
    background: linear-gradient(90deg, var(--bg-gray) 0%, transparent 100%);
    padding-top: 5px;
    padding-bottom: 5px;
}

.gap-sm {
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

/* Bottom CTA */
.bottom-cta {
    padding: 70px 0;
    margin-top: 80px;
    border-top: 1px solid var(--border-color);
    background-color: var(--dark-color);
    width: 100%;
    color: var(--white);
}
.support-text {
    margin-top: 30px;
    font-size: 1.125rem;
    font-weight: 700;
}

/* Footer */
.footer {
    background: var(--dark-color);
    color: var(--white);
    padding: 40px 0;
    text-align: center;
    font-size: 0.875rem;
}

/* Responsive */
@media (max-width: 1024px) {
    /*.gap-sm {
        grid-template-columns: repeat(2, 1fr);
    }*/
	#kv .kv-inner .kv-content {
		padding: 1.5rem 2rem;
	}
	#kv .kv-inner .kv-title {
		font-size: 2.2rem;
		margin-bottom: 1.3rem;
	}
	#kv .kv-inner .kv-subtitle {
		font-size: 1.2rem;
		margin-bottom: 1.5rem;
	}
}

/* =========================================
   SP Media Query
   ========================================= */
@media (max-width: 768px) {
	.pc { display: none !important; }
	.sp { display: block !important; }
	
	.container {
		padding: 0 1rem;
	}
	
	  /* key visual */
	  #kv {
		padding:0;
	  }
		#kv .kv-inner {
			margin: 0 auto;
			width: auto;
			display: flex;
			flex-direction: column-reverse;
		}
		#kv .kv-inner img {
		  width: 100%;
		}
		/*#kv .kv-inner p{
		  margin: 0vw auto 40vw;
		}
		#kv .kv-inner p img{
		  width: 80vw;
		}*/
		#kv .kv-inner .kv-content {
			padding: 2rem 1rem 1rem 1rem;
			text-align: center;
			position: relative;
			left: inherit;
		}
		#kv .kv-inner .kv-title {
			font-size: 1.7rem;
		}
		#kv .kv-inner .kv-subtitle {
			font-size: 1rem;
			margin-bottom: 1.5rem;
		}

	section {
		padding: 1rem 0 0 0;
	}
    .intro-text {
        font-size: 1rem;
        /*text-align: left;*/
        padding: 0 0.3rem;
        margin: 0 auto 1rem auto;
		line-height: 1.8;
    }
    .section-title-highlight {
		font-size: 1.33rem;
		padding: 0.5rem 0.8rem;
		width: auto;
		text-align: center;
		margin-bottom: 1.5rem;
	}
	.card-body {
		padding: 1rem 1.5rem;
	}
	.card .card-body h4 {
		font-size: 1.3rem;
		margin: 0 auto 1.4rem auto;
	}
	.card .card-body p {
		font-size: 1.0rem;
		line-height: 1.6rem;
	}
    .card-grid {
        grid-template-columns: 1fr;
		margin-top: 1rem;
		gap: 1rem;
    }
    .gap-sm {
        grid-template-columns: 1fr;
    }
    .section-title {
        font-size: 1.5rem;
        margin-bottom: 1.5rem;
        padding-bottom: 1.5rem;
    }
	.service-intro {
		padding: 1.5rem;
		margin: 2rem 0 0 0;
	}
	.service-title {
		font-size: 1.6rem;
		margin-bottom: 1.5rem;
		font-weight: 600;
	}
    .service-points {
        padding: 1rem;
        width: auto;
		margin-bottom: 1.4rem;
    }
		.service-points li {
			padding-left: 2rem;
			margin-bottom: 0.6rem;
			font-weight: 600;
			font-size: 1.0rem;
		}
	.feature-heading {
		padding: 1.5rem 0 1rem 0;
		margin-bottom: 1rem;
		font-size: 1.7rem;
	}
	.brand-name {
		font-size: 2.1rem;
	}
	.group-title {
		padding-left: 1rem;
		margin-bottom: 1.5rem;
		font-size: 1.5rem;
	}
	.feature-group .card h4 {
		font-size: 1.2rem;
		line-height: 1.6rem;
		padding: 1.0rem 0 0.5rem 1.5rem;
	}
	.feature-card {
		margin-bottom: 1rem;
	}
	.feature-sm-text {
		padding: 0 1.5rem;
	}
	.cta {
		margin-top: 2rem;
	}
	.cta-btm {
		padding: 0 1rem;
	}
	.source-link {
		margin-top: 1rem;
		margin-bottom: 1.6rem;
		font-size: 1rem;
		text-align: center;
	}
	.support-text {
		margin-top: 1.5rem;
		font-size: 1.1rem;
	}
	.bottom-cta {
		padding: 2.2rem 0;
		margin-top: 2.2rem;
	}
	a.cta-button.cl1,
	a.cta-button2.cl1 {
		margin-right: inherit;
		margin-bottom: 1rem;
	}
	a.cta-button {
        width: 100%;
		padding: 1rem 0;
    	font-size: 1.3rem;
		margin-bottom: 0.8rem;
	}
	a.cta-button2 {
        width: 100%;
		padding: 0.7rem 0;
    	font-size: 1.3rem;
	}
}