/*
 * 全ページ共通の枠: 固定背景、ヘッダー部分、メニュー、フッター、セクションと帯
 * 寸法は reference/wix/screenshots-viewport/ と現行サイトの実測値（1280px 幅 / SP は 320px 幅 × --u）
 */

/* ---------- 基本 ---------- */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	background: var(--jl-black);
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

body {
	margin: 0;
	color: var(--jl-white);
	font-family: var(--jl-font-body);
	font-size: 14px;
	line-height: 1.4;
	-webkit-font-smoothing: antialiased;
}

img,
svg,
iframe {
	display: block;
	max-width: 100%;
}

a {
	color: inherit;
	text-decoration: none;
}

ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	white-space: nowrap;
}

.skip-link:focus {
	clip: auto;
	clip-path: none;
	width: auto;
	height: auto;
	top: 8px;
	left: 8px;
	z-index: 100;
	padding: 8px 12px;
	background: var(--jl-white);
	color: var(--jl-black);
}

:focus-visible {
	outline: 2px solid var(--jl-accent);
	outline-offset: 2px;
}

/* ---------- 固定背景（D-010）---------- */
/* background-attachment: fixed は iOS Safari で効かないので、position: fixed の層で作る */

/* 写真の枠は上端揃え。HOME の PC は画面より高い（--jl-bg-height-pc。Q-007） */
.jl-bg {
	position: fixed;
	top: 0;
	left: 0;
	z-index: -1;
	width: 100%;
	height: var(--jl-bg-height-pc, 100%);
	background-color: var(--jl-black);
	background-image: var(--jl-bg-pc);
	background-position: var(--jl-bg-pos-pc, center);
	background-size: cover;
	background-repeat: no-repeat;
	pointer-events: none;
	will-change: transform; /* PC の HOME はスクロールで少し動く（assets/js/background.js） */
}

/* ---------- ヘッダー部分（写真がそのまま見える 750px）---------- */
/* 固定表示にしない（D-012）。各要素の位置は現行サイトの実測値（上端からの距離） */

.jl-hero {
	position: relative;
	height: var(--jl-hero-height);
	overflow-x: clip; /* 長いページ名などで横にはみ出さないように */
	text-align: center;
}

.jl-hero__logo,
.jl-hero__sub,
.jl-hero__title,
.jl-hero__nav {
	position: absolute;
	left: 0;
	right: 0;
	margin: 0;
	font-family: var(--jl-font-display);
	font-weight: 400;
	white-space: nowrap;
}

/* HOME: ロゴ「JASONLI」 */
.jl-hero__logo {
	top: 561px;
	font-size: 60px;
	font-weight: 700; /* Cinzel は 1 ウェイトだけなので合成太字になる（Wix と同じ） */
	line-height: 60px;
	letter-spacing: 30px;
}

/* HOME: 「Official Website」 */
.jl-hero__sub {
	top: 625px;
	font-size: 19px;
	line-height: 25px;
	letter-spacing: 9.5px;
}

/* 下層ページ: ページ名 */
.jl-hero__title {
	top: 624px;
	padding-inline: 20px;
	white-space: normal;
	font-size: 40px;
	line-height: 54px;
}

/* Wix は見えない「More」項目も含めて中央に置いているので、項目は 6px 左に寄っている */
.jl-hero__nav {
	top: 690px;
	left: -12px;
}

/* ---------- メニュー（PC のヘッダーとフッター）---------- */

.jl-menu {
	display: flex;
	justify-content: center;
}

.jl-menu a {
	display: block;
	transition: color 0.2s;
}

.jl-menu .current-menu-item > a,
.jl-menu a:hover {
	color: var(--jl-gray);
}

.jl-menu--header {
	gap: 20px;
}

.jl-menu--header a {
	padding: 0 10px;
	font-family: var(--jl-font-display);
	font-size: 12px;
	line-height: 25px;
}

/* ---------- SP メニュー ---------- */

.jl-burger,
.jl-sp-menu {
	display: none;
}

/* ---------- 本文のセクションと帯（D-010）---------- */

.jl-section {
	--jl-section-width: var(--jl-content-width);
	--jl-section-pad: 20px;
	padding-inline: max(var(--jl-section-pad), calc((100% - var(--jl-section-width)) / 2));
	background: var(--jl-section-bg);
}

/* MERCH 用の白いセクション */
.jl-section--light {
	background: var(--jl-section-light-bg);
	color: var(--jl-black);
}

/* 幅 960px のセクション（HOME の MERCH バナーなど） */
.jl-section--wide {
	--jl-section-width: var(--jl-wide-width);
}

/* 一覧の 1 件（NEWS / LIVE / MUSIC / VIDEO）: 上に 100px の余白。高さは各ページの CSS */
.jl-list .jl-section {
	padding-top: 100px;
}

/* 404 ページの案内 */
.jl-notfound {
	padding-block: 100px;
	text-align: center;
}

.jl-notfound p {
	margin: 0 0 20px;
}

.jl-notfound a {
	text-decoration: underline;
}

/* 「YYYY.MM.DD update」 */
.jl-date {
	margin: 0;
	color: var(--jl-gray);
	font-size: 10px;
	text-align: right;
}

/* Apple Music の埋め込みを入れる箱（Wix Music のプレーヤーの枠。D-033） */
.jl-player {
	border: 1px solid var(--jl-gray-dark);
	background: var(--jl-black);
}

.jl-player iframe {
	display: block;
	width: 100%;
	border: 0;
	background: transparent;
}

/* YouTube の埋め込み（712×400、1px のグレーの枠）とタイトル（Jost 20px）。VIDEO と HOME の注目動画で共通 */
.jl-video__frame {
	position: relative;
	width: 714px;
	margin-inline: auto;
	aspect-ratio: 712 / 400;
	border: 1px solid var(--jl-gray-dark);
	background: var(--jl-black);
}

.jl-video__frame iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.jl-video__title {
	margin: 11px 0 0;
	color: var(--jl-white);
	font-family: var(--jl-font-heading);
	font-size: 20px;
	font-weight: 400;
	line-height: 26px;
	letter-spacing: 3px;
	text-align: center;
}

/* セクション間の帯: 透明で、固定背景の写真がそのまま見える */
.jl-gap {
	height: var(--jl-gap-height);
}

/* ---------- フッター ---------- */

.jl-footer {
	position: relative;
	height: var(--jl-footer-height);
	background: var(--jl-black);
	font-family: var(--jl-font-ui);
	font-weight: 300;
	text-align: center;
}

.jl-footer__nav {
	position: absolute;
	top: 30px;
	left: 0;
	right: 0;
}

.jl-menu--footer a {
	padding: 0 19px;
	font-size: 12px;
	line-height: 25px;
}

.jl-social {
	position: absolute;
	top: 70px;
	left: 0;
	right: 0;
	display: flex;
	justify-content: center;
	gap: 15px;
}

.jl-social a {
	display: block;
	width: 20px;
	height: 20px;
	transition: opacity 0.2s;
}

.jl-social a:hover {
	opacity: 0.7;
}

/* Wix のアイコン画像は枠の内側に余白があるので、図形は枠の 8 割にする */
.jl-social svg {
	width: 80%;
	height: 80%;
	margin: 10%;
}

.jl-footer__copyright {
	position: absolute;
	top: 100px;
	left: 0;
	right: 0;
	margin: 0;
	font-size: 12px;
	line-height: 14px;
}

/* ================================================================
 * SP（768px 以下）。寸法は 320px 幅のときの値 × --u
 * ================================================================ */

@media (max-width: 768px) {
	:root {
		--jl-hero-height: calc(379 * var(--u));
		--jl-gap-height: calc(30 * var(--u));
		--jl-footer-height: calc(70 * var(--u));
	}

	.jl-bg {
		height: calc(100% * 772 / 693); /* 現行サイトの SP は、どのページも画面より 1 割ほど高い枠 */
		background-image: var(--jl-bg-sp);
		background-position: var(--jl-bg-pos-sp, center);
	}

	.jl-hero--home {
		height: calc(600 * var(--u));
	}

	.jl-hero__logo {
		top: calc(294 * var(--u));
		font-size: calc(21 * var(--u));
		line-height: calc(28 * var(--u));
		letter-spacing: calc(10.5 * var(--u));
	}

	.jl-hero__sub {
		top: calc(321 * var(--u));
		font-size: calc(7 * var(--u));
		line-height: calc(10 * var(--u));
		letter-spacing: calc(3.5 * var(--u));
	}

	.jl-hero__title {
		top: calc(352 * var(--u));
		font-size: calc(19 * var(--u));
		line-height: calc(25 * var(--u));
	}

	.jl-hero__nav,
	.jl-footer__nav {
		display: none;
	}

	.jl-section {
		--jl-section-pad: calc(20 * var(--u));
	}

	.jl-list .jl-section {
		padding-top: calc(50 * var(--u));
		padding-bottom: calc(50 * var(--u));
	}

	.jl-date {
		font-size: calc(7 * var(--u));
	}

	.jl-video__frame {
		width: 100%;
	}

	.jl-video__title {
		margin-top: calc(8 * var(--u));
		font-size: calc(10 * var(--u));
		line-height: calc(15 * var(--u));
		letter-spacing: calc(1.5 * var(--u));
	}

	/* ハンバーガーボタン（現行サイトと同じく、スクロールしても右上に残る） */
	.jl-burger {
		position: fixed;
		top: calc(10 * var(--u));
		right: calc(5 * var(--u));
		z-index: 30;
		display: grid;
		place-items: center;
		width: calc(40 * var(--u));
		height: calc(40 * var(--u));
		padding: 0;
		border: 1px solid var(--jl-gray);
		background: var(--jl-burger-bg);
		color: var(--jl-white);
		cursor: pointer;
	}

	.jl-burger svg {
		width: calc(15 * var(--u));
		height: calc(17 * var(--u));
		stroke: currentColor;
		stroke-width: 1;
		fill: none;
		overflow: visible;
	}

	.jl-burger__close {
		display: none;
	}

	.jl-burger[aria-expanded="true"] {
		border-color: transparent;
		background: var(--jl-black);
	}

	.jl-burger[aria-expanded="true"] .jl-burger__open {
		display: none;
	}

	.jl-burger[aria-expanded="true"] .jl-burger__close {
		display: block;
	}

	/* 開いたときのメニュー（全画面、rgba(0,0,0,.8)） */
	.jl-sp-menu {
		position: fixed;
		inset: 0;
		z-index: 20;
		display: block;
		padding-top: calc(80 * var(--u));
		overflow-y: auto;
		background: var(--jl-menu-overlay);
		opacity: 0;
		visibility: hidden;
		transition: opacity 0.25s, visibility 0.25s;
	}

	.jl-sp-menu.is-open {
		opacity: 1;
		visibility: visible;
	}

	.jl-menu--sp {
		flex-direction: column;
		align-items: center;
	}

	.jl-menu--sp a {
		padding: 0 calc(20 * var(--u));
		font-family: var(--jl-font-heading);
		font-size: calc(10 * var(--u));
		line-height: calc(34 * var(--u));
		letter-spacing: calc(2 * var(--u));
	}

	.jl-menu--sp .current-menu-item > a {
		color: var(--jl-gray-dark);
	}

	/* フッター */
	.jl-social {
		top: calc(20 * var(--u));
		gap: calc(5 * var(--u));
	}

	.jl-social a {
		width: calc(16 * var(--u));
		height: calc(16 * var(--u));
	}

	.jl-footer__copyright {
		top: calc(40 * var(--u));
		font-size: calc(8 * var(--u));
		line-height: calc(10 * var(--u));
	}
}

@media (prefers-reduced-motion: reduce) {
	.jl-sp-menu,
	.jl-menu a,
	.jl-social a {
		transition: none;
	}
}

body.jl-menu-open {
	overflow: hidden;
}
