/* ==================== */
/* SaaS モダンデザイン */
/* ==================== */

/* グローバル設定 */
* {
	box-sizing: border-box;
}

body {
	font-family: "Inter", "Noto Sans JP", -apple-system, BlinkMacSystemFont, sans-serif;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	background-attachment: fixed;
	margin: 0;
	padding: 20px;
	min-height: 100vh;
	color: #2d3748;
}

/* ヘッダー */
header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 32px;
	width: 95%;
	max-width: 1400px;
	margin-left: auto;
	margin-right: auto;
	background: white;
	padding: 24px 32px;
	border-radius: 16px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
}

header h1 {
	margin: 0;
	font-size: 28px;
	font-weight: 700;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

header button {
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	color: white;
	border: none;
	padding: 12px 24px;
	border-radius: 10px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.3s ease;
	box-shadow: 0 4px 15px rgba(30, 60, 114, 0.4);
}

header button:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 20px rgba(30, 60, 114, 0.5);
}

/* メインコンテナ */
main {
	width: 95%;
	max-width: 1400px;
	margin: 0 auto;
	padding: 20px 0 60px;
}

/* タブヘッダー */
.tab-header {
	display: flex;
	gap: 8px;
	margin-bottom: 24px;
	flex-wrap: wrap;
	background: white;
	padding: 8px;
	border-radius: 16px;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
}

.tab-button {
	background: transparent;
	border: none;
	padding: 12px 20px;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	border-radius: 10px;
	color: #718096;
	transition: all 0.3s ease;
	position: relative;
}

.tab-button:hover {
	background: rgba(30, 60, 114, 0.1);
	color: #2a5298;
}

.tab-button.active {
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	color: white;
	box-shadow: 0 4px 15px rgba(30, 60, 114, 0.3);
}

/* タブコンテンツ */
.tab-content {
	background: white;
	border-radius: 16px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
	padding: 32px;
}

.tab-pane {
	display: none;
}

.tab-pane.active {
	display: block;
	animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
	from {
		opacity: 0;
		transform: translateY(10px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* カード */
.pane-card {
	background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
	border-radius: 12px;
	padding: 24px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
	border: 1px solid rgba(30, 60, 114, 0.1);
	margin-bottom: 32px;
}

.pane-card:last-child {
	margin-bottom: 0;
}

.pane-card h2 {
	margin-top: 0;
	font-size: 22px;
	font-weight: 700;
	color: #2d3748;
	margin-bottom: 20px;
}

/* 設定タブ内のセクション見出し */
.pane-card h3 {
	margin-top: 0;
	margin-bottom: 24px;
	padding-bottom: 12px;
	border-bottom: 2px solid rgba(30, 60, 114, 0.1);
}

/* フォーム要素 */
.pane-card input[type="text"],
.pane-card input[type="password"],
.pane-card input[type="date"],
.pane-card textarea,
.pane-card select {
	width: 100%;
	padding: 12px 16px;
	margin-bottom: 12px;
	box-sizing: border-box;
	border: 2px solid #e2e8f0;
	border-radius: 10px;
	font-size: 14px;
	font-family: inherit;
	transition: all 0.3s ease;
	background: white;
}

.pane-card input:focus,
.pane-card textarea:focus,
.pane-card select:focus {
	outline: none;
	border-color: #2a5298;
	box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.1);
}

/* ボタン - プライマリ */
.pane-card button,
.primary-button {
	padding: 12px 24px;
	border: none;
	border-radius: 10px;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	color: white;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.3s ease;
	box-shadow: 0 4px 15px rgba(30, 60, 114, 0.3);
}

.pane-card button:hover,
.primary-button:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 20px rgba(30, 60, 114, 0.4);
}

.primary-button:disabled {
	opacity: 0.5;
	cursor: not-allowed;
	transform: none;
}

/* ボタン - デンジャー */
.danger-button {
	background: linear-gradient(135deg, #fc5c7d 0%, #e74c3c 100%);
	color: white;
	border: none;
	padding: 10px 20px;
	border-radius: 10px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.3s ease;
	box-shadow: 0 4px 15px rgba(231, 76, 60, 0.3);
}

.danger-button:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 20px rgba(231, 76, 60, 0.4);
}

.danger-button:disabled {
	opacity: 0.5;
	cursor: not-allowed;
	transform: none;
}

/* スタッフリスト */
.therapist-list {
	list-style: none;
	padding: 0;
	margin: 16px 0 0 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 12px;
}

.therapist-item {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 16px;
	border-radius: 10px;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	transition: all 0.2s ease;
}

.therapist-item:hover {
	background: #fff;
	border-color: #cbd5e0;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.therapist-item.selected-for-delete {
	background: #fff5f5;
	border-color: #feb2b2;
}

.therapist-checkbox {
	width: 18px;
	height: 18px;
	accent-color: #e53e3e;
	cursor: pointer;
	flex-shrink: 0;
}

.therapist-item-content {
	flex: 1;
	min-width: 0;
}

.therapist-item-main {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

.therapist-item-info {
	flex: 1;
	min-width: 0;
}

.therapist-name {
	font-size: 15px;
	font-weight: 700;
	color: #2d3748;
	margin: 0 0 4px 0;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.therapist-username {
	font-size: 12px;
	color: #4a90d9;
	font-family: 'Monaco', 'Consolas', monospace;
	background: #ebf4ff;
	padding: 2px 6px;
	border-radius: 4px;
	display: inline-block;
	margin-right: 6px;
}

.therapist-password {
	font-size: 12px;
	color: #718096;
	font-family: 'Monaco', 'Consolas', monospace;
	background: #edf2f7;
	padding: 2px 6px;
	border-radius: 4px;
	display: inline-block;
}

.therapist-contact {
	font-size: 12px;
	color: #718096;
	margin-top: 4px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.therapist-item-actions {
	display: flex;
	gap: 6px;
	flex-shrink: 0;
}

.therapist-edit-btn,
.pane-card .therapist-edit-btn {
	background: #2a5298;
	color: white;
	border: none;
	cursor: pointer;
	padding: 6px 12px;
	border-radius: 6px;
	font-size: 12px;
	font-weight: 600;
	transition: all 0.2s ease;
}

.therapist-edit-btn:hover,
.pane-card .therapist-edit-btn:hover {
	background: #1e3c72;
}

.therapist-delete-btn,
.pane-card .therapist-delete-btn {
	background: #e53e3e;
	color: white;
	border: none;
	cursor: pointer;
	padding: 6px 12px;
	border-radius: 6px;
	font-size: 12px;
	font-weight: 600;
	transition: all 0.2s ease;
}

.therapist-delete-btn:hover,
.pane-card .therapist-delete-btn:hover {
	background: #c53030;
}

.therapist-note {
	font-size: 12px;
	color: #718096;
	margin-top: 8px;
	padding-top: 8px;
	border-top: 1px solid #e2e8f0;
}

/* お知らせリスト */
.announcement-list {
	list-style: none;
	padding: 0;
	margin: 20px 0 0 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.announcement-item {
	background: white;
	border-radius: 12px;
	padding: 20px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
	display: flex;
	flex-direction: column;
	gap: 12px;
	transition: all 0.3s ease;
	border-left: 4px solid #2a5298;
}

.announcement-item:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 16px rgba(30, 60, 114, 0.2);
}

.announcement-item-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-weight: 700;
	font-size: 16px;
	color: #2d3748;
}

.announcement-item-body {
	white-space: pre-wrap;
	line-height: 1.6;
	color: #4a5568;
}

.announcement-recipient {
	font-size: 13px;
	color: #718096;
	padding: 8px 12px;
	background: linear-gradient(135deg, rgba(30, 60, 114, 0.1) 0%, rgba(42, 82, 152, 0.1) 100%);
	border-radius: 8px;
	border-left: 3px solid #2a5298;
}

/* ガントチャート */
#gantt {
	overflow-x: auto;
	background: white;
	border: none;
	border-radius: 12px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

table.gantt-table {
	border-collapse: collapse;
	width: 100%;
	min-width: 900px;
}

table.gantt-table th,
table.gantt-table td {
	border: 1px solid #e2e8f0;
	text-align: center;
	padding: 4px;
	font-size: 13px;
}

/* 行の高さを統一（登録列とガントチャートの高さを揃える） */
table.gantt-table tbody tr {
	height: auto;
}

/* 時間セルのpadding調整 */
table.gantt-table .time-cell {
	padding: 0 !important;
	vertical-align: top !important;
}

table.gantt-table th {
	background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
	font-weight: 700;
	color: #2d3748;
	position: sticky;
	top: 0;
	padding: 4px 2px; /* 時間ヘッダー用にパディングを縮小 */
	font-size: 11px;
	min-width: 35px;
}

/* 主要ヘッダーは大きさを維持 */
table.gantt-table th.select-header,
table.gantt-table th.date-header,
table.gantt-table th.day-header,
table.gantt-table th.room-header,
table.gantt-table th.register-col {
	padding: 12px 8px !important;
	font-size: 13px;
	min-width: auto;
}

/* 日付と曜日のセルを横書きに統一 */
table.gantt-table th.date-header,
table.gantt-table th.day-header,
table.gantt-table th.room-header,
table.gantt-table td.date-cell,
table.gantt-table td.day-cell,
table.gantt-table td.room-cell {
	writing-mode: horizontal-tb !important;
	text-orientation: mixed !important;
	white-space: nowrap;
	vertical-align: middle;
}

table.gantt-table th.room-header {
	min-width: 80px;
	font-size: 13px;
}

table.gantt-table td.room-cell {
	min-width: 80px;
	font-size: 11px;
	font-weight: 600;
	padding: 8px 4px;
}

table.gantt-table td.date-cell.today,
table.gantt-table td.day-cell.today {
	background: linear-gradient(135deg, #fef5e7 0%, #fdeaa8 100%);
	color: #744210;
	font-weight: 700;
}

/* 日付ごとの境界線を強調 */
table.gantt-table tbody tr.date-first-row td {
	border-top: 2px solid #94a3b8 !important;
}

/* カレンダービュー */
#calendar {
	background: white;
	border: none;
	border-radius: 12px;
	padding: 24px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.calendar-day {
	border: 2px solid #e2e8f0;
	border-radius: 12px;
	padding: 16px;
	background: white;
	transition: all 0.3s ease;
}

.calendar-day:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 16px rgba(30, 60, 114, 0.15);
	border-color: #2a5298;
}

.calendar-day.today {
	background: linear-gradient(135deg, #fef5e7 0%, #fdeaa8 100%);
	border-color: #f39c12;
}

/* ビューモード切り替え */
.view-mode-toggle {
	display: inline-flex;
	gap: 4px;
	background: #f7fafc;
	padding: 4px;
	border-radius: 10px;
	vertical-align: middle;
}

.view-mode-btn {
	padding: 6px 14px;
	border: none;
	background: transparent;
	color: #718096;
	border-radius: 8px;
	cursor: pointer;
	transition: all 0.3s ease;
	font-size: 13px;
	font-weight: 600;
}

.view-mode-btn:hover {
	background: rgba(30, 60, 114, 0.1);
	color: #2a5298;
}

.view-mode-btn.active {
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	color: white;
	box-shadow: 0 2px 8px rgba(30, 60, 114, 0.3);
}

/* 表示方法セレクター */
.view-mode-selector,
.view-start-selector {
	display: flex;
	align-items: center;
	gap: 8px;
	height: 36px;
	line-height: 36px;
}

.view-mode-selector select,
.view-start-selector input[type="date"] {
	height: 36px;
	padding: 0 12px;
	border: 2px solid #e2e8f0;
	border-radius: 8px;
	font-size: 14px;
	font-family: inherit;
	background: white;
	box-sizing: border-box;
}

.view-mode-toggle {
	height: 36px;
	box-sizing: border-box;
}

.view-mode-toggle .view-mode-btn {
	height: 28px;
	line-height: 28px;
	padding: 0 14px;
}

/* 月ナビゲーション */
.month-nav {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-bottom: 24px;
	background: #f7fafc;
	padding: 20px;
	border-radius: 12px;
}

.month-nav-main {
	display: flex;
	align-items: center;
	gap: 16px;
}

.month-nav-main button {
	padding: 10px 20px;
	border: none;
	border-radius: 10px;
	background: white;
	color: #2a5298;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.3s ease;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}

.month-nav-main button:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px rgba(30, 60, 114, 0.2);
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	color: white;
}

.month-nav-main span {
	font-size: 18px;
	font-weight: 700;
	color: #2d3748;
}

/* スタッフ画面タブ */
.staff-tabs {
	display: flex;
	gap: 8px;
	margin-bottom: 24px;
	background: white;
	padding: 8px;
	border-radius: 12px;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
}

.staff-tab-btn {
	padding: 12px 24px;
	border: none;
	background: transparent;
	color: #718096;
	cursor: pointer;
	border-radius: 8px;
	transition: all 0.3s ease;
	font-weight: 600;
	font-size: 15px;
}

.staff-tab-btn:hover {
	color: #2a5298;
	background: rgba(30, 60, 114, 0.1);
}

.staff-tab-btn.active {
	color: white;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	box-shadow: 0 4px 15px rgba(30, 60, 114, 0.3);
}

.staff-tab-pane {
	display: none;
	background: white;
	padding: 32px;
	border-radius: 16px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
}

.staff-tab-pane.active {
	display: block;
	animation: fadeIn 0.3s ease;
}

/* セクション */
section {
	background: white;
	padding: 24px;
	margin-bottom: 24px;
	border-radius: 16px;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
}

section h2 {
	margin-top: 0;
	font-size: 24px;
	font-weight: 700;
	color: #2d3748;
	margin-bottom: 20px;
}

/* テーブル */
table {
	width: 100%;
	border-collapse: collapse;
	background: white;
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

table th {
	background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
	color: #2d3748;
	font-weight: 700;
	padding: 16px;
	text-align: left;
}

table td {
	padding: 16px;
	border-bottom: 1px solid #e2e8f0;
}

table tr:last-child td {
	border-bottom: none;
}

table tr:hover {
	background: rgba(102, 126, 234, 0.05);
}

/* その他の既存スタイルを保持 */
#roomName {
	width: 50%;
}

.room-form-row {
	display: flex;
	gap: 12px;
	margin-bottom: 10px;
}

.color-picker-label {
	display: flex;
	justify-content: flex-start;
	gap: 8px;
	font-size: 14px;
	height: 38px;
	line-height: 1;
	margin: 0;
	padding: 0;
}

.color-picker-label span {
	display: flex;
	align-items: center;
	height: 38px;
	line-height: 1;
}

.color-picker-label input[type="color"] {
	width: 50px;
	height: 38px;
	padding: 2px;
	border: 2px solid #e2e8f0;
	border-radius: 8px;
	cursor: pointer;
	flex-shrink: 0;
}

/* ========================================
   個別登録セクション
======================================== */
.individual-register-section {
	margin-top: 20px;
}

.individual-register-section h3 {
	margin-bottom: 16px;
	color: #2d3748;
	font-size: 18px;
	font-weight: 600;
}

.individual-form-card {
	background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
	border: 1px solid #e2e8f0;
	border-radius: 16px;
	padding: 24px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}

.individual-form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
	margin-bottom: 16px;
}

@media (max-width: 768px) {
	.individual-form-row {
		grid-template-columns: 1fr;
		gap: 16px;
	}
}

.form-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.form-field label {
	font-size: 13px;
	font-weight: 600;
	color: #4a5568;
	display: flex;
	align-items: center;
	gap: 4px;
}

.form-field .required {
	color: #e53e3e;
	font-size: 12px;
}

.form-field input,
.form-field textarea {
	padding: 12px 14px;
	border: 2px solid #e2e8f0;
	border-radius: 10px;
	font-size: 14px;
	transition: all 0.2s ease;
	background: white;
}

.form-field input:focus,
.form-field textarea:focus {
	outline: none;
	border-color: #2a5298;
	box-shadow: 0 0 0 3px rgba(42, 82, 152, 0.1);
}

.form-field input::placeholder,
.form-field textarea::placeholder {
	color: #a0aec0;
}

.form-field textarea {
	resize: vertical;
	min-height: 60px;
}

/* パスワード入力ラッパー */
.password-input-wrapper {
	display: flex;
	gap: 8px;
	align-items: stretch;
}

.password-input-wrapper input {
	flex: 1;
}

.generate-password-btn {
	padding: 0 12px;
	height: 46px;
	border: none;
	border-radius: 8px;
	background: linear-gradient(135deg, #2a5298 0%, #1e3a6e 100%);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 5px;
	transition: all 0.2s ease;
	color: white;
	font-size: 12px;
	font-weight: 500;
	white-space: nowrap;
}

.generate-password-btn:hover {
	background: linear-gradient(135deg, #1e3a6e 0%, #152a4d 100%);
}

.generate-password-btn:active {
	transform: scale(0.98);
}

.generate-password-btn svg {
	width: 13px;
	height: 13px;
	flex-shrink: 0;
}

/* 個別登録アクション */
.individual-form-actions {
	display: flex;
	justify-content: flex-end;
	padding-top: 8px;
	border-top: 1px solid #e2e8f0;
	margin-top: 8px;
}

.individual-form-actions .primary-button {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 12px 24px;
	font-size: 14px;
	font-weight: 600;
}

.individual-form-actions .primary-button svg {
	width: 18px;
	height: 18px;
}

/* 旧スタイル（後方互換性） */
.therapist-form-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 12px;
	margin-bottom: 12px;
}

/* パスワード入力グループ（旧） */
.password-input-group {
	display: flex;
	gap: 8px;
	align-items: center;
}

.password-input-group input {
	flex: 1;
}

.therapist-note {
	border: 2px solid #e2e8f0;
	border-radius: 10px;
	padding: 12px;
	min-height: 60px;
	background: white;
}

.announcement-form {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-bottom: 20px;
}

.announcement-form .form-actions {
	display: flex;
	justify-content: flex-end;
}

/* 空きシフト挿入ツール（横一列） */
.announcement-tools {
	margin: 10px 0;
}

.vacant-shift-tool-inline {
	display: flex;
	align-items: center;
	gap: 6px;
	flex-wrap: nowrap;
}

.vacant-shift-tool-inline .tool-label {
	font-size: 13px;
	font-weight: 600;
	color: #374151;
	white-space: nowrap;
}

.vacant-shift-tool-inline input[type="date"] {
	padding: 6px 8px;
	border: 1px solid #d1d5db;
	border-radius: 4px;
	font-size: 13px;
	color: #374151;
	background: white;
	width: 130px;
}

.vacant-shift-tool-inline input[type="date"]:focus {
	outline: none;
	border-color: #3b82f6;
	box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
}

.vacant-shift-tool-inline .period-separator {
	color: #6b7280;
	font-size: 13px;
}

.tool-button-inline {
	display: inline-flex;
	align-items: center;
	padding: 6px 12px;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	color: white;
	border: none;
	border-radius: 4px;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.2s;
	white-space: nowrap;
}

.tool-button-inline:hover {
	opacity: 0.9;
}

.tool-button-inline:active {
	transform: scale(0.98);
}

.tool-button {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 8px 14px;
	background: #ebf8ff;
	color: #2b6cb0;
	border: 1px solid #90cdf4;
	border-radius: 6px;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.2s;
}

.tool-button:hover {
	background: #bee3f8;
	border-color: #63b3ed;
}

.tool-button:active {
	transform: scale(0.98);
}

.tool-button svg {
	flex-shrink: 0;
}

.tool-hint {
	font-size: 12px;
	color: #718096;
}

.announcement-recipients {
	display: flex;
	gap: 20px;
	margin: 10px 0;
}

.recipient-option {
	display: flex;
	align-items: center;
	gap: 8px;
	cursor: pointer;
	font-size: 14px;
	font-weight: 600;
}

.recipient-option input[type="radio"] {
	cursor: pointer;
	width: 18px;
	height: 18px;
	accent-color: #2a5298;
}

.therapist-selection {
	margin: 15px 0;
	padding: 16px;
	border: 2px solid #e2e8f0;
	border-radius: 12px;
	background: white;
}

.therapist-selection-header {
	margin-bottom: 12px;
	padding-bottom: 12px;
	border-bottom: 2px solid #e2e8f0;
}

.therapist-selection-header label {
	display: flex;
	align-items: center;
	gap: 8px;
	cursor: pointer;
	font-size: 14px;
	font-weight: 600;
}

.therapist-checkboxes {
	display: flex;
	flex-direction: column;
	gap: 10px;
	max-height: 200px;
	overflow-y: auto;
}

.therapist-checkbox-item {
	display: flex;
	align-items: center;
	gap: 8px;
	cursor: pointer;
	font-size: 14px;
	padding: 8px;
	border-radius: 8px;
	transition: background 0.2s ease;
}

.therapist-checkbox-item:hover {
	background: rgba(30, 60, 114, 0.05);
}

.therapist-checkbox-item input[type="checkbox"] {
	cursor: pointer;
	width: 18px;
	height: 18px;
	accent-color: #2a5298;
}

.announcement-empty {
	color: #a0aec0;
	background: #f7fafc;
	border-radius: 12px;
	padding: 24px;
	text-align: center;
	font-style: italic;
}

.settings-section {
	margin-bottom: 30px;
	padding-bottom: 24px;
	border-bottom: 2px solid #e2e8f0;
}

.settings-section:last-child {
	border-bottom: none;
	margin-bottom: 0;
	padding-bottom: 0;
}

.settings-section h3 {
	margin-top: 0;
	margin-bottom: 20px;
	font-size: 20px;
	font-weight: 700;
	color: #2d3748;
	padding-bottom: 12px;
	border-bottom: 2px solid #e2e8f0;
}

.settings-group {
	margin-bottom: 24px;
	padding: 20px;
	background: #f7fafc;
	border-radius: 12px;
}

.settings-group h4 {
	margin: 0 0 8px 0;
	font-size: 16px;
	font-weight: 600;
	color: #2d3748;
}

.settings-group .settings-note {
	margin: 0 0 16px 0;
	font-size: 13px;
	color: #718096;
}

.settings-row {
	margin: 12px 0;
}

.settings-form {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-bottom: 16px;
}

.settings-form input {
	padding: 10px 14px;
	border: 2px solid #e2e8f0;
	border-radius: 8px;
	font-size: 14px;
	font-family: inherit;
	transition: all 0.3s ease;
	width: 100%;
	max-width: 300px;
}

.settings-form input:focus {
	outline: none;
	border-color: #2a5298;
	box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.1);
}

.settings-label {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 15px 0;
	font-size: 14px;
	font-weight: 600;
}

.settings-label.checkbox-label {
	cursor: pointer;
}

.settings-label.checkbox-label input[type="checkbox"] {
	width: 18px;
	height: 18px;
	cursor: pointer;
}

.settings-label select {
	padding: 10px 14px;
	border: 2px solid #e2e8f0;
	border-radius: 8px;
	font-size: 14px;
	font-family: inherit;
	cursor: pointer;
	transition: all 0.3s ease;
	min-width: 180px;
}

.settings-label select:focus {
	outline: none;
	border-color: #2a5298;
	box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.1);
}

/* 設定アコーディオン（折りたたみ式セクション） */
.settings-accordion {
	background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
	border-radius: 12px;
	margin-top: 24px;
	margin-bottom: 32px;
	border: 1px solid rgba(30, 60, 114, 0.1);
	overflow: hidden;
	transition: all 0.3s ease;
}

.settings-accordion:first-child {
	margin-top: 0;
}

.settings-accordion:last-child {
	margin-bottom: 0;
}

.settings-accordion[open] {
	box-shadow: 0 4px 16px rgba(30, 60, 114, 0.1);
}

.settings-accordion-header {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 20px 24px;
	font-size: 18px;
	font-weight: 700;
	color: #2d3748;
	cursor: pointer;
	list-style: none;
	transition: all 0.3s ease;
	background: white;
	border-bottom: 1px solid transparent;
}

.settings-accordion-header::-webkit-details-marker {
	display: none;
}

.settings-accordion-header::after {
	content: "▼";
	font-size: 12px;
	margin-left: auto;
	transition: transform 0.3s ease;
	color: #718096;
}

.settings-accordion[open] .settings-accordion-header::after {
	transform: rotate(180deg);
}

.settings-accordion-header:hover {
	background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
}

.settings-accordion[open] .settings-accordion-header {
	border-bottom: 1px solid rgba(30, 60, 114, 0.1);
}

.settings-accordion-content {
	padding: 24px;
	background: white;
	animation: accordionOpen 0.3s ease;
}

@keyframes accordionOpen {
	from {
		opacity: 0;
		transform: translateY(-10px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* 操作マニュアル */
.manual-section {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.manual-item {
	background: #f7fafc;
	border-radius: 12px;
	overflow: hidden;
}

.manual-item summary {
	padding: 16px 20px;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.3s ease;
	list-style: none;
	display: flex;
	align-items: center;
	gap: 8px;
}

.manual-item summary::-webkit-details-marker {
	display: none;
}

.manual-item summary::before {
	content: "▶";
	font-size: 12px;
	transition: transform 0.3s ease;
}

.manual-item[open] summary::before {
	transform: rotate(90deg);
}

.manual-item summary:hover {
	background: #edf2f7;
}

.manual-content {
	padding: 0 20px 20px 20px;
	color: #4a5568;
	font-size: 14px;
	line-height: 1.8;
}

.manual-content ol,
.manual-content ul {
	margin: 12px 0;
	padding-left: 24px;
}

.manual-content li {
	margin-bottom: 8px;
}

.manual-content h5 {
	margin: 16px 0 8px 0;
	font-size: 14px;
	font-weight: 600;
	color: #2d3748;
}

.manual-tip {
	margin-top: 16px;
	padding: 12px 16px;
	background: #ebf8ff;
	border-radius: 8px;
	color: #2b6cb0;
	font-size: 13px;
}

.shift-time-selector {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 15px 0;
}

.submit-shifts-controls,
.submitted-shifts-controls {
	display: flex;
	flex-wrap: wrap;
	flex-direction: column;
	gap: 8px;
	align-items: flex-start;
	margin-bottom: 20px;
	padding: 20px;
	background: #f7fafc;
	border-radius: 12px;
}

.submit-period-info {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 16px;
}

.submit-period-label {
	font-weight: 600;
	color: #2d3748;
}

.submit-period-value {
	font-weight: 700;
	color: #3182ce;
	background: #ebf8ff;
	padding: 6px 12px;
	border-radius: 8px;
}

.submit-period-note {
	font-size: 13px;
	color: #718096;
	margin: 0;
}

.settings-subsection {
	margin-top: 12px;
	padding-left: 16px;
	border-left: 3px solid #e2e8f0;
}

.submitted-filter-row {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 12px;
}

/* 変更履歴テーブル */
.change-logs-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
	margin-top: 12px;
}

.change-logs-table th,
.change-logs-table td {
	padding: 10px 12px;
	text-align: left;
	border-bottom: 1px solid #e2e8f0;
}

.change-logs-table th {
	background: #f7fafc;
	font-weight: 600;
	color: #4a5568;
}

.change-logs-table tr:hover {
	background: #f7fafc;
}

.action-badge {
	display: inline-block;
	padding: 2px 8px;
	border-radius: 4px;
	font-size: 11px;
	font-weight: 600;
}

.action-badge.action-edit {
	background: #ebf8ff;
	color: #2b6cb0;
}

.action-badge.action-delete {
	background: #fed7d7;
	color: #c53030;
}

/* スタッフ側提出済みシフト表示 */
.submitted-shifts-display {
	background: #f7fafc;
	border-radius: 12px;
	padding: 20px;
	margin-bottom: 20px;
}

.submitted-shifts-display h3 {
	margin: 0 0 16px 0;
	font-size: 16px;
	color: #2d3748;
}

.my-submitted-shifts-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
}

.my-submitted-shifts-table th,
.my-submitted-shifts-table td {
	padding: 10px 12px;
	text-align: left;
	border-bottom: 1px solid #e2e8f0;
}

.my-submitted-shifts-table th {
	background: #edf2f7;
	font-weight: 600;
	color: #4a5568;
}

.edit-shift-btn,
.delete-shift-btn,
.edit-submitted-shift-btn,
.delete-submitted-shift-btn {
	padding: 4px 10px;
	border: none;
	border-radius: 4px;
	cursor: pointer;
	font-size: 12px;
	margin-right: 4px;
}

.edit-shift-btn,
.edit-submitted-shift-btn {
	background: #3182ce;
	color: white;
}

.edit-shift-btn:hover,
.edit-submitted-shift-btn:hover {
	background: #2c5282;
}

.delete-shift-btn,
.delete-submitted-shift-btn {
	background: #e53e3e;
	color: white;
}

.delete-shift-btn:hover,
.delete-submitted-shift-btn:hover {
	background: #c53030;
}

/* スタッフ側提出済みシフトテーブル */
.submitted-shifts-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
	margin-top: 12px;
}

.submitted-shifts-table th,
.submitted-shifts-table td {
	padding: 10px 12px;
	text-align: left;
	border-bottom: 1px solid #e2e8f0;
}

.submitted-shifts-table th {
	background: #edf2f7;
	font-weight: 600;
	color: #4a5568;
}

.submitted-shifts-table tr:hover {
	background: #f7fafc;
}

.submitted-shifts-table .action-buttons {
	white-space: nowrap;
}

.month-nav-settings,
.month-nav-actions {
	display: flex;
	gap: 8px;
	align-items: center;
	flex-wrap: wrap;
	height: 32px;
}

/* アクションボタン共通スタイル */
.month-nav-actions .primary-button,
.month-nav-actions .danger-button {
	padding: 6px 12px;
	font-size: 12px;
	height: 32px;
	box-sizing: border-box;
}

/* 外部サイト連携グループ */
.external-sync-group {
	display: flex;
	gap: 6px;
	align-items: center;
	padding: 4px 8px;
	background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
	border-radius: 8px;
	border: 1px solid #7dd3fc;
	height: 32px;
	box-sizing: border-box;
}

.external-site-select {
	padding: 0 8px;
	border: 1px solid #e2e8f0;
	border-radius: 6px;
	font-size: 12px;
	font-family: inherit;
	cursor: pointer;
	transition: all 0.3s ease;
	min-width: 120px;
	background: white;
	height: 24px;
	line-height: 22px;
	box-sizing: border-box;
	display: flex;
	align-items: center;
}

.external-site-select:focus {
	outline: none;
	border-color: #0ea5e9;
	box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.2);
}

/* セカンダリボタン */
.secondary-button {
	padding: 0 10px;
	border: none;
	border-radius: 6px;
	background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%);
	color: white;
	font-size: 12px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.3s ease;
	box-shadow: 0 2px 8px rgba(14, 165, 233, 0.3);
	white-space: nowrap;
	height: 24px;
	line-height: 24px;
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.secondary-button:hover:not(:disabled) {
	transform: translateY(-2px);
	box-shadow: 0 6px 20px rgba(14, 165, 233, 0.4);
}

.secondary-button:disabled {
	opacity: 0.5;
	cursor: not-allowed;
	transform: none;
}

.delete-selected-inline {
	align-self: flex-start;
	width: fit-content;
}

table.gantt-table .time-cell {
	min-height: 40px;
	height: 40px;
	max-height: none;
	padding: 4px !important;
	vertical-align: top;
	overflow: hidden;
	position: relative;
	box-sizing: border-box;
}

table.gantt-table .time-cell.empty {
	background: rgba(247, 250, 252, 0.5);
}

table.gantt-table .time-cell .time-block {
	flex: 0 0 40px;
	height: 40px;
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 8px;
	font-size: 11px;
	color: white;
	text-align: center;
	padding: 0;
	margin: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	box-sizing: border-box;
	box-shadow: 0 2px 8px rgba(30, 60, 114, 0.3);
}

table.gantt-table .time-cell .time-block.placeholder {
	background: transparent;
	border: 2px dashed #cbd5e0;
	color: transparent;
	box-shadow: none;
}

table.gantt-table .time-cell .time-slot-grid {
	display: flex;
	flex-direction: column;
	gap: 0;
	height: 40px;
	pointer-events: none;
	width: 100%;
	justify-content: flex-start;
	padding: 0;
	margin: 0;
	box-sizing: border-box;
}

.register-col {
	background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
	min-width: 280px;
}

.register-cell {
	vertical-align: top !important;
	background: #f7fafc;
}

/* 登録フォームコンテナ */
.register-forms-container {
	display: flex;
	flex-direction: column;
	gap: 0;
	width: 100%;
}

/* 出勤場所セクション */
.room-section {
	display: flex;
	flex-direction: column;
	gap: 0;
	margin-bottom: 4px;
}

.room-section:last-child {
	margin-bottom: 0;
}

.room-header {
	/* 通常の配置（絶対配置を解除） */
}

.register-form-row {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	gap: 4px;
	align-items: center;
	justify-content: flex-start;
	height: 40px;
	min-height: 40px;
	max-height: 40px;
	padding: 0 4px;
	margin: 0;
	box-sizing: border-box;
}

.register-form-row select {
	padding: 6px 10px;
	font-size: 12px;
	border: 2px solid #e2e8f0;
	border-radius: 8px;
	background: white;
	width: auto;
	min-width: 120px;
	flex-shrink: 0;
	height: 36px;
	box-sizing: border-box;
	transition: all 0.3s ease;
}

.register-form-row select:focus {
	outline: none;
	border-color: #2a5298;
	box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.1);
}

.add-therapist-btn {
	padding: 4px 10px;
	font-size: 16px;
	font-weight: bold;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	color: white;
	border: none;
	border-radius: 8px;
	cursor: pointer;
	min-width: 32px;
	height: 36px;
	line-height: 1;
	box-sizing: border-box;
	transition: all 0.3s ease;
	box-shadow: 0 2px 8px rgba(30, 60, 114, 0.3);
	flex-shrink: 0;
}

.add-therapist-btn:hover {
	transform: scale(1.05);
	box-shadow: 0 4px 12px rgba(30, 60, 114, 0.4);
}

.delete-therapist-btn {
	padding: 4px 10px;
	font-size: 16px;
	font-weight: bold;
	background: linear-gradient(135deg, #fc5c7d 0%, #e74c3c 100%);
	color: white;
	border: none;
	border-radius: 8px;
	cursor: pointer;
	min-width: 32px;
	height: 36px;
	line-height: 1;
	box-sizing: border-box;
	transition: all 0.3s ease;
	box-shadow: 0 2px 8px rgba(231, 76, 60, 0.3);
	flex-shrink: 0;
}

.delete-therapist-btn:hover {
	transform: scale(1.05);
	box-shadow: 0 4px 12px rgba(231, 76, 60, 0.4);
}

.register-btn {
	padding: 6px 14px;
	font-size: 12px;
	background: linear-gradient(135deg, #48bb78 0%, #38a169 100%);
	color: white;
	border: none;
	border-radius: 8px;
	cursor: pointer;
	margin: 0;
	white-space: nowrap;
	flex-shrink: 0;
	height: 36px;
	box-sizing: border-box;
	font-weight: 600;
	transition: all 0.3s ease;
	box-shadow: 0 2px 8px rgba(72, 187, 120, 0.3);
}

.register-btn:hover {
	transform: scale(1.05);
	box-shadow: 0 4px 12px rgba(72, 187, 120, 0.4);
}

.submit-shift-entry {
	display: flex;
	gap: 8px;
	align-items: center;
	padding: 12px;
	background: white;
	border-radius: 10px;
	border: 2px solid #e2e8f0;
}

.submit-shift-entry select {
	flex: 1;
	padding: 8px 12px;
	border: 2px solid #e2e8f0;
	border-radius: 8px;
	font-size: 14px;
	background: white;
	transition: all 0.3s ease;
}

.submit-shift-entry select:focus {
	outline: none;
	border-color: #2a5298;
	box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.1);
}

.remove-submit-shift-btn {
	padding: 8px 16px;
	background: linear-gradient(135deg, #fc5c7d 0%, #e74c3c 100%);
	color: white;
	border: none;
	border-radius: 8px;
	cursor: pointer;
	font-size: 12px;
	font-weight: 600;
	transition: all 0.3s ease;
	box-shadow: 0 2px 8px rgba(231, 76, 60, 0.3);
}

.remove-submit-shift-btn:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px rgba(231, 76, 60, 0.4);
}

.add-submit-shift-btn {
	width: 100%;
	padding: 12px;
	background: #f7fafc;
	color: #2a5298;
	border: 2px dashed #cbd5e0;
	border-radius: 10px;
	cursor: pointer;
	margin-top: 8px;
	font-weight: 600;
	transition: all 0.3s ease;
}

.add-submit-shift-btn:hover {
	background: rgba(30, 60, 114, 0.1);
	border-color: #2a5298;
}

.submit-shift-day {
	border: 2px solid #e2e8f0;
	border-radius: 12px;
	padding: 16px;
	background: white;
	transition: all 0.3s ease;
}

.submit-shift-day:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 16px rgba(30, 60, 114, 0.15);
	border-color: #2a5298;
}

.submit-shift-day-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 16px;
	padding-bottom: 12px;
	border-bottom: 2px solid #e2e8f0;
}

.submit-shift-date {
	font-size: 16px;
	font-weight: 700;
	color: #2d3748;
}

.submit-shift-day-of-week {
	font-size: 14px;
	font-weight: 700;
	color: #718096;
}

.submit-actions {
	display: flex;
	justify-content: flex-end;
	margin-top: 24px;
}

.submitted-therapist-section {
	border: 2px solid #e2e8f0;
	border-radius: 12px;
	padding: 20px;
	background: white;
	transition: all 0.3s ease;
}

.submitted-therapist-section:hover {
	box-shadow: 0 4px 16px rgba(30, 60, 114, 0.1);
}

.submitted-therapist-section h3 {
	margin: 0 0 16px 0;
	padding-bottom: 12px;
	border-bottom: 3px solid;
	border-image: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%) 1;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	font-size: 18px;
	font-weight: 700;
}

#roomList {
	list-style: none;
	padding: 0;
	margin: 16px 0 0 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
	align-items: flex-start;
}

#roomList li {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	width: 100%;
	text-align: left;
	padding: 16px;
	background: white;
	border-radius: 10px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
	transition: all 0.3s ease;
}

#roomList li:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 16px rgba(30, 60, 114, 0.15);
}

.calendar-container {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: 16px;
}

.calendar-day-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 12px;
	padding-bottom: 10px;
	border-bottom: 2px solid #e2e8f0;
}

.calendar-date {
	font-size: 16px;
	font-weight: 700;
	color: #2d3748;
}

.calendar-day-of-week {
	font-size: 14px;
	font-weight: 700;
	color: #718096;
}

.calendar-shift-empty {
	color: #a0aec0;
	font-size: 13px;
	text-align: center;
	padding: 12px 0;
	font-style: italic;
}

.calendar-shifts {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.calendar-shift-item {
	background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
	border-radius: 10px;
	padding: 12px;
	transition: all 0.3s ease;
	border-left: 4px solid #2a5298;
}

.calendar-shift-item:hover {
	background: rgba(30, 60, 114, 0.1);
	transform: translateX(4px);
}

.calendar-shift-therapist {
	font-size: 15px;
	font-weight: 700;
	color: #2d3748;
	margin-bottom: 6px;
}

.calendar-shift-room {
	font-size: 13px;
	color: #718096;
	margin-bottom: 4px;
}

.calendar-shift-time {
	font-size: 12px;
	color: #a0aec0;
}

/* ログイン画面 */
.login-box {
	max-width: 400px;
	margin: 100px auto;
	background: white;
	padding: 40px;
	border-radius: 16px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
}

.login-box h1 {
	text-align: center;
	margin-bottom: 32px;
	font-size: 28px;
	font-weight: 700;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

.login-box label {
	display: block;
	margin-bottom: 8px;
	font-weight: 600;
	color: #2d3748;
}

.login-box input,
.login-box select {
	width: 100%;
	padding: 12px 16px;
	margin-bottom: 16px;
	border: 2px solid #e2e8f0;
	border-radius: 10px;
	font-size: 14px;
	font-family: inherit;
	transition: all 0.3s ease;
	box-sizing: border-box;
}

.login-box input:focus,
.login-box select:focus {
	outline: none;
	border-color: #2a5298;
	box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.1);
}

.login-box button {
	width: 100%;
	padding: 14px;
	border: none;
	border-radius: 10px;
	background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
	color: white;
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
	transition: all 0.3s ease;
	box-shadow: 0 4px 15px rgba(30, 60, 114, 0.4);
}

.login-box button:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 20px rgba(30, 60, 114, 0.5);
}

/* 一括登録セクション */
.bulk-import-section {
	background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
	border-radius: 12px;
	padding: 20px;
	margin-bottom: 24px;
}

.bulk-import-section h3 {
	margin: 0 0 8px 0;
	font-size: 16px;
	font-weight: 700;
	color: #2d3748;
}

.bulk-import-form {
	display: flex;
	gap: 12px;
	align-items: center;
	margin-bottom: 8px;
}

.bulk-url-input {
	flex: 1;
	padding: 10px 14px;
	border: 2px solid #e2e8f0;
	border-radius: 8px;
	font-size: 14px;
	transition: all 0.3s ease;
}

.bulk-url-input:focus {
	outline: none;
	border-color: #2a5298;
	box-shadow: 0 0 0 3px rgba(30, 60, 114, 0.1);
}

.bulk-import-note {
	font-size: 12px !important;
	color: #718096 !important;
	margin: 0 !important;
}

/* 店舗名設定セクション */
.store-name-section {
	margin-bottom: 8px;
}

.store-name-section h3 {
	font-size: 16px;
	font-weight: 600;
	color: #2d3748;
	margin: 0 0 8px 0;
}

.store-name-form {
	background: #f8fafc;
	border-radius: 8px;
	padding: 16px;
	border: 1px solid #e2e8f0;
}

.store-name-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	margin-bottom: 12px;
}

.store-name-row .form-field label {
	display: block;
	font-size: 13px;
	font-weight: 600;
	color: #4a5568;
	margin-bottom: 6px;
}

.store-name-row .form-field input {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid #e2e8f0;
	border-radius: 6px;
	font-size: 14px;
	transition: border-color 0.2s;
}

.store-name-row .form-field input:focus {
	outline: none;
	border-color: #3182ce;
	box-shadow: 0 0 0 3px rgba(49, 130, 206, 0.1);
}

.store-name-row .required-hint {
	color: #e53e3e;
	font-weight: normal;
}

.store-name-actions {
	display: flex;
	align-items: center;
	gap: 12px;
}

.store-name-actions .primary-button {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.save-status {
	font-size: 13px;
	color: #38a169;
}

.save-status.error {
	color: #e53e3e;
}

@media (max-width: 768px) {
	.store-name-row {
		grid-template-columns: 1fr;
	}
}

.bulk-extract-result {
	margin-top: 16px;
	background: white;
	border-radius: 10px;
	padding: 16px;
	border: 2px solid #e2e8f0;
}

.bulk-result-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 12px;
	padding-bottom: 12px;
	border-bottom: 1px solid #e2e8f0;
	font-weight: 600;
	color: #2d3748;
}

.bulk-result-actions {
	display: flex;
	gap: 12px;
}

.text-button {
	background: transparent;
	border: none;
	color: #2a5298;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	padding: 4px 8px;
	border-radius: 4px;
	transition: all 0.2s ease;
}

.text-button:hover {
	background: rgba(42, 82, 152, 0.1);
}

/* ローマ字変換注意書き */
.bulk-romaji-notice {
	background: #fffbeb;
	border: 1px solid #f59e0b;
	border-radius: 8px;
	padding: 12px 16px;
	margin-bottom: 16px;
	font-size: 13px;
	color: #92400e;
}

.bulk-romaji-notice p {
	margin: 0 0 4px 0;
}

.bulk-romaji-notice p:last-child {
	margin-bottom: 0;
}

/* 一括登録テーブル */
.bulk-edit-table-wrapper {
	max-height: 400px;
	overflow-y: auto;
	border: 1px solid #e2e8f0;
	border-radius: 8px;
	margin-bottom: 16px;
}

.bulk-edit-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
}

.bulk-edit-table thead {
	position: sticky;
	top: 0;
	background: #f7fafc;
	z-index: 1;
}

.bulk-edit-table th {
	padding: 12px 8px;
	text-align: left;
	font-weight: 600;
	color: #4a5568;
	border-bottom: 2px solid #e2e8f0;
}

.bulk-edit-table th small {
	font-weight: normal;
	color: #718096;
}

.bulk-edit-table td {
	padding: 8px;
	border-bottom: 1px solid #e2e8f0;
	vertical-align: middle;
}

.bulk-edit-table tbody tr:hover {
	background: #f7fafc;
}

.bulk-edit-table tbody tr.selected {
	background: #ebf8ff;
}

.bulk-edit-table tbody tr.unselected {
	opacity: 0.5;
}

.bulk-edit-table .col-checkbox {
	width: 40px;
	text-align: center;
}

.bulk-edit-table .col-name {
	width: 30%;
}

.bulk-edit-table .col-username {
	width: 35%;
}

.bulk-edit-table .col-password {
	width: 25%;
}

.bulk-edit-table input[type="checkbox"] {
	width: 18px;
	height: 18px;
	accent-color: #2a5298;
	cursor: pointer;
}

.bulk-edit-table input[type="text"] {
	width: 100%;
	padding: 6px 10px;
	border: 1px solid #e2e8f0;
	border-radius: 4px;
	font-size: 13px;
	transition: border-color 0.2s;
}

.bulk-edit-table input[type="text"]:focus {
	outline: none;
	border-color: #3182ce;
	box-shadow: 0 0 0 2px rgba(49, 130, 206, 0.2);
}

.bulk-edit-table input[type="text"].invalid {
	border-color: #e53e3e;
	background: #fff5f5;
}

.bulk-edit-table input[type="text"].username-input {
	font-family: 'Monaco', 'Consolas', monospace;
}

/* 旧スタイル（互換性のため残す） */
.bulk-names-list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap: 8px;
	max-height: 300px;
	overflow-y: auto;
	margin-bottom: 16px;
}

.bulk-name-item {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 12px;
	background: #f7fafc;
	border-radius: 6px;
	font-size: 14px;
	cursor: pointer;
	transition: all 0.2s ease;
}

.bulk-name-item:hover {
	background: #edf2f7;
}

.bulk-name-item input[type="checkbox"] {
	width: 16px;
	height: 16px;
	accent-color: #2a5298;
	cursor: pointer;
}

.bulk-name-item.selected {
	background: #ebf8ff;
	border: 1px solid #3182ce;
}

.bulk-import-actions {
	display: flex;
	gap: 12px;
	justify-content: flex-end;
}

.form-divider {
	height: 1px;
	background: linear-gradient(90deg, transparent, #e2e8f0, transparent);
	margin: 24px 0;
}

/* スタッフ一覧セクション */
.staff-list-section {
	margin-top: 8px;
}

.staff-list-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 16px;
}

.staff-list-header h3 {
	margin: 0;
	font-size: 16px;
	font-weight: 700;
	color: #2d3748;
}

.staff-list-actions {
	display: flex;
	gap: 12px;
	align-items: center;
}

.select-all-label {
	display: flex;
	align-items: center;
	gap: 6px;
	cursor: pointer;
	font-size: 14px;
	font-weight: 600;
	color: #4a5568;
}

.select-all-label input[type="checkbox"] {
	width: 16px;
	height: 16px;
	accent-color: #2a5298;
	cursor: pointer;
}

/* スタッフリストのチェックボックス（常に表示） */
.therapist-list .therapist-item {
	display: flex;
	align-items: flex-start;
	gap: 12px;
}

.therapist-checkbox {
	width: 20px;
	height: 20px;
	accent-color: #e53e3e;
	cursor: pointer;
	margin-top: 4px;
	flex-shrink: 0;
}

.therapist-item.selected-for-delete {
	background: #fff5f5;
	border-color: #feb2b2;
}

/* ========================================
   スマートフォン向けレスポンシブ対応
======================================== */

/* タブレット（768px以下） */
@media (max-width: 768px) {
	body {
		padding: 10px;
	}

	/* ヘッダー */
	header {
		padding: 16px;
		flex-direction: column;
		gap: 12px;
		margin-bottom: 16px;
		border-radius: 12px;
	}

	header h1 {
		font-size: 20px;
		text-align: center;
	}

	header button {
		width: 100%;
		padding: 10px 16px;
	}

	/* メインコンテンツ */
	main {
		padding: 10px 0 40px;
	}

	/* タブ */
	.tab-header {
		gap: 4px;
		padding: 6px;
		border-radius: 12px;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.tab-header::-webkit-scrollbar {
		display: none;
	}

	.tab-button {
		padding: 10px 12px;
		font-size: 12px;
		white-space: nowrap;
		flex-shrink: 0;
	}

	.tab-content {
		padding: 16px;
		border-radius: 12px;
	}

	/* カード */
	.pane-card {
		padding: 16px;
		border-radius: 10px;
		margin-bottom: 20px;
	}

	.pane-card h2 {
		font-size: 18px;
		margin-bottom: 16px;
	}

	/* セクションタイトル */
	section h2 {
		font-size: 18px;
	}

	/* フォーム要素 */
	.pane-card input[type="text"],
	.pane-card input[type="password"],
	.pane-card input[type="date"],
	.pane-card textarea,
	.pane-card select {
		padding: 10px 12px;
		font-size: 16px; /* iOS ズーム防止 */
	}

	/* ボタン */
	.pane-card button,
	.primary-button {
		padding: 10px 16px;
		font-size: 14px;
		width: 100%;
	}

	.danger-button {
		padding: 10px 16px;
		font-size: 14px;
	}

	/* 一括登録セクション */
	.bulk-import-section {
		padding: 16px;
		border-radius: 10px;
	}

	.bulk-import-section h3 {
		font-size: 14px;
	}

	.bulk-import-form {
		flex-direction: column;
		gap: 10px;
	}

	.bulk-import-form .primary-button {
		width: 100%;
	}

	.bulk-url-input {
		width: 100%;
		font-size: 16px;
	}

	.bulk-names-list {
		grid-template-columns: repeat(2, 1fr);
		gap: 6px;
		max-height: 250px;
	}

	.bulk-name-item {
		padding: 8px 10px;
		font-size: 13px;
	}

	.bulk-result-header {
		flex-direction: column;
		gap: 10px;
		align-items: flex-start;
	}

	.bulk-import-actions {
		flex-direction: column;
		gap: 8px;
	}

	.bulk-import-actions button {
		width: 100%;
	}

	/* 個別登録セクション */
	.individual-register-section h3 {
		font-size: 16px;
	}

	.individual-form-card {
		padding: 16px;
		border-radius: 12px;
	}

	.individual-form-row {
		grid-template-columns: 1fr;
		gap: 12px;
		margin-bottom: 12px;
	}

	.form-field label {
		font-size: 12px;
	}

	.form-field input,
	.form-field textarea {
		padding: 10px 12px;
		font-size: 16px;
		border-radius: 8px;
	}

	.password-input-wrapper {
		flex-direction: column;
		gap: 8px;
	}

	.generate-password-btn {
		width: 100%;
		height: 40px;
		justify-content: center;
	}

	.individual-form-actions {
		padding-top: 12px;
	}

	.individual-form-actions .primary-button {
		width: 100%;
		padding: 12px 16px;
	}

	/* スタッフ一覧 */
	.staff-list-header {
		flex-direction: column;
		gap: 12px;
		align-items: flex-start;
	}

	.staff-list-actions {
		width: 100%;
		flex-direction: column;
		gap: 8px;
	}

	.staff-list-actions .danger-button {
		width: 100%;
	}

	.therapist-list {
		grid-template-columns: 1fr;
		gap: 10px;
	}

	.therapist-item {
		padding: 12px;
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
	}

	.therapist-item-content {
		width: 100%;
	}

	.therapist-item-main {
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
	}

	.therapist-item-actions {
		width: 100%;
		justify-content: flex-end;
	}

	.therapist-checkbox {
		position: absolute;
		top: 12px;
		right: 12px;
	}

	.therapist-item {
		position: relative;
		padding-right: 40px;
	}

	/* 出勤場所フォーム */
	.room-form-row {
		flex-direction: column;
		gap: 10px;
	}

	#roomName {
		width: 100%;
	}

	.color-picker-label {
		width: 100%;
		justify-content: flex-start;
	}

	/* お知らせ */
	.announcement-form {
		gap: 12px;
	}

	.announcement-recipients {
		flex-direction: column;
		gap: 10px;
	}

	.announcement-item {
		padding: 16px;
	}

	.announcement-item-header {
		flex-direction: column;
		gap: 8px;
		align-items: flex-start;
	}

	/* 設定 */
	.settings-group {
		padding: 16px;
	}

	.settings-label {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}

	.settings-label select {
		width: 100%;
		min-width: auto;
	}

	.settings-form input {
		max-width: 100%;
	}

	.settings-accordion-header {
		padding: 16px;
		font-size: 16px;
	}

	.settings-accordion-content {
		padding: 16px;
	}

	/* シフト関連 */
	.month-nav {
		padding: 16px;
	}

	.month-nav-main {
		flex-wrap: wrap;
		justify-content: center;
	}

	.month-nav-main button {
		padding: 8px 14px;
		font-size: 13px;
	}

	.month-nav-settings,
	.month-nav-actions {
		flex-direction: column;
		width: 100%;
		height: auto;
		gap: 8px;
	}

	.view-mode-selector,
	.view-start-selector {
		flex-direction: column;
		width: 100%;
		height: auto;
		align-items: flex-start;
	}

	.view-mode-selector select,
	.view-start-selector input[type="date"] {
		width: 100%;
	}

	.view-mode-toggle {
		width: 100%;
		display: flex;
		height: auto;
	}

	.view-mode-toggle .view-mode-btn {
		flex: 1;
		height: 36px;
		line-height: 36px;
	}

	.external-sync-group {
		width: 100%;
		flex-direction: column;
		height: auto;
		padding: 10px;
	}

	.external-site-select {
		width: 100%;
		height: 36px;
	}

	.secondary-button {
		width: 100%;
		height: 36px;
	}

	/* ガントチャート */
	#gantt {
		border-radius: 10px;
	}

	table.gantt-table {
		min-width: 600px;
	}

	/* カレンダー */
	#calendar {
		padding: 16px;
	}

	.calendar-container {
		grid-template-columns: 1fr;
	}

	.calendar-day {
		padding: 14px;
	}

	/* 提出シフト */
	.submit-shifts-controls,
	.submitted-shifts-controls {
		padding: 16px;
	}

	.submit-period-info {
		flex-direction: column;
		align-items: flex-start;
		gap: 4px;
	}

	.submit-shift-entry {
		flex-direction: column;
		gap: 10px;
	}

	.submit-shift-entry select {
		width: 100%;
	}

	.submit-shift-day {
		padding: 14px;
	}

	.submit-actions {
		flex-direction: column;
	}

	.submit-actions button {
		width: 100%;
	}

	/* テーブル */
	.submitted-shifts-table,
	.change-logs-table,
	.my-submitted-shifts-table {
		font-size: 12px;
	}

	.submitted-shifts-table th,
	.submitted-shifts-table td,
	.change-logs-table th,
	.change-logs-table td,
	.my-submitted-shifts-table th,
	.my-submitted-shifts-table td {
		padding: 8px 6px;
	}

	/* 登録フォーム（ガントチャート内） */
	.register-form-row {
		flex-direction: column;
		height: auto;
		min-height: auto;
		max-height: none;
		padding: 8px;
		gap: 8px;
	}

	.register-form-row select {
		width: 100%;
	}

	/* スタッフタブ */
	.staff-tabs {
		gap: 4px;
		padding: 6px;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}

	.staff-tab-btn {
		padding: 10px 14px;
		font-size: 13px;
		white-space: nowrap;
		flex-shrink: 0;
	}

	.staff-tab-pane {
		padding: 16px;
		border-radius: 12px;
	}

	/* ログイン画面 */
	.login-box {
		margin: 40px auto;
		padding: 24px;
		max-width: calc(100% - 20px);
	}

	.login-box h1 {
		font-size: 22px;
		margin-bottom: 24px;
	}

	.login-box input,
	.login-box select {
		font-size: 16px;
		padding: 12px;
	}

	/* 操作マニュアル */
	.manual-item summary {
		padding: 14px 16px;
		font-size: 14px;
	}

	.manual-content {
		padding: 0 16px 16px;
		font-size: 13px;
	}
}

/* スマートフォン（480px以下） */
@media (max-width: 480px) {
	body {
		padding: 8px;
	}

	header {
		padding: 14px;
		border-radius: 10px;
	}

	header h1 {
		font-size: 18px;
	}

	.tab-header {
		padding: 4px;
	}

	.tab-button {
		padding: 8px 10px;
		font-size: 11px;
	}

	.tab-content {
		padding: 12px;
	}

	.pane-card {
		padding: 12px;
	}

	.pane-card h2 {
		font-size: 16px;
	}

	.bulk-names-list {
		grid-template-columns: 1fr;
	}

	.individual-form-card {
		padding: 12px;
	}

	.therapist-item {
		padding: 10px;
	}

	.therapist-name {
		font-size: 14px;
	}

	.therapist-password {
		font-size: 11px;
	}

	.announcement-item {
		padding: 12px;
	}

	.settings-accordion-header {
		padding: 14px;
		font-size: 14px;
	}

	.month-nav {
		padding: 12px;
	}

	.month-nav-main span {
		font-size: 16px;
	}

	.calendar-day {
		padding: 12px;
	}

	.login-box {
		padding: 20px;
		margin: 20px auto;
	}

	.login-box h1 {
		font-size: 20px;
	}
}

/* ==================== */
/* インライン編集スタイル */
/* ==================== */

/* 提出済みシフト編集用セレクトボックス */
.submitted-shifts-table .edit-room-select,
.submitted-shifts-table .edit-start-select,
.submitted-shifts-table .edit-end-select {
	width: 100%;
	padding: 8px 10px;
	border: 2px solid #e2e8f0;
	border-radius: 6px;
	font-size: 14px;
	background: white;
	cursor: pointer;
	transition: all 0.2s ease;
}

.submitted-shifts-table .edit-room-select:hover,
.submitted-shifts-table .edit-start-select:hover,
.submitted-shifts-table .edit-end-select:hover {
	border-color: #667eea;
}

.submitted-shifts-table .edit-room-select:focus,
.submitted-shifts-table .edit-start-select:focus,
.submitted-shifts-table .edit-end-select:focus {
	outline: none;
	border-color: #667eea;
	box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.2);
}

/* 変更があった場合のハイライト */
.submitted-shifts-table select:not([data-original=""]):not(:disabled) {
	background-color: #fefce8;
}

/* 更新ボタン */
.submitted-shifts-table .update-submitted-shift-btn {
	background: #e2e8f0;
	color: #718096;
	border: none;
	padding: 8px 16px;
	border-radius: 6px;
	font-size: 13px;
	font-weight: 600;
	cursor: not-allowed;
	transition: all 0.2s ease;
	margin-right: 6px;
}

.submitted-shifts-table .update-submitted-shift-btn:not(:disabled) {
	background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
	color: white;
	cursor: pointer;
	box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
}

.submitted-shifts-table .update-submitted-shift-btn:not(:disabled):hover {
	transform: translateY(-1px);
	box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}

.submitted-shifts-table .update-submitted-shift-btn.has-changes {
	animation: pulse-highlight 1s ease-in-out infinite;
}

@keyframes pulse-highlight {
	0%, 100% {
		box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
	}
	50% {
		box-shadow: 0 2px 16px rgba(102, 126, 234, 0.6);
	}
}

/* 削除ボタン */
.submitted-shifts-table .delete-submitted-shift-btn {
	background: #fee2e2;
	color: #dc2626;
	border: none;
	padding: 8px 16px;
	border-radius: 6px;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.2s ease;
}

.submitted-shifts-table .delete-submitted-shift-btn:hover {
	background: #dc2626;
	color: white;
}

/* 提出済みシフトテーブルの調整 */
.submitted-shifts-table td {
	padding: 10px 8px;
	vertical-align: middle;
}

.submitted-shifts-table .action-buttons {
	white-space: nowrap;
	min-width: 150px;
}

/* モバイル対応 */
@media (max-width: 768px) {
	.submitted-shifts-table .edit-room-select,
	.submitted-shifts-table .edit-start-select,
	.submitted-shifts-table .edit-end-select {
		padding: 6px 8px;
		font-size: 13px;
	}

	.submitted-shifts-table .update-submitted-shift-btn,
	.submitted-shifts-table .delete-submitted-shift-btn {
		padding: 6px 10px;
		font-size: 12px;
	}

	.submitted-shifts-table .action-buttons {
		min-width: auto;
	}
}
