/* ============================================
   標準品管理 - 共通スタイル
   ============================================ */

:root {
    --sidebar-width: 240px;
    --sidebar-width-collapsed: 64px;
    --sidebar-bg: #1f2937;
    --sidebar-bg-hover: #374151;
    --sidebar-active-bg: #0d6efd;
    --topbar-height: 56px;
}

* {
    box-sizing: border-box;
}

html, body {
    height: 100%;
    margin: 0;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans",
        "Hiragino Kaku Gothic ProN", "Noto Sans JP", Meiryo, sans-serif;
    background-color: #f3f4f6;
    color: #212529;
}

/* footerより下の背景もコンテンツ色に揃える */
.app-main {
    background-color: #f3f4f6;
}

/* ============================================
   ログイン画面
   ============================================ */
.guest-body {
    min-height: 100vh;
    background: #f5f6f8;
    display: flex;
    flex-direction: column;
}

.login-wrapper {
    flex: 1;
    width: 100%;
    padding: 1.5rem;
}

.login-card {
    width: 100%;
    max-width: 420px;
    border-radius: 12px;
    border: 1px solid #dee2e6;
    box-shadow: 0 .25rem 1rem rgba(0, 0, 0, .08);
}

.login-logo {
    width: 72px;
    height: 72px;
    margin: 0 auto;
    border-radius: 50%;
    background: linear-gradient(135deg, #0d6efd, #6610f2);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem;
    box-shadow: 0 6px 20px rgba(13, 110, 253, .35);
}

.login-footer {
    color: #495057;
}

/* ============================================
   管理画面レイアウト
   ============================================ */
.app-wrapper {
    display: flex;
    min-height: 100vh;  /* フッターを画面下に張り付けるため */
}

/* ----- Sidebar (PC) ----- */
/* デバッグモード (APP_DEBUG=true) の環境識別: サイドメニューを赤に
   (変数の上書きはサイドバー要素に限定。使用履歴のグループ帯等 var(--sidebar-bg) の他利用箇所には影響させない) */
html.app-debug .app-sidebar,
html.app-debug .app-sidebar-offcanvas {
    --sidebar-bg: #b02a37;
    --sidebar-bg-hover: #d9414f;
}
/* オフキャンバス側は Bootstrap の bg-dark (!important) を使っているため変数で差し替え */
html.app-debug .app-sidebar-offcanvas .bg-dark {
    --bs-dark-rgb: 176, 42, 55;
}

.app-sidebar {
    width: var(--sidebar-width);
    background-color: var(--sidebar-bg);
    color: #fff;
    position: fixed;
    top: 0;
    left: 0;
    height: 100vh;
    flex-direction: column;
    z-index: 1030;
    transition: width .2s ease;
    overflow: hidden;
}

.app-sidebar .sidebar-brand {
    font-size: 1.05rem;
    white-space: nowrap;
    overflow: hidden;
}

.app-sidebar .nav-link,
.app-sidebar-offcanvas .nav-link {
    color: rgba(255, 255, 255, .75);
    border-radius: 0;
    transition: background-color .15s ease, color .15s ease;
}

.app-sidebar .nav-link:hover,
.app-sidebar-offcanvas .nav-link:hover {
    background-color: var(--sidebar-bg-hover);
    color: #fff;
}

.app-sidebar .nav-link.active,
.app-sidebar-offcanvas .nav-link.active {
    background-color: var(--sidebar-active-bg);
    color: #fff;
    font-weight: 600;
    box-shadow: inset 4px 0 0 #fff;
}

/* メニュー区切り線（設定・保守の上） */
.sidebar-separator {
    height: 1px;
    background-color: rgba(255,255,255,.25);
    list-style: none;
}
/* コンパクト時は区切り線をフル幅に */
html.sidebar-collapsed .sidebar-separator {
    margin-left: .5rem !important;
    margin-right: .5rem !important;
}

.app-sidebar-offcanvas {
    width: var(--sidebar-width) !important;
    color: #fff;
}

/* ----- Main area ----- */
.app-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

@media (min-width: 992px) {
    .app-main {
        margin-left: var(--sidebar-width);
        transition: margin-left .2s ease;
    }
}

/* ----- Sidebar collapsed (PC) ----- */
@media (min-width: 992px) {
    html.sidebar-collapsed .app-sidebar {
        width: var(--sidebar-width-collapsed);
    }

    html.sidebar-collapsed .app-main {
        margin-left: var(--sidebar-width-collapsed);
    }

    html.sidebar-collapsed .app-sidebar .sidebar-brand span,
    html.sidebar-collapsed .app-sidebar .nav-link span,
    html.sidebar-collapsed .app-sidebar .sidebar-footer .user-info {
        display: none !important;
    }

    html.sidebar-collapsed .app-sidebar .sidebar-footer {
        text-align: center;
    }
    html.sidebar-collapsed .app-sidebar .sidebar-footer i {
        margin-right: 0 !important;
    }

    html.sidebar-collapsed .app-sidebar .sidebar-brand {
        justify-content: center;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    html.sidebar-collapsed .app-sidebar .sidebar-brand i {
        margin-right: 0 !important;
    }

    html.sidebar-collapsed .app-sidebar .nav-link {
        justify-content: center;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    html.sidebar-collapsed .app-sidebar .nav-link i {
        margin-right: 0 !important;
    }

    html.sidebar-collapsed .app-sidebar .nav-link.active {
        box-shadow: none;
    }


}

.app-topbar {
    min-height: var(--topbar-height);
    position: sticky;
    top: 0;
    z-index: 1020;
}

.app-content {
    flex: 1 0 auto;       /* 余白を吸収してフッターを下に押し下げる */
    padding-bottom: 15mm; /* メインエリアとフッターの間隔 */
}
.app-content .card,
.app-content > .row,
.app-content > div {
    margin-bottom: 0 !important;
}
/* テーブル末尾の余白除去 */
.app-content .table {
    margin-bottom: 0 !important;
}
/* collapse が閉じている時は完全に消す（margin/padding/heightゼロ強制） */
.app-content .collapse:not(.show),
.app-content .collapsing {
    height: 0 !important;
    overflow: hidden !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
}
.app-content .collapse:not(.show) {
    display: none !important;
}
/* form 要素のデフォルト余白除去 */
.app-content form {
    margin: 0 !important;
}

/* 画面遷移時のローディングオーバーレイ */
.app-loading {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .55);
}
.app-loading.show {
    display: flex;
}
.app-loading-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
    padding: 1.5rem 2.25rem;
    background: #fff;
    border-radius: .5rem;
    box-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .15);
}
.app-loading-text {
    color: #495057;
    font-size: .9rem;
}

.app-footer {
    flex-shrink: 0;
    margin-top: auto;     /* sticky footer: コンテンツ短い時は画面下に張り付き */
}

/* ============================================
   リスト一覧テーブル: ヘッダー固定 (.list-sticky)
   - ページスクロール時に thead をトップバー直下へ固定
   - overflow-x:auto があると sticky が効かないため md 以上で解除
     (table-layout:fixed + %幅なので横スクロールは不要)
   ============================================ */
@media (min-width: 768px) {
    .app-content .table-responsive.list-sticky {
        overflow: visible;
    }
    .list-sticky .table thead th {
        position: sticky;
        top: var(--topbar-height);
        z-index: 3;
    }
    /* 2段ヘッダー: 1段目の高さを固定し、2段目はその分下で固定 */
    .list-sticky .table thead tr:first-child th {
        height: 32px;
    }
    .list-sticky .table thead tr:nth-child(2) th {
        top: calc(var(--topbar-height) + 32px);
    }
}

/* ============================================
   ダッシュボード
   ============================================ */
/* ダッシュボードのカード見出し: ボタン有無に関わらず高さを統一 */
.dash-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 3rem;
    padding-top: 0.375rem;
    padding-bottom: 0.375rem;
}
.dash-card-header .h6 {
    line-height: 1.4;
}
.dash-card-header .btn-sm {
    padding-top: 0.125rem;
    padding-bottom: 0.125rem;
    line-height: 1.4;
}

/* 月別×担当者ヒートマップ表: 全行表示、ヘッダー(年・月)に縦の区切り線 */
.heatmap-table {
    overflow-x: auto;
}
.heatmap-table thead th + th {
    border-left: 1px solid #dee2e6;
}
.heatmap-table thead tr:nth-child(2) th:first-child {
    border-left: 1px solid #dee2e6;
}

.stat-card {
    border: none;
    border-left: 4px solid #0d6efd;
    transition: transform .15s ease, box-shadow .15s ease;
}

.stat-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .1);
}

.stat-link { display: block; height: 100%; color: inherit; text-decoration: none; }
.stat-link:hover { color: inherit; }

.stat-card .stat-icon {
    font-size: 2.2rem;
    opacity: .35;
}

.stat-card .stat-value {
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 1.1;
}

.stat-card .stat-label {
    font-size: .8rem;
    color: #6c757d;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.stat-card.border-success { border-left-color: #198754; }
.stat-card.border-warning { border-left-color: #ffc107; }
.stat-card.border-danger  { border-left-color: #dc3545; }
.stat-card.border-info    { border-left-color: #0dcaf0; }

/* ============================================
   jQuery UI Datepicker - モダンカスタムテーマ
   - 2ヶ月表示 / 月曜始まり
   - 土=青／日・祝=赤
   - グラデーション・シャドウ・アニメーション
   ============================================ */

:root {
    --dp-primary:        #4f46e5;     /* indigo-600 */
    --dp-primary-light:  #818cf8;     /* indigo-400 */
    --dp-primary-dark:   #4338ca;     /* indigo-700 */
    --dp-accent-sat:     #2563eb;     /* blue-600 */
    --dp-accent-sat-bg:  #eff6ff;
    --dp-accent-sun:     #dc2626;     /* red-600 */
    --dp-accent-sun-bg:  #fef2f2;
    --dp-accent-hol-bg:  #fee2e2;
    --dp-today:          #f59e0b;     /* amber-500 */
    --dp-today-bg:       #fef3c7;
    --dp-text:           #1f2937;
    --dp-text-mute:      #9ca3af;
    --dp-border:         #e5e7eb;
    --dp-bg:             #ffffff;
    --dp-bg-alt:         #f9fafb;
    --dp-shadow:         0 20px 50px -10px rgba(31, 41, 55, .25),
                         0 8px 16px -4px rgba(31, 41, 55, .08);
}

/* ===== カレンダー外枠 ===== */
.ui-datepicker {
    display: none;            /* デフォルト非表示。jQuery UI が show 時に inline で display:block を設定 */
    position: absolute;        /* 念のため popup 位置を絶対に */
    width: auto !important;
    background: var(--dp-bg);
    border: 1px solid var(--dp-border);
    border-radius: 14px;
    box-shadow: var(--dp-shadow);
    padding: 18px;
    z-index: 1080 !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans",
                 "Hiragino Kaku Gothic ProN", "Noto Sans JP", Meiryo, sans-serif;
    color: var(--dp-text);
    /* animation: dpFadeIn .18s ease-out;  ← ちらつきの原因のため無効化 */
    overflow: hidden;
}
/* DOM上にあっても画面占有しないように、id指定で念押し非表示 */
#ui-datepicker-div {
    display: none;
}
#ui-datepicker-div[style*="display: block"],
#ui-datepicker-div[style*="display:block"] {
    display: block !important;
}
/* ──────────────────────────────────────────────
   カレンダーを常に画面中央へ固定表示
   (jQuery UI が inline で設定する position/top/left を上書き)
   ────────────────────────────────────────────── */
#ui-datepicker-div {
    position: fixed !important;
    top: 50% !important;
    left: 50% !important;
    right: auto !important;
    bottom: auto !important;
    transform: translate(-50%, -50%) !important;
    z-index: 9999 !important;
}
/* 1ヶ月表示 */
.ui-datepicker:not(.ui-datepicker-multi) {
    width: 360px !important;
}
/* 多月表示の全体幅（!importantで上書き必須） */
.ui-datepicker.ui-datepicker-multi   { width: auto !important; }
.ui-datepicker.ui-datepicker-multi-2 { width: 720px  !important; }
.ui-datepicker.ui-datepicker-multi-3 { width: 1080px !important; }
.ui-datepicker.ui-datepicker-multi-4 { width: 1440px !important; }

/* グループ（各月パネル）— jQuery UI標準の float:left を尊重 */
.ui-datepicker-multi .ui-datepicker-group {
    float: left;
    padding: 0 6px;
    box-sizing: border-box;
}
.ui-datepicker-multi-2 .ui-datepicker-group { width: 50%   !important; }
.ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3% !important; }
.ui-datepicker-multi-4 .ui-datepicker-group { width: 25%   !important; }

/* 月パネル間の縦区切り */
.ui-datepicker-multi .ui-datepicker-group + .ui-datepicker-group {
    border-left: 1px solid var(--dp-border);
}

/* 行ブレーク（jQuery UIが挿入） */
.ui-datepicker-row-break {
    clear: both;
    width: 100%;
    font-size: 0;
}

@keyframes dpFadeIn {
    from { opacity: 0; transform: translateY(-6px) scale(.98); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* ===== ヘッダ（年月＋前後ボタン） ===== */
.ui-datepicker .ui-datepicker-header {
    background: linear-gradient(135deg, var(--dp-primary) 0%, var(--dp-primary-light) 100%);
    border: none;
    border-radius: 10px;
    padding: 0;
    margin: 0 0 10px;
    color: #fff;
    position: relative;
    height: 42px;
    box-shadow: 0 4px 10px -2px rgba(79, 70, 229, .35);
}
.ui-datepicker .ui-datepicker-title {
    margin: 0 40px;
    color: #fff;
    font-weight: 600;
    font-size: .95rem;
    text-align: center;
    letter-spacing: .03em;
    text-shadow: 0 1px 2px rgba(0,0,0,.15);
    height: 42px;
    line-height: 42px;
}
.ui-datepicker .ui-datepicker-title select {
    font-size: .85rem;
    font-weight: 600;
    color: var(--dp-primary-dark);
    padding: 2px 6px;
    margin: 0 3px;
    border: none;
    border-radius: 6px;
    background: #fff;
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(0,0,0,.1);
    transition: transform .15s;
    height: 26px;
    line-height: 1.4;
    vertical-align: middle;
}
.ui-datepicker .ui-datepicker-title select:hover {
    transform: translateY(-1px);
}

/* 前後月ボタン */
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
    cursor: pointer;
    position: absolute;
    top: 7px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255,255,255,.18) !important;
    border: 1px solid rgba(255,255,255,.35) !important;
    transition: background .15s, transform .15s;
}
.ui-datepicker .ui-datepicker-prev { left: 8px; }
.ui-datepicker .ui-datepicker-next { right: 8px; }
.ui-datepicker .ui-datepicker-prev:hover,
.ui-datepicker .ui-datepicker-next:hover {
    background: rgba(255,255,255,.35) !important;
    transform: scale(1.08);
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
    display: none;
}
.ui-datepicker .ui-datepicker-prev::before,
.ui-datepicker .ui-datepicker-next::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 7px;
    height: 7px;
    border-top: 2px solid #fff;
    border-right: 2px solid #fff;
}
.ui-datepicker .ui-datepicker-prev::before {
    transform: translate(-30%, -50%) rotate(-135deg);
}
.ui-datepicker .ui-datepicker-next::before {
    transform: translate(-70%, -50%) rotate(45deg);
}
/* 無効ボタン（multi表示時の中間月の prev/next）は非表示 */
.ui-datepicker .ui-datepicker-prev.ui-state-disabled,
.ui-datepicker .ui-datepicker-next.ui-state-disabled {
    display: none !important;
}

/* ===== 曜日ヘッダ行（月始まり：月火水木金土日） ===== */
.ui-datepicker thead th {
    padding: 10px 0;
    font-size: .8rem;
    font-weight: 700;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: .08em;
    border: none;
    background: transparent;
}
.ui-datepicker thead th:nth-child(6) { color: var(--dp-accent-sat); }
.ui-datepicker thead th:nth-child(7) { color: var(--dp-accent-sun); }

/* ===== 日付テーブル ===== */
.ui-datepicker .ui-datepicker-calendar,
.ui-datepicker table {
    border-collapse: separate;
    border-spacing: 2px;
    width: 100%;
    table-layout: fixed;
    margin: 0;
}
.ui-datepicker td {
    padding: 0;
    width: 14.2857%;
}
.ui-datepicker td a,
.ui-datepicker td span {
    display: block;
    text-align: center;
    padding: 10px 0 !important;
    border: 1px solid transparent !important;
    border-radius: 8px;
    background: var(--dp-bg);
    color: var(--dp-text);
    font-size: .95rem;
    font-weight: 500;
    text-decoration: none;
    transition: background-color .15s, color .15s, transform .1s, box-shadow .15s;
    position: relative;
}

/* ホバー */
.ui-datepicker td a.ui-state-hover {
    background: var(--dp-primary) !important;
    color: #fff !important;
    border-color: var(--dp-primary-dark) !important;
    transform: scale(1.05);
    box-shadow: 0 4px 10px -2px rgba(79, 70, 229, .35);
    z-index: 2;
}

/* 選択中 */
.ui-datepicker td a.ui-state-active {
    background: linear-gradient(135deg, var(--dp-primary), var(--dp-primary-light)) !important;
    color: #fff !important;
    border-color: var(--dp-primary-dark) !important;
    font-weight: 700;
    box-shadow: 0 4px 12px -3px rgba(79, 70, 229, .55),
                inset 0 -2px 0 rgba(0,0,0,.08);
}

/* 今日 */
.ui-datepicker .ui-datepicker-today a {
    background: var(--dp-today-bg) !important;
    border: 1.5px dashed var(--dp-today) !important;
    color: #92400e !important;
    font-weight: 700;
}
.ui-datepicker .ui-datepicker-today a.ui-state-active,
.ui-datepicker .ui-datepicker-today a.ui-state-hover {
    background: linear-gradient(135deg, var(--dp-today), #fbbf24) !important;
    border-color: var(--dp-today) !important;
    color: #fff !important;
}

/* 前後の月の日付 */
.ui-datepicker .ui-datepicker-other-month a,
.ui-datepicker .ui-datepicker-other-month span {
    color: var(--dp-text-mute) !important;
    background: var(--dp-bg-alt) !important;
    opacity: .55;
}

/* ===== 曜日色（土・日・祝） ===== */
.ui-datepicker td.jp-saturday a,
.ui-datepicker td.jp-saturday span {
    color: var(--dp-accent-sat) !important;
    background: var(--dp-accent-sat-bg) !important;
}
.ui-datepicker td.jp-sunday a,
.ui-datepicker td.jp-sunday span {
    color: var(--dp-accent-sun) !important;
    background: var(--dp-accent-sun-bg) !important;
}
.ui-datepicker td.jp-holiday a,
.ui-datepicker td.jp-holiday span {
    color: var(--dp-accent-sun) !important;
    background: var(--dp-accent-hol-bg) !important;
    font-weight: 700;
    position: relative;
    overflow: hidden;
}
.ui-datepicker td.jp-holiday a::after,
.ui-datepicker td.jp-holiday span::after {
    content: "祝";
    position: absolute;
    top: 0;
    right: 0;
    font-size: .55rem;
    font-weight: 700;
    color: #fff;
    background: var(--dp-accent-sun);
    line-height: 1;
    padding: 2px 3px;
    border-bottom-left-radius: 6px;
    box-shadow: -1px 1px 2px rgba(0,0,0,.1);
}
/* 祝日選択時は祝バッジを目立たせる */
.ui-datepicker td.jp-holiday a.ui-state-active::after {
    background: #fff;
    color: var(--dp-accent-sun);
}

/* ===== ボタンパネル（今日・閉じる） ===== */
.ui-datepicker .ui-datepicker-buttonpane {
    background: transparent;
    border-top: 1px solid var(--dp-border);
    padding: 10px 4px 0;
    margin: 10px 0 0;
    clear: both;     /* multi表示時にfloat解除 */
}
.ui-datepicker .ui-datepicker-buttonpane button {
    font-size: .8rem;
    font-weight: 600;
    padding: 6px 14px;
    border-radius: 8px;
    cursor: pointer;
    transition: all .15s;
    box-shadow: 0 1px 2px rgba(0,0,0,.05);
}
.ui-datepicker .ui-datepicker-current {
    background: #fff !important;
    border: 1px solid var(--dp-primary) !important;
    color: var(--dp-primary) !important;
}
.ui-datepicker .ui-datepicker-current:hover {
    background: var(--dp-primary) !important;
    color: #fff !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 10px -2px rgba(79, 70, 229, .4);
}
.ui-datepicker .ui-datepicker-close {
    background: var(--dp-text) !important;
    color: #fff !important;
    border: 1px solid var(--dp-text) !important;
}
.ui-datepicker .ui-datepicker-close:hover {
    background: #111827 !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 10px -2px rgba(0,0,0,.3);
}

/* ----- Placeholder pages ----- */
.placeholder-hero {
    text-align: center;
    padding: 4rem 1.5rem;
    background: #fff;
    border-radius: 12px;
    border: 1px dashed #ced4da;
    color: #6c757d;
}

.placeholder-hero .placeholder-icon {
    font-size: 4rem;
    color: #adb5bd;
    margin-bottom: 1rem;
}

/* ──────────────────────────────────────────────
   バリデーションエラー時の右端アイコンを抑止し、赤枠だけにする
   ────────────────────────────────────────────── */
.form-control.is-invalid,
.form-select.is-invalid,
.was-validated .form-control:invalid,
.was-validated .form-select:invalid {
    background-image: none !important;
    padding-right: .75rem !important;
}

/* ──────────────────────────────────────────────
   placeholder は実データと誤認しないよう薄く表示（全画面共通）
   ────────────────────────────────────────────── */
input::placeholder,
textarea::placeholder {
    color: #c8ccd2 !important;
    opacity: 1;
}
/* select2 のプレースホルダも同色に */
.select2-container .select2-selection__placeholder {
    color: #c8ccd2 !important;
}

/* ═══════════════════════════════════════════
   画面固定フッターバー (全画面共通)
   使い方: <div class="app-fixed-bottom">ボタン群</div>
           本文側は .app-fixed-bottom-pad で下余白を確保
   ═══════════════════════════════════════════ */
.app-fixed-bottom {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1.5cm;
    background: linear-gradient(to bottom, #d1e7dd, #bcdccb);
    border-top: 1px solid #a3cfbb;
    box-shadow: 0 -3px 8px rgba(0,0,0,0.12);
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .75rem;
    padding: 0 1.25rem;
    z-index: 1030;
}
/* PC: サイドバー分だけ左をオフセット */
@media (min-width: 992px) {
    .app-fixed-bottom {
        left: var(--sidebar-width);
    }
    html.sidebar-collapsed .app-fixed-bottom {
        left: var(--sidebar-width-collapsed);
    }
}
.app-fixed-bottom .btn {
    padding: .4rem 1rem;
    font-size: .95rem;
    min-width: 10rem;
}
/* モーダル(iframe)内では隠す (モーダル専用フッターを使用) */
html.in-modal .app-fixed-bottom { display: none !important; }
/* フッター分の下余白 (form 等のコンテンツルートに付与) */
.app-fixed-bottom-pad { padding-bottom: calc(1.5cm + 15mm); }

/* ヘッダーロゴ */
.app-topbar-logo {
    height: 36px;
    width: auto;
    display: block;
}

/* ISO 用アイコン: 基本アイコンの右下に小さな盾を重ねる (改修No.002-19) */
.iso-icon {
    position: relative;
    display: inline-block;
    line-height: 1;
}
.iso-icon .iso-icon-badge {
    position: absolute;
    right: -.35em;
    bottom: -.2em;
    font-size: .6em;
    color: #20c997;
    text-shadow: 0 0 2px rgba(0,0,0,.6);
}
/* サイドバー折りたたみ時もラベル(span)と違い ISO アイコンは表示する */
html.sidebar-collapsed .app-sidebar .nav-link span.iso-icon {
    display: inline-block !important;
    margin-right: 0 !important;
}
