:root {
	--light-purple: #b9e6e0;
	--dark-purple: #478aa3;
	--transition-duration: 500ms;
}

* {
	margin: 0;
	padding: 0;
}

html,
body,
.fullflex {
	display: flex;
	flex-direction: column;
	width: 100vw;
	min-width: 100vw;
	max-width: 100vw;
	min-height: 100vh;
}

html {
	scroll-behavior: smooth;
}

body {
	font-family: 'Roboto', sans-serif;
	/* IE and Edge */
	-ms-overflow-style: none;
	/* Firefox */
	scrollbar-width: none;
}

/* Hide scrollbar for Chrome, Safari and Opera */
body::-webkit-scrollbar {
	display: none;
}

#particles {
	position: fixed;
	height: 100vh;
	z-index: -1;
	background-color: var(--dark-purple);
}

#splash {
	max-width: 100vw;
	overflow: hidden;
	color: white;
	text-align: center;
	margin: auto;
}

#lang {
	position: absolute;
	top: 1%;
	right: 1%;
	margin: 0.5em;
	font-size: 1.5em;
}

#lang a {
	color: white;
	font-variant: small-caps;
	text-decoration: none;
}

/* ===== TOP PAGE - NAME STYLING ===== */
#name {
	display: inline;
	font-size: 2.5em; /* 基本サイズを大きく - 調整可能: 2.2em, 2.8em */
	transition: var(--transition-duration);
}

@media (min-width: 320px) {
	#name {
		font-size: 3.5em; /* 少し大きく - 調整可能: 3.2em, 3.8em */
	}
}

@media (min-width: 480px) {
	#name {
		font-size: 4.2em; /* 少し大きく - 調整可能: 4.2em, 4.8em */
	}
}

@media (min-width: 640px) {
	#name {
		font-size: 6em; /* 少し大きく - 調整可能: 5.7em, 6.3em */
	}
}

@media (min-width: 800px) {
	#name {
		font-size: 7.5em; /* 少し大きく - 調整可能: 7.2em, 7.8em */
	}
}

#name em {
	color: var(--light-purple);
	font-style: normal;
	transition: var(--transition-duration);
}

#name:hover {
	color: var(--light-purple);
}

#name:hover em {
	color: white;
}

/* ===== TOP PAGE - ROLES STYLING ===== */
#roles p {
	font-size: 1.6em; /* 小さく調整 - 調整可能: 1.2em, 1.6em */
	margin-bottom: 0.7em;
	line-height: 1.3; /* 行間調整 - 調整可能: 1.2, 1.4 */
}

/* モバイル用の役職サイズ調整 */
@media (max-width: 768px) {
	#roles p {
		font-size: 1.6em; /* モバイルでさらに小さく - 調整可能: 1em, 1.4em */
		margin-bottom: 0.6em; /* マージン調整 - 調整可能: 0.5em, 0.8em */
	}
}

@media (max-width: 480px) {
	#roles p {
		font-size: 1.4em; /* スマホでより小さく - 調整可能: 0.9em, 1.1em */
		margin-bottom: 0.5em; /* マージン調整 - 調整可能: 0.4em, 0.6em */
	}
}

#roles span {
	transition: var(--transition-duration);
}

#roles span:hover {
	color: var(--light-purple);
}

#links {
	margin-bottom: 2em;
}

#links p a i {
	color: white;
	width: 1.73em;
	height: 1.73em;
	margin: 0 15px;
	padding: 10px;
	border-radius: 50%;
	border: 2px solid var(--light-purple);
	transition: var(--transition-duration);
}

#links p a i:hover {
	border: 2px solid white;
	color: var(--light-purple);
	transform: rotate(30deg);
}

#internal_links p a {
	margin: 2em;
	color: white;
	font-size: 1.5em;
	text-underline-offset: 0.2em;
	text-decoration: underline var(--dark-purple);
	transition: var(--transition-duration);
}

#internal_links p a:hover {
	color: var(--light-purple);
	text-decoration-color: white;
}

.arrows {
	position: absolute;
	width: 100%;
	text-align: center;
	translate: 0 -50%;
}

.arrows .down {
	--factor: -1;
}

.arrows i {
	padding: 1%;
	color: var(--light-purple);
	animation-duration: 1s;
	animation-name: arrow_anim;
	animation-iteration-count: infinite;
	animation-timing-function: cubic-bezier(.7, 0, 0, .7);
}

@keyframes arrow_anim {
	50% {
		transform: scale(1.2) translateY(calc(var(--factor, 1) * 50%));
		color: var(--dark-purple);
	}
}

.card {
	overflow: auto;
	margin: auto;
	padding: 1.5em;
	min-width: 30vw;
	max-width: 60vw;
	max-height: 75vh;

	color: white;
	text-align: justify;
	text-align-last: center;
	background-color: var(--dark-purple);

	border-radius: 30px;
	border: 2px solid var(--light-purple);
	box-shadow: 0px 0px 15px 10px rgba(176, 164, 227, 0.25);
}

.card :is(h1, h2) {
	text-align: center;
	margin-bottom: 1em;
	color: var(--light-purple);
	transition: var(--transition-duration);
}

.card h2 {
	margin: 0.5em;
}

/* ===== ABOUT ME SECTION - TEXT STYLING ===== */

/* 見出し（h3）のスタイル - About Meで使用 */
.card h3 {
	font-size: 1.4rem; /* 見出しサイズ - 調整可能: 1.3rem, 1.5rem */
	color: var(--light-purple);
	margin-bottom: 1.5rem; /* 見出し下のマージン - 調整可能: 1rem, 2rem */
	margin-top: 0; /* 見出し上のマージンをリセット */
	line-height: 1.3; /* 行間 - 調整可能: 1.2, 1.4 */
	text-align: center; /* 中央揃え - 調整可能: left, justify */
	transition: var(--transition-duration);
}

.card:hover h3 {
	color: white; /* ホバー時の見出し色 - 調整可能 */
}

/* 段落（p）のスタイル */
.card p {
	line-height: 1.5em; /* 行間 - 調整可能: 1.4em, 1.6em */
	margin-bottom: 1.5em; /* 段落下のマージン - 調整可能: 1rem, 2rem */
	font-size: 1rem; /* フォントサイズ - 調整可能: 0.95rem, 1.05rem */
	text-align: justify; /* 両端揃え - 調整可能: left, center */
	transition: var(--transition-duration);
}

.card a {

	transition: var(--transition-duration);
}

.card:hover :is(h1, h2) {
	color: white;
}

.card:hover p {
	color: var(--light-purple);
}

.card:hover a {
	color: white;
}

/* ===== CONTACT SECTION - 2x2 GRID LAYOUT ===== */
.columns {
	overflow: auto;
	display: grid; /* Gridに変更 */
	grid-template-columns: repeat(2, 1fr); /* 2カラムの2×2グリッド - 調整可能: repeat(3, 1fr), repeat(4, 1fr) */
	grid-template-rows: repeat(2, 1fr); /* 2行の2×2グリッド - 調整可能: auto, repeat(3, 1fr) */
	gap: 1.5rem; /* カード間のスペース - 調整可能: 1rem, 2rem, 3rem */
	padding: 1rem;
	max-width: 800px; /* グリッド全体の最大幅 - 調整可能: 600px, 1000px */
	margin: 0 auto; /* 中央配置 */
}

/* 各コンタクトカードのスタイル */
.columns div {
	/* グリッドアイテムのスタイル */
	width: 100%; /* グリッド内での幅 */
	height: 200px; /* カードの高さ統一 - 調整可能: 180px, 220px, auto */
	
	/* カード内側のスペース - 調整可能 */
	padding: 1.5rem 1rem; /* 上下, 左右 - 調整可能: 1rem, 2rem */
	
	/* カードデザイン */
	background: rgba(26, 34, 44, 0.6); /* 背景色 - 調整可能: 透明度0.4-0.8 */
	border: 1px solid var(--light-purple); /* ボーダー色 - 調整可能: 2px, 3px */
	border-radius: 15px; /* 角の丸み - 調整可能: 10px, 20px */
	
	/* エフェクト */
	transition: all var(--transition-duration);
	box-shadow: 0 4px 15px rgba(95, 161, 199, 0.1); /* 影 - 調整可能 */
	
	/* テキスト配置 */
	text-align: center;
	
	/* Flexでカード内のコンテンツを中央配置 */
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}

/* ホバーエフェクト - 調整可能 */
.columns div:hover {
	transform: translateY(-5px); /* 浮き上がり - 調整可能: -3px, -8px */
	border-color: white; /* ホバー時のボーダー色 */
	box-shadow: 0 8px 25px rgba(95, 161, 199, 0.2); /* ホバー時の影 */
	background: rgba(26, 34, 44, 0.8); /* ホバー時の背景 */
}

/* アイコンスタイル - 調整可能 */
.columns i {
	display: block;
	margin: 0 auto 1rem auto; /* 中央配置 + 下マージン - 調整可能 */
	font-size: 3rem; /* アイコンサイズ - 調整可能: 2.5rem, 3.5rem */
	color: var(--light-purple);
	transition: var(--transition-duration);
}

.columns i:hover {
	color: white; /* ホバー時のアイコン色 - 調整可能 */
	transform: scale(1.1); /* ホバー時のサイズ変更 - 調整可能: 1.05, 1.2 */
}

/* タイトルスタイル - 調整可能 */
.columns h2 {
	font-size: 1.3rem; /* タイトルサイズ - 調整可能: 1.2rem, 1.5rem */
	color: var(--light-purple);
	margin-bottom: 1rem; /* 下マージン - 調整可能: 0.8rem, 1.2rem */
	transition: var(--transition-duration);
}

.columns div:hover h2 {
	color: white; /* ホバー時のタイトル色 */
}

/* テキストスタイル - 調整可能 */
.columns p {
	font-size: 0.9rem; /* テキストサイズ - 調整可能: 0.8rem, 1rem */
	line-height: 1.4; /* 行間 - 調整可能: 1.3, 1.5 */
	color: #ccc; /* テキスト色 - 調整可能: #bbb, #ddd */
	margin-bottom: 0.5rem;
}

/* リンクスタイル - 調整可能 */
.columns a {
	color: var(--light-purple);
	text-decoration: none;
	font-weight: 500; /* 太さ - 調整可能: 400, 600 */
	transition: var(--transition-duration);
}

.columns a:hover {
	color: white;
	text-decoration: underline;
}

/* Zenn-like grid layout */
.zenn-grid-container {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 1rem;
	margin-top: 1rem;
}

.zenn-card {
	background: rgba(26, 34, 44, 0.6);
	border: 1px solid #333;
	border-radius: 12px;
	overflow: hidden;
	transition: all 0.3s ease;
	position: relative;
}

.zenn-card:hover {
	border-color: var(--light-purple);
	transform: translateY(-2px);
	box-shadow: 0 4px 20px rgba(95, 161, 199, 0.2);
}

.zenn-card-link {
	display: block;
	padding: 1.5rem;
	text-decoration: none;
	color: white;
}

.zenn-tag {
	display: inline-block;
	padding: 0.25rem 0.5rem;
	border-radius: 4px;
	font-size: 0.7rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	margin-bottom: 1rem;
}

.zenn-tag-tech {
	background-color: #2563eb;
	color: white;
}

.zenn-tag-idea {
	background-color: #7c3aed;
	color: white;
}

.zenn-icon {
	font-size: 3rem;
	margin-bottom: 1rem;
	display: block;
}

.zenn-title {
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.4;
	margin-bottom: 1rem;
	color: white;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.zenn-meta {
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 0.8rem;
	color: #888;
}

.zenn-time {
	color: #888;
}

.zenn-likes {
	display: flex;
	align-items: center;
	gap: 0.3rem;
	color: #888;
}

.zenn-likes i {
	font-size: 0.8rem;
}

/* ===== レスポンシブ対応 ===== */
@media (max-width: 768px) {
	/* Zenn記事グリッド - タブレット対応 */
	.zenn-grid-container {
		grid-template-columns: 1fr;
		gap: 0.8rem;
	}
	
	.zenn-card-link {
		padding: 1rem;
	}
	
	.zenn-icon {
		font-size: 2.5rem;
	}
	
	/* Contact Section - タブレット対応 */
	.columns {
		flex-direction: column; /* 縦並びに変更 - 調整可能: row で横並び維持 */
		gap: 1.5rem; /* カード間スペース - 調整可能: 1rem, 2rem */
	}
	
	.columns div {
		max-width: none; /* 最大幅制限を解除 - 調整可能: 400px で制限維持 */
		min-width: auto; /* 最小幅制限を解除 */
		padding: 1.5rem 1rem; /* パディング調整 - 調整可能: 1rem, 2rem */
	}
	
	.columns i {
		font-size: 2.5rem; /* アイコンサイズ縮小 - 調整可能: 2rem, 3rem */
	}
	
	.columns h2 {
		font-size: 1.2rem; /* タイトルサイズ縮小 - 調整可能: 1.1rem, 1.4rem */
	}
}

@media (max-width: 480px) {
	/* Contact Section - スマートフォン対応 */
	.columns {
		gap: 1rem; /* さらに狭いスペース - 調整可能: 0.5rem, 1.5rem */
	}
	
	.columns div {
		padding: 1rem 0.8rem; /* より小さいパディング - 調整可能 */
		border-radius: 12px; /* 角を少し小さく - 調整可能: 10px, 15px */
	}
	
	.columns i {
		font-size: 2rem; /* さらに小さいアイコン - 調整可能: 1.8rem, 2.2rem */
		margin-bottom: 0.8rem; /* マージン調整 - 調整可能: 0.5rem, 1rem */
	}
	
	.columns h2 {
		font-size: 1.1rem; /* より小さいタイトル - 調整可能: 1rem, 1.2rem */
		margin-bottom: 0.8rem; /* マージン調整 - 調整可能 */
	}
	
	.columns p {
		font-size: 0.85rem; /* より小さいテキスト - 調整可能: 0.8rem, 0.9rem */
	}
}

.list {
	overflow: auto;
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 3%;
}

.list p {
	margin: 0;
}

.list a {
	color: var(--light-purple);
}

.list a.list_link {
	padding: 0.5em;
	margin: 0 1%;
	text-decoration: none;
	color: var(--light-purple);
	border-radius: 5px;
	border: 2px solid var(--light-purple);
	transition: var(--transition-duration);
}

.list a.list_link:hover {
	border-color: white;
	background-color: var(--light-purple);
	color: white;
}

/* ===== モバイル表示最適化 ===== */

/* Contact Section - モバイル時は縦一列に変更 */
@media (max-width: 600px) {
	.columns {
		grid-template-columns: 1fr; /* 1カラムに変更 - モバイル縦一列 */
		grid-template-rows: auto; /* 行数は自動調整 */
		gap: 1rem; /* カード間スペース縮小 - 調整可能: 0.8rem, 1.2rem */
		max-width: 400px; /* モバイル用の幅調整 - 調整可能: 350px, 450px */
	}
	
	.columns div {
		height: auto; /* 高さ自動調整 - 調整可能: 180px で固定高さ */
		min-height: 150px; /* 最小高さ設定 - 調整可能: 130px, 170px */
		padding: 1.5rem 1rem; /* パディング調整 - 調整可能: 1rem, 2rem */
	}
	
	.columns i {
		font-size: 2.5rem; /* アイコンサイズ - 調整可能: 2rem, 3rem */
		margin-bottom: 1rem; /* マージン調整 - 調整可能: 0.8rem, 1.2rem */
	}
	
	.columns h2 {
		font-size: 1.3rem; /* タイトルサイズ - 調整可能: 1.1rem, 1.5rem */
		margin-bottom: 1rem; /* マージン調整 - 調整可能: 0.8rem, 1.2rem */
	}
}

@media (max-width: 768px) {
	/* TOPセクションナビゲーション - モバイル最適化 */
	#internal_links p a {
		margin: 0.5em 0.3em; /* 小さなマージン - 調整可能: 0.3em, 0.8em */
		font-size: 1rem; /* 小さなフォントサイズ - 調整可能: 0.9rem, 1.1rem */
		padding: 0.6rem 1rem; /* コンパクトなパディング - 調整可能: 0.4rem, 0.8rem */
		display: inline-block; /* 横並び表示 */
		border-radius: 20px; /* 丸みを追加 - 調整可能: 15px, 25px */
		background-color: rgba(26, 34, 44, 0.3); /* 背景を追加 - 調整可能: 透明度0.2-0.5 */
		border: 1px solid var(--light-purple); /* ボーダー追加 - 調整可能: 2px */
		text-decoration: none; /* アンダーラインを削除 */
	}
	
	#internal_links p a:hover {
		background-color: var(--light-purple); /* ホバー時の背景 */
		color: white; /* ホバー時の文字色 */
		transform: scale(1.05); /* わずかな拡大エフェクト - 調整可能: 1.02, 1.1 */
	}
	
	/* セクションナビゲーションの親要素調整 */
	#internal_links p {
		display: flex; /* Flexboxで等間隔配置 */
		justify-content: space-evenly; /* 等間隔配置 - 調整可能: space-around, center */
		flex-wrap: wrap; /* 必要に応じて改行 */
		gap: 0.5rem; /* アイテム間のスペース - 調整可能: 0.3rem, 0.8rem */
		margin: 0; /* デフォルトマージンをリセット */
		padding: 0 1rem; /* 左右にパディング - 調整可能: 0.5rem, 1.5rem */
	}
	
	/* About Meカード - モバイル横幅調整 */
	.card {
		margin-left: 20px; /* 左余白 - 調整可能: 15px, 25px */
		margin-right: 20px; /* 右余白 - 調整可能: 15px, 25px */
		max-width: calc(100vw - 40px); /* 画面幅から左右余白を引いた幅 */
		min-width: calc(100vw - 40px); /* 最小幅も同様に設定 */
	}
}
