/* :rootでカラー変数を定義 */
:root {
    --primary-color: #00bfff; /* アクセントカラー: 水色 */
    --background-color: #0a0f1a; /* 背景色: 深い紺色 */
    --background-image: url('../image/wallpaper_lightblue.png'); /* デフォルト背景画像 */
    --background-color-alpha-80: rgba(var(--background-color), 0.8);
    --background-color-alpha-70: rgba(var(--background-color), 0.7);
    --background-color-alpha-30: rgba(var(--background-color), 0.3);
    --text-color: #e0e0e0; /* テキストカラー: 明るいグレー (JSで上書きされます) */
}

/* 基本的なスタイルリセット */
body, h1, h2, p, ul, li, table, form {
    margin: 0;
    padding: 0;
}

/* すべての要素でpaddingとborderを幅と高さに含めるようにする */
*, *::before, *::after {
    box-sizing: border-box;
}

body:not(.iframe-body) {
    font-family: 'Orbitron', sans-serif;
    background-color: var(--background-color);
    background-image: var(--background-image); /* 背景画像を設定 */
    background-size: cover; /* 画面全体を覆うように拡大縮小 */
    background-position: center; /* 画像を中央に配置 */
    background-attachment: fixed; /* スクロールしても背景を固定 */ 
    color: var(--text-color); /* JSで設定されるテキストカラーを使用 */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    display: grid;
    grid-template-areas: "header" "main";
    grid-template-columns: 1fr;
    grid-template-rows: 60px 1fr; /* ヘッダーとメインコンテンツの行サイズ */
    height: 100vh;
}

/* iframe内のbodyにはグリッドレイアウトを適用しない */
.iframe-body {
    font-family: 'Orbitron', sans-serif;
    background-color: transparent; /* 親の背景を継承 */
    color: var(--text-color); /* JSで設定されるテキストカラーを使用 */
}

/*
 * =================================================
 * レイアウト: ヘッダー, サイドバー, メインコンテンツ
 * =================================================
 */
.header {
    grid-area: header;
    background-color: var(--background-color-alpha-80); /* 半透明の背景 */
    border-bottom: 1px solid var(--primary-color);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 2.5rem;
    padding-left: 1.5rem; /* ハンバーガーボタンのスペースを確保 */
    backdrop-filter: blur(5px);
    z-index: 10;
}

.header-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--primary-color);
    text-shadow: 0 0 5px var(--primary-color);
}

.user-info {
    font-size: 0.9rem;
    color: var(--text-color);
}

.sidebar {
    position: fixed;
    top: 60px; /* ヘッダーの高さ */
    left: 0;
    height: calc(100vh - 60px);
    width: 250px;
    background-color: var(--background-color);
    border-right: 1px solid var(--primary-color);
    color: var(--text-color);
    padding: 2rem 0;
    overflow-y: auto;
    z-index: 20;
    transform: translateX(-100%);
    transition: transform 0.3s ease-in-out;
}

.main-content {
    grid-area: main;
    padding: 1rem 1.5rem;
    overflow-y: auto; /* コンテンツがはみ出す場合はスクロールさせる */
    background-color: var(--background-color-alpha-30); /* 背景の透明度を上げる */
    transition: margin-left 0.3s ease-in-out;
    box-sizing: border-box; /* paddingを含めて高さを計算する */
}

.sidebar-open .sidebar {
    transform: translateX(0);
}

/*
 * =================================================
 * ナビゲーションメニュー
 * =================================================
 */
.nav-menu {
    list-style: none;
}

.nav-item-header {
    padding: 0.5rem 1.5rem 0.5rem;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--primary-color);
    text-transform: uppercase;
    margin-top: 1rem;
    letter-spacing: 0.5px;
}

.nav-item-header:first-child {
    margin-top: 0;
}

.nav-item a {
    display: block;
    padding: 0.9rem 2.5rem;
    color: var(--text-color);
    text-decoration: none;
    transition: all 0.2s ease-in-out;
    border: 1px solid transparent;
    border-width: 1px 0;
    display: flex; /* アイコンとテキストの配置のため */
    align-items: center;
}

.nav-item a i {
    margin-right: 1rem;
}

.nav-item a:hover, .nav-item.active a {
    background-color: rgba(0, 191, 255, 0.1); /* これはアクセントカラーのアルファ版なので固定 */
    color: var(--primary-color);
    border-color: var(--primary-color);
}

/*
 * =================================================
 * コンテンツセクションとツールバー
 * =================================================
 */
.content-section h2 {
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: 2rem;
    color: var(--primary-color);
    display: flex;
    align-items: center;
    position: relative;
    padding-bottom: 1rem;
    border-bottom: 2px solid var(--primary-color);    
    text-shadow: 0 0 8px rgba(var(--primary-color), 0.7);
}

.content-section h2::before {
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    margin-right: 1rem;
    font-size: 1.8rem;
}

.content-title-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid var(--primary-color);
    margin-bottom: 20px; /* 既存のh2のマージンに合わせる */
}

/* 既存の .content-section h2 のスタイルを調整 */
.content-section h2 {
    /* 下線とマージンを親要素(.content-title-container)に移動したためリセット */
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0; /* 必要に応じて調整 */
}
.content-title-logo {
    display: inline-block;
    height: 96px; /* PC向けに少し大きめのサイズ */
    width: 64.245px;
    background-image: var(--logo-image);
    background-size: contain;
    background-position: center;
    background-repeat: no-repeat;
    vertical-align: middle; /* テキストとの垂直位置を調整 */
}

.toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.5rem;
}

.toolbar input[type="search"] {
    padding: 0.75rem;
    border: 1px solid var(--primary-color);
    background-color: var(--background-color);
    color: var(--text-color);
    font-size: 1rem;
    min-width: 250px;
}

/*
 * =================================================
 * フォーム関連のスタイル
 * =================================================
 */

/* フォーム要素をグリッドレイアウトで配置するためのコンテナ */
.form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); /* レスポンシブなカラム */
    gap: 1rem 1.5rem; /* 行と列の間のスペース */
    margin-bottom: 1.5rem;
}

/* ラベルと入力フィールドのグループ */
.form-group {
    display: flex;
    flex-direction: column;
}

/* グリッド内で1つの要素を全幅に広げる */
.form-group.full-width {
    grid-column: 1 / -1;
}

.form-group label {
    margin-bottom: 0.5rem;
    font-weight: 600;
    font-size: 1rem;
    color: var(--primary-color);
}

.form-group input[type="text"],
.form-group input[type="password"],
.form-group input[type="number"],
.form-group input[type="date"],
.form-group select,
.form-group textarea {
    padding: 0.75rem;
    border: 1px solid var(--primary-color);
    border-radius: 0; /* 角丸をなくす */
    background-color: var(--background-color);
    color: var(--text-color); /* JSで設定されるテキストカラーを使用 */
    font-size: 1rem;
    width: 100%;
    box-sizing: border-box; /* paddingを含めて幅を100%にする */
}

/* ブラウザのオートフィル時の背景色を強制的に上書きする */
input:-webkit-autofill,
input:-webkit-autofill:hover, /* ホバー時のスタイル */
input:-webkit-autofill:focus, /* フォーカス時のスタイル */
input:-webkit-autofill:active { /* アクティブ時のスタイル */    
    -webkit-text-fill-color: var(--text-color); /* テキストの色を維持 */
    -webkit-box-shadow: 0 0 0px 1000px var(--background-color-alpha-70) inset; /* 背景色を上書き */
    box-shadow: 0 0 0px 1000px var(--background-color-alpha-70) inset;
    transition: background-color 5000s ease-in-out 0s; /* 背景色の変更を遅延させる */ 
    caret-color: var(--text-color); /* カーソルの色を維持 */
}

.form-group textarea {
    resize: vertical;
    min-height: 80px;
}

/* フォーム入力欄の下に補足情報を表示するためのスタイル */
.form-info-text {
    font-size: 0.85rem;
    color: #6c757d;
    margin-top: 0.25rem;
}

/* ツールバー内のチェックボックス用スタイル */
.toolbar .form-check {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.toolbar .form-check label {
    font-size: 0.9rem;
    cursor: pointer;
}

/* 必須項目を示すアスタリスク */
.required {
    color: #dc3545;
    margin-left: 0.25rem;
}


/*
 * =================================================
 * オートコンプリート
 * =================================================
 */
.form-group {
    position: relative; /* オートコンプリートリストの基準点とする */
}

.autocomplete-suggestions {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: #fff;
    border: 1px solid #ccc;
    border-top: none;
    max-height: 200px;
    overflow-y: auto;
    z-index: 100;
}

.suggestion-item {
    padding: 0.6rem;
    cursor: pointer;
}

.suggestion-item:hover {
    background-color: #f0f0f0;
}

/*
 * =================================================
 * ボタン
 * =================================================
 */
.btn {
    display: inline-block;
    font-weight: 400;
    color: #212529;
    text-align: center;
    vertical-align: middle;
    cursor: pointer;
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
    background-color: transparent;
    border: 1px solid var(--primary-color);
    padding: 0.6rem 1.2rem;
    line-height: 1.5;
    border-radius: 0;
    transition: all 0.2s ease;
    color: var(--primary-color);
}

.btn:disabled {
    opacity: 0.65;
    cursor: not-allowed;
    border-color: #555; /* 無効時は固定色 */
    color: #555;
}

.btn-primary {
    background-color: var(--primary-color);
    color: #0a0f1a;
    font-weight: 700;
}

.btn-primary:hover {
    /* --primary-colorを基準に少し明るくする */
    filter: brightness(1.1);
    box-shadow: 0 0 10px var(--primary-color);
}

.btn-secondary {
    color: #495057;
    background-color: #e9ecef;
    border-color: #e9ecef;
}

.btn-secondary:hover {
    background-color: #dee2e6;
    border-color: #dee2e6;
}

.btn-secondary i {
    color: #495057;
}

.btn-danger {
    color: #fff;
    background-color: #dc3545;
    border-color: #dc3545;
}

.btn-danger:hover {
    color: #fff;
    background-color: #c82333;
    border-color: #bd2130;
}
/* アイコンのみのボタン内のアイコンサイズを調整 */
.btn > i.fas, .btn > i.far, .btn > i.fab {
    font-size: 1.8em; /* アイコンのサイズを少し大きくする */
    vertical-align: middle; /* 中央揃えを維持 */
}

/*
 * 出庫指示書作成画面の検索結果テーブルにスクロールバーを適用する
 */
#pl-results-container .table-container {
    max-height: 45vh; /* テーブルの高さを制限 */
    overflow-y: auto; /* 内容がはみ出たらスクロール */
}

#pl-results-container .table-container::-webkit-scrollbar {
    width: 8px;
}
#pl-results-container .table-container::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.2);
}
#pl-results-container .table-container::-webkit-scrollbar-thumb {
    background: var(--primary-color);
}

/*
 * 入庫番号照会画面の検索結果テーブルにスクロールバーを適用する
 */
#receipt-inquiry-result .table-container {
    max-height: 60vh; /* ビューポートの高さに応じて高さを制限 */
    overflow-y: auto; /* 内容がはみ出たらスクロール */
}

#receipt-inquiry-result .table-container::-webkit-scrollbar {
    width: 8px;
}
#receipt-inquiry-result .table-container::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.2);
}
#receipt-inquiry-result .table-container::-webkit-scrollbar-thumb {
    background: var(--primary-color);
}

/*
 * 在庫・棚卸画面の検索結果テーブルにスクロールバーを適用する
 */
#content-location-inventory .table-container {
    max-height: 60vh; /* ビューポートの高さに応じて高さを制限 */
    overflow-y: auto; /* 内容がはみ出たらスクロール */
}

#content-location-inventory .table-container::-webkit-scrollbar {
    width: 8px;
}
#content-location-inventory .table-container::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.2);
}
#content-location-inventory .table-container::-webkit-scrollbar-thumb {
    background: var(--primary-color);
}

/*
 * 入出庫履歴照会画面の検索結果テーブルにスクロールバーを適用する
 */
#content-transaction-history .table-container::-webkit-scrollbar {
    width: 8px;
}
#content-transaction-history .table-container::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.2);
}
#content-transaction-history .table-container::-webkit-scrollbar-thumb {
    background: var(--primary-color);
}

/*
 * 商品マスタ管理画面のテーブルにスクロールバーを適用する
 */
#content-products .table-container::-webkit-scrollbar {
    width: 8px;
}
#content-products .table-container::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.2);
}
#content-products .table-container::-webkit-scrollbar-thumb {
    background: var(--primary-color);
}

/*
 * ロケーションマスタ管理画面のテーブルにスクロールバーを適用する
 */
#content-locations .table-container::-webkit-scrollbar {
    width: 8px;
}
#content-locations .table-container::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.2);
}
#content-locations .table-container::-webkit-scrollbar-thumb {
    background: var(--primary-color);
}

/*
 * ユーザーマスタ管理画面のテーブルにスクロールバーを適用する
 */
#content-users .table-container::-webkit-scrollbar {
    width: 8px;
}
#content-users .table-container::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.2);
}
#content-users .table-container::-webkit-scrollbar-thumb {
    background: var(--primary-color);
}

/*
 * 在庫詳細モーダルのテーブル内「移動」ボタンにスタイルを強制適用する
 */
#location-inventory-detail-modal .data-table .btn {
    color: var(--primary-color);;
    background-color: var(--primary-color);;
    background-color: transparent;
    border-color: var(--primary-color);;
}
#location-inventory-detail-modal .data-table .btn:hover {
    background-color: rgba(0, 191, 255, 0.1);
}

.btn-light {
    color: #212529;
    background-color: #f8f9fa;
    border-color: #f8f9fa;
}

.button-group {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem; /* ボタン間のスペース */
}

.btn-sm {
    padding: 0.25rem 0.5rem;
    font-size: 0.875rem;
    line-height: 1.5;
    border-radius: 0.2rem;
}

/*
 * =================================================
 * テーブル
 * =================================================
 */
.table-container {
    overflow-x: auto;
}

.data-table {
    width: 100%;
    border-collapse: separate; /* 角丸のために separate に変更 */
    border-spacing: 0 1px; /* 行間のスペース */
    background-color: transparent;
}

.data-table th, .data-table td {
    padding: 1.1rem 1.3rem;
    text-align: left;
    border-bottom: 1px solid rgba(0, 191, 255, 0.2); /* これはアクセントカラーのアルファ版なので固定 */
}

.data-table thead th {
    background-color: var(--background-color);
    color: var(--primary-color);
    font-weight: 700;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-bottom: 2px solid var(--primary-color);
}

.data-table tbody tr {
    background-color: var(--background-color-alpha-80);
}

.data-table tbody tr:hover {
    background-color: rgba(0, 191, 255, 0.1); /* これはアクセントカラーのアルファ版なので固定 */
    cursor: pointer;
}

/* クリック可能な行のスタイル */
.clickable-row {
    cursor: pointer;
}

/* 出庫指示画面の検索結果テーブルにスタイルを適用 */
div[id^="shipping-"] .table-container table,
div[id^="shipping-"] table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0 1px;
    background-color: transparent;
}

div[id^="shipping-"] table th,
div[id^="shipping-"] table td {
    padding: 1.1rem 1.3rem;
    text-align: left;
    border-bottom: 1px solid rgba(0, 191, 255, 0.2); /* これはアクセントカラーのアルファ版なので固定 */
}

div[id^="shipping-"] table thead th {
    background-color: var(--background-color);
    color: var(--primary-color);
    font-weight: 700;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-bottom: 2px solid var(--primary-color);;
}

/* テーブル内の入力欄のスタイル */
.data-table input[type="text"],
.data-table input[type="number"],
.data-table input[type="date"] {
    width: 100%;
    padding: 0.5rem; /* テーブルセル内のパディングを少し小さめに */
    background-color: transparent;
    border: 1px solid var(--primary-color);
    color: var(--text-color);
    font-size: 1rem;
    box-sizing: border-box;
    text-align: right; /* 数値は右揃えが見やすい */
    border-radius: 0;
}

/*
 * =================================================
 * その他コンポーネント
 * =================================================
 */
.sync-alert {
    background-color: #ffc107;
    color: #333;
    padding: 0.75rem 1.25rem;
    text-align: center;
}

.results-container {
    margin-top: 1.5rem;
    padding: 1.5rem;
    background-color: rgba(10, 15, 26, 0.8);
    border: 1px solid var(--primary-color);
    border-radius: 0;
}

.results-container h4 {
    margin-top: 0;
    margin-bottom: 1rem;
}

.results-container ul {
    list-style-type: none;
    padding-left: 0;
    max-height: 250px;
    overflow-y: auto;
}

/*
 * =================================================
 * ページネーション
 * =================================================
 */
.pagination {
    display: flex;
    list-style: none;
    padding-left: 0;
    margin: 1.5rem 0;
    justify-content: center;
}

.page-item {
    margin: 0 2px;
}

.page-link {
    display: block;
    padding: 0.6rem 0.9rem;
    color: var(--primary-color);
    background-color: transparent;
    border: 1px solid var(--primary-color);
    text-decoration: none;
    transition: all 0.2s ease;
}

.page-item a.page-link:hover {
    background-color: rgba(0, 191, 255, 0.1); /* これはアクセントカラーのアルファ版なので固定 */
    box-shadow: 0 0 5px var(--primary-color);
}

.page-item.active .page-link {
    background-color: var(--primary-color);
    color: #0a0f1a;
    font-weight: 700;
    pointer-events: none; /* Active page is not clickable */
}

.page-item.disabled .page-link {
    color: #555;
    border-color: #555;
    pointer-events: none;
    cursor: not-allowed;
}
/* ページネーションのアイコン用スタイル */
.page-link i {
    font-size: 0.9em;
    vertical-align: middle;
}


/* ツールバー内のページネーションの余白を調整 */
.toolbar .pagination {
    margin: 0;
}

.hamburger-btn {
    background: none;
    border: none;
    color: var(--primary-color);
    font-size: 1.5rem;
    cursor: pointer;
    padding: 0.5rem;
    margin-right: 1rem;
    display: none; /* デフォルトは非表示 */
}

/* PC表示（グリッドレイアウト適用時）にハンバーガーボタンを表示 */
body:not(.iframe-body) .hamburger-btn {
    display: block;
}

/* サイドバーが開いているとき、メインコンテンツを右にずらす */
body.sidebar-open .main-content {
}

/* サイドバー表示時にメインコンテンツを覆うオーバーレイ */
#main-content-overlay {
    display: none; /* デフォルトでは非表示 */
    position: fixed;
    top: 60px; /* ヘッダーの高さ分下げる */
    left: 0;
    width: 100%;
    height: calc(100vh - 60px);
    background-color: rgba(0, 0, 0, 0.5); /* 半透明の黒 */
    z-index: 19; /* サイドバー(20)とメインコンテンツの間 */
    cursor: pointer;
    transition: background-color 0.3s ease-in-out;
}

body.sidebar-open #main-content-overlay {
    display: block; /* サイドバーが開いているときに表示 */
}


/*
 * =================================================
 * ダッシュボード
 * =================================================
 */
.dashboard-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1.5rem;
    margin-top: 1.5rem;
}

.stat-card {
    background-color: var(--background-color-alpha-80);
    padding: 2rem;
    border: 1px solid var(--primary-color);
    border-radius: 0;
    text-align: center; /* 中央揃えに戻す */
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.stat-title {
    font-size: 0.9rem;
    color: var(--text-color);
    margin-bottom: 0.5rem;
}

.stat-value {
    font-size: 2.5rem;
    font-weight: 600;
    color: var(--primary-color);
    text-shadow: 0 0 10px var(--primary-color);
    line-height: 1.2;
}

.stat-unit {
    font-size: 0.9rem;
    color: #6c757d;
}

.dashboard-recent-activity, .dashboard-warning-list {
    margin-top: 2rem;    
    background-color: var(--background-color-alpha-80);
    padding: 1.5rem;
    border: 1px solid var(--primary-color);
}

.dashboard-recent-activity h3, .dashboard-warning-list h3 {
    margin-top: 0;
    margin-bottom: 1rem;
    color: var(--primary-color);
    font-size: 1.2rem;
    border-bottom: 1px solid rgba(0, 191, 255, 0.3); /* これはアクセントカラーのアルファ版なので固定 */
    padding-bottom: 0.5rem;
}

.recent-list {
    list-style: none;
    padding: 0;
    margin: 0;
    max-height: 300px;
    overflow-y: auto;
}

.recent-list-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.75rem 0.5rem 0.75rem 0;
    border-bottom: 1px solid rgba(0, 191, 255, 0.1); /* これはアクセントカラーのアルファ版なので固定 */
}

.recent-list-item:last-child {
    border-bottom: none;
}

.recent-item-info .product-name {
    font-weight: 600;
}

.recent-item-info .product-id {
    font-size: 0.8rem;
    color: #aaa;
    margin-left: 0.5rem;
}

.product-sub-info {
    font-size: 0.8rem;
    color: #aaa;
    margin-top: 4px;
    display: flex;
    gap: 1rem;
}

.recent-item-stock.low-stock {
    color: #dc3545; /* 在庫僅少時の警告色 */
    font-weight: bold;
}


.recent-item-details .recent-item-stock {
    font-size: 0.9rem;
}

/*
 * =================================================
 * モーダルウィンドウ
 * =================================================
 */
.modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000;
}

.modal-content {
    background-color: var(--background-color);
    border: 1px solid var(--primary-color);
    padding: 2rem;
    border-radius: 0; /* 角丸をなくす */
    width: 95%;
    max-width: 1200px; /* デフォルトの最大幅を広げる */
    box-shadow: 0 0 20px rgba(0, 191, 255, 0.5); /* これはアクセントカラーのアルファ版なので固定 */
    color: var(--text-color); /* テキストカラーをテーマに合わせる */
    position: relative; /* 閉じるボタンの基準点とする */
}


/* モーダル内のフォームレイアウトは常に1列で表示する (汎用性を高める) */
.modal-content .form-grid, .modal-content form > div[class*="grid"] {
    grid-template-columns: 1fr;
}

/* 商品マスタモーダルのみ、フォームを2列にする */
#product-modal-content .form-grid {
    grid-template-columns: repeat(2, 1fr);
}

.modal-content h3 {
    margin-top: 0;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--primary-color);
    padding-bottom: 1rem;
    color: var(--primary-color);
    text-shadow: 0 0 5px var(--primary-color);
}

/* モーダル右上の閉じるボタン */
.btn-close-modal {
    position: absolute;
    top: 1rem;
    right: 1.5rem;
    background: none;
    border: none;
    font-size: 2rem;
    color: #aaa;
    cursor: pointer;
    transition: color 0.2s;
    padding: 0;
    line-height: 1;
}

.btn-close-modal:hover {
    color: var(--primary-color);
}

.modal-content .form-group {
    margin-bottom: 1rem;
}

.modal-content .form-group label {
    color: var(--primary-color);
}

/* モーダル内のすべての入力要素の幅を100%に統一する */
.modal-content input[type="text"],
.modal-content input[type="number"],
.modal-content select,
.modal-content textarea {
    width: 100%;
    box-sizing: border-box;
}

.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    margin-top: 2rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(0, 191, 255, 0.3); /* これはアクセントカラーのアルファ版なので固定 */
}

.modal-table-container {
    max-height: 400px; /* モーダル内のテーブルの高さを制限 */
    overflow-y: auto;
}

/* 幅広モーダル用のスタイル */
.modal-content.modal-lg {
    max-width: 1200px;
}

/* 印刷設定用グリッド */
.print-settings-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid #eee;
}

.print-preview-area-wrapper {
    background-color: var(--background-color-alpha-80);
    border: 1px solid var(--primary-color);
    padding: 1rem;
    height: 400px;
    overflow: auto;
}

.print-preview-area {
    display: flex;
    flex-wrap: wrap;
    gap: 5px; /* ラベル間の隙間 */
}

.qr-label-preview {
    border: 1px dashed #ccc;
    display: inline-flex; /* inline-flexに変更 */
    flex-direction: column;
    align-items: center;
    justify-content: space-around; /* space-aroundに変更 */
    padding: 2px;
    box-sizing: border-box;
    overflow: hidden;
    background-color: white; /* 背景色を白に */
}

.qr-label-preview img {
    max-width: 100%;
    max-height: 80%;
}

.qr-label-preview p {
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 100%;
    text-align: center;
}

/* 印刷時専用のスタイル */
@media print {
    /* 印刷中はbodyからすべてのマージンとパディングを削除 */
    body.printing-active {
        visibility: hidden; /* まずbody全体を非表示に */
    }

    /* 印刷対象のエリアとその親要素だけを表示状態に戻す */
    body.printing-active .print-preview-area-wrapper,
    body.printing-active .print-preview-area-wrapper * {
        visibility: visible;
    }

    /* 印刷プレビューエリアをページの左上に配置し、紙面全体に広げる */
    body.printing-active .print-preview-area-wrapper {
        position: absolute;
        top: 0;
        left: 0;
        margin: 0;
        padding: 0;
        width: 100vw;
        height: 100vh;
    }
}
/* =================================================================== */
/* Table Sorting Styles                                                */
/* =================================================================== */

.data-table th.sortable {
    cursor: pointer;
    position: relative;
    padding-right: 20px; /* アイコン用のスペースを確保 */
}

/* ソートアイコンの基本スタイル */
.data-table th.sortable::after {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.8em;
    opacity: 0.4; /* 非アクティブ時のアイコンの透明度 */
}

/* デフォルト状態 (ソートされていない列) のアイコン */
.data-table th.sortable:not(.sort-asc):not(.sort-desc)::after {
    content: '▲▼';
}

/* 昇順ソート時のアイコン */
.data-table th.sortable.sort-asc::after {
    content: '▲';
    opacity: 1; /* アクティブ時は不透明に */
}

/* 降順ソート時のアイコン */
.data-table th.sortable.sort-desc::after {
    content: '▼';
    opacity: 1; /* アクティブ時は不透明に */
}

/* =================================================================== */
/* Progress Bar Overlay                                              */
/* =================================================================== */

.progress-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.6);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 2000; /* モーダルより手前に表示 */
}

.progress-container {
    background-color: #fff;
    padding: 2rem 3rem;
    border-radius: 8px;
    text-align: center;
    width: 90%;
    max-width: 400px;
}

.progress-container p {
    margin-bottom: 1rem;
}

.progress-bar-wrapper {
    width: 100%;
    background-color: #e9ecef;
    border-radius: 0.25rem;
    overflow: hidden;
    margin-bottom: 0.5rem;
}

.progress-bar-inner {
    height: 20px;
    background-color: #007bff;
    width: 0%;
    transition: width 0.4s ease;
}

/* =================================================================== */
/* Loading Spinner Overlay                                             */
/* =================================================================== */

.spinner-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.7); /* 少し透明な白背景 */
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 3000; /* 最前面に表示 */
}

.spinner {
    border: 8px solid #f3f3f3; /* Light grey */
    border-top: 8px solid #3498db; /* Blue */
    border-radius: 50%;
    width: 60px;
    height: 60px;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* =================================================================== */
/* QR Code Scanner Button in Modal                                     */
/* =================================================================== */
.form-group .btn-qr-scan {
    position: absolute;
    right: 0;
    top: 2.1rem; /* ラベルの高さを考慮した位置 */
    height: calc(1.2rem + 1.2rem - 2px); /* inputの高さに合わせる */
    padding: 0 0.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    border-left: 0;
}

/* =================================================================== */
/* QR Code Scanner Overlay                                             */
/* =================================================================== */
.qr-scanner-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #000;
    z-index: 2000;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

.qr-scanner-video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.qr-scanner-box {
    position: relative;
    width: 300px;
    height: 300px;
    border: 2px solid rgba(255, 255, 255, 0.7);
    box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5); /* 枠の外側を暗くする */
}

.qr-scanner-line {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: #ff3b30;
    box-shadow: 0 0 10px #ff3b30;
    animation: scan-animation 2s infinite linear;
}

@keyframes scan-animation {
    0% { top: 0; }
    100% { top: 100%; }
}

.qr-scanner-instructions {
    position: relative;
    color: white;
    margin-top: 20px;
    font-size: 1rem;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
}

.btn-close-scanner, .btn-switch-camera {
    position: absolute;
    top: 20px;
    color: white;
    background: rgba(0,0,0,0.5);
    border: none;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    font-size: 24px;
    cursor: pointer;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 2001;
}

.btn-close-scanner {
    right: 20px;
}

.btn-switch-camera {
    left: 20px;
}

/* =================================================================== */
/* Login Page Styles                                                 */
/* =================================================================== */

/* ログインページの基本スタイル (PC) */
body.login-page {
    /* 他のページのグリッドレイアウトを無効化 */
    display: block;
    height: auto;
    overflow: auto;
    display: flex;
    justify-content: center;
    align-items: center;
}

.login-container {
    width: 380px;
    padding: 2.5rem;
    background-color: transparent;
    border: none;
    box-shadow: none;
}

.login-container h1 {
    text-align: center;
    margin-bottom: 2rem;
    font-size: 2rem;
    color: var(--primary-color);;
    font-weight: 700;
    text-shadow: 0 0 8px var(--primary-color);;
}

.login-container .form-group {
    margin-bottom: 1.5rem;
}

.login-container .form-group label {
    color: var(--primary-color); /* アクセントカラーを使用 */
}

.login-container .form-group input {
    background-color: var(--background-color-alpha-70);
    border: 1px solid var(--primary-color);;
    color: var(--text-color); /* テキストカラーを使用 */
    border-radius: 0;
}

/* orbitron-regular - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Orbitron';
  font-style: normal;
  font-weight: 400;
  src: url('../fonts/orbitron-v35-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* orbitron-700 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Orbitron';
  font-style: normal;
  font-weight: 700;
  src: url('../fonts/orbitron-v35-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* ---- mblstyle.cssからの移植 (PCでのHT画面表示用) ---- */
.mbl-container {
    height: 100%;
    padding: 0 !important;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.scan-info-header {
    flex-shrink: 0;
}

.camera-view {
    height: 100px;
    flex-shrink: 0;
    background-color: #000;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    border-radius: 8px;
    overflow: hidden;
}

.camera-view::after {
    content: 'PC画面ではカメラは使用できません';
    color: #888;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 95%;
    height: 80%;
    border: 2px dashed rgba(255, 255, 255, 0.3);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.viewport {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
}
.viewport canvas, .viewport video {
    display: none; /* PC画面では非表示 */
}

.control-panel {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-height: 0;
}

.input-group {
    display: flex;
    gap: 0.5rem; /* 入力欄とボタンの間にスペースを追加 */
}

.input-group input {
    flex-grow: 1;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.input-group .btn-icon {
    flex-shrink: 0;
    width: 50px;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    border-left: none;
    font-size: 1.2rem;
}

.input-group .btn-clear {
    background-color: #6c757d;
    color: white;
    border-color: #6c757d;
    font-size: 0.4rem; /* PC用のスタイルを上書きして適切なサイズに */
    vertical-align: baseline; /* アイコンの位置を微調整 */
}
.input-group .btn-clear:hover {
    background-color: #5a6268;
    border-color: #5a6268;
}

.scanned-items-list {
    flex-grow: 1;
    overflow-y: auto;
    background-color: var(--background-color);
    border: 1px solid var(--primary-color);
    border-radius: 0;
    padding: 0.5rem;
    color: var(--text-color);
}

.empty-list-message {
    text-align: center;
    color: #888;
    margin-top: 30px;
    font-size: 1rem;
}

.scanned-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 4px;
    border-bottom: 1px solid rgba(0, 191, 255, 0.2);
}

.scanned-item:last-child {
    border-bottom: none;
}

.scanned-item .item-info {
    flex-grow: 1;
    margin-right: 10px;
}

.scanned-item .item-name {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-color);
    margin: 0;
}

.scanned-item .item-code {
    font-size: 0.8rem;
    color: #aaa;
    margin: 2px 0 0;
}

.scanned-item .counter {
    display: flex;
    align-items: center;
}

.scanned-item .counter-btn {
    background-color: transparent;
    border: 1px solid var(--primary-color);
    color: var(--primary-color);
    font-size: 1rem;
    font-weight: bold;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    cursor: pointer;
}

.scanned-item .counter-btn:hover {
    background-color: rgba(0, 191, 255, 0.1); /* これはアクセントカラーのアルファ版なので固定 */
}

.scanned-item .quantity-input {
    text-align: center;
    width: 40px;
    height: 30px;
    margin: 0 5px;
    border: none;
    font-size: 1.2rem;
    font-weight: bold;
    pointer-events: none;
    background-color: transparent;
    color: var(--text-color);
}

/* =================================================================== */
/* Location Map Styles                                               */
/* =================================================================== */
.location-map-container {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.location-map-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.5rem;
}

.location-map-header h3 {
    margin: 0;
    color: var(--primary-color);
    font-size: 1.5rem;
}

.location-map-header .btn-secondary {
    color: var(--text-color);
    background-color: transparent;
    border-color: var(--primary-color);
}

/* IDセレクタに変更してスタイルの優先度を上げる */
#location-map-grid-wrapper {
    overflow-x: auto; /* 連が多くなった場合に横スクロール */
    padding-bottom: 1rem;
    display: flex;
    justify-content: center; /* 水平方向の中央揃え */
    align-items: flex-start; /* 垂直方向の上寄せを追加 */
}

.location-map-grid {
    display: inline-block; /* 横スクロールのためにinline-blockを維持 */
}

.location-map-row {
    display: flex; /* この行は変更ありませんが、コンテキストとして含めます */
}


.location-map-row > div {
    flex: 0 0 80px;
    flex-shrink: 0; /* セルが縮まないようにする */
    height: 50px;
    border: 1px solid var(--primary-color);
    box-sizing: border-box; /* 枠線を含めて幅を計算する */
    display: flex;
    align-items: center;
    justify-content: center;
}

.location-map-cell.in-stock {
    background-color: rgba(0, 191, 255, 0.2); /* これはアクセントカラーのアルファ版なので固定 */
    font-weight: bold;
}

.location-map-cell.highlight {
    background-color: #ffc107 !important; /* 警告色（黄色） */
    color: #0a0f1a; /* 暗いテキスト色 */
    box-shadow: 0 0 15px #ffc107;
}

/* ヘッダー行の高さを調整 */
.location-map-row.ren-header > .location-map-cell {
    border: none;
    font-weight: bold;
    height: 20px;
    padding: 0.1rem;
}

.location-map-bottom-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
    margin-top: 1.5rem;
    /* マップ全体の高さを確保するために追加 */
    min-height: 350px; 
    max-height: 40vh;
}

.dashboard-panel {
    background-color: var(--background-color-alpha-80);
    padding: 1.5rem;
    border: 1px solid var(--primary-color);
    display: flex;
    flex-direction: column;
    overflow: hidden; /* パネル内でのスクロールのため */
}

.dashboard-panel h3 {
    margin-top: 0;
    margin-bottom: 1rem;
    color: var(--primary-color);
    font-size: 1.2rem;
    border-bottom: 1px solid rgba(0, 191, 255, 0.3); /* これはアクセントカラーのアルファ版なので固定 */
    padding-bottom: 0.5rem;
    flex-shrink: 0; /* ヘッダーは縮まない */
}

.dashboard-panel .recent-list {
    list-style: none;
    padding: 0;
    margin: 0;
    overflow-y: auto; /* 内容が多ければスクロール */
    flex-grow: 1; /* パネルの残りの高さを埋める */
}

/* スクロールバーのスタイル */
.recent-list::-webkit-scrollbar { width: 8px; }
.recent-list::-webkit-scrollbar-track { background: rgba(0,0,0,0.2); }
.recent-list::-webkit-scrollbar-thumb { background: var(--primary-color); }

.location-map-row:not(.ren-header) > .location-map-cell:first-child {
    border: none;
    font-weight: bold;
}

/* =================================================================== */
/* Location Map Page Layout                                          */
/* =================================================================== */

.location-map-main-container {
    display: flex;
    flex-direction: column; /* 上下に配置 */
    gap: 0; /* パネル間の余白 */
    height: 100%; /* 親要素(main-content)の高さ一杯に広げる */
    padding: 0rem 0rem; /* main-contentから移動してきたpadding */
    box-sizing: border-box; /* paddingを含めて高さを100%にする */
}

.location-map-top-panel {
    flex-grow: 0; /* 内容に合わせて高さを自動調整（縮むことを許可） */
    flex-basis: auto; /* 高さを内容に合わせる */
    display: flex;
    min-height: 0; /* flexアイテムが縮小できるようにする */
    padding-bottom: 0; /* 下のパネルとの間の余白をなくす */
}

/* 列移動コントロールを横並びにする */
/* .location-map-header {
    justify-content: space-between;
} */
.location-map-header > div:first-child {
    display: flex;
    align-items: center;
    gap: 1.5rem;
}

.location-map-left-panel {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    flex-grow: 1; /* 親パネルのスペースをすべて使用 */
}

.location-map-grid-wrapper {
    flex-grow: 1; /* 残りの高さいっぱいに広がる */
    align-items: flex-start; /* マップを上端に寄せる */
}

/* ロケーションマップ画面の商品在庫一覧テーブルのコンテナ */
#product-inventory-table-container {
    flex-grow: 1; /* パネルの残りの高さを埋める */
    overflow-y: auto; /* 内容が多ければスクロール */
    min-height: 0;
}

/* 商品別在庫一覧で選択中の項目スタイル */
.data-table tbody tr.active {
    background-color: rgba(0, 191, 255, 0.2);
    border-left: 3px solid var(--primary-color);
}

/* 在庫僅少時の行スタイル */
.data-table tbody tr.low-stock-row td {
    background-color: rgba(220, 53, 69, 0.15);
    color: #ffc107; /* 警告色 */
}
.data-table tbody tr.low-stock-row:hover td {
    background-color: rgba(220, 53, 69, 0.3);
}

/* ロケーションマップ画面の商品別在庫一覧テーブルの行の高さを調整 */
#product-inventory-list td {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}

/* 標準単価、安全在庫、在庫数の列を右揃えにする */
#product-inventory-list td:nth-child(2),
#product-inventory-list td:nth-child(3),
#product-inventory-list td:nth-child(4) {
    text-align: right;
}

/* 商品別在庫一覧のヘッダーも右揃えにする */
#product-inventory-table-container th:nth-child(2),
#product-inventory-table-container th:nth-child(3),
#product-inventory-table-container th:nth-child(4) {
    text-align: right;
}

/* 商品別在庫一覧のスクロールバーのスタイルを .recent-list と統一する */
#product-inventory-table-container::-webkit-scrollbar {
    width: 8px;
}

#product-inventory-table-container::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.2);
}

#product-inventory-table-container::-webkit-scrollbar-thumb {
    background: var(--primary-color);
}

/*
 * 全てのスクロール可能なテーブルでヘッダーを固定する
 */
.table-container .data-table thead th {
    position: sticky;
    top: 0;
    /* スクロール時に下のコンテンツが透けないように背景色を設定 */
    background-color: var(--background-color);
    z-index: 1; /* 他の要素より手前に表示 */
}


/*
 * 在庫詳細モーダルの「リストに追加」ボタンにスタイルを強制適用する
 * 汎用的な .btn スタイルが他のセレクタによって上書きされるのを防ぐため、
 * より詳細なセレクタでスタイルを定義する。
 */
#location-inventory-detail-modal .form-group .btn {
    color: var(--text-color);
    background-color: transparent;
    border-color: var(--primary-color);;
}
#location-inventory-detail-modal .form-group .btn:hover {
    color: var(--text-color);
    background-color: transparent;
    border-color: var(--primary-color);;
}


#product-inventory-panel {
    flex-grow: 1; /* 残りのスペースをすべて使用する */
    flex-basis: auto; /* 高さを自動調整 */
    flex-shrink: 0; /* パネルが縮まないようにする */
    min-height: 0; /* flexアイテムが縮小できるようにする */
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    padding-top: 0.7rem;
    padding-bottom: 0rem;
}

#content-location-map {
    height: calc( 100vh - 180px - 1rem);
}
