/**
 * ユーティリティ（ページ横断で使う単機能クラス）
 */
.inv-caption {
    font-size: 0.76rem;
    color: var(--inv-text-muted);
}

.inv-caption--xs {
    font-size: 0.6rem;
    vertical-align: middle;
}

/* 後方互換: 既存テンプレの .extra-small を段階的に置き換え可能 */
.extra-small {
    font-size: 0.8rem;
}

.inv-transition {
    transition:
        transform var(--inv-duration) var(--inv-ease),
        box-shadow var(--inv-duration) var(--inv-ease),
        border-color var(--inv-duration) var(--inv-ease),
        background-color var(--inv-duration) var(--inv-ease);
}

.transition-hover {
    transition:
        transform var(--inv-duration) var(--inv-ease),
        box-shadow var(--inv-duration) var(--inv-ease);
}

@media (hover: hover) and (min-width: 768px) {
    .transition-hover:hover {
        transform: translateY(-3px);
        box-shadow: var(--inv-shadow) !important;
    }
}

.inv-shadow-xs {
    box-shadow: var(--inv-shadow-sm);
}

.inv-text-soft {
    color: var(--inv-text-soft);
}

.inv-section-gap {
    margin-bottom: 1.5rem;
}

.inv-touch-target {
    min-height: 44px;
    min-width: 44px;
}

.inv-kicker {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.2rem 0.55rem;
    border-radius: var(--inv-radius-pill);
    background: #dbeafe;
    color: #1e40af;
    font-size: 0.78rem;
    font-weight: 700;
}

.min-w-0 {
    min-width: 0;
}

.text-truncate-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.w-md-auto {
    width: 100%;
}

@media (min-width: 768px) {
    .w-md-auto {
        width: auto !important;
    }
}

.shadow-xs {
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.cursor-pointer {
    cursor: pointer;
}

.overflow-visible {
    overflow: visible !important;
}

.border-dashed {
    border-style: dashed !important;
}

/* フィルターサイドバー: 選択中リンク（色は修飾子で上書き） */
.active-filter {
    background-color: var(--inv-bg-app) !important;
    color: var(--inv-text) !important;
    font-weight: 600;
    border-left: 4px solid var(--inv-warning) !important;
}

.active-filter--primary {
    border-left-color: var(--inv-primary) !important;
    color: var(--inv-primary) !important;
}

.active-filter--info {
    border-left-color: var(--inv-info) !important;
}

.text-info-emphasis {
    color: #0369a1;
}

/* 依頼一覧: チェック済み行 */
.item-checked {
    background-color: #f0fdf4 !important;
    border-color: #86efac !important;
}

/* 入庫フォーム: 選択行 */
.selected-row {
    background-color: var(--inv-primary-soft) !important;
}

.plan-mobile-card.selected-row {
    border-left: 5px solid var(--inv-primary) !important;
}

/* 在庫一覧ヘッダー帯 */
.sticky-top {
    top: -1px;
    z-index: 10;
}

/* ダッシュメニュー用 .extra-small やや大きめ */
.dashboard .extra-small {
    font-size: 0.85rem;
}

/* 在庫一覧: カードのホバーを抑えめに */
.inv-stock-list .transition-hover:hover {
    transform: translateY(-1px);
    filter: brightness(1.04);
}

.transition-hover--subtle:hover {
    transform: translateY(-1px);
    filter: brightness(1.05);
}

.inv-fs-06 {
    font-size: 0.6rem;
}

.inv-fs-07 {
    font-size: 0.7rem;
}

.inv-fs-075 {
    font-size: 0.75rem;
}

.inv-fs-08 {
    font-size: 0.8rem;
}

.inv-fs-085 {
    font-size: 0.85rem;
}

.inv-fs-095 {
    font-size: 0.95rem;
}

.inv-max-w-140 {
    max-width: 140px;
}

.inv-max-w-500 {
    max-width: 500px;
}

.inv-max-w-600 {
    max-width: 600px;
}

.inv-max-w-900 {
    max-width: 900px;
}

.inv-max-w-75 {
    max-width: 75%;
}

.inv-min-w-80 {
    min-width: 80px;
}

.inv-table-scroll-70vh {
    max-height: 70vh;
}

.inv-table-min-w-1000 {
    min-width: 1000px;
}

.inv-thumb-100 {
    width: 100px;
    height: 100px;
    min-width: 100px;
}

.inv-size-60 {
    width: 60px;
    height: 60px;
}

.inv-fab-fixed {
    bottom: 30px;
    right: 30px;
    width: 60px;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.inv-fab-icon-lg {
    font-size: 24px;
}

.inv-z-1000 {
    z-index: 1000;
}

.inv-z-1030 {
    z-index: 1030;
}

.inv-z-1040 {
    z-index: 1040;
}

/* カート画面: 入庫予定モーダルをスマホ固定バー(z-1040)より前面に */
.inv-cart-plan-modal {
    --bs-modal-zindex: 1060;
    z-index: 1060;
}

.inv-top-1 {
    top: 1rem;
}

.inv-modal-min-h-300 {
    min-height: 300px;
    position: relative;
}

.inv-video-fluid {
    width: 100%;
    height: auto;
    display: block;
}

.inv-qr-guide-frame {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 200px;
    height: 200px;
    border: 2px solid #00ff00;
    border-radius: 10px;
    box-shadow: 0 0 0 4000px rgba(0, 0, 0, 0.5);
}

.inv-image-max-h-200 {
    max-height: 200px;
}

.inv-image-preview-fixed {
    width: 220px;
    height: 220px;
    object-fit: cover;
}

.inv-cursor-pointer {
    cursor: pointer;
}

.inv-scrollbar-none {
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.inv-scrollbar-none::-webkit-scrollbar {
    display: none;
}

.inv-list-scroll-180 {
    max-height: 180px;
    overflow-y: auto;
}

.inv-col-w-40 {
    width: 40px;
}

.inv-col-w-80 {
    width: 80px;
}

.inv-col-w-100 {
    width: 100px;
}

.inv-col-w-120 {
    width: 120px;
}

.inv-col-w-140 {
    width: 140px;
}

.inv-col-w-150 {
    width: 150px;
}

.inv-col-w-160 {
    width: 160px;
}

.inv-check-lg {
    width: 1.5rem;
    height: 1.5rem;
}

.inv-object-cover {
    object-fit: cover;
}

/* 依頼確認・承認: 検品対象（1行目コード / 2行目品名・サイズ・数量） */
.inv-request-approve-section-title {
    font-size: 0.9375rem;
}

.inv-request-approve-items--scroll {
    max-height: min(58vh, 400px);
    overflow-y: auto;
}

.inv-request-approve-items .inv-request-approve-item-row:last-child {
    margin-bottom: 0 !important;
}

.inv-request-approve-code-line {
    font-size: 0.9375rem;
    line-height: 1.35;
    margin-bottom: 0.4rem;
    word-break: break-all;
}

@media (min-width: 768px) {
    .inv-request-approve-code-line {
        font-size: 1.0625rem;
    }
}

.inv-request-approve-line {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 0.5rem;
    row-gap: 0.25rem;
    font-size: 1rem;
    line-height: 1.45;
}

@media (min-width: 768px) {
    .inv-request-approve-line {
        font-size: 1.0625rem;
        column-gap: 0.65rem;
    }
}

.inv-request-approve-name {
    flex: 1 1 9rem;
    min-width: 0;
    word-break: break-word;
}

.inv-request-approve-size {
    flex-shrink: 0;
}

.inv-request-approve-qty {
    flex-shrink: 0;
}

.inv-request-approve-sep {
    color: #adb5bd;
    user-select: none;
    flex-shrink: 0;
    line-height: 1;
}

.inv-request-approve-status-icon {
    font-size: 1.5rem;
    line-height: 1;
}

.inv-request-approve-submit {
    font-size: 1rem;
    padding-top: 0.65rem !important;
    padding-bottom: 0.65rem !important;
}

.inv-request-approve-hint {
    font-size: 0.875rem;
    line-height: 1.4;
}
