/* ===== Hero (#top) ===== */
.hero {
	position: relative;
	min-height: 92vh;
	display: flex;
	align-items: center;
	padding-top: 73px;
	overflow: hidden;
}
.hero__bg {
	position: absolute;
	inset: 0;
	z-index: 0;
}
.hero__bg img {
	width: 100%; height: 100%;
	object-fit: cover;
	object-position: center;
}
.hero__bg::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(8,8,10,0.96) 0%, rgba(8,8,10,0.78) 42%, rgba(8,8,10,0.35) 75%, rgba(8,8,10,0.15) 100%);
}
.hero__inner {
	position: relative;
	z-index: 1;
	padding-block: 64px;
}
.hero__badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 18px;
	border-radius: var(--radius-pill);
	background: var(--color-panel);
	border: 1px solid var(--color-hairline);
	font-size: 13px;
	font-weight: 500;
}
.hero__badge::before {
	content: '';
	width: 8px; height: 8px;
	border-radius: 50%;
	background: var(--color-accent);
}
.hero__heading {
	margin-top: 24px;
	font-size: clamp(40px, 7vw, 92px);
	font-weight: 900;
	line-height: 1.15;
}
.hero__heading .is-accent { color: var(--color-accent); display: block; }
.hero__lead {
	margin-top: 28px;
	max-width: 560px;
	color: var(--color-text-muted);
	font-size: clamp(15px, 1.6vw, 17px);
	line-height: 1.9;
}
.hero__ctas {
	margin-top: 36px;
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}
.hero__note {
	margin-top: 20px;
	font-size: 13px;
	color: var(--color-text-muted);
}
@media (max-width: 900px) {
	.hero__bg img { object-position: 78% center; }
}

/* ===== Marquee ===== */
.marquee {
	border-block: 1px solid var(--color-hairline);
	background: linear-gradient(90deg, #120e19, #1b1022 52%, #120e19);
	overflow: hidden;
	display: flex;
	align-items: center;
	height: 59px;
}
.marquee__track {
	display: flex;
	flex-wrap: nowrap;
	width: max-content;
	animation: koa-marquee 26s linear infinite;
}
.marquee__half {
	display: flex;
	align-items: center;
	flex-wrap: nowrap;
	flex-shrink: 0;
}
.marquee__track span,
.marquee__track strong {
	display: inline-flex;
	align-items: center;
	font-size: 12px;
	letter-spacing: 0.04em;
	white-space: nowrap;
}
.marquee__track span { font-weight: 800; color: #fff; }
.marquee__track strong { font-weight: 700; color: #a97cff; }
.marquee__track i {
	display: inline-block;
	width: 4px;
	height: 4px;
	margin-inline: 18px;
	border-radius: 50%;
	background: #fff;
	opacity: 0.6;
	font-style: normal;
}
@keyframes koa-marquee {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
	.marquee__track { animation: none; }
}

/* ===== Shared section rhythm ===== */
.section { padding-block: var(--section-pad-y); }
.section-head-row {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 16px;
}
.link-more {
	font-size: 14px;
	font-weight: 700;
	color: var(--color-accent);
	white-space: nowrap;
}
.link-more:hover { text-decoration: underline; }

.badge {
	display: inline-flex;
	align-items: center;
	padding: 4px 12px;
	border-radius: var(--radius-pill);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
}
.badge--info { background: rgba(138,92,255,0.16); color: var(--color-accent); }
.badge--closed { background: rgba(255,255,255,0.1); color: var(--color-text-muted); }
.badge--service { background: rgba(8,185,92,0.16); color: var(--color-line-green); }

/* ===== Services ===== */
.services__grid {
	margin-top: 48px;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
}
.service-card { padding: 28px; border-radius: 16px 5px; }
@media (max-width: 900px) {
	.services__grid { grid-template-columns: 1fr; }
}
@media (min-width: 901px) and (max-width: 1100px) {
	.services__grid { grid-template-columns: repeat(2, 1fr); }
}
.service-card__no {
	display: block;
	font-size: 13px;
	color: var(--color-text-muted);
	font-weight: 700;
}
.service-card__en {
	display: block;
	margin-top: 4px;
	font-size: 12px;
	letter-spacing: var(--label-tracking);
	color: var(--color-accent);
	font-weight: 700;
}
.service-card__title { margin-top: 14px; font-size: 22px; font-weight: 900; }
.service-card__desc { margin-top: 12px; color: var(--color-text-muted); font-size: 14px; line-height: 1.8; }
.service-card__tags { margin-top: 16px; font-size: 12px; color: var(--color-text-muted); padding-top: 16px; border-top: 1px solid var(--color-hairline); }

/* ===== About ===== */
.about__layout {
	display: grid;
	grid-template-columns: 403px 1fr;
	gap: 102px;
	align-items: start;
}
.about__photo {
	position: relative;
	width: 403px;
	max-width: 100%;
}
.about__photo img {
	width: 100%;
	aspect-ratio: 403 / 486;
	object-fit: cover;
	border-radius: 26px 7px;
}
.about__photo-badge {
	position: absolute;
	left: 20px;
	bottom: 24px;
	background: var(--color-accent);
	color: #fff;
	font-size: 11px;
	font-weight: 900;
	letter-spacing: 0.16em;
	padding: 10px 14px;
	border-radius: 6px;
}
.about__content { padding-top: 4px; }
.about__trust-list {
	margin-top: 40px;
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.about__trust-item {
	display: flex;
	gap: 20px;
	align-items: baseline;
}
.about__trust-item strong {
	font-size: 20px;
	font-weight: 900;
	color: var(--color-accent);
	flex-shrink: 0;
}
.about__trust-item span { color: var(--color-text-muted); font-size: 14px; line-height: 1.8; }
.about__trust-item span b { display: block; color: var(--color-text); font-size: 16px; font-weight: 700; margin-bottom: 4px; }
@media (max-width: 900px) {
	.about__layout { grid-template-columns: 1fr; gap: 32px; }
	.about__photo { width: 100%; max-width: 403px; }
}

/* ===== Owner ===== */
.owner__layout {
	display: grid;
	grid-template-columns: minmax(280px, 390px) 1fr;
	gap: 64px;
	align-items: start;
}
.owner__photo img {
	width: 100%;
	aspect-ratio: 2 / 3;
	object-fit: cover;
	border-radius: 0;
}
.owner__name-en {
	display: block;
	margin-top: 6px;
	font-size: 14px;
	letter-spacing: var(--label-tracking);
	color: var(--color-text-muted);
	font-weight: 500;
}
.owner__catch { margin-top: 16px; font-size: 15px; font-weight: 700; color: var(--color-accent); }
.owner__steps { margin-top: 40px; display: flex; flex-direction: column; gap: 24px; }
.owner__steps li { display: flex; gap: 20px; }
.owner__step-no { font-size: 20px; font-weight: 900; color: var(--color-accent); flex-shrink: 0; }
.owner__steps h3 { font-size: 16px; font-weight: 700; }
.owner__steps p { margin-top: 6px; font-size: 14px; color: var(--color-text-muted); line-height: 1.8; }
@media (max-width: 900px) {
	.owner__layout { grid-template-columns: 1fr; }
}

/* ===== News ===== */
.news__list { margin-top: 40px; display: flex; flex-direction: column; }
.news__item { border-bottom: 1px solid var(--color-hairline); }
.news__item a {
	display: flex;
	align-items: center;
	gap: 20px;
	padding-block: 22px;
	flex-wrap: wrap;
}
.news__date { font-size: 13px; color: var(--color-text-muted); font-variant-numeric: tabular-nums; }
.news__title { flex: 1; font-size: 15px; font-weight: 500; }
.news__item:hover .news__title { color: var(--color-accent); }

/* ===== Blog ===== */
.blog__grid {
	margin-top: 48px;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 18px;
}
.blog-card { overflow: hidden; display: block; }
.blog-card__thumb { aspect-ratio: 4/3; overflow: hidden; }
.blog-card__thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s var(--ease-standard); }
.blog-card:hover .blog-card__thumb img { transform: scale(1.05); }
.blog-card__body { padding: 24px; }
.blog-card__date { font-size: 12px; color: var(--color-text-muted); margin-right: 10px; }
.blog-card__title { margin-top: 12px; font-size: 17px; font-weight: 700; line-height: 1.6; }
.blog-card .link-more { display: inline-block; margin-top: 16px; }
@media (max-width: 900px) {
	.blog__grid { grid-template-columns: 1fr; }
}
@media (min-width: 901px) and (max-width: 1100px) {
	.blog__grid { grid-template-columns: repeat(2, 1fr); }
}

/* ===== Access ===== */
.access {
	background: var(--color-panel-solid);
}
.access__layout {
	margin-top: 48px;
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: 48px;
	align-items: stretch;
}
.access__info { display: flex; flex-direction: column; }
.access__label {
	display: block;
	font-size: 11px;
	font-weight: 900;
	letter-spacing: var(--label-tracking);
	color: var(--color-accent);
	margin-bottom: 8px;
}
.access__address { font-size: 18px; font-weight: 700; }
.access__note { margin-top: 8px; font-size: 13px; color: var(--color-text-muted); }
.access__map { margin-top: 24px; border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--color-hairline); }
.access__map iframe { display: block; filter: grayscale(0.2) invert(0.92) contrast(0.9); }
.access__photo {
	margin-top: 24px;
	flex: 1;
	min-height: 220px;
	border-radius: 22px 6px;
	overflow: hidden;
}
.access__photo img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 900px) {
	.access__photo { flex: none; height: 320px; }
}

.access__flow-panel {
	background: #1b1820;
	border-radius: 22px 6px;
	padding: 48px;
	display: flex;
	flex-direction: column;
}
.access__flow-title { font-size: 16px; font-weight: 900; margin-bottom: 8px; }
.access__steps { display: flex; flex-direction: column; }
.access__steps li {
	display: grid;
	grid-template-columns: 44px 1fr;
	grid-template-rows: auto auto;
	column-gap: 15px;
	row-gap: 5px;
	padding-block: 18px;
	border-top: 1px solid var(--color-hairline);
}
.access__step-no {
	grid-row: 1 / 3;
	font-size: 9px;
	font-weight: 900;
	letter-spacing: 0.04em;
	color: #b58cff;
}
.access__steps h3 { font-size: 14px; font-weight: 700; }
.access__steps p { font-size: 10px; color: var(--color-text-muted); }
@media (max-width: 900px) {
	.access__layout { grid-template-columns: 1fr; }
}

/* ===== Contact ===== */
.contact {
	background: var(--color-contact-bg);
}
.contact__layout {
	margin-top: 48px;
	display: grid;
	grid-template-columns: 0.82fr 1fr;
	gap: 64px;
	align-items: stretch;
}
.contact__intro { display: flex; flex-direction: column; }
.contact .eyebrow--on-purple { color: #fff; opacity: 0.85; }
.contact .section-heading { color: #fff; }
.contact .section-lead--on-purple { color: rgba(255,255,255,0.82); max-width: 100%; }
.contact__intro-bottom { margin-top: auto; padding-top: 28px; }
.contact__note { margin-top: 12px; font-size: 12px; color: rgba(255,255,255,0.75); }

.contact__form {
	background: #fff;
	border-radius: 22px 6px;
	padding: 46px;
	color: #1c1a22;
}
.contact__form-title { font-size: 16px; font-weight: 900; color: #1c1a22; margin-bottom: 24px; }
.contact__form-placeholder { color: #56505f; font-size: 14px; line-height: 1.8; }
@media (max-width: 900px) {
	.contact__layout { grid-template-columns: 1fr; align-items: normal; }
	.contact__intro { display: block; }
	.contact__intro-bottom { margin-top: 28px; padding-top: 0; }
	.contact__form { padding: 32px; }
}

/* ===== MW WP Form (白カード上：ダーク系テキストで可読性確保。モックアップ準拠のコンパクトな下線入力欄) ===== */
.koa-form-row { margin-bottom: 18px; }
.koa-form-row label { display: block; font-size: 11px; font-weight: 700; margin-bottom: 6px; color: #1c1a22; }
.koa-form-row label .req,
.koa-form-row label .opt {
	display: inline-block;
	margin-left: 8px;
	font-size: 10px;
	font-weight: 700;
	padding: 2px 8px;
	border-radius: var(--radius-pill);
}
.koa-form-row label .req { background: rgba(111,66,221,0.12); color: var(--color-contact-bg); }
.koa-form-row label .opt { background: rgba(28,26,34,0.06); color: #77717f; }

.koa-form-fieldset {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 16px;
}
@media (max-width: 560px) {
	.koa-form-fieldset { grid-template-columns: 1fr; }
}

.koa-input,
.koa-textarea,
.contact__form input[type="text"],
.contact__form input[type="email"],
.contact__form input[type="tel"],
.contact__form textarea {
	display: block;
	width: 100%;
	background: transparent;
	border: none;
	border-bottom: 1px solid #d8d1db;
	border-radius: 0;
	padding: 10px 0;
	color: #1c1a22;
	font-size: 13px;
	font-family: inherit;
}
.koa-textarea,
.contact__form textarea { min-height: 90px; resize: vertical; }
.koa-input:focus,
.koa-textarea:focus,
.contact__form input:focus,
.contact__form textarea:focus { outline: 2px solid var(--color-contact-bg); outline-offset: 1px; }

.koa-form-row--check { display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.koa-form-row--check label { display: inline-flex; align-items: center; gap: 8px; font-weight: 500; color: #1c1a22; }
.koa-form-row--check a { color: var(--color-contact-bg); text-decoration: underline; font-size: 12px; }

.koa-form-row--honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.contact__form input[type="submit"] {
	display: inline-flex;
	align-items: center;
	padding: 16px 18px;
	border-radius: 8px;
	font-weight: 700;
	font-size: 13px;
	border: none;
	cursor: pointer;
	background: var(--color-accent-deep);
	color: #fff;
	transition: transform var(--duration-fast) var(--ease-standard);
}
.contact__form input[type="submit"]:hover { transform: translateY(-2px); }
.mwform-error-message { color: #d3252d; font-size: 12px; margin-top: 6px; display: block; }
.horizontalError { color: #d3252d; }

/* ===== Static pages / archives / single ===== */
.page-content__body,
.single-post__body {
	margin-top: 32px;
	max-width: 760px;
	color: var(--color-text-muted);
	font-size: 15px;
	line-height: 2;
}
.page-content__body h2,
.single-post__body h2 { color: var(--color-text); font-size: 22px; font-weight: 900; margin-top: 40px; margin-bottom: 12px; }
.page-content__body p,
.single-post__body p { margin-top: 16px; }
.page-content__body img,
.single-post__body img { margin-top: 24px; border-radius: var(--radius-md); }
.page-content__body a,
.single-post__body a { color: var(--color-accent); text-decoration: underline; }

.archive-list__grid { margin-top: 40px; }
.archive-list__news { margin-top: 40px; max-width: 760px; }

.single-post__meta { display: flex; align-items: center; gap: 12px; }
.single-post__date { font-size: 13px; color: var(--color-text-muted); }
.single-post__thumb { margin-top: 32px; border-radius: var(--radius-lg); overflow: hidden; }
.single-post__back { margin-top: 56px; padding-top: 24px; border-top: 1px solid var(--color-hairline); }

.not-found { text-align: center; }
.not-found .btn { margin-top: 32px; }

.pagination,
.nav-links {
	margin-top: 48px;
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
}
.pagination .page-numbers,
.nav-links .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding-inline: 12px;
	border-radius: var(--radius-pill);
	border: 1px solid var(--color-hairline);
	font-size: 13px;
	color: var(--color-text-muted);
}
.pagination .page-numbers.current,
.nav-links .page-numbers.current {
	background: var(--color-accent);
	border-color: var(--color-accent);
	color: #fff;
}
