@charset "UTF-8";

/* ===================================
	 基本レイアウト・共通要素の定義
	 =================================== */
/* 全体的なレイアウトのリセットと制御 */
html {
		box-sizing: border-box; /* パディングとボーダーをwidthに含める */
}
*, *::before, *::after {
		box-sizing: inherit; /* すべての要素に継承 */
}
body {
	font-family: 'Inter', sans-serif;
	background-color: #f0f0f0;

		margin: 0; /* bodyのデフォルトマージンを削除 */
		padding: 0;
		overflow-x: hidden; /* 横スクロールを強制的に禁止 */
		min-height: 100vh; /* 画面全体を覆う */
		display: flex;
		flex-direction: column;
}

/* mainタグがコンテンツを占めるように */
#content {
		flex: 1; /* mainが残りのスペースを埋める */

						padding-top: 10px;
						max-width: 1200px;
						margin: 0 auto;
						padding-left: 4px;	//1.5rem;
						padding-right:4px;	//1.5rem;
}

/* ヘッダーの幅を画面幅に合わせる */
header {
		width: 100%; /* 明示的に幅を設定 */
}

.button-danger {
		padding: 10px 20px;
		background-color: #dc3545; /* 赤色 */
		color: white;
		border: none;
		cursor: pointer;
		margin-left: 10px;
}

/* コンテンツを中央に配置するラッパー */
.container {
	max-width: 800px;
	margin: 0 auto;
	/* モバイルでの横スクロールを防ぐため、左右のパディングを追加 */
	padding: 0 10px;
	width: 100%; /* 明示的に幅を設定 */
}

/* sectionのベースパディング */
section {
	padding-top: 10px;
}

/* info_blockのパディングリセット */
#info_block {
	padding: 0;
}

/* header/footerの子要素を左右配置・中央揃えに修正 */
header {
	background-color: #333; /* 暗い背景色 */
	color: #fff;
	padding: 10px 20px;
}

/* ヘッダータイトルとメニューを左右に振り分けるためのコンテナ */
.header-inner {
		/* 🚨 Flexboxを有効にする */
		display: flex;

		/* 🚨 子要素を左右に最大限広げる */
		justify-content: space-between;

		/* 🚨 垂直方向の中央揃え */
		align-items: center;

		/* 最大幅を設定し、コンテンツを中央に保つ（オプション） */
		max-width: 1200px;
		margin: 0 auto;
}

/* ヘッダータイトル（h1）の調整 */
header h1 {
		font-size: 1.5rem;
		margin: 0; /* h1のデフォルトマージンをリセット */
		/* タイトルとメニューが密着しすぎるのを防ぐ */
		padding-right: 20px;
}

/* デスクトップナビゲーションのスタイル */
#main-nav a {
		color: #fff;
		text-decoration: none;
		padding: 0 10px;
		transition: color 0.3s;
}

#main-nav a:hover {
		color: #ccc;
}

/* 認証されていない場合はナビゲーションを非表示にし、ヘッダーを中央寄せにする */
body:not(.is-logged-in) header {
		justify-content: center;
}
body:not(.is-logged-in) header nav {
		display: none;
}


/* 以前の footer の中央配置 */
footer {
	display: flex;
	justify-content: center;
	align-items: center;
	padding: 20px;
	border-top: 1px solid #ccc;
}

				/* ===================================
					 ハンバーガーメニューのスタイル
					 =================================== */
				.hamburger-btn {
						display: none; /* デスクトップでは非表示 */
						flex-direction: column;
						justify-content: space-around;
						width: 30px;
						height: 25px;
						background: transparent;
						border: none;
						cursor: pointer;
						padding: 0;
						z-index: 1000;
				}
				.bar {
						width: 100%;
						height: 3px;
						background-color: #fff;
						border-radius: 10px;
						transition: all 0.3s linear;
						transform-origin: 1px;
				}

				/* メニューが開いたときのアイコン変化 */
				.hamburger-btn.is-open .bar:nth-child(1) {
						transform: rotate(45deg) translate(5px, 5px);
				}
				.hamburger-btn.is-open .bar:nth-child(2) {
						opacity: 0;
				}
				.hamburger-btn.is-open .bar:nth-child(3) {
						transform: rotate(-45deg) translate(5px, -5px);
				}


/* ===================================
	 フォーム関連の共通スタイル
	 (汎用的な .form-group, input, buttonなど)
	 =================================== */

.form-group {
	margin-bottom: 15px;
}
label {
	display: block;
	margin-bottom: 5px;
	font-weight: bold;
}
input[type="text"],
input[type="date"],
input[type="time"],
input[type="password"], /* パスワード入力フィールドを追加 */
textarea {
	width: 100%;
	padding: 8px;
	box-sizing: border-box;
	border: 1px solid #ccc;
	border-radius: 4px;
}
textarea {
	height: 150px;
}
button {
	padding: 10px 20px;
	background-color: #007bff;
	color: white;
	border: none;
	border-radius: 4px;
	cursor: pointer;
		transition: background-color 0.2s;
}
button:hover {
	background-color: #0056b3;
}

/* 汎用的なエラー/アラートメッセージ */
.error {
	color: red;
	border: 1px solid red;
	padding: 10px;
	background-color: #fdd;
		margin-bottom: 20px;
	border-radius: 5px;
}
.success {
	color: green;
	border: 1px solid green;
	padding: 10px;
	background-color: #dfd;
	margin-bottom: 20px;
	border-radius: 5px;
}


/* ===================================
	 ログインフォーム専用スタイル
	 =================================== */

.login-container {
		max-width: 400px;
		margin: 50px auto;
		padding: 30px;
		border: 1px solid #ddd;
		border-radius: 8px;
		box-shadow: 0 4px 6px rgba(0,0,0,0.1);
		background-color: #fff;
}
.login-container h2 {
		text-align: center;
		margin-bottom: 25px;
		border-bottom: 2px solid #007bff;
		padding-bottom: 10px;
}
.login-btn {
		width: 100%;
		margin-top: 10px;
}
.hint {
		margin-top: 20px;
		text-align: center;
		font-size: 0.9em;
		color: #666;
}


/* ===================================
	 お知らせ一覧 (News List) スタイル (既存のスタイルを維持)
	 =================================== */

.list-action-bar {
		display: flex;
		justify-content: flex-end;
		margin-bottom: 20px;
}
.add-btn {
		display: flex;
		align-items: center;
		gap: 5px;
		padding: 10px 15px;
		background-color: #4CAF50;
		color: white;
		text-decoration: none;
		border-radius: 5px;
		font-weight: bold;
		box-shadow: 0 2px 4px rgba(0,0,0,0.1);
		transition: background-color 0.2s;
}
.add-btn:hover {
		background-color: #45a049;
}
.add-btn svg {
		stroke: white;
}
/* テーブルスタイル */
.responsive-table {
		overflow-x: auto;
}
#newsListTable {
		width: 100%;
		border-collapse: collapse;
		background-color: #fff;
		box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

/* 無効化されたデータ行を薄い灰色にするスタイル */
.newsListTable tr .disabled-row {
		background-color: #f5f5f5; /* 薄い灰色 */
		color: #a0a0a0; /* 文字色も少し薄くする */
}

/* 無効な行内のリンクやボタンの見た目も調整すると、より見やすくなります */
.newsListTable tr .disabled-row a {
		color: #a0a0a0;
}

/* ステータス表示用の色 */
.status-active {
		color: green;
		font-weight: bold;
}
.status-disabled {
		color: #a0a0a0;
}
#newsListTable th, #newsListTable td {
		padding: 12px 15px;
		text-align: left;
		border-bottom: 1px solid #ddd;
}
#newsListTable th {
		background-color: #f4f4f4;
		font-weight: bold;
		color: #333;
		text-transform: uppercase;
		font-size: 14px;
}
#newsListTable tbody tr:hover {
		background-color: #f9f9f9;
}
.col-date {
		width: 200px;
		text-align: center;
}
.col-title {
		width: 200px;
}
.col-actions {
		width: 110px;
		text-align: center;
}
/* 操作アイコンボタンのスタイル */
.action-icon {
		background: none;
		border: none;
		color: #666;
		padding: 5px;
		margin: 0 2px;
		cursor: pointer;
		transition: color 0.2s, transform 0.1s;
		border-radius: 50%;
		width: 30px;
		height: 30px;
		display: inline-flex;
		justify-content: center;
		align-items: center;
}
.action-icon:hover {
		transform: scale(1.1);
}
.detail-icon:hover { color: #007bff; }
.edit-icon:hover { color: #FFA000; }
.delete-icon:hover { color: #D32F2F; }
.action-icon svg {
		stroke: currentColor;
}


/* ===================================
	 詳細表示モーダル (Modal) スタイル (既存のスタイルを維持)
	 =================================== */

.modal-overlay {
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background-color: rgba(0, 0, 0, 0.7);
		display: flex;
		justify-content: center;
		align-items: center;
		z-index: 1000;
}
.modal-content {
		background-color: white;
		padding: 30px;
		border-radius: 10px;
		max-width: 90%;
		width: 500px;
		box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
		position: relative;
}
.modal-content h3 {
		border-bottom: 2px solid #ccc;
		padding-bottom: 10px;
		margin-top: 0;
}
#modalBody p {
		margin-bottom: 10px;
		padding: 5px 0;
		border-bottom: 1px dotted #eee;
}
.modal-close-btn {
		margin-top: 20px;
		background-color: #6c757d;
}
.modal-close-btn:hover {
		background-color: #5a6268;
}

/* ===================================
	 フォーム画像管理のレイアウト調整 (News_Form.latte向け)
	 =================================== */

.image-management-container {
		/* 画像と削除オプションを横並びにする */
		display: flex;
		align-items: center; /* 垂直方向の中央揃え */
		gap: 20px; /* 画像とオプションの間のスペース */
		margin-bottom: 10px;
}

.current-image-wrapper {
		/* 画像が小さくてもスペースを確保 */
		flex-shrink: 0;
}

.delete-checkbox-wrapper {
		/* チェックボックスのスタイル調整 */
		display: flex;
		align-items: center;
		gap: 5px;
		padding-top: 5px; /* 縦方向の調整 */
}

.delete-checkbox-wrapper .delete-label {
		/* ラベルを通常フォントに戻し、クリック可能範囲を広げる */
		font-weight: normal;
		cursor: pointer;
}

/* ===================================
	 レスポンシブデザイン (メディアクエリ) (既存のスタイルを維持)
	 =================================== */

/* 画面幅 840 以下 (ヘッダーの縦積み) */
@media screen and (max-width: 840px) {
#content {
				/* スマホで横スクロールしないようにパディングを調整 */
				padding-left: 10px;
				padding-right: 10px;
				/* max-width: 1200px はそのまま残し、840px以下では幅が100%になる */
				width: 100%;
		}

		/* 🚨 追記: .container の最大幅をスマホの画面幅に近い値に制限 */
		.container {
				/* max-width を削除するか、画面幅より十分に小さい値にする */
				max-width: 100%;
				/* padding: 0 10px; が残るため、内容が画面端に密着しない */
		}

/* 🚨 追記: テーブル全体をラップしているコンテナの幅を調整 */
		.responsive-table {
				/* 中央揃えにし、左右に余白を確保 */
				width: 95%;
				margin: 0 auto;
				/* テーブルが画面をはみ出さないように、横スクロールを許可 */
//				overflow-x: auto;
		}

		/* 🚨 追記: テーブル自体の幅は100%にし、必要に応じてmin-widthで横スクロールを誘発 */
		.responsive-table table {
				width: 100%;
//				min-width: 700px; /* 例: 700px未満の画面で横スクロールが発生 */
		}
	header {
		flex-direction: column;
		align-items: center;
		padding: 15px 10px;
	}
	header h1 {
		margin-bottom: 10px;
		font-size: 20px;
	}
	header nav a {
		font-size: 14px;
	}
						/* ヘッダーナビゲーションを隠し、ボタンを表示 */
						#main-nav {
								display: none;
						}
						.hamburger-btn {
								display: flex; /* モバイルで表示 */
						}

						/* オーバーレイメニューのコンテナ */
						#mobile-overlay-menu {
								position: fixed;
								top: 0;
								right: 0;
								width: 300px; /* メニューの幅 */
								max-width: 80%;
								height: 100%;
								background-color: #47423b;
								box-shadow: -4px 0 10px rgba(0, 0, 0, 0.2);
								z-index: 990;
								transform: translateX(100%); /* 右に完全に隠す */
								transition: transform 0.3s ease-in-out;
								padding-top: 60px; /* ヘッダー分を空ける */
						}
						#mobile-overlay-menu.is-open {
								transform: translateX(0); /* 表示 */
						}

						#mobile-overlay-menu a {
								display: block;
								color: #fff;
								padding: 15px 1.5rem;
								text-decoration: none;
								border-bottom: 1px solid rgba(255, 255, 255, 0.1);
						}
						#mobile-overlay-menu a:hover {
								background-color: #333;
						}

						/* 背景のダークオーバーレイ (メニュー展開時) */
						.menu-backdrop {
								display: none;
								position: fixed;
								top: 0;
								left: 0;
								width: 100%;
								height: 100%;
								background-color: rgba(0, 0, 0, 0.5);
								z-index: 980;
						}
						.menu-backdrop.is-open {
								display: block;
						}
	.image-management-container {
				/* モバイルでは縦積みに戻す */
				flex-direction: column;
				align-items: flex-start;
		}
}

/* --- デスクトップレイアウト (841px以上) --- */
@media screen and (min-width: 841px) {
	#main-nav {
		display: block !important;
	}
	.hamburger-btn, .menu-backdrop, #mobile-overlay-menu {
		display: none !important;
	}
}

/* 画面幅 640px 以下 (テーブルのモバイル対応) */
@media screen and (max-width: 640px) {
		/* テーブルを縦積みのリスト形式に変更 */
		#newsListTable thead {
				display: none;
		}
		#newsListTable, #newsListTable tbody, #newsListTable tr, #newsListTable td {
				display: block;
				width: 100%;
		}
		#newsListTable tr {
				margin-bottom: 15px;
				border: 1px solid #ddd;
				border-radius: 5px;
		}
		#newsListTable td {
				text-align: right;
//				padding-left: 50%;
	/* 画面が狭い場合、ラベルの幅を広げ、値のパディングを狭める */
	 padding: 8px 10px 8px 120px; /* 上下8px, 右10px, 左120px */
	position: relative;
	 border-bottom: none;
		}
		#newsListTable td::before {
				content: attr(data-label);
				position: absolute;
				left: 10px;
//				width: 45%;
	/* 幅を調整: 左10pxから120pxまでをラベル領域とする */
				width: 100px;
				padding-right: 10px;
				white-space: nowrap;
				text-align: left;
				font-weight: bold;
	 color: #555;
	overflow: hidden; /* ラベルが長すぎる場合は隠す */
	text-overflow: ellipsis;
		}
		#newsListTable .col-actions {
				text-align: center;
				padding-left: 0;
				border-top: 1px solid #eee;
		}
		#newsListTable .col-actions::before {
				display: none;
		}
}
@media screen and (max-width: 480px) { /* 多くのスマホで適用される幅 */
		header {
				padding: 10px 5px; /* 左右のパディングをさらに削減 */
		}
		header nav {
				display: flex; /* ナビゲーションをフレックスコンテナにする */
				flex-wrap: wrap; /* 画面が狭い場合にリンクを折り返す */
				justify-content: center;
	width: 100%; /* ナビゲーション全体の幅を100%に */
				padding: 5px 0;
		}
		header nav a {
				font-size: 13px; /* リンクのフォントサイズを少し小さく */
//				margin: 5px 3px; /* リンクの間にマージンを追加 */
	/* | の代わりにマージンで区切るスタイルを適用 */
				padding: 0 4px;
				margin: 3px 5px;
				line-height: 1.2; /* 行間を調整 */
				white-space: nowrap; /* リンクテキストの途中で改行しない */
		}

		/* フォームボタン群のモバイル対応 */
		.form-actions {
				display: flex;
				flex-wrap: wrap; /* ボタンを折り返す */
				justify-content: center;
				gap: 10px; /* ボタン間のスペース */
		}
		.form-actions button,
		.form-actions a {
				width: calc(50% - 10px); /* 2列で表示 */
				min-width: 120px; /* 最小幅を保証 */
				margin-left: 0 !important; /* インラインスタイルや他のマージンをリセット */
		}
}