/* ------------------------------------------------------------------------- */
/* 案件管理共通: 右下トースト（入力エラー / 保存成功）                        */
/* rk_case_toast_functions.blade.php が body に挿入する DOM 用。           */
/* 元定義: public/css/research/case-detail.css（案件詳細と同一見た目）      */
/* ------------------------------------------------------------------------- */

/*
 * トーストは JS で document.body に挿入されるため、下端オフセットは body で定義。
 */
body.research-kanri-body {
    --rk-case-toast-clearance-footer: calc(56px + 0.5rem + env(safe-area-inset-bottom, 0px));
}

/* 右下トースト（入力エラー）
 * z-index: モーダルより前面（case-detail.css と同値 14050） */
.rk-case-error-toast {
    position: fixed;
    right: max(1rem, env(safe-area-inset-right));
    bottom: var(--rk-case-toast-clearance-footer);
    z-index: 14050;
    display: flex;
    flex-direction: row;
    align-items: stretch;
    max-width: min(22rem, calc(100vw - 2rem));
    overflow: hidden;
    border-radius: 10px;
    border: 1px solid #fecaca;
    background: #fff;
    box-shadow:
        0 12px 40px rgba(15, 23, 42, 0.14),
        0 2px 8px rgba(15, 23, 42, 0.06);
    opacity: 0;
    transform: translateY(14px);
    transition:
        opacity 0.28s ease,
        transform 0.28s ease;
    cursor: pointer;
}

.rk-case-error-toast--visible {
    opacity: 1;
    transform: translateY(0);
}

.rk-case-error-toast__accent {
    flex-shrink: 0;
    width: 5px;
    background: #dc2626;
}

.rk-case-error-toast__main {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 1rem 1.15rem 1rem 0.85rem;
    min-width: 0;
    flex: 1;
}

.rk-case-error-toast__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 0.05rem;
    font-size: 1.35rem;
    line-height: 1;
    color: #dc2626;
}

.rk-case-error-toast__text {
    flex: 1;
    min-width: 0;
}

.rk-case-error-toast__title {
    margin: 0 0 0.28rem;
    font-size: 0.9375rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.35;
}

.rk-case-error-toast__body {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 500;
    color: #64748b;
    line-height: 1.5;
    white-space: pre-line;
}

/* 右下トースト（保存成功・緑系） */
.rk-case-success-toast {
    position: fixed;
    right: max(1rem, env(safe-area-inset-right));
    bottom: var(--rk-case-toast-clearance-footer);
    z-index: 14050;
    display: flex;
    flex-direction: row;
    align-items: stretch;
    max-width: min(22rem, calc(100vw - 2rem));
    overflow: hidden;
    border-radius: 10px;
    border: 1px solid #bbf7d0;
    background: #fff;
    box-shadow:
        0 12px 40px rgba(15, 23, 42, 0.14),
        0 2px 8px rgba(15, 23, 42, 0.06);
    opacity: 0;
    transform: translateY(14px);
    transition:
        opacity 0.28s ease,
        transform 0.28s ease;
    cursor: pointer;
}

.rk-case-success-toast--visible {
    opacity: 1;
    transform: translateY(0);
}

/* 処理中トースト等: クリックでは閉じない（プログラム側 dismiss のみ） */
.rk-case-success-toast.rk-case-success-toast--non-dismissible {
    cursor: default;
}

.rk-case-success-toast__accent {
    flex-shrink: 0;
    width: 5px;
    background: #16a34a;
}

.rk-case-success-toast__main {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 1rem 1.15rem 1rem 0.85rem;
    min-width: 0;
    flex: 1;
}

.rk-case-success-toast__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    margin-top: 0.05rem;
    border-radius: 50%;
    background: #16a34a;
    font-size: 0.8rem;
    line-height: 1;
    color: #fff;
}

.rk-case-success-toast__text {
    flex: 1;
    min-width: 0;
}

.rk-case-success-toast__title {
    margin: 0 0 0.28rem;
    font-size: 0.9375rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.35;
}

.rk-case-success-toast__body {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 500;
    color: #64748b;
    line-height: 1.5;
    white-space: pre-line;
}

/* 処理中など: タイトルなし・本文のみ（\n + pre-line で複数行） */
.rk-case-success-toast--body-only .rk-case-success-toast__body {
    margin: 0;
    font-size: 0.9375rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.45;
    white-space: pre-line;
}

/* ------------------------------------------------------------------------- */
/* バリデーション: rkCaseApplyFieldValidationErrors が付与する is-invalid    */
/* （案件詳細 .field-input 等の既存枠線を上書き）                            */
/* ------------------------------------------------------------------------- */
.research-kanri-app input.field-input.is-invalid,
.research-kanri-app select.field-input.is-invalid,
.research-kanri-app textarea.field-input.is-invalid,
.research-kanri-app input.rk-case-input.is-invalid,
.research-kanri-app select.rk-case-input.is-invalid,
.research-kanri-app textarea.rk-case-input.is-invalid,
.research-kanri-app .rk-case-dw-modal__input.is-invalid,
.research-kanri-app .rk-case-dw-modal__textarea.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

/* ワークシート登録／編集モーダル: 図面入力と同様 textbox3（field-input / rk-case-input ではない） */
.research-kanri-app .rk-case-ws-doc-modal input.textbox3.is-invalid,
.research-kanri-app .rk-case-ws-doc-modal select.is-invalid,
.research-kanri-app .rk-case-ws-doc-modal textarea.textbox3.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

/* 事前調査報告書メインフォーム（.textbox3） */
.research-kanri-app .rk-case-pre-report-form input.textbox3.is-invalid,
.research-kanri-app .rk-case-pre-report-form select.is-invalid,
.research-kanri-app .rk-case-pre-report-form textarea.textbox3.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

/* 検体採取・分析報告書 表紙（.rk-report-form） */
.research-kanri-app .rk-report-form input.textbox2.is-invalid,
.research-kanri-app .rk-report-form input.textbox3.is-invalid,
.research-kanri-app .rk-report-form select.is-invalid,
.research-kanri-app .rk-report-form textarea.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

/* 新規案件登録モーダル（field-input ではない .rk-create-modal__input） */
.research-kanri-app .rk-create-modal__input.is-invalid,
.research-kanri-app .rk-create-modal__select.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

/* 作業依頼（新規依頼・依頼更新: portal/request create・detail） */
.research-kanri-app .rk-portal-request-irai-form input.rk-portal-request-form-input.is-invalid,
.research-kanri-app .rk-portal-request-irai-form select.rk-portal-request-form-select.is-invalid,
.research-kanri-app .rk-portal-request-irai-form textarea.rk-portal-request-form-textarea.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

.research-kanri-app .rk-portal-request-irai-form input.rk-portal-request-form-input.is-invalid:focus,
.research-kanri-app .rk-portal-request-irai-form input.rk-portal-request-form-input.is-invalid:focus-visible,
.research-kanri-app .rk-portal-request-irai-form select.rk-portal-request-form-select.is-invalid:focus,
.research-kanri-app .rk-portal-request-irai-form select.rk-portal-request-form-select.is-invalid:focus-visible,
.research-kanri-app .rk-portal-request-irai-form textarea.rk-portal-request-form-textarea.is-invalid:focus,
.research-kanri-app .rk-portal-request-irai-form textarea.rk-portal-request-form-textarea.is-invalid:focus-visible {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

.research-kanri-app .rk-create-modal__input.is-invalid:focus,
.research-kanri-app .rk-create-modal__input.is-invalid:focus-visible,
.research-kanri-app .rk-create-modal__select.is-invalid:focus,
.research-kanri-app .rk-create-modal__select.is-invalid:focus-visible {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

/* 必要検体写真：親が overflow:hidden のケースがあるため outline ではなく内側 ring（case-detail の .form-card--overview 上書き可） */
.research-kanri-app label.photo-check-item.is-invalid,
.research-kanri-app .photo-check-table.is-invalid {
    outline: none;
    box-shadow: inset 0 0 0 2px #dc3545;
    border-radius: 8px;
}

.research-kanri-app [data-rk-judge-image-field].is-invalid {
    outline: 2px solid rgba(220, 38, 38, 0.65);
    outline-offset: 2px;
    border-radius: 8px;
}

/* 分析依頼書・報告書概要等 case_embed（research_report_case_embed）: .research-kanri-app 外 */
.research-report-case-embed-body input.textbox2.is-invalid,
.research-report-case-embed-body input.textbox3.is-invalid,
.research-report-case-embed-body input[type='date'].is-invalid,
.research-report-case-embed-body select.is-invalid,
.research-report-case-embed-body textarea.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

.research-report-case-embed-body label.rk-case-irai-agreement-notice__check.is-invalid {
    outline: 2px solid rgba(220, 38, 38, 0.65);
    outline-offset: 2px;
    border-radius: 6px;
}

.research-report-case-embed-body tr[data-rk-case-irai-material-summary].is-invalid {
    outline: 2px solid rgba(220, 38, 38, 0.65);
    outline-offset: 2px;
}

/* 調査会社ポータル: 会社情報・利用者登録／編集モーダル（.rk-company-info-field__*） */
.research-kanri-app .rk-company-info-field__input.is-invalid,
.research-kanri-app .rk-company-info-field__select.is-invalid,
.research-kanri-app .rk-page--company-info .rk-company-info-field__input.is-invalid,
.research-kanri-app .rk-page--company-info .rk-company-info-field__select.is-invalid,
.research-kanri-app :is(#rk-company-user-edit-modal, #rk-company-user-create-modal) .rk-company-info-field__input.is-invalid,
.research-kanri-app :is(#rk-company-user-edit-modal, #rk-company-user-create-modal) .rk-company-info-field__select.is-invalid {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

.research-kanri-app .rk-page--company-info .rk-company-info-field__input.is-invalid:focus,
.research-kanri-app .rk-page--company-info .rk-company-info-field__input.is-invalid:focus-visible,
.research-kanri-app .rk-page--company-info .rk-company-info-field__select.is-invalid:focus,
.research-kanri-app .rk-page--company-info .rk-company-info-field__select.is-invalid:focus-visible,
.research-kanri-app :is(#rk-company-user-edit-modal, #rk-company-user-create-modal) .rk-company-info-field__input.is-invalid:focus,
.research-kanri-app :is(#rk-company-user-edit-modal, #rk-company-user-create-modal) .rk-company-info-field__input.is-invalid:focus-visible,
.research-kanri-app :is(#rk-company-user-edit-modal, #rk-company-user-create-modal) .rk-company-info-field__select.is-invalid:focus,
.research-kanri-app :is(#rk-company-user-edit-modal, #rk-company-user-create-modal) .rk-company-info-field__select.is-invalid:focus-visible {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.28);
}

.research-kanri-app :is(#rk-company-user-edit-modal, #rk-company-user-create-modal) label.rk-company-info-radio.is-invalid {
    outline: 2px solid rgba(220, 38, 38, 0.65);
    outline-offset: 2px;
    border-radius: 6px;
}
