@charset "utf-8";

/*Google Fontsの読み込み
---------------------------------------------------------------------------*/
@import url('https://fonts.googleapis.com/css2?family=Anton&family=Zen+Kaku+Gothic+New:wght@400;500;700;900&family=Space+Mono&display=swap');


/*カラー・共通トークン
---------------------------------------------------------------------------*/
:root {
	--bg: #0A0A10;			/*開演前の闇*/
	--bg-soft: #12121C;
	--fg: #F4F2EF;			/*文字色*/
	--dim: #8B8B98;			/*控えめな文字*/
	--pink: #FF4D9A;		/*ペンライト・マゼンタ*/
	--violet: #8A6BFF;		/*ペンライト・バイオレット*/
	--cyan: #55E6FF;		/*ペンライト・シアン*/
	--line: rgba(244, 242, 239, 0.14);
}


/*全体
---------------------------------------------------------------------------*/
* {box-sizing: border-box;}
html {scroll-behavior: smooth;}
html, body {font-size: 15px;}

body {
	font-family: "Zen Kaku Gothic New", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, sans-serif;
	font-weight: 500;
	margin: 0; padding: 0;
	line-height: 2;
	background: var(--bg);
	color: var(--fg);
	overflow-x: hidden;
}

/*動きを減らす設定*/
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

figure, dd {margin: 0;}
nav, ul, li {margin: 0; padding: 0;}
nav ul, .eq-list, .socials {list-style: none;}
img {border: none; max-width: 100%; height: auto;}
iframe {width: 100%;}

.mono {
	font-family: "Space Mono", monospace;
	letter-spacing: 0.08em;
	font-size: 0.75rem;
	text-transform: uppercase;
}

a {color: var(--fg); text-decoration: none; transition: color 0.25s;}
a:hover {color: var(--pink);}
a:focus-visible, button:focus-visible {
	outline: 2px solid var(--cyan);
	outline-offset: 4px;
}

::selection {background: var(--pink); color: var(--bg);}

body.has-cursor, body.has-cursor a, body.has-cursor button {cursor: none;}


/*ペンライト粒子キャンバス
---------------------------------------------------------------------------*/
#glow {
	position: fixed; inset: 0;
	z-index: 0;
	pointer-events: none;
}


/*プリローダー
---------------------------------------------------------------------------*/
#loader {
	position: fixed; inset: 0; z-index: 10000;
	background: var(--bg);
	display: flex; align-items: center; justify-content: center;
	transition: transform 0.8s cubic-bezier(0.76, 0, 0.24, 1);
}
.loader-inner {text-align: center;}
.loader-name {
	font-family: "Anton", sans-serif;
	font-size: clamp(2rem, 6vw, 4rem);
	letter-spacing: 0.06em;
	margin: 0;
	background: linear-gradient(90deg, var(--pink), var(--violet), var(--cyan));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.loader-count {
	font-family: "Space Mono", monospace;
	font-size: 1rem;
	color: var(--dim);
	margin: 0.5rem 0 0;
}


/*カスタムカーソル
---------------------------------------------------------------------------*/
#cursor {
	display: none;
	position: fixed; top: 0; left: 0; z-index: 9999;
	width: 28px; height: 28px;
	margin: -14px 0 0 -14px;
	border-radius: 50%;
	background: #fff;
	mix-blend-mode: difference;
	pointer-events: none;
	transition: width 0.25s, height 0.25s, margin 0.25s;
}
body.has-cursor #cursor {display: block;}
#cursor.big {
	width: 72px; height: 72px;
	margin: -36px 0 0 -36px;
}


/*ヘッダー
---------------------------------------------------------------------------*/
header {
	position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
	display: flex; align-items: center; justify-content: space-between;
	padding: 1.4rem 4vw;
	mix-blend-mode: difference;
}
.brand {
	font-family: "Anton", sans-serif;
	font-size: 1.25rem;
	letter-spacing: 0.06em;
	color: #fff;
	display: inline-block;
}
.brand sup {font-size: 0.6em;}
.clock {color: #fff; margin: 0;}
#menu-toggle {
	background: none; border: none; padding: 0.4rem 0.8rem;
	color: #fff;
	cursor: pointer;
	display: inline-block;
}
#menu-toggle .mono {font-size: 0.85rem;}

	@media screen and (max-width: 700px) {
	.clock {display: none;}
	}


/*フルスクリーンメニュー
---------------------------------------------------------------------------*/
#overlay-menu {
	position: fixed; inset: 0; z-index: 900;
	background: var(--bg-soft);
	display: flex; flex-direction: column; justify-content: center;
	padding: 0 8vw;
	clip-path: inset(0 0 100% 0);
	transition: clip-path 0.7s cubic-bezier(0.76, 0, 0.24, 1);
	visibility: hidden;
}
#overlay-menu.open {clip-path: inset(0 0 0 0); visibility: visible;}

#overlay-menu nav a {
	font-family: "Anton", sans-serif;
	font-size: clamp(2.6rem, 9vw, 6.5rem);
	line-height: 1.25;
	letter-spacing: 0.02em;
	color: var(--fg);
	display: inline-block;
	position: relative;
	transition: color 0.25s, letter-spacing 0.4s;
}
#overlay-menu nav a::after {
	content: attr(data-jp);
	font-family: "Zen Kaku Gothic New", sans-serif;
	font-size: 0.9rem;
	font-weight: 500;
	color: var(--dim);
	margin-left: 1.2rem;
	letter-spacing: 0.1em;
	vertical-align: middle;
}
#overlay-menu nav a:hover {
	color: var(--pink);
	letter-spacing: 0.08em;
}
#overlay-menu nav li:nth-child(2) a:hover {color: var(--violet);}
#overlay-menu nav li:nth-child(3) a:hover {color: var(--cyan);}
#overlay-menu nav li:nth-child(4) a:hover {color: var(--violet);}

.overlay-foot {
	position: absolute; bottom: 2rem; left: 8vw; right: 8vw;
	display: flex; justify-content: space-between;
	color: var(--dim);
}


/*ヒーロー
---------------------------------------------------------------------------*/
#hero {
	position: relative; z-index: 1;
	min-height: 100dvh;
	display: flex; flex-direction: column; justify-content: center;
	padding: 7rem 6vw 0;
	overflow: hidden;
}

.hero-eyebrow {color: var(--dim); margin: 0 0 1.5rem;}

.hero-title {
	font-weight: 900;
	font-size: clamp(2.4rem, 7.5vw, 5.6rem);
	line-height: 1.4;
	margin: 0;
}
.ht-line {display: block; overflow: hidden;}
.ht-line .ch {display: inline-block; will-change: transform;}
.ht-line.accent {
	background: linear-gradient(90deg, var(--pink), var(--violet) 55%, var(--cyan));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/*巨大ロゴタイプ*/
.hero-giant {
	font-family: "Anton", sans-serif;
	font-size: clamp(4.5rem, 17vw, 15rem);
	line-height: 1;
	letter-spacing: 0.02em;
	color: transparent;
	-webkit-text-stroke: 1.5px rgba(244, 242, 239, 0.28);
	margin-top: 2rem;
	overflow: hidden;
	white-space: nowrap;
	user-select: none;
}
.hero-giant .ch {display: inline-block; will-change: transform;}

.hero-foot {
	display: flex; align-items: center; gap: 1.2rem;
	color: var(--dim);
	padding: 2.5rem 0;
	margin-top: auto;
}
.scroll-line {
	flex: 1;
	height: 1px;
	background: linear-gradient(90deg, var(--line), transparent);
	position: relative;
	overflow: hidden;
}
.scroll-line::after {
	content: '';
	position: absolute; top: 0; left: -30%;
	width: 30%; height: 100%;
	background: var(--pink);
	animation: scan 2.4s ease-in-out infinite;
}
@keyframes scan {
	0% {left: -30%;}
	100% {left: 110%;}
}


/*マーキー
---------------------------------------------------------------------------*/
.marquee {
	position: relative; z-index: 1;
	overflow: hidden;
	border-top: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
	padding: 1rem 0;
	white-space: nowrap;
	background: var(--bg);
}
.marquee-track {display: inline-flex; will-change: transform;}
.marquee-track span {
	font-family: "Anton", sans-serif;
	font-size: clamp(1.4rem, 3.5vw, 2.4rem);
	letter-spacing: 0.06em;
	color: transparent;
	-webkit-text-stroke: 1px rgba(244, 242, 239, 0.5);
	padding-right: 0.5em;
}


/*セクション共通
---------------------------------------------------------------------------*/
.section {
	position: relative; z-index: 1;
	max-width: 1100px;
	margin: 0 auto;
	padding: 9rem 6vw;
}

.sec-label {color: var(--pink); margin: 0 0 2rem;}
#business .sec-label {margin-bottom: 1rem;}

.sec-title {
	font-weight: 900;
	font-size: clamp(1.8rem, 4.5vw, 3rem);
	line-height: 1.5;
	margin: 0 0 3rem;
}


/*ABOUT：スクロール連動ステートメント
---------------------------------------------------------------------------*/
.statement {
	font-weight: 700;
	font-size: clamp(1.3rem, 3.2vw, 2.2rem);
	line-height: 2.1;
	max-width: 30em;
	margin: 0 0 6rem;
}
.statement .w {opacity: 0.12;}

/*数字*/
.stats {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 2.5rem 1.5rem;
	border-top: 1px solid var(--line);
	padding-top: 3rem;
}
	@media screen and (min-width: 820px) {
	.stats {grid-template-columns: repeat(4, 1fr);}
	}
.stat-num {
	font-size: clamp(2.4rem, 5.5vw, 4rem);
	line-height: 1.2;
	margin: 0;
	background: linear-gradient(180deg, var(--fg), var(--dim));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.stat-label {color: var(--dim); font-size: 0.85rem; margin: 0.3rem 0 0;}


/*BUSINESS：横スクロール
---------------------------------------------------------------------------*/
#business {position: relative; z-index: 1;}
.hwrap {overflow: hidden;}
.htrack {
	display: flex;
	will-change: transform;
}

.hpanel {
	flex-shrink: 0;
	width: min(88vw, 640px);
	min-height: 100dvh;
	padding: 10rem 5vw 6rem;
	display: flex;
	flex-direction: column;
	border-right: 1px solid var(--line);
}

.hpanel-intro {
	width: min(70vw, 520px);
	justify-content: center;
}
.hpanel-intro h2 {
	font-weight: 900;
	font-size: clamp(2.4rem, 6vw, 4.5rem);
	line-height: 1.4;
	margin: 0 0 2rem;
}
.hint {color: var(--dim);}

.biz {position: relative; justify-content: center;}
.biz::before {
	/*ペンライトのぼんやりした光*/
	content: '';
	position: absolute;
	top: 12%; right: 8%;
	width: 240px; height: 240px;
	border-radius: 50%;
	filter: blur(90px);
	opacity: 0.45;
	pointer-events: none;
}
.biz[data-glow="pink"]::before {background: var(--pink);}
.biz[data-glow="violet"]::before {background: var(--violet);}
.biz[data-glow="cyan"]::before {background: var(--cyan);}

.biz-index {
	font-size: 1rem;
	color: var(--dim);
	margin: 0 0 1rem;
}
.biz h3 {
	font-weight: 900;
	font-size: clamp(2rem, 5vw, 3.4rem);
	line-height: 1.4;
	margin: 0 0 1rem;
}
.biz-status {margin: 0 0 1.5rem;}
.st-on {color: var(--cyan);}
.st-standby {color: var(--dim);}
.biz-text {color: #C9C7C4; max-width: 34em; margin: 0 0 2rem;}

.biz-link {
	display: inline-block;
	font-family: "Space Mono", monospace;
	font-size: 0.9rem;
	letter-spacing: 0.08em;
	border: 1px solid var(--fg);
	border-radius: 999px;
	padding: 0.7rem 1.8rem;
	align-self: flex-start;
	transition: background 0.25s, color 0.25s, border-color 0.25s;
}
.biz-link:hover {
	background: var(--pink);
	border-color: var(--pink);
	color: var(--bg);
}

	/*モバイルでは縦積み*/
	@media screen and (max-width: 899px) {
	.htrack {flex-direction: column;}
	.hpanel {
		width: 100%;
		min-height: auto;
		padding: 5rem 6vw;
		border-right: none;
		border-bottom: 1px solid var(--line);
	}
	.hpanel-intro {width: 100%; padding-bottom: 2rem;}
	.hint {display: none;}
	}


/*EQUIPMENT：ホバーで光るリスト
---------------------------------------------------------------------------*/
.eq-list {margin: 0; border-top: 1px solid var(--line);}
.eq-row {
	display: grid;
	grid-template-columns: 8.5em 1fr auto;
	gap: 1.5rem;
	align-items: center;
	padding: 1.6rem 1rem;
	border-bottom: 1px solid var(--line);
	position: relative;
	transition: background 0.3s, padding-left 0.3s;
}
.eq-row:hover {
	background: linear-gradient(90deg, rgba(255, 77, 154, 0.08), transparent 60%);
	padding-left: 1.8rem;
}
.eq-cat {color: var(--pink);}
.eq-row:nth-child(2) .eq-cat {color: var(--violet);}
.eq-row:nth-child(3) .eq-cat, .eq-row:nth-child(4) .eq-cat, .eq-row:nth-child(5) .eq-cat {color: var(--dim);}
.eq-name {font-size: 0.95rem;}
.eq-count {color: var(--dim);}
.eq-soon .eq-name {color: var(--dim);}

	@media screen and (max-width: 700px) {
	.eq-row {grid-template-columns: 1fr auto; gap: 0.3rem 1rem;}
	.eq-cat {grid-column: 1 / -1;}
	}


/*COMPANY
---------------------------------------------------------------------------*/
.spec {margin: 0; border-top: 1px solid var(--line);}
.spec dt {
	color: var(--dim);
	padding-top: 1.4rem;
}
.spec dd {
	padding-bottom: 1.4rem;
	border-bottom: 1px solid var(--line);
}
.dd-sub {display: block; color: var(--dim); margin-top: 0.2rem;}

	@media screen and (min-width: 700px) {
	.spec {display: grid; grid-template-columns: 11em 1fr;}
	.spec dt {padding: 1.4rem 0; border-bottom: 1px solid var(--line);}
	.spec dd {padding-top: 1.4rem;}
	}

.socials {
	display: flex; gap: 1rem; flex-wrap: wrap;
	margin: 3rem 0 0;
}
.socials a {
	font-family: "Space Mono", monospace;
	font-size: 0.8rem;
	letter-spacing: 0.08em;
	border: 1px solid var(--line);
	border-radius: 999px;
	padding: 0.6rem 1.6rem;
	display: inline-block;
	transition: border-color 0.25s, color 0.25s;
}
.socials li:nth-child(1) a:hover {border-color: var(--pink); color: var(--pink);}
.socials li:nth-child(2) a:hover {border-color: var(--violet); color: var(--violet);}
.socials li:nth-child(3) a:hover {border-color: var(--cyan); color: var(--cyan);}


/*CONTACT
---------------------------------------------------------------------------*/
.contact-huge {
	font-weight: 900;
	font-size: clamp(2.2rem, 6.5vw, 4.8rem);
	line-height: 1.45;
	margin: 0 0 1.5rem;
	background: linear-gradient(90deg, var(--fg) 40%, var(--pink) 75%, var(--violet));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.contact-sub {color: var(--dim); margin: 0 0 3rem;}

.iframe-wrapper {
	border: 1px solid var(--line);
	border-radius: 16px;
	padding: 1.5rem;
	background: var(--bg-soft);
}
#parentframe {min-height: 400px; border: none;}


/*フッター
---------------------------------------------------------------------------*/
footer {
	position: relative; z-index: 1;
	border-top: 1px solid var(--line);
	padding: 4rem 4vw 1.5rem;
	overflow: hidden;
}
.foot-giant {
	font-family: "Anton", sans-serif;
	font-size: clamp(4rem, 16vw, 14rem);
	line-height: 0.95;
	letter-spacing: 0.02em;
	margin: 0 0 2rem;
	text-align: center;
	background: linear-gradient(180deg, rgba(244,242,239,0.16), rgba(244,242,239,0.02));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	user-select: none;
}
.foot-bar {
	display: flex; justify-content: space-between; align-items: center;
	gap: 1rem; flex-wrap: wrap;
	color: var(--dim);
}
.foot-bar a {display: inline-block;}
.foot-bar a:hover {color: var(--cyan);}

/*NEWS
---------------------------------------------------------------------------*/
.news-list {margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line);}

.news-empty {color: var(--dim); padding: 1.6rem 0.4rem; display: block;}

.news-row {border-bottom: 1px solid var(--line);}

.news-head {
	display: grid;
	grid-template-columns: 6.5em 6.5em 1fr auto;
	gap: 1.2rem;
	align-items: center;
	width: 100%;
	padding: 1.5rem 1rem;
	background: none;
	border: none;
	color: var(--fg);
	font-family: inherit;
	font-size: 1rem;
	text-align: left;
	transition: background 0.3s, padding-left 0.3s;
}
button.news-head {cursor: pointer;}
button.news-head:hover, .news-head.news-linked:hover {
	background: linear-gradient(90deg, rgba(138, 107, 255, 0.09), transparent 60%);
	padding-left: 1.8rem;
}
button.news-head:focus-visible {outline: 2px solid var(--cyan); outline-offset: -2px;}

.news-date {color: var(--dim);}

.news-cat {
	border: 1px solid var(--line);
	border-radius: 999px;
	padding: 0.05rem 0.7rem;
	text-align: center;
	font-size: 0.68rem;
}
.news-cat.cat-1 {color: var(--pink); border-color: var(--pink);}
.news-cat.cat-2 {color: var(--violet); border-color: var(--violet);}
.news-cat.cat-3 {color: var(--cyan); border-color: var(--cyan);}
.news-cat.cat-4 {color: var(--fg); border-color: var(--fg);}

.news-title {font-weight: 700; line-height: 1.7;}

.news-arrow {
	color: var(--dim);
	font-family: "Space Mono", monospace;
	font-size: 1.1rem;
	transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1), color 0.25s;
}
.news-row.open .news-arrow {transform: rotate(45deg); color: var(--pink);}

.news-body {
	max-height: 0;
	overflow: hidden;
	transition: max-height 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.news-body-in {
	padding: 0 1rem 1.6rem;
	color: #C9C7C4;
	font-size: 0.92rem;
	max-width: 44em;
}
.news-body-in p {margin: 0.8rem 0 0;}
.news-link {
	font-family: "Space Mono", monospace;
	font-size: 0.8rem;
	letter-spacing: 0.08em;
	color: var(--cyan);
}
.news-link:hover {color: var(--pink);}

	@media screen and (max-width: 700px) {
	.news-head {
		grid-template-columns: 1fr auto;
		gap: 0.4rem 1rem;
		padding: 1.2rem 0.6rem;
	}
	.news-date {grid-column: 1;}
	.news-cat {grid-row: 1; grid-column: 2; justify-self: end;}
	.news-title {grid-column: 1 / -1;}
	.news-arrow {position: absolute; right: 0.8rem;}
	.news-row {position: relative;}
	}
