/* =========================================================================
 * NokiGPT 共通スタイル
 * - ヘッダー / スプラッシュ / メーカー選択 / 画面共通要素
 * - 両環境 (internal/external) で同じファイルを使用
 * ========================================================================= */

:root {
    /* ブランド色は applyMakerTheme() で動的に上書きされる */
    --brand: #0060a8;
    --brand-hover: #004a83;
    --brand-dark: #003c75;
    --brand-50:  #f2f7fb;
    --brand-100: #e2eef7;
    --brand-200: #bfd5e9;
    --brand-300: #94b8d8;

    /* 中立色 */
    --bg: #ffffff;
    --bg-soft: #f7f7f8;
    --bg-card: #ffffff;
    --border: #f1f5f9;
    --border-strong: #e2e8f0;
    --text: #0f172a;
    --text-sub: #475569;
    --text-mute: #94a3b8;

    /* 角丸 */
    --r-sm: 6px;
    --r-md: 10px;
    --r-lg: 16px;
    --r-pill: 999px;

    /* 影 (layered) */
    --shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.04);
    --shadow-md: 0 1px 2px rgba(16, 24, 40, 0.04), 0 4px 16px rgba(16, 24, 40, 0.04);
    --shadow-lg: 0 1px 3px rgba(16, 24, 40, 0.06), 0 10px 32px rgba(16, 24, 40, 0.08);

    /* その他 */
    --hairline: 0 0 0 1px rgba(16, 24, 40, 0.06);
    --header-h: 49px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { height: 100%; overflow-x: hidden; overscroll-behavior: none; }
body {
    font-family: -apple-system, 'Segoe UI', 'Hiragino Sans',
                 'Hiragino Kaku Gothic ProN', 'Yu Gothic', 'Meiryo', sans-serif;
    background: var(--bg);
    color: var(--text);
    font-size: 15px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    font-feature-settings: "palt" 1;
    overflow: hidden;
    touch-action: pan-y;
    display: flex;
    flex-direction: column;
}
#app {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* =========================================================================
 * 画面切替用 .screen クラス
 * - どの画面も display:none / display:flex or block で切替
 * - .container クラスとの組み合わせ時に display: flex が漏れないよう !important
 * ========================================================================= */
.screen:not(.active) {
    display: none !important;
}
.screen.active {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

/* =========================================================================
 * ヘッダー
 * ========================================================================= */
.header {
    background: rgba(255, 255, 255, 0.9);
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    color: var(--text);
    padding: 12px 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    border-bottom: 1px solid var(--border);
    position: sticky;
    top: 0;
    z-index: 50;
}
.header-title {
    font-family: 'Montserrat', -apple-system, sans-serif;
    font-weight: 800;
    font-size: 16px;
    letter-spacing: -0.01em;
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--text);
    cursor: pointer;
}
.header-title .brand-dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--brand);
    flex-shrink: 0;
    transition: background 0.25s ease;
}
.header-maker-label {
    font-family: inherit;
    font-weight: 600;
    font-size: 13px;
    color: var(--text-sub);
    padding-left: 10px;
    border-left: 1px solid var(--border-strong);
    margin-left: 2px;
    letter-spacing: 0.02em;
}
.header-spacer { flex: 1; }
.header-btn {
    background: #2b2b2b;
    color: #fff;
    border: 1px solid #2b2b2b;
    padding: 6px 14px;
    border-radius: var(--r-pill);
    font-size: 12px;
    cursor: pointer;
    font-family: inherit;
    letter-spacing: 0.01em;
    text-decoration: none;
    transition: background-color 0.15s ease, box-shadow 0.15s ease, transform 0.12s ease;
}
.header-btn:hover {
    background: #000;
    border-color: #000;
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 60, 117, 0.08);
}
.header-btn:active {
    transform: translateY(0);
    transition-duration: 0.05s;
}

/* =========================================================================
 * スプラッシュ画面
 * ========================================================================= */
#screenSplash {
    align-items: center;
    justify-content: center;
}
/* 復帰用オーバーレイ: 既存画面・モーダルを触らず splash を最上面に重ねる */
#screenSplash.resume-overlay {
    position: fixed;
    inset: 0;
    z-index: 9999;
    background: #fff;
}
.splash-body {
    text-align: center;
    padding: 40px 24px;
    width: 100%;
    position: relative;
}
.splash-logo {
    font-family: 'Montserrat', -apple-system, sans-serif;
    font-weight: 800;
    font-size: clamp(40px, 8vw, 64px);
    letter-spacing: -0.02em;
    line-height: 1;
    background: linear-gradient(110deg, #202123 25%, #5eb3f3 50%, #202123 75%);
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: splash-shimmer 2.4s linear infinite;
    margin-bottom: 22px;
}
@keyframes splash-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}
.splash-status {
    font-size: 14px;
    color: var(--text-sub);
    letter-spacing: 0.02em;
    min-height: 1.5em;
    transition: opacity .25s ease;
    font-variant-numeric: tabular-nums;
}
.splash-status.fading {
    opacity: 0;
}
.splash-version {
    position: absolute;
    bottom: 24px;
    left: 0; right: 0;
    font-size: 11px;
    color: var(--text-mute);
    letter-spacing: 0.04em;
    font-variant-numeric: tabular-nums;
}

/* スプラッシュ内 更新カード (新バージョン検出時のみ表示) */
.splash-update-card {
    display: none;
    margin: 32px auto 0;
    max-width: 360px;
    padding: 28px 24px;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 18px;
    box-shadow: 0 12px 32px rgba(0, 96, 168, 0.12), 0 2px 8px rgba(0,0,0,0.04);
    text-align: center;
    animation: splash-update-in .35s ease-out both;
}
.splash-update-card.visible { display: block; }
@keyframes splash-update-in {
    from { opacity: 0; transform: translateY(8px) scale(0.98); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}
.splash-update-icon {
    width: 64px; height: 64px;
    margin: 0 auto 14px;
    border-radius: 50%;
    background: var(--brand-50, color-mix(in srgb, var(--brand) 12%, #fff));
    color: var(--brand);
    display: flex; align-items: center; justify-content: center;
    animation: splash-update-pulse 1.6s ease-in-out infinite;
}
@keyframes splash-update-pulse {
    0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--brand) 30%, transparent); }
    50%      { box-shadow: 0 0 0 10px color-mix(in srgb, var(--brand) 0%, transparent); }
}
.splash-update-title {
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 8px;
    letter-spacing: -0.01em;
}
.splash-update-desc {
    font-size: 14px;
    color: var(--text-sub);
    line-height: 1.7;
    margin-bottom: 22px;
}
.splash-update-apply {
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--brand);
    color: #fff;
    border: none;
    padding: 14px 36px;
    border-radius: var(--r-pill);
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    box-shadow: 0 6px 16px color-mix(in srgb, var(--brand) 35%, transparent);
    transition: transform .08s, box-shadow .15s, background .12s;
}
.splash-update-apply:hover {
    background: var(--brand-700, #00427a);
    box-shadow: 0 8px 20px color-mix(in srgb, var(--brand) 45%, transparent);
}
.splash-update-apply:active { transform: scale(0.97); }
.splash-update-later {
    display: block;
    margin: 14px auto 0;
    background: transparent;
    color: var(--text-mute);
    border: none;
    padding: 6px 12px;
    font-size: 12px;
    cursor: pointer;
    font-family: inherit;
    text-decoration: underline;
    text-decoration-color: var(--border);
    text-underline-offset: 3px;
}
.splash-update-later:hover { color: var(--text-sub); }
@media (max-width: 640px) {
    .splash-update-card { max-width: calc(100% - 32px); padding: 22px 18px; }
    .splash-update-title { font-size: 16px; }
    .splash-update-desc { font-size: 13px; }
    .splash-update-apply { padding: 13px 32px; font-size: 15px; }
}

/* =========================================================================
 * 一般コンテナ (中央寄せ)
 * ========================================================================= */
.container {
    max-width: 780px;
    margin: 0 auto;
    padding: 0 20px;
    width: 100%;
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* =========================================================================
 * メーカー選択画面 (N4 カテゴリ別)
 * ========================================================================= */
#screenMakerSelect {
    align-items: stretch;
}
.maker-select-wrap {
    padding: 40px 20px 40px;
    flex: 1;
    overflow-y: auto;
}
.maker-select-header {
    text-align: center;
    margin-bottom: 32px;
}
.maker-select-header h2 {
    font-size: calc(22px * var(--user-font-scale, 1));
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--text);
    margin-bottom: 4px;
}
.maker-select-header .sub {
    font-size: calc(13px * var(--user-font-scale, 1));
    color: var(--text-sub);
}
.maker-category {
    margin-bottom: 20px;
}
.maker-category-title {
    font-size: calc(11px * var(--user-font-scale, 1));
    color: var(--text-sub);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-bottom: 10px;
    padding-left: 4px;
}
.maker-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
    gap: 10px;
}
.maker-card {
    background: #fff;
    border: 1px solid var(--border-strong);
    border-radius: 10px;
    padding: 16px 8px 14px;
    cursor: pointer;
    text-align: center;
    transition: all 0.15s ease;
    font-family: inherit;
    font-size: calc(13px * var(--user-font-scale, 1));
    color: var(--text);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}
.maker-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 14px rgba(0, 96, 168, 0.08);
}
.maker-card[data-maker="iseki"]:hover { border-color: #0060a8; }
.maker-card[data-maker="kubota"]:hover { border-color: #ff7a00; }
.maker-card .maker-logo {
    width: 36px; height: 36px;
    border-radius: 50%;
    color: #fff;
    font-weight: 800;
    font-size: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.maker-card .maker-name {
    font-weight: 600;
}

/* =========================================================================
 * アクセスコード入力画面
 * ========================================================================= */
#screenCodeInput {
    align-items: center;
    justify-content: center;
}
.code-input-body {
    text-align: center;
    padding: 40px 24px;
    max-width: 400px;
    width: 100%;
}
.code-input-body h2 {
    font-size: 22px;
    font-weight: 700;
    margin-bottom: 8px;
    letter-spacing: -0.01em;
}
.code-input-body .desc {
    color: var(--text-sub);
    font-size: 13px;
    margin-bottom: 24px;
}
.code-input-field {
    width: 100%;
    padding: 14px 18px;
    font-size: 18px;
    border: 1.5px solid var(--border-strong);
    border-radius: 12px;
    text-align: center;
    letter-spacing: 0.08em;
    font-family: 'SF Mono', 'Menlo', monospace;
    text-transform: uppercase;
    outline: none;
    transition: border-color .15s, box-shadow .15s;
}
.code-input-field:focus {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px rgba(0, 96, 168, 0.12);
}
.code-input-submit {
    margin-top: 14px;
    width: 100%;
    padding: 12px 20px;
    background: var(--brand);
    color: #fff;
    border: none;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s, box-shadow .15s, transform .12s;
    font-family: inherit;
}
.code-input-submit:hover:not(:disabled) {
    background: var(--brand-hover);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 96, 168, 0.25);
}
.code-input-submit:disabled {
    background: var(--border-strong);
    cursor: not-allowed;
}
.code-input-error {
    color: #dc2626;
    font-size: 13px;
    margin-top: 10px;
    min-height: 1.2em;
}

/* =========================================================================
 * 認証エラー画面
 * ========================================================================= */
#screenAuthError {
    align-items: center;
    justify-content: center;
    text-align: center;
}
.auth-error-body {
    max-width: 500px;
    padding: 40px 24px;
}
.auth-error-body h2 {
    font-size: 20px;
    color: #dc2626;
    margin-bottom: 12px;
}
.auth-error-body p {
    color: var(--text-sub);
    line-height: 1.7;
}
.auth-retry-btn {
    margin-top: 20px;
    padding: 10px 28px;
    background: var(--brand);
    color: #fff;
    border: none;
    border-radius: var(--r-pill);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s, transform 0.06s;
}
.auth-retry-btn:hover { background: var(--brand-700, #00427a); }
.auth-retry-btn:active { transform: scale(0.97); }

/* =========================================================================
 * 認証フォーム共通 (初回パスワード設定 / ログイン / パスワード忘却)
 * ========================================================================= */
#screenPasswordSetup,
#screenLogin,
#screenForgotPassword,
#screenReconsent {
    align-items: center;
    justify-content: center;
}
.auth-form-body {
    text-align: center;
    padding: 32px 24px;
    max-width: 420px;
    width: 100%;
}
.auth-form-body h2 {
    font-size: 22px;
    font-weight: 700;
    margin-bottom: 8px;
    letter-spacing: -0.01em;
}
.auth-form-body .desc {
    color: var(--text-sub);
    font-size: 13px;
    margin-bottom: 18px;
    line-height: 1.7;
}
.auth-code-label {
    color: var(--text-sub);
    font-size: 12px;
    margin: 6px 0 16px;
    font-family: 'SF Mono', 'Menlo', monospace;
    letter-spacing: 0.06em;
}
.auth-code-label span {
    color: var(--text);
    font-weight: 600;
}
.auth-input {
    width: 100%;
    padding: 14px 18px;
    margin-bottom: 10px;
    font-size: 15px;
    border: 1.5px solid var(--border-strong);
    border-radius: 12px;
    outline: none;
    font-family: inherit;
    transition: border-color .15s, box-shadow .15s;
}
/* ログイン画面のバッジ表示 (セッション有効時、パスワード入力欄の代わりに表示 / Phase 5 polish 6: SNS 認証バッジ風) */
.auth-status-badge {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 14px 18px;             /* input と同じ高さ → 切替時の位置ズレ防止 */
    margin-bottom: 10px;
    font-size: 15px;
    font-weight: 600;
    color: #16a34a;                 /* 緑文字 (Tailwind green-600) */
    background: transparent;         /* 背景なし */
    user-select: none;
}
.auth-status-badge-mark {
    display: inline-flex;
    align-items: center;
    line-height: 0;
}
.auth-status-badge-mark svg {
    display: block;
}
.auth-status-badge[hidden] {
    display: none;
}
.auth-input:focus {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px rgba(0, 96, 168, 0.12);
}
.auth-submit-btn {
    margin-top: 14px;
    width: 100%;
    padding: 12px 20px;
    background: var(--brand);
    color: #fff;
    border: none;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s, box-shadow .15s, transform .12s;
    font-family: inherit;
}
.auth-submit-btn:hover:not(:disabled) {
    background: var(--brand-hover);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 96, 168, 0.25);
}
.auth-submit-btn:disabled {
    background: var(--border-strong);
    cursor: not-allowed;
}
.auth-secondary-btn {
    background: #fff;
    color: var(--text);
    border: 1.5px solid var(--border-strong);
}
.auth-secondary-btn:hover:not(:disabled) {
    background: #f5f5f7;
    box-shadow: none;
}
.auth-error-msg {
    color: #dc2626;
    font-size: 13px;
    margin-top: 12px;
    min-height: 1.2em;
    line-height: 1.5;
}
.auth-link-btn {
    margin-top: 18px;
    background: none;
    border: none;
    color: var(--brand);
    font-size: 13px;
    text-decoration: underline;
    cursor: pointer;
    padding: 4px 8px;
    font-family: inherit;
}
.auth-link-btn:hover { color: var(--brand-hover); }
/* ログアウトリンク (赤系) - ログイン画面下のログアウトボタン用 */
.auth-link-btn-danger {
    color: #dc2626;
    margin-top: 8px;
    display: block;
    margin-left: auto;
    margin-right: auto;
}
.auth-link-btn-danger:hover { color: #991b1b; }
/* 危険操作の確定ボタン (赤背景) */
.auth-submit-btn-danger {
    background: #dc2626;
}
.auth-submit-btn-danger:hover:not(:disabled) {
    background: #b91c1c;
    box-shadow: 0 4px 12px rgba(220, 38, 38, 0.25);
    transform: translateY(-1px);
}
/* ログアウト確認モーダルのボタン配列 */
.logout-confirm-actions {
    display: flex;
    gap: 10px;
}
.logout-confirm-actions .auth-submit-btn {
    flex: 1;
    margin-top: 0;
}

/* =========================================================================
 * 同意ブロック (初回パスワード設定画面内)
 * ========================================================================= */
/* 同意ブロック (Phase 5 polish: 候補 C 採用 / Pattern 4 = 枠なし + 罫線 + ✓ チェック) */
.consent-block {
    margin: 24px 0 16px;
    padding: 8px 4px;
    background: transparent;
    border: none;
    border-radius: 0;
    text-align: left;
}
.consent-text {
    color: var(--text);
    font-size: 14px;
    line-height: 1.8;
}
/* 1 行目: ヘッダー (例: 「NokiGPT(農機GPT)について」) */
.consent-text .lead {
    margin: 0 0 6px;
    font-weight: 700;
    color: var(--text);
    font-size: 14px;
    line-height: 1.6;
}
/* 2 行目: サブリード (仕組み説明) */
.consent-text .lead-sub {
    margin: 0 0 14px;
    color: var(--text-sub);
    font-size: 13px;
    line-height: 1.7;
    font-weight: normal;
}
/* リスト本体 (✓ + 薄罫線で区切り) */
.consent-text ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.consent-text ul li {
    position: relative;
    padding: 10px 0 10px 22px;
    border-top: 1px solid #eee;
    font-size: 13px;
    color: var(--text-sub);
    line-height: 1.7;
}
.consent-text ul li:first-child {
    border-top: none;
}
.consent-text ul li::before {
    content: '✓';
    position: absolute;
    left: 0;
    top: 10px;
    color: var(--brand);
    font-weight: 700;
}
/* チェックボックスは Phase 5 polish で廃止済みだが、CSS 残す (将来戻すとき用) */
.consent-check {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    font-size: 14px;
    color: var(--text);
    user-select: none;
    padding-top: 14px;
    border-top: 1px solid #ebebed;
    margin-top: 4px;
}
.consent-check input[type="checkbox"] {
    width: 16px;
    height: 16px;
    cursor: pointer;
    accent-color: var(--brand);
}

/* =========================================================================
 * 緊急時フォールバックバナー (emergencyDisableAuth=true 時のみ表示)
 * ========================================================================= */
.emergency-auth-banner {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 9999;
    background: #c62828;
    color: #fff;
    padding: 10px 16px;
    font-size: 14px;
    font-weight: 600;
    text-align: center;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    align-items: center;
    justify-content: center;
    gap: 8px;
}
.emergency-auth-banner.visible {
    display: flex;
}
.emergency-auth-banner.visible ~ .header {
    margin-top: 40px;  /* バナー分だけヘッダーを下げる */
}
.emergency-auth-banner-icon {
    font-size: 16px;
}
.emergency-auth-banner-text {
    flex: 1;
}
.emergency-auth-banner-close {
    background: rgba(255, 255, 255, 0.15);
    color: #fff;
    border: none;
    border-radius: 4px;
    width: 24px;
    height: 24px;
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: inherit;
}
.emergency-auth-banner-close:hover {
    background: rgba(255, 255, 255, 0.3);
}

/* =========================================================================
 * ヘッダー設定ボタン (社外向け / Phase 4)
 * ========================================================================= */
.header-btn-settings {
    background: transparent;
    border: 1px solid var(--border-strong);
    color: var(--text);
    border-radius: 8px;
    width: 36px;
    height: 36px;
    padding: 0;
    /* SVG アイコンを中央配置 */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}
.header-btn-settings:hover {
    background: #f5f5f7;
    border-color: var(--brand);
}
/* SVG 自体は currentColor で色を継承 */
.header-btn-settings svg {
    display: block;
}

/* =========================================================================
 * 設定モーダル (パスワード変更 + ログアウト / Phase 4)
 * ========================================================================= */
.settings-modal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 9000;
    background: rgba(0, 0, 0, 0.45);
    align-items: center;
    justify-content: center;
    padding: 20px;
}
.settings-modal.visible {
    display: flex;
}
.settings-modal-content {
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
    width: 100%;
    max-width: 420px;
    max-height: 90vh;
    padding: 22px 24px;
    /* ヘッダー固定 + ボディ部 (.settings-view-stack) だけ縦スクロールにするための flex column */
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.settings-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}
.settings-modal-header h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
}
.settings-modal-x {
    background: transparent;
    border: none;
    color: var(--text-sub);
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
    padding: 4px 8px;
    border-radius: 6px;
    font-family: inherit;
}
.settings-modal-x:hover {
    background: #f5f5f7;
    color: var(--text);
}
.settings-section {
    margin: 14px 0;
}
.settings-section h4 {
    font-size: 14px;
    font-weight: 600;
    margin: 0 0 10px;
    color: var(--text);
}
.settings-divider {
    margin: 18px 0;
    border: none;
    border-top: 1px solid var(--border-strong);
}
.settings-note {
    font-size: 11px;
    color: var(--text-sub);
    margin: 8px 0 0;
    line-height: 1.5;
}

/* -------------------------------------------------------------------------
 * 設定モーダル: メニュー型 (案 A ミニマル) / Phase 6
 * - リストビュー: タイトル行なし、× だけ右上に小さく
 * - 詳細ビュー  : ‹ + タイトル のみ (× なし)
 * - アイコン    : Lucide 系 SVG (currentColor、stroke 2px、丸端) で統一
 * ------------------------------------------------------------------------- */

/* リストビュー専用バー: × ボタンだけを右寄せ */
.settings-list-bar {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    height: 32px;
    margin: -6px -8px 0 0; /* コンテンツ右上に寄せる */
}

/* 詳細ビュー専用バー: ‹ + タイトル */
.settings-detail-bar {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: -4px -4px 8px -8px;
    min-height: 36px;
}

/* HTML の hidden 属性を効かせる (display: flex を明示している分、明示的に打ち消す) */
.settings-list-bar[hidden],
.settings-detail-bar[hidden] {
    display: none;
}
.settings-detail-bar h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    color: var(--text);
}

/* × ボタン (リストビュー右上) */
.settings-modal-x {
    background: transparent;
    border: none;
    color: var(--text-sub);
    cursor: pointer;
    padding: 6px;
    border-radius: 8px;
    line-height: 0;
    font-family: inherit;
    transition: background-color 0.12s ease, color 0.12s ease;
}
.settings-modal-x:hover {
    background: #f5f5f7;
    color: var(--text);
}
/* ===========================================================================
 * メーカー機能選択モーダル (#makerMenuModal) - Glass デザイン統一
 * パーツ画面 top の resume-card と同じテイスト (半透明背景はモーダル box が
 * 担当するので、option カードはソリッド白 + brand accent + lift hover)
 * ===========================================================================*/
#makerMenuModal .settings-modal-content {
    border-radius: 18px;
    padding: 22px 24px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.20);
    border: 1px solid color-mix(in srgb, var(--text) 8%, transparent);
}
#makerMenuModal .settings-modal-header h3 {
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: var(--text);
}
.maker-menu-option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    width: 100%;
    padding: 16px 18px;
    margin-bottom: 8px;
    background: #fff;
    border: 1px solid color-mix(in srgb, var(--maker-color, #0060a8) 14%, var(--border-strong));
    border-radius: 14px;
    cursor: pointer;
    text-align: left;
    transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
    box-shadow: 0 1px 3px rgba(16, 24, 40, 0.05);
    font-family: inherit;
    position: relative;
}
.maker-menu-option:last-child { margin-bottom: 0; }
.maker-menu-option:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 20px color-mix(in srgb, var(--maker-color, #0060a8) 18%, transparent);
    border-color: var(--maker-color, #0060a8);
}
.maker-menu-option:focus-visible {
    outline: 2px solid var(--maker-color, #0060a8);
    outline-offset: 2px;
}
.maker-menu-option::after {
    content: '';
    flex-shrink: 0;
    width: 8px;
    height: 8px;
    border-right: 2px solid var(--maker-color, #0060a8);
    border-top: 2px solid var(--maker-color, #0060a8);
    transform: rotate(45deg);
    transition: transform 160ms ease;
    opacity: 0.6;
}
.maker-menu-option:hover::after {
    transform: rotate(45deg) translate(2px, -2px);
    opacity: 1;
}
.maker-menu-option-content {
    min-width: 0;
    flex: 1;
}
.maker-menu-option-label {
    font-size: 16px;
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.005em;
    margin-bottom: 4px;
}
.maker-menu-option-desc {
    font-size: 12px;
    color: var(--text-sub);
    line-height: 1.4;
}

/* =========================================================================
 * パーツ検索画面
 *   .container の 780px 制限を完全解除し、画面幅いっぱいに広げる。
 * ========================================================================= */
#screenParts.container {
    max-width: none;
    align-items: stretch;
}
.parts-shell {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    padding: 16px 0;
}
.parts-shell-body {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
    /* スクロールバーは視覚的に隠す (機能は維持) */
    scrollbar-width: none;
    -ms-overflow-style: none;
    /* パーツ画面の柔らかい背景 — 単色フラット (異色グラデーション禁止) */
    background: #f6f7f9;
}
.parts-shell-body::-webkit-scrollbar { display: none; }

/* =========================================================================
 * パーツ検索 UI 本体 (Phase 3a)
 *   parts-search-ui.html (旧 standalone) からの移植。
 *   全ルール .parts-mod (画面内) または .parts-modal (フルスクリーン) で scope。
 *   本体 nokigpt のスタイル/変数と分離するため parts-* prefix の独自変数を使用。
 * ========================================================================= */
.parts-mod,
.parts-modal {
    --parts-brand: #0060a8;
    --parts-brand-light: #e6f0fa;
    --parts-bg: #f5f5f7;
    --parts-card-bg: #fff;
    --parts-border: #d2d2d7;
    --parts-text: #1d1d1f;
    --parts-muted: #6e6e73;
    --parts-green: #1a7339;
    --parts-green-bg: #d1f0d8;
    --parts-yellow: #8a6800;
    --parts-yellow-bg: #fff4cc;
    --parts-red: #8a1a1a;
    --parts-red-bg: #ffd6d6;
}
.parts-mod *,
.parts-modal * { box-sizing: border-box; }

/* === close (×) ボタン (全 modal 共通) === */
.parts-btn-close-x {
    background: var(--parts-bg);
    border: 1px solid var(--parts-border);
    width: 32px; height: 32px;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    flex-shrink: 0;
    transition: background 0.1s, border-color 0.1s;
    font-size: 0;
}
.parts-btn-close-x::before {
    /* SVG mask で確実に中央配置 (テキスト × はフォントベースラインで微妙にズレるため) */
    content: '';
    display: block;
    width: 14px;
    height: 14px;
    background-color: var(--parts-muted);
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><line x1='18' y1='6' x2='6' y2='18'/><line x1='6' y1='6' x2='18' y2='18'/></svg>") center / contain no-repeat;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><line x1='18' y1='6' x2='6' y2='18'/><line x1='6' y1='6' x2='18' y2='18'/></svg>") center / contain no-repeat;
    transition: background-color 0.1s;
}
.parts-btn-close-x:hover {
    background: #fff;
    border-color: var(--parts-text);
}
.parts-btn-close-x:hover::before { background-color: var(--parts-text); }

/* === 機種バー (機種選択完了後) — 枠なし、フラットデザイン === */
.parts-mod .parts-model-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 4px 12px 10px;
    font-size: 13px;
    color: var(--parts-muted);
    /* picker と同じ container width に揃える */
    max-width: 720px;
    margin: 0 auto;
    box-sizing: border-box;
    width: 100%;
}
.parts-mod .parts-model-info { display: flex; align-items: baseline; gap: 6px; }
.parts-mod .parts-model-label { color: var(--parts-muted); }
.parts-mod #partsModelTitle { color: var(--parts-text); font-size: 14px; }
.parts-mod .parts-model-meta { color: var(--parts-muted); font-size: 12px; }
.parts-mod .parts-link-btn {
    background: none;
    border: none;
    color: var(--parts-brand);
    cursor: pointer;
    font-size: 13px;
    padding: 4px 8px;
    border-radius: 6px;
}
.parts-mod .parts-link-btn:hover { background: var(--parts-brand-light); }
.parts-mod .parts-model-bar-actions {
    display: flex;
    align-items: center;
    gap: 4px;
}
.parts-mod #partsSavedBtn {
    color: var(--parts-text);
    font-weight: 600;
}
.parts-mod #partsSavedBtn::before {
    content: '📌 ';
    margin-right: 2px;
}

/* === 機種ピッカー (drill-down: category → series → model) === */
.parts-mod .parts-model-picker {
    max-width: 720px;
    margin: 24px auto;
    padding: 0 16px;
    /* 3 ゾーン縦積み (Zone 1 / Zone 2 / Zone 3) */
    display: flex;
    flex-direction: column;
    gap: 16px;
}
/* スマホ表示時は余白を狭めて表示領域を最大化 */
@media (max-width: 640px) {
    .parts-mod .parts-model-picker { padding: 0 6px; margin: 16px auto; }
    .parts-mod .parts-zone { padding: 14px 12px 16px; }
}

/* === 3 ゾーン共通シェル: 枠なし (元の素朴なデザイン)
   外枠は持たず、内側のカード (resume-card / saved-mini / picker-panel) が
   それぞれ自前のフレームで視覚的単位を作る。 */
.parts-mod .parts-zone {
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
/* hidden 属性でゾーン非表示 (display:flex を上書き) */
.parts-mod .parts-zone[hidden] { display: none; }

/* === Zone 2: パーツリストを選ぶ (Glass フレームで囲う、メインの選択 UI) === */
.parts-mod .parts-zone-catalog {
    background: color-mix(in srgb, var(--parts-card-bg) 80%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    border-radius: 18px;
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
    padding: 18px 20px 20px;
}
.parts-mod .parts-zone-catalog .parts-zone-header {
    padding-bottom: 4px;
    border-bottom: 1px solid var(--parts-border);
}
.parts-mod .parts-zone-catalog .parts-zone-icon { color: var(--parts-muted); }
.parts-mod .parts-zone-catalog .parts-zone-title { color: var(--parts-text); }

/* === Zone 3: 最近保存した部品 (icon/CTA のみ brand 色アクセント) === */
.parts-mod .parts-zone-saved .parts-zone-icon { color: var(--parts-brand); }
.parts-mod .parts-zone-saved .parts-zone-action { color: var(--parts-brand); }
.parts-mod .parts-zone-saved .parts-zone-action:hover { background: var(--parts-brand-light); }

/* === Zone 1 / Zone 3 の横位置 ===
   Zone 1 (前回の続き): padding 0 で Zone 2 の Glass フレーム outer 幅に揃える
   Zone 3 (最近保存した部品): タイル area は Zone 2 の Glass フレーム outer 幅 (full)、
                                 タイトル行 (zone-header) は inset 20px (Zone 2 inner content と整列)。 */
.parts-mod .parts-zone-saved .parts-zone-header {
    padding-left: 20px;
    padding-right: 20px;
}

/* =========================================================================
 * Glass デザイン (default、Pattern C 確定 — 切替トグル削除)
 *  - 背景: 右上から brand 単色フェード (Vignette、異色なし)
 *  - カード: 半透明白 + backdrop-blur
 *  - 角丸 18px、subtle shadow で浮遊感
 * =========================================================================*/

/* 背景: Vignette */
#screenParts .parts-shell-body {
    background:
        radial-gradient(ellipse at 100% 0%, color-mix(in srgb, var(--parts-brand) 14%, transparent) 0%, transparent 55%),
        #eef1f5;
}

/* Glass: ゾーン外枠は撤去 (元の素朴なデザイン)、内側カードのみ Glass 適用
   resume-card / saved-mini は Zone 2 (parts-zone-catalog) と同じ Glass フレームに統一 */
.parts-mod .parts-picker-panel {
    background: color-mix(in srgb, var(--parts-card-bg) 55%, transparent);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    border-color: color-mix(in srgb, var(--parts-text) 8%, transparent);
}
.parts-mod .picker-option { background: transparent; }
.parts-mod .picker-option:hover { background: color-mix(in srgb, var(--parts-brand) 8%, transparent); }

/* =========================================================================
 * Loading skeleton (カタログ読込中の placeholder、3 行パルス)
 * =========================================================================*/
.parts-mod .parts-loading {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 12px 16px;
}
.parts-mod .parts-loading-row {
    height: 44px;
    border-radius: 8px;
    background: linear-gradient(90deg,
        color-mix(in srgb, var(--parts-text) 5%, transparent) 0%,
        color-mix(in srgb, var(--parts-text) 9%, transparent) 50%,
        color-mix(in srgb, var(--parts-text) 5%, transparent) 100%);
    background-size: 200% 100%;
    animation: parts-loading-shimmer 1.4s ease-in-out infinite;
}
.parts-mod .parts-loading-row:nth-child(2) { animation-delay: 0.1s; opacity: 0.85; }
.parts-mod .parts-loading-row:nth-child(3) { animation-delay: 0.2s; opacity: 0.7; }
@keyframes parts-loading-shimmer {
    0%   { background-position: 100% 0%; }
    100% { background-position: -100% 0%; }
}
.parts-mod .parts-loading-status {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 500;
    color: var(--parts-text);
    margin-bottom: 2px;
    letter-spacing: 0.01em;
}
.parts-mod .parts-loading-spinner {
    width: 14px;
    height: 14px;
    border: 2px solid color-mix(in srgb, var(--parts-brand) 22%, transparent);
    border-top-color: var(--parts-brand);
    border-radius: 50%;
    animation: parts-loading-spin 0.9s linear infinite;
    flex-shrink: 0;
}
@keyframes parts-loading-spin {
    to { transform: rotate(360deg); }
}
.parts-mod .parts-loading-label {
    color: color-mix(in srgb, var(--parts-text) 75%, transparent);
}
.parts-mod .parts-loading-dots {
    display: inline-block;
    width: 1.2em;
    color: color-mix(in srgb, var(--parts-text) 55%, transparent);
}
.parts-mod .parts-loading-dots::after {
    content: '';
    animation: parts-loading-dots 1.4s steps(4, end) infinite;
}
@keyframes parts-loading-dots {
    0%   { content: ''; }
    25%  { content: '.'; }
    50%  { content: '..'; }
    75%  { content: '...'; }
    100% { content: ''; }
}
.parts-mod .parts-zone-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding-bottom: 0;
}
.parts-mod .parts-zone-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--parts-text);
    letter-spacing: 0.01em;
}
.parts-mod .parts-zone-icon {
    color: var(--parts-brand);
    flex-shrink: 0;
}
.parts-mod .parts-zone-action {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: none;
    border: none;
    color: var(--parts-brand);
    cursor: pointer;
    font-size: 12px;
    font-weight: 500;
    padding: 4px 8px;
    border-radius: 6px;
    transition: background 120ms ease;
}
.parts-mod .parts-zone-action:hover { background: var(--parts-brand-light); }
.parts-mod .parts-zone-body { display: flex; flex-direction: column; gap: 10px; }

/* === Zone 1: 前回の続き — ヘッダー (「続きから」ラベル) は非表示 === */
.parts-mod .parts-zone-resume .parts-zone-header { display: none; }
.parts-mod .parts-resume-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 16px 18px;
    /* Zone 2 (parts-zone-catalog) と同じ Glass フレーム */
    background: color-mix(in srgb, var(--parts-card-bg) 80%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    border-radius: 18px;
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
    cursor: pointer;
    transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
    position: relative;
}
.parts-mod .parts-resume-card:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 20px rgba(0, 96, 168, 0.12);
    border-color: var(--parts-brand);
}
.parts-mod .parts-resume-card:focus-visible {
    outline: 2px solid var(--parts-brand);
    outline-offset: 2px;
}
.parts-mod .parts-resume-meta {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}
.parts-mod .parts-resume-model {
    font-size: 20px;
    font-weight: 700;
    color: var(--parts-text);
    word-break: break-all;
    letter-spacing: -0.01em;
    line-height: 1.15;
}
.parts-mod .parts-resume-meta-sub {
    font-size: 11px;
    color: var(--parts-muted);
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.parts-mod .parts-resume-cta {
    flex-shrink: 0;
    background: var(--parts-brand);
    color: #fff;
    border: none;
    border-radius: 999px;
    padding: 9px 20px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: background 160ms ease, box-shadow 160ms ease;
    box-shadow: 0 1px 3px rgba(0, 96, 168, 0.20);
    font-family: inherit;
}
.parts-mod .parts-resume-card:hover .parts-resume-cta {
    background: color-mix(in srgb, var(--parts-brand) 88%, #000);
    box-shadow: 0 6px 14px rgba(0, 96, 168, 0.28);
}

/* === Zone 3: 最近保存した部品 ===
   タイル方式で複数列 (auto-fill)、Glass デザインで統一 */
.parts-mod #partsSavedPreview {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}
@media (max-width: 480px) {
    .parts-mod #partsSavedPreview {
        grid-template-columns: 1fr 1fr;
        gap: 10px;
    }
}
.parts-mod .parts-saved-mini {
    background: color-mix(in srgb, var(--parts-card-bg) 80%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    border-radius: 18px;
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
    padding: 14px 14px 12px;
    cursor: pointer;
    transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease, background 160ms ease;
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 120px;
    overflow: hidden;
}
.parts-mod .parts-saved-mini:hover {
    transform: translateY(-1px);
    border-color: var(--parts-brand);
    background: var(--parts-card-bg);
    box-shadow: 0 6px 14px rgba(16, 24, 40, 0.06);
}
.parts-mod .parts-saved-mini:focus-visible {
    outline: 2px solid var(--parts-brand);
    outline-offset: 2px;
}
.parts-mod .parts-saved-mini-q {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--parts-text);
    word-break: break-word;
    line-height: 1.4;
    letter-spacing: -0.005em;
}
.parts-mod .parts-saved-mini-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    color: var(--parts-muted);
    line-height: 1;
}
.parts-mod .parts-saved-mini-meta .pill {
    background: var(--parts-card-bg);
    color: var(--parts-text);
    padding: 3px 8px;
    border-radius: 999px;
    border: 1px solid var(--parts-border);
    font-size: 10px;
    font-weight: 500;
    line-height: 1.2;
}
/* 機種 (machine_type) は muted 小ラベル、型式 (model) は通常テキスト ピル */
.parts-mod .parts-saved-mini-machine {
    color: var(--parts-muted);
    font-size: 11px;
    font-weight: 500;
}
.parts-mod .parts-saved-mini-model {
    color: var(--parts-text);
    font-size: 11.5px;
    font-weight: 600;
    background: var(--parts-card-bg);
    padding: 2px 8px;
    border-radius: 999px;
    border: 1px solid var(--parts-border);
}
.parts-mod .parts-saved-mini-meta .count-pill {
    background: color-mix(in srgb, var(--parts-brand) 8%, var(--parts-card-bg));
    color: var(--parts-brand);
    border-color: color-mix(in srgb, var(--parts-brand) 22%, transparent);
}
.parts-mod .parts-saved-mini-meta-sep::before { content: '·'; margin: 0; color: color-mix(in srgb, var(--parts-muted) 50%, transparent); }
.parts-mod .parts-saved-mini-summary {
    font-size: 11.5px;
    color: var(--parts-muted);
    line-height: 1.5;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
/* 選択した部品名リスト (count の置換) */
.parts-mod .parts-saved-mini-parts {
    font-size: 12px;
    color: var(--parts-text);
    line-height: 1.5;
    word-break: break-word;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.parts-mod .parts-saved-mini-more {
    color: var(--parts-muted);
    font-weight: 600;
    margin-left: 4px;
    font-size: 11px;
}
/* 発注ボタンは廃止 (要望「発注ボタンはいらん」) */
.parts-mod .parts-zone-saved-empty {
    color: var(--parts-muted);
    font-size: 12px;
    text-align: center;
    padding: 16px 0;
}
.parts-mod .parts-picker-breadcrumb {
    font-size: 14px;
    margin-bottom: 12px;
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    align-items: center;
}
.parts-mod .parts-picker-breadcrumb .crumb {
    background: none;
    border: none;
    color: var(--parts-brand);
    cursor: pointer;
    padding: 4px 8px;
    border-radius: 6px;
    font-size: 14px;
    transition: background 0.1s;
    font-family: inherit;
}
.parts-mod .parts-picker-breadcrumb .crumb:hover { background: var(--parts-brand-light); }
.parts-mod .parts-picker-breadcrumb .crumb.current {
    color: var(--parts-text);
    cursor: default;
    font-weight: 600;
}
.parts-mod .parts-picker-breadcrumb .crumb.current:hover { background: none; }
.parts-mod .parts-picker-breadcrumb .sep { color: var(--parts-muted); margin: 0 2px; user-select: none; }
.parts-mod .parts-picker-panel {
    background: var(--parts-card-bg);
    border: 1px solid var(--parts-border);
    border-radius: 12px;
    overflow: hidden;
}
.parts-mod .parts-picker-panel {
    background: var(--parts-bg);
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid var(--parts-border);
}
.parts-mod .parts-picker-panel .panel-title {
    padding: 10px 14px;
    color: var(--parts-muted);
    font-size: 12px;
    font-weight: 500;
    background: transparent;
    border-bottom: 1px solid var(--parts-border);
    letter-spacing: 0.01em;
}
/* カタログ取得失敗時の再試行ボタン (パネル全体クリック可能) */
.parts-mod .parts-retry-panel {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 18px 16px;
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--parts-text);
    font-family: inherit;
    transition: background 0.15s ease;
}
.parts-mod .parts-retry-panel:hover { background: var(--parts-brand-light); }
.parts-mod .parts-retry-panel:active { background: color-mix(in srgb, var(--parts-brand) 12%, var(--parts-bg)); }
.parts-mod .parts-retry-panel:disabled { opacity: 0.55; cursor: not-allowed; }
.parts-mod .parts-retry-panel .parts-retry-msg {
    font-size: 13px;
    color: var(--parts-text);
    text-align: center;
    line-height: 1.5;
}
.parts-mod .parts-retry-panel .parts-retry-cta {
    font-size: 12px;
    font-weight: 600;
    color: var(--parts-brand);
}
.parts-mod .picker-option {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 14px;
    cursor: pointer;
    transition: background 120ms ease, padding-left 120ms ease;
    font-size: 16px;
    border-bottom: 1px solid var(--parts-border);
    background: var(--parts-card-bg);
}
.parts-mod .picker-option:last-child { border-bottom: none; }
.parts-mod .picker-option:hover {
    background: var(--parts-brand-light);
    padding-left: 18px;
}
.parts-mod .picker-option .option-label { font-weight: 500; color: var(--parts-text); }
.parts-mod .picker-option .option-meta {
    color: var(--parts-muted);
    font-size: 11px;
    display: flex;
    align-items: center;
    gap: 10px;
}
.parts-mod .picker-option .arrow {
    color: var(--parts-border);
    font-size: 18px;
    line-height: 1;
    transition: color 120ms ease, transform 120ms ease;
}
.parts-mod .picker-option:hover .arrow {
    color: var(--parts-brand);
    transform: translateX(2px);
}
/* is-resume は旧 _askResume 用、現在は Zone 1 に分離されたので残骸 */
.parts-mod .picker-option.is-resume { background: color-mix(in srgb, var(--parts-brand) 6%, #fff); }
.parts-mod .picker-option.is-resume:hover { background: var(--parts-brand-light); }

/* === 検索フォーム (pill 形 input + mic + send) === */
.parts-mod .parts-search-form {
    display: flex;
    align-items: center;
    max-width: 800px;
    margin: 0 auto;
    padding: 4px;     /* focus 時の box-shadow リング (3px 外側) が見切れないよう余白確保 */
    width: 100%;
    box-sizing: border-box;
}
.parts-mod .parts-input-wrapper {
    flex: 1;
    display: flex;
    align-items: center;
    /* Zone 2 / カードと同じ Glass フレームで統一感 */
    background: color-mix(in srgb, var(--parts-card-bg) 80%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    border-radius: 26px;
    padding: 6px 6px 6px 20px;
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
    transition: border-color .15s, box-shadow .15s;
}
/* focus は控えめに: ブランド色 tint の border + 影をわずかに濃く (リング無し) */
.parts-mod .parts-input-wrapper:focus-within {
    border-color: color-mix(in srgb, var(--parts-brand) 30%, transparent);
    box-shadow: 0 8px 22px rgba(16, 24, 40, 0.08);
}
.parts-mod .parts-input-wrapper input[type="text"] {
    flex: 1;
    padding: 10px 6px;
    border: none;
    background: transparent;
    font-size: 15px;
    outline: none;
    font-family: inherit;
    color: var(--parts-text);
    min-width: 0;
}
.parts-mod .parts-input-wrapper input::placeholder { color: var(--parts-muted); }
.parts-mod .parts-input-wrapper input:disabled { background: #f0f0f0; cursor: not-allowed; opacity: 0.7; }
.parts-mod .parts-input-wrapper button {
    width: 36px; height: 36px;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    flex-shrink: 0;
    transition: background .15s, transform .1s, box-shadow .15s, border-color .15s;
    font-family: inherit;
    font-size: 0;
}
/* 送信ボタン */
.parts-mod #partsSendBtn { background: var(--parts-brand); color: #fff; }
.parts-mod #partsSendBtn::after {
    content: '';
    display: block;
    width: 14px; height: 14px;
    background: #fff;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 2 L8 14 M8 2 L3 7 M8 2 L13 7' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>") center/contain no-repeat;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 2 L8 14 M8 2 L3 7 M8 2 L13 7' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>") center/contain no-repeat;
}
.parts-mod #partsSendBtn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--parts-brand) 88%, #000);
    transform: scale(1.04);
}
.parts-mod #partsSendBtn:disabled { background: var(--parts-border); cursor: not-allowed; transform: none; }
/* マイクボタン */
.parts-mod #partsMicBtn {
    background: color-mix(in srgb, var(--parts-brand) 8%, #fff);
    border: 2px solid var(--parts-brand);
    margin-right: 6px;
}
.parts-mod #partsMicBtn::after {
    content: '';
    display: block;
    width: 18px; height: 18px;
    background: var(--parts-brand);
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 1a4 4 0 0 0-4 4v6a4 4 0 0 0 8 0V5a4 4 0 0 0-4-4z' fill='currentColor'/><path d='M19 10v1a7 7 0 0 1-14 0v-1M12 18.5V23M8 23h8' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' fill='none'/></svg>") center/contain no-repeat;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 1a4 4 0 0 0-4 4v6a4 4 0 0 0 8 0V5a4 4 0 0 0-4-4z' fill='currentColor'/><path d='M19 10v1a7 7 0 0 1-14 0v-1M12 18.5V23M8 23h8' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' fill='none'/></svg>") center/contain no-repeat;
}
.parts-mod #partsMicBtn:hover:not(:disabled) { background: color-mix(in srgb, var(--parts-brand) 15%, #fff); }
.parts-mod #partsMicBtn.recording {
    background: #fee2e2;
    border-color: #ef4444;
    animation: parts-mic-pulse 1.2s ease-in-out infinite;
}
.parts-mod #partsMicBtn.recording::after { background: #ef4444; }
.parts-mod #partsMicBtn:disabled { background: var(--parts-bg) !important; border-color: var(--parts-border) !important; animation: none !important; }
.parts-mod #partsMicBtn:disabled::after { background: var(--parts-border) !important; }
@keyframes parts-mic-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); }
    50%      { box-shadow: 0 0 0 8px rgba(239, 68, 68, 0); }
}

/* === 共通ボタン === */
.parts-btn {
    padding: 10px 20px;
    background: var(--parts-brand);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 0.15s;
}
.parts-btn:hover { opacity: 0.9; }
.parts-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.parts-btn-sm {
    padding: 6px 12px;
    font-size: 13px;
    background: var(--parts-brand);
}
.parts-btn-secondary {
    background: #e5e5ea;
    color: var(--parts-text);
}

/* === ステータス表示 + ローディング === */
.parts-mod .parts-status {
    padding: 12px 16px;
    background: var(--parts-card-bg);
    border-radius: 8px;
    margin-bottom: 12px;
    color: var(--parts-muted);
    font-size: 13px;
}
.parts-mod .parts-status.error { background: var(--parts-red-bg); color: var(--parts-red); }
.parts-mod .parts-status.loading {
    background: transparent;
    padding: 6px 0;
    box-shadow: none;
    display: flex;
    justify-content: center;
}
/* === ローディング: ブランド色グラデ スイープバー (Glass デザイン統一) === */
.parts-mod .parts-loading-sweep {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}
.parts-mod .parts-loading-text {
    font-size: 13px;
    color: var(--parts-text);
    font-weight: 500;
}
.parts-mod .parts-loading-bar {
    width: 240px;
    height: 6px;
    border-radius: 3px;
    background: color-mix(in srgb, var(--parts-text) 8%, transparent);
    overflow: hidden;
    position: relative;
}
.parts-mod .parts-loading-bar::before {
    content: '';
    position: absolute;
    top: 0; bottom: 0;
    width: 40%;
    left: -40%;
    background: linear-gradient(90deg, transparent, var(--parts-brand), transparent);
    animation: parts-loading-sweep 1.2s ease-in-out infinite;
}
@keyframes parts-loading-sweep {
    0%   { left: -40%; }
    100% { left: 100%; }
}

/* === パーツ検索完了トースト (上中央フローティング、3 秒) === */
.parts-toast {
    position: fixed;
    top: calc(var(--header-h, 49px) + 16px);
    left: 50%;
    transform: translate(-50%, -12px);
    z-index: 8800;
    opacity: 0;
    transition: opacity .25s ease, transform .25s cubic-bezier(.2,.7,.2,1);
    pointer-events: none;
    max-width: calc(100vw - 32px);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    line-height: 1.4;
    display: inline-flex;
    align-items: center;
}
.parts-toast.show { opacity: 1; transform: translate(-50%, 0); }

.parts-toast-style-c {
    background: color-mix(in srgb, var(--parts-brand, #0060a8) 6%, #fff);
    color: var(--parts-text, #1a1a1a);
    padding: 7px 14px 7px 10px;
    border-radius: 999px;
    border: 1px solid color-mix(in srgb, var(--parts-brand, #0060a8) 18%, #fff);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06);
    font-size: 12.5px;
    gap: 8px;
    font-weight: 500;
}
.parts-toast-style-c .parts-toast-dot {
    flex-shrink: 0;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: #10b981;
    box-shadow: 0 0 0 3px color-mix(in srgb, #10b981 22%, transparent);
}
.parts-toast-style-c .parts-toast-mini-label {
    color: var(--parts-muted, #6b7280);
    font-size: 11px;
    font-weight: 500;
    margin-left: 2px;
    padding-left: 8px;
    border-left: 1px solid color-mix(in srgb, var(--parts-brand, #0060a8) 16%, #fff);
}
.parts-toast-style-c .parts-toast-mini-num {
    color: var(--parts-text, #1d1d1f);
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: 0.03em;
    margin-left: 2px;
}

/* === タブ (セクション + ヒット) === */
.parts-mod .parts-tabs {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 16px;
    margin-bottom: 16px;
}
.parts-mod .parts-tab {
    padding: 8px 6px;
    background: var(--parts-card-bg);
    border: 1px solid var(--parts-border);
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    user-select: none;
    transition: all 0.15s;
    text-align: center;
}
.parts-mod .parts-tab:hover { background: var(--parts-brand-light); }
/* アクティブタブは検索状態 (tab-hit / has-hit-*) にかかわらず常に黒 */
.parts-mod .parts-tab.active {
    background: var(--parts-text);
    color: #fff;
    border-color: var(--parts-text);
    font-weight: 700;
    box-shadow: 0 2px 6px rgba(16, 24, 40, 0.18);
}
.parts-mod .parts-tab .score {
    margin-left: 6px;
    font-size: 11px;
    opacity: 0.9;
    background: rgba(255, 255, 255, 0.2);
    padding: 1px 6px;
    border-radius: 8px;
}
.parts-mod .parts-tab:not(.active) .score {
    background: var(--parts-bg);
    color: var(--parts-muted);
}
.parts-mod .parts-tab.tab-hit:not(.active) {
    background: var(--parts-brand);
    color: #fff;
    border-color: var(--parts-brand);
    font-weight: 700;
}
.parts-mod .parts-tab.tab-hit:not(.active):hover { opacity: 0.9; }
.parts-mod .parts-tab.tab-hit .score { background: rgba(255, 255, 255, 0.3); color: #fff; }
/* hit カラーパレット (メーカーカラー `--parts-brand` の濃淡、関連度に応じて段階的に薄く)
   非アクティブのみ着色、アクティブは上の `.parts-tab.active` (黒) で上書きされる */
.parts-mod .parts-tab.has-hit-strong:not(.active) {
    background: color-mix(in srgb, var(--parts-brand) 45%, #fff);
    color: var(--parts-text);
    border-color: color-mix(in srgb, var(--parts-brand) 45%, #fff);
}
.parts-mod .parts-tab.has-hit-mid:not(.active) {
    background: color-mix(in srgb, var(--parts-brand) 28%, #fff);
    color: var(--parts-text);
    border-color: color-mix(in srgb, var(--parts-brand) 28%, #fff);
}
.parts-mod .parts-tab.has-hit-weak:not(.active) {
    background: color-mix(in srgb, var(--parts-brand) 14%, #fff);
    color: #4a4a4a;
    border-color: color-mix(in srgb, var(--parts-brand) 14%, #fff);
}

/* === fig グリッド + カード === */
.parts-mod .parts-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 14px;
    /* 行内のカードを同じ高さに揃える (default align-items: stretch を明示) */
    align-items: stretch;
}
.parts-mod .parts-card {
    /* Zone 2 (パーツリストを選ぶ) と同じ Glass フレーム */
    background: color-mix(in srgb, var(--parts-card-bg) 80%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    border-radius: 18px;
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
    overflow: hidden;
    cursor: pointer;
    transition: transform 0.15s, box-shadow 0.15s;
    display: flex;
    flex-direction: column;
}
.parts-mod .parts-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 28px rgba(16, 24, 40, 0.10);
}
.parts-mod .parts-card.hit-strong { background: color-mix(in srgb, var(--parts-brand) 40%, #fff); }
.parts-mod .parts-card.hit-mid    { background: color-mix(in srgb, var(--parts-brand) 22%, #fff); }
.parts-mod .parts-card.hit-weak   { background: color-mix(in srgb, var(--parts-brand) 5%, #fff); }
.parts-mod .parts-card .thumb {
    width: 100%;
    aspect-ratio: 4/3;
    background: #fff;
    object-fit: contain;
    object-position: center center;
    padding: 12px;
    box-sizing: border-box;
    /* カード行 stretch 時にも全高追従 */
    flex: 1 1 auto;
    min-height: 0;
}
/* multi-page fig: 複数サムネを内部 grid で並べる。
   flex: 1 でカード全高に追従しつつ、grid-auto-rows: 1fr で行を等分配。
   各 thumb の aspect-ratio をフォールバックに残し、行 stretch 不発時の collapse 防止。 */
.parts-mod .parts-card-thumbs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-auto-rows: 1fr;
    gap: 1px;
    background: #fff;
    flex: 1 1 auto;
    min-height: 0;
}
/* サムネは background-image 方式。
   aspect-ratio: 4/3 をフォールバックに保持しつつ、grid stretch で行高に追従する。
   背景画像は contain + center で常に縦横中央に表示、padding で余白を確保。 */
.parts-mod .parts-card-thumb {
    position: relative;
    width: 100%;
    height: 100%;
    aspect-ratio: 4 / 3;
    background-color: #fff;
    background-repeat: no-repeat;
    background-position: center center;
    background-size: contain;
    background-origin: content-box;
    background-clip: content-box;
    padding: 12px;
    box-sizing: border-box;
    overflow: hidden;
    cursor: pointer;
}
.parts-mod .parts-card-thumb.is-hit {
    outline: 3px solid var(--parts-brand);
    outline-offset: -3px;
    z-index: 1;
}
.parts-mod .parts-card-thumb .thumb-page-label {
    position: absolute;
    top: 4px; left: 4px;
    background: rgba(0,0,0,0.55);
    color: #fff;
    font-size: 10px;
    line-height: 1;
    padding: 3px 6px;
    border-radius: 8px;
    font-variant-numeric: tabular-nums;
    pointer-events: none;
}
.parts-mod .parts-card-thumb .more-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.55);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    font-weight: 700;
    letter-spacing: 0.02em;
    pointer-events: none;
}
/* PC: multi-page カードはグリッド 2 マス幅 (サムネを縮めずに横並びで見せる) */
@media (min-width: 600px) {
    .parts-mod .parts-card.is-multi-page {
        grid-column: span 2;
    }
}
/* モバイル: 1 列レイアウト。サムネは内部で縦積み (横並びだとサムネ小さくなるため) */
@media (max-width: 599px) {
    .parts-mod .parts-card-thumbs {
        grid-template-columns: 1fr;
    }
}
.parts-mod .parts-card .body { padding: 6px 10px 8px; display: flex; flex-direction: column; gap: 2px; background: #f5f5f7; }
.parts-mod .parts-card.hit-strong .body { background: color-mix(in srgb, var(--parts-brand) 28%, #fff); }
.parts-mod .parts-card.hit-mid    .body { background: color-mix(in srgb, var(--parts-brand) 16%, #fff); }
.parts-mod .parts-card.hit-weak   .body { background: color-mix(in srgb, var(--parts-brand) 8%, #fff); }
.parts-mod .parts-card .title-line {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 6px;
}
.parts-mod .parts-card .fig-no { font-weight: 700; font-size: 13px; color: var(--parts-brand); }
.parts-mod .parts-card .fig-no .count { font-weight: 400; color: var(--parts-muted); font-size: 11px; margin-left: 4px; }
.parts-mod .parts-src-badge {
    display: inline-block;
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 8px;
    margin-right: 4px;
    font-weight: 600;
    vertical-align: middle;
}
.parts-mod .parts-src-badge.src-chassis { background: var(--parts-brand-light); color: var(--parts-brand); }
.parts-mod .parts-src-badge.src-engine  { background: #ffe4cc; color: #a85a00; }
/* ALL タブの catalog 区切り見出し */
.parts-mod .parts-catalog-divider {
    margin: 16px 0 8px;
    padding: 6px 12px;
    font-size: 12px;
    font-weight: 600;
    color: var(--parts-brand, #0060a8);
    background: color-mix(in srgb, var(--parts-brand, #0060a8) 6%, #fff);
    border-left: 3px solid var(--parts-brand, #0060a8);
    border-radius: 4px;
    font-family: ui-monospace, "SF Mono", monospace;
}
.parts-mod .parts-catalog-divider:first-child { margin-top: 4px; }
/* section バッジ (Fig.NN の左に表示。section 名を小さく) */
.parts-mod .parts-card .fig-section {
    display: inline-block;
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 8px;
    margin-right: 6px;
    font-weight: 600;
    vertical-align: middle;
    background: #f1f3f5;
    color: #495057;
}
/* 複数 page インジケータ (1 fig に 2+ 図がある場合のみ表示) */
.parts-mod .parts-card .multi-page {
    display: inline-block;
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 8px;
    margin-left: 6px;
    font-weight: 600;
    vertical-align: middle;
    background: color-mix(in srgb, var(--parts-brand) 12%, #fff);
    color: var(--parts-brand);
}
.parts-mod .parts-card .conf {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 500;
}
.parts-mod .parts-card .conf.high { background: var(--parts-green-bg); color: var(--parts-green); }
.parts-mod .parts-card .conf.mid  { background: var(--parts-yellow-bg); color: var(--parts-yellow); }
.parts-mod .parts-card .conf.low  { background: var(--parts-red-bg); color: var(--parts-red); }
.parts-mod .parts-card .fig-title {
    font-size: 11px;
    color: #424245;
    line-height: 1.25;
    word-break: break-all;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.parts-mod .parts-card .best-part {
    font-size: 10px;
    color: #058a3b;
    margin-top: 3px;
    line-height: 1.2;
    word-break: break-all;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.parts-mod .parts-card .best-part-score {
    color: #777;
    font-size: 9px;
    font-weight: 500;
}
.parts-mod .parts-card .reason {
    font-size: 11px;
    color: var(--parts-muted);
    padding: 4px 0;
    border-left: 2px solid var(--parts-border);
    padding-left: 6px;
    margin-top: 4px;
}
.parts-mod .parts-empty {
    text-align: center;
    color: var(--parts-muted);
    padding: 60px 20px;
}

/* === fig 詳細モーダル === */
.parts-modal {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.85);
    z-index: 8500;
    justify-content: center;
    align-items: center;
    padding: 8px;
}
.parts-modal.show { display: flex; }
.parts-modal-box {
    background: var(--parts-card-bg);
    border-radius: 12px;
    width: 96vw; height: 96vh;
    max-width: none; max-height: none;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.parts-modal-header {
    padding: 10px 16px;
    border-bottom: 1px solid var(--parts-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
}
.parts-modal-header h2 { margin: 0; font-size: 15px; flex: 1; }
.parts-modal-body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    flex: 1;
    overflow: hidden;
    min-height: 0;
}
.parts-modal-image {
    background: #fafafa;
    border-right: 1px solid var(--parts-border);
    overflow: hidden;
    padding: 8px;
    display: flex;
    /* imageWrap が viewport より高い場合(複数 page fig)に
       中央寄せだと上半分が見切れて図の上が見えなくなる。
       上端揃えで figs の頭を viewport top に表示する。 */
    align-items: flex-start;
    justify-content: center;
    position: relative;
}
.parts-image-wrap {
    position: relative;
    line-height: 0;
    cursor: grab;
    transform-origin: 0 0;
    will-change: transform;
    touch-action: none;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.parts-image-wrap.dragging { cursor: grabbing; }

/* === 縦並びの 1 page (画像 + hotspot layer + 任意 label) === */
.parts-fig-page {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.parts-fig-page-label {
    font-size: 11px;
    color: var(--parts-muted);
    background: var(--parts-bg);
    border-radius: 4px;
    padding: 2px 8px;
    align-self: flex-start;
    line-height: 1.3;
    user-select: none;
}
.parts-fig-page-image {
    position: relative;
    line-height: 0;
}
.parts-fig-page-image > img {
    display: block;
    width: 100%;
    height: auto;
    user-select: none;
    -webkit-user-drag: none;
    pointer-events: none;
}

/* === hotspot レイヤ (page 単位、絶対配置で画像にオーバーレイ) === */
.parts-hotspot-layer {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    pointer-events: none;
}
.parts-hotspot {
    position: absolute;
    width: 2.2%;
    height: 3.8%;
    transform: translate(-50%, -50%);
    pointer-events: auto;
    cursor: pointer;
    border-radius: 50%;
    outline: 1.5px solid transparent;
    transition: outline-color 0.1s, background 0.1s;
    box-sizing: border-box;
}
.parts-hotspot[data-digits="2"] { width: 3.3%; }
.parts-hotspot[data-digits="3"] { width: 4.5%; }
.parts-hotspot:hover,
.parts-hotspot.peek { background: rgba(255, 255, 0, 0.45); outline-color: var(--parts-yellow); }
.parts-hotspot.match-strong { background: rgba(0, 96, 168, 0.45); }
.parts-hotspot.match-mid    { background: rgba(0, 96, 168, 0.28); }
.parts-hotspot.match-weak   { background: rgba(0, 96, 168, 0.14); }
.parts-hotspot.checked,
.parts-hotspot.match-strong.checked,
.parts-hotspot.match-mid.checked,
.parts-hotspot.match-weak.checked {
    outline: 2px solid #ff3030;
    background: transparent;
}

/* === cross-fig 参照 === */
.parts-cross-ref {
    position: absolute;
    width: 6.5%;
    height: 3.8%;
    transform: translate(0, -50%);
    border-radius: 6px;
    outline: 1.5px solid rgba(200, 130, 30, 0.85);
    background: rgba(255, 140, 0, 0.10);
    cursor: pointer;
    pointer-events: auto;
    transition: background 0.1s, outline 0.1s;
    z-index: 2;
    box-sizing: border-box;
}
.parts-cross-ref[data-len="3"] { width: 4.5%; }
.parts-cross-ref[data-len="4"] { width: 5.5%; }
.parts-cross-ref[data-len="5"] { width: 6.5%; }
.parts-cross-ref[data-len="6"] { width: 7.5%; }
.parts-cross-ref[data-len="7"] { width: 8.5%; }
.parts-cross-ref[data-len="8"] { width: 9.5%; }

/* === fig_ref: 組立体 → サブ展開図ジャンプ用 (番号ドット直下) === */
.parts-fig-ref {
    /* 2026-05-20: font-size / padding / border-radius / outline-width は JS で動的セット
       (図番ドット内の数字と同サイズに追従、min/max なし) */
    position: absolute;
    transform: translate(-50%, 0);
    outline-style: solid;
    outline-color: rgba(200, 130, 30, 0.85);
    background: rgba(255, 140, 0, 0.85);
    color: #fff;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    pointer-events: auto;
    z-index: 2;
    white-space: nowrap;
    box-sizing: border-box;
    letter-spacing: 0.5px;
}
.parts-fig-ref:hover {
    background: rgba(255, 140, 0, 1);
    outline-color: rgba(200, 130, 30, 1);
}

/* === fig 参照プレビュー (より上の z-index) === */
.parts-modal.parts-ref-preview { z-index: 8600; }
.parts-ref-preview-box {
    background: var(--parts-card-bg);
    border-radius: 10px;
    max-width: 96vw;
    max-height: 96vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.parts-ref-preview-header {
    padding: 10px 16px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    border-bottom: 1px solid var(--parts-border);
    font-weight: 600;
    color: var(--parts-brand);
    font-size: 14px;
}
.parts-ref-preview-actions { display: flex; gap: 6px; }
.parts-ref-preview-header button {
    border: none;
    cursor: pointer;
    font-size: 13px;
    padding: 6px 12px;
    border-radius: 6px;
    transition: background 0.1s, opacity 0.1s;
}
.parts-ref-preview-header .parts-ref-jump-btn {
    background: var(--parts-brand);
    color: #fff;
    font-weight: 600;
}
.parts-ref-preview-header .parts-ref-jump-btn:hover { opacity: 0.88; }

/* モバイル用フッター jump ボタン: PC では隠す */
.parts-ref-preview-footer { display: none; }
.parts-ref-preview-imgwrap {
    flex: 1;
    overflow: auto;
    padding: 12px;
    display: flex;
    justify-content: center;
    align-items: center;
    background: #fafafa;
}
.parts-ref-preview-stage {
    position: relative;
    display: inline-block;
    line-height: 0;
    max-width: 100%;
}
.parts-ref-preview-stage img {
    display: block;
    max-width: 100%;
    max-height: 80vh;
}
.parts-ref-preview-marker {
    position: absolute;
    width: 4%; height: 6%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    outline: 3px solid #ff3030;
    background: rgba(255, 48, 48, 0.18);
    pointer-events: none;
    animation: parts-ref-marker-pulse 1.4s ease-in-out infinite;
    z-index: 5;
    box-sizing: border-box;
}
@keyframes parts-ref-marker-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(255, 48, 48, 0.5); }
    50%      { box-shadow: 0 0 0 12px rgba(255, 48, 48, 0); }
}

/* === ズーム controls (一体型 pill 形状)
   スマホはピンチで操作するのでボタン非表示 (≤640px) */
@media (max-width: 640px) {
    .parts-zoom-controls { display: none !important; }
}
.parts-zoom-controls {
    position: absolute;
    top: 12px; right: 12px;
    display: flex;
    align-items: center;
    background: rgba(20, 22, 28, 0.62);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 18px;
    padding: 3px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
    z-index: 5;
    user-select: none;
}
.parts-zoom-btn {
    background: transparent;
    color: rgba(255, 255, 255, 0.92);
    border: none;
    width: 28px; height: 28px;
    border-radius: 14px;
    font-size: 16px;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .12s, color .12s;
}
.parts-zoom-btn:hover { background: rgba(255, 255, 255, 0.18); color: #fff; }
.parts-zoom-btn:active { background: rgba(255, 255, 255, 0.28); }
.parts-zoom-info {
    color: rgba(255, 255, 255, 0.92);
    padding: 0 10px;
    font-size: 11px;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    min-width: 44px;
    text-align: center;
    line-height: 28px;
}

/* === hotspot popup (モバイル) === */
.parts-hotspot-popup {
    position: absolute;
    z-index: 8;
    background: rgba(0, 0, 0, 0.88);
    color: #fff;
    padding: 8px 12px 10px;
    border-radius: 10px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 160px;
    max-width: 80vw;
    font-size: 13px;
    pointer-events: auto;
}
.parts-hotspot-popup::after {
    content: '';
    position: absolute;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
    width: 0; height: 0;
    border: 8px solid transparent;
    border-top-color: rgba(0, 0, 0, 0.88);
    border-bottom: 0;
}
/* popup が dot の下に出る場合、矢印を上向きに反転 */
.parts-hotspot-popup.below::after {
    bottom: auto;
    top: -8px;
    border-top: 0;
    border-bottom: 8px solid rgba(0, 0, 0, 0.88);
}
.parts-hotspot-popup .parts-popup-name {
    line-height: 1.3;
    word-break: break-all;
}
.parts-hotspot-popup .parts-popup-name .item-no {
    color: #8ec5f5;
    font-weight: 700;
    margin-right: 6px;
}
.parts-hotspot-popup .parts-popup-name .popup-body-no {
    display: inline-block;
    margin-left: 8px;
    padding: 1px 8px;
    background: rgba(255, 255, 255, 0.18);
    color: #ffd28a;
    border-radius: 999px;
    font-size: 11px;
    font-family: ui-monospace, "SF Mono", monospace;
    font-weight: 500;
    white-space: nowrap;
}
.parts-hotspot-popup .parts-popup-btn {
    background: var(--parts-brand);
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 8px 14px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}
.parts-hotspot-popup .parts-popup-btn.unselect { background: #ff5050; }

/* === 部品リスト (modal-parts) === */
.parts-modal-parts {
    overflow-y: auto;
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.parts-part-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    border: 1px solid transparent;
    transition: background 0.1s;
}
.parts-part-row:hover,
.parts-part-row.peek,
.parts-part-row.match-strong.peek,
.parts-part-row.match-mid.peek,
.parts-part-row.match-weak.peek,
.parts-part-row.selected.peek {
    background: var(--parts-yellow-bg);
    border-color: var(--parts-yellow);
}
.parts-part-row.selected { background: var(--parts-brand-light); border-color: var(--parts-brand); }
.parts-part-row.match-strong { background: color-mix(in srgb, var(--parts-brand) 25%, #fff); }
.parts-part-row.match-strong.selected { background: var(--parts-brand-light); }
.parts-part-row.match-mid { background: color-mix(in srgb, var(--parts-brand) 14%, #fff); }
.parts-part-row.match-mid.selected { background: var(--parts-brand-light); }
.parts-part-row.match-weak { background: color-mix(in srgb, var(--parts-brand) 6%, #fff); }
.parts-part-row.match-weak.selected { background: var(--parts-brand-light); }
.parts-part-row input { margin: 0; flex-shrink: 0; }
.parts-part-row .item-no {
    font-weight: 700;
    color: var(--parts-brand);
    min-width: 30px;
    flex-shrink: 0;
    text-align: right;
}
.parts-part-row .name {
    flex: 1;
    word-break: break-all;
    line-height: 1.3;
}
.parts-part-row.match-strong .name { font-weight: 600; }
.parts-part-row.match-mid .name { font-weight: 600; }
.parts-part-row .qty {
    font-size: 11px;
    color: var(--parts-muted);
    background: var(--parts-bg);
    padding: 1px 6px;
    border-radius: 8px;
    flex-shrink: 0;
}
.parts-part-row.match-strong .qty { background: color-mix(in srgb, var(--parts-brand) 35%, #fff); color: var(--parts-brand); }
.parts-part-row.match-mid .qty { background: color-mix(in srgb, var(--parts-brand) 22%, #fff); color: var(--parts-brand); }
/* 号機表示 (No. ~59 / No. 60~ / No. 100~300)。号機指定なし部品では空欄、レイアウト維持のため min-width 確保しない (空なら詰める) */
.parts-part-row .body-no {
    font-size: 10px;
    color: var(--parts-muted);
    font-family: ui-monospace, "SF Mono", monospace;
    flex-shrink: 0;
    white-space: nowrap;
}
.parts-part-row .body-no:empty { display: none; }
.parts-part-row.match-strong .body-no { color: var(--parts-brand); }
.parts-part-row.match-mid .body-no { color: var(--parts-brand); }
.parts-part-row .code {
    font-family: ui-monospace, "SF Mono", monospace;
    font-size: 11px;
    color: var(--parts-muted);
}

/* === modal footer === */
.parts-modal-footer {
    border-top: 1px solid var(--parts-border);
    padding: 10px 16px;
    background: var(--parts-bg);
    font-size: 13px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.parts-modal-footer .parts-sel-count {
    color: var(--parts-text);
    font-weight: 500;
}
.parts-modal-footer .parts-sel-count .parts-count-num {
    color: var(--parts-brand);
    font-weight: 700;
    font-size: 16px;
    margin: 0 2px;
}
.parts-modal-footer .parts-btn:disabled {
    background: #c5c5cb;
    cursor: not-allowed;
}

/* fig modal の footer 専用: ボタンを中央寄せ、count は左固定 */
.parts-fig-modal-footer {
    justify-content: center;
    position: relative;
}
.parts-fig-modal-footer .parts-sel-count {
    position: absolute;
    left: 16px;
    top: 50%;
    transform: translateY(-50%);
}
.parts-fig-modal-footer #partsOpenSelBtn {
    min-width: 280px;
    font-weight: 600;
}
/* fig 前後 nav ボタン (Glass 統一デザイン、検索ボタンの左右に配置) */
.parts-fig-nav-controls {
    display: inline-flex;
    align-items: center;
    gap: 12px;
}
.parts-fig-nav-btn {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--parts-card-bg) 80%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
    cursor: pointer;
    color: var(--parts-text);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
    flex-shrink: 0;
    padding: 0;
}
.parts-fig-nav-btn:hover { background: color-mix(in srgb, var(--parts-brand) 12%, var(--parts-card-bg)); border-color: color-mix(in srgb, var(--parts-brand) 30%, transparent); }
.parts-fig-nav-btn:active { transform: scale(0.94); }
.parts-fig-nav-btn:disabled { opacity: 0.30; cursor: not-allowed; transform: none; }
.parts-fig-nav-btn:disabled:hover { background: color-mix(in srgb, var(--parts-card-bg) 80%, transparent); border-color: color-mix(in srgb, var(--parts-text) 8%, transparent); }

@media (max-width: 720px) {
    /* モバイル: count を上側に持ってきてボタン全幅 */
    .parts-fig-modal-footer { flex-direction: column; gap: 8px; }
    .parts-fig-modal-footer .parts-sel-count { position: static; transform: none; }
    .parts-fig-nav-controls { width: 100%; gap: 8px; }
    .parts-fig-modal-footer #partsOpenSelBtn { flex: 1; min-width: 0; }
}

/* === parts 選択モーダル (第 2) === */
.parts-modal.parts-sel-modal { z-index: 8700; }
.parts-sel-modal-box {
    background: var(--parts-card-bg);
    border-radius: 12px;
    width: min(92vw, 1100px);
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.parts-sel-modal-body {
    flex: 1;
    overflow-y: auto;
    padding: 12px 16px;
}
.parts-sel-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.parts-sel-table thead th {
    text-align: left;
    padding: 8px 10px;
    background: var(--parts-bg);
    border-bottom: 2px solid var(--parts-border);
    font-weight: 600;
    color: var(--parts-muted);
    font-size: 12px;
    white-space: nowrap;
}
.parts-sel-table tbody td {
    padding: 10px;
    border-bottom: 1px solid var(--parts-border);
    vertical-align: top;
}
.parts-sel-table tbody tr:hover { background: var(--parts-brand-light); }
.parts-sel-table .col-figno    { font-weight: 700; color: var(--parts-brand); white-space: nowrap; }
.parts-sel-table .col-code     { font-family: ui-monospace, "SF Mono", monospace; white-space: nowrap; }
.parts-sel-table .col-name     { word-break: break-all; line-height: 1.3; min-width: 160px; }
.parts-sel-table .col-qty      { white-space: nowrap; color: var(--parts-muted); }
.parts-sel-table .col-price    { white-space: nowrap; text-align: right; font-weight: 600; }
/* 販売価格列は社内モード (sales_price あり) のみ表示 */
.parts-sel-table .col-price-sale { display: none; }
.parts-sel-modal.has-sales-price .parts-sel-table .col-price-sale { display: table-cell; }

/* === parts 保存済みモーダル (Phase 7) === */
/* === 保存済み部品モーダル (Glass デザイン、パーツ top と統一) === */
.parts-modal.parts-saved-modal { z-index: 8650; }
.parts-saved-modal-box {
    background: color-mix(in srgb, var(--parts-card-bg) 92%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border-radius: 18px;
    width: min(92vw, 760px);
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    box-shadow: 0 20px 60px rgba(16, 24, 40, 0.18);
}
.parts-saved-modal-body {
    flex: 1;
    overflow-y: auto;
    padding: 14px 18px 18px;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.parts-saved-modal-body::-webkit-scrollbar { display: none; }
.parts-saved-list { display: flex; flex-direction: column; gap: 10px; }
.parts-saved-loading,
.parts-saved-empty {
    color: var(--parts-muted);
    font-size: 13px;
    text-align: center;
    padding: 24px 0;
}

/* === 一覧カード === */
.parts-saved-card {
    background: color-mix(in srgb, var(--parts-card-bg) 80%, transparent);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    border-radius: 12px;
    padding: 12px 14px;
    cursor: pointer;
    transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
    position: relative;
}
.parts-saved-card:hover {
    transform: translateY(-1px);
    border-color: var(--parts-brand);
    box-shadow: 0 6px 14px rgba(16, 24, 40, 0.08);
}
.parts-saved-card-date { font-size: 11px; color: var(--parts-muted); }
.parts-saved-card-q {
    font-size: 14px;
    font-weight: 600;
    color: var(--parts-text);
    margin-top: 4px;
    word-break: break-word;
    padding-right: 60px; /* 削除ボタン領域確保 */
}
.parts-saved-card-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.parts-saved-pill {
    background: var(--parts-card-bg);
    color: var(--parts-muted);
    font-size: 11px;
    padding: 2px 8px;
    border-radius: 999px;
    white-space: nowrap;
    border: 1px solid var(--parts-border);
}
.parts-saved-card-summary {
    font-size: 12px;
    color: var(--parts-muted);
    margin-top: 6px;
    line-height: 1.4;
}
.parts-saved-card-delete {
    position: absolute;
    top: 10px;
    right: 12px;
    background: none;
    border: 1px solid var(--parts-border);
    border-radius: 6px;
    color: var(--parts-muted);
    font-size: 11px;
    padding: 3px 8px;
    cursor: pointer;
    transition: all 120ms ease;
}
.parts-saved-card-delete:hover { background: #fef2f2; border-color: #fca5a5; color: #dc2626; }

/* === 詳細表示 === */
.parts-saved-detail { display: flex; flex-direction: column; gap: 14px; }
.parts-saved-detail-meta { font-size: 11px; color: var(--parts-muted); }
.parts-saved-detail-pills {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}

/* fig 画像 + 円描画 */
.parts-saved-detail-fig { display: flex; justify-content: center; }
.parts-saved-detail-fig:empty { display: none; }
.parts-saved-detail-fig-loading {
    color: var(--parts-muted);
    font-size: 12px;
    padding: 24px 0;
    text-align: center;
}
.parts-saved-fig-wrap {
    position: relative;
    width: 100%;
    max-width: 480px;
    border-radius: 12px;
    overflow: hidden;
    background: var(--parts-card-bg);
    border: 1px solid color-mix(in srgb, var(--parts-text) 8%, transparent);
    touch-action: none;
}
.parts-saved-fig-stage {
    position: relative;
    transform-origin: 0 0;
    will-change: transform;
}
.parts-saved-fig-img {
    display: block;
    width: 100%;
    height: auto;
    user-select: none;
    -webkit-user-drag: none;
    pointer-events: none;
}
/* overlay は .parts-hotspot-layer を併用するので追加スタイル不要
   (中の dot は .parts-hotspot.checked を使うので search 時の赤丸と同じ) */

/* テーブル (PC) と カード (モバイル) — レスポンシブ切替 */
.parts-saved-detail-tablewrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.parts-saved-detail-tablewrap::-webkit-scrollbar { display: none; }
.parts-saved-detail-items {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.parts-saved-detail-items thead th {
    text-align: left;
    padding: 8px 10px;
    background: var(--parts-bg);
    border-bottom: 2px solid var(--parts-border);
    font-weight: 600;
    color: var(--parts-muted);
    font-size: 11px;
    white-space: nowrap;
}
.parts-saved-detail-items tbody td {
    padding: 8px 10px;
    border-bottom: 1px solid var(--parts-border);
    vertical-align: top;
}
.parts-saved-detail-items .col-figno { font-weight: 700; color: var(--parts-brand); white-space: nowrap; }
.parts-saved-detail-items .col-code { font-family: ui-monospace, "SF Mono", monospace; white-space: nowrap; }
.parts-saved-detail-items .col-name { word-break: break-all; line-height: 1.3; min-width: 140px; }
.parts-saved-detail-items .col-qty { white-space: nowrap; color: var(--parts-muted); }
.parts-saved-detail-items .col-price { white-space: nowrap; text-align: right; font-weight: 600; }
.parts-saved-detail-items .col-price-sale { display: none; }
.parts-saved-modal.has-sales-price .parts-saved-detail-items .col-price-sale { display: table-cell; }

/* モバイル用カード (PC では非表示) */
.parts-saved-detail-cards { display: none; flex-direction: column; gap: 10px; }
.parts-saved-detail-card {
    background: var(--parts-bg);
    border: 1px solid var(--parts-border);
    border-radius: 12px;
    padding: 12px 14px;
}
.parts-saved-detail-card .card-head {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-bottom: 8px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--parts-border);
}
.parts-saved-detail-card .card-figno {
    background: var(--parts-brand);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 999px;
    flex-shrink: 0;
}
.parts-saved-detail-card .card-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--parts-text);
    word-break: break-all;
    line-height: 1.3;
}
.parts-saved-detail-card .card-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    font-size: 12px;
    padding: 3px 0;
}
.parts-saved-detail-card .card-row .label {
    color: var(--parts-muted);
    flex-shrink: 0;
}
.parts-saved-detail-card .card-row .value {
    color: var(--parts-text);
    text-align: right;
    word-break: break-all;
    font-weight: 500;
}
.parts-saved-detail-card .card-row .value.mono {
    font-family: ui-monospace, "SF Mono", monospace;
    font-weight: 500;
}

@media (max-width: 640px) {
    .parts-saved-detail-tablewrap { display: none; }
    .parts-saved-detail-cards { display: flex; }
}

/* === 削除ボタン (詳細モーダル下部) === */
.parts-saved-detail-footer {
    display: flex;
    justify-content: center;
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--parts-border);
}
.parts-saved-detail-delete {
    background: transparent;
    color: var(--parts-red);
    border: 1px solid var(--parts-red);
    border-radius: 10px;
    padding: 10px 24px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: background 120ms ease;
}
.parts-saved-detail-delete:hover { background: var(--parts-red-bg); }
.parts-saved-detail-delete:disabled { opacity: 0.5; cursor: not-allowed; }

.parts-alt-badge {
    display: inline-block;
    background: var(--parts-yellow-bg);
    color: var(--parts-yellow);
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 8px;
    margin-left: 6px;
    font-weight: 600;
    vertical-align: middle;
}
/* 2026-05-21: 供給打切バッジ (塗りつぶし赤 + 白文字、目立つように強調) */
.parts-discontinued-badge {
    display: inline-block;
    background: #d32f2f;
    color: #fff;
    font-size: 11px;
    padding: 2px 8px;
    border-radius: 4px;
    margin-left: 6px;
    font-weight: 700;
    vertical-align: middle;
    white-space: nowrap;
    letter-spacing: 0.5px;
    box-shadow: 0 1px 2px rgba(211, 47, 47, 0.3);
}
/* 行自体は透過 / グレーアウトしない (整備士が事前に気付ける状態を保持、保存時に除外される) */
.parts-price-pending {
    color: var(--parts-muted);
    font-size: 12px;
    font-weight: normal;
}
.parts-sel-cards { display: none; flex-direction: column; gap: 10px; }
.parts-sel-card {
    background: var(--parts-bg);
    border-radius: 10px;
    padding: 10px 12px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
}
.parts-sel-card .card-head {
    display: flex;
    align-items: baseline;
    gap: 8px;
}
.parts-sel-card .card-figno { font-weight: 700; color: var(--parts-brand); }
.parts-sel-card .card-name { flex: 1; word-break: break-all; }
.parts-sel-card .card-row {
    font-size: 12px;
    color: var(--parts-muted);
    display: flex;
    gap: 6px;
    align-items: baseline;
    flex-wrap: wrap;
}
.parts-sel-card .card-row .label { color: var(--parts-muted); min-width: 64px; }
.parts-sel-card .card-row .value {
    color: var(--parts-text);
    font-family: ui-monospace, "SF Mono", monospace;
    word-break: break-all;
}
.parts-sel-card .card-foot {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-top: 4px;
    padding-top: 4px;
    border-top: 1px dashed var(--parts-border);
    font-size: 13px;
}
.parts-sel-card .card-foot .qty { color: var(--parts-muted); }
.parts-sel-card .card-foot .price { font-weight: 600; }

/* === モバイル + iPad: 部品選択モーダルのテーブル → カード切替 + fig modal 部品リスト非表示 (≤1024px) === */
@media (max-width: 1024px) {
    .parts-sel-table { display: none; }
    .parts-sel-cards { display: flex; }

    /* iPad 以下では fig 詳細モーダルの右サイドバーを隠して画像エリア最大化、
       部品選択は画像内の番号 dot タップ → popup 経由で行う */
    .parts-modal-body {
        grid-template-columns: 1fr;
        grid-template-rows: 1fr;
    }
    .parts-modal-image { border-right: none; }
    .parts-modal-parts { display: none; }
}

/* === モバイル: parts UI 縦積みなど (≤720px) === */
@media (max-width: 720px) {
    /* ref preview の jump ボタンをヘッダー → フッター中央へ移動 */
    .parts-ref-jump-header { display: none !important; }
    .parts-ref-preview-footer {
        display: flex;
        justify-content: center;
        padding: 12px 16px;
        border-top: 1px solid var(--parts-border);
        background: var(--parts-bg);
    }
    .parts-ref-jump-footer {
        background: var(--parts-brand);
        color: #fff;
        font-weight: 600;
        font-size: 14px;
        padding: 12px 28px;
        border-radius: 10px;
        border: none;
        cursor: pointer;
        min-width: 220px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        transition: opacity 0.1s;
    }
    .parts-ref-jump-footer:active { opacity: 0.85; }
}

.settings-modal-x svg {
    display: block;
}

/* 戻るボタン (詳細バー左) */
.settings-back-btn {
    background: transparent;
    border: none;
    color: var(--text);
    cursor: pointer;
    padding: 6px 8px;
    border-radius: 8px;
    line-height: 0;
    font-family: inherit;
    transition: background-color 0.12s ease;
}
.settings-back-btn:hover {
    background: #f5f5f7;
}
.settings-back-btn svg {
    display: block;
}

/* リストと詳細を入れ替える領域 */
.settings-view-stack {
    position: relative;
    /* flex 親 (.settings-modal-content) の中で残り高さを占有しつつ自前スクロール */
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.settings-view-stack::-webkit-scrollbar { display: none; }
.settings-view {
    display: none;
    opacity: 0;
    transform: translateX(8px);
    transition: opacity 160ms ease, transform 160ms ease;
}
.settings-view.active {
    display: block;
    opacity: 1;
    transform: translateX(0);
}
.settings-view-detail.active {
    animation: settings-slide-in 180ms ease;
}
@keyframes settings-slide-in {
    from { opacity: 0; transform: translateX(16px); }
    to   { opacity: 1; transform: translateX(0); }
}

/* メニューリスト本体 (説明文なし、シンプル一行) */
.settings-menu {
    list-style: none;
    margin: 0;
    padding: 0;
}
.settings-list-item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 4px;
    border-bottom: 1px solid var(--border, #eee);
    cursor: pointer;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    transition: background-color 100ms ease;
}
/* ★ Phase 4: settings-modal の項目を mode 別に表示分岐
   - data-mode="external" の項目は社内モード (body[data-app-mode="internal"]) で非表示
   - data-mode="internal" の項目は社外モード (body[data-app-mode="external"]) で非表示
   - data-mode 未指定 = 両モード表示 (利用状況/表示/バージョン情報) */
body[data-app-mode="internal"] [data-mode="external"] { display: none !important; }
body[data-app-mode="external"] [data-mode="internal"] { display: none !important; }
/* ★ admin 専用項目 (管理画面など) は is_admin=true のときだけ表示。
   data-mode と AND 条件: 例えば「管理画面」は data-mode="internal" + data-admin-only="true"
   なので、社内 + 管理者の組み合わせでのみ表示される。 */
body[data-app-admin="false"] [data-admin-only="true"] { display: none !important; }
/* 起動直後 (認証完了前) は is_admin 不明 → デフォルト非表示 (data-app-admin 未設定時) */
body:not([data-app-admin="true"]) [data-admin-only="true"] { display: none !important; }

/* ★ v1.9.12 (2026-05-29、v1.9.13 で位置補正): 関連質問リンク
 * .message-body 内末尾 (回答テキスト直下、参考ページ画像の上) に控えめなリンクテキスト群として表示。
 * 選択肢チップ (.clarify-option) とは別スタイルで、補足的な印象。 */
.related-questions {
    margin: 12px 0 8px;
    padding: 8px 0 4px;
    border-top: 1px dashed #d0d5dd;
    width: 100%;
    box-sizing: border-box;
}
.related-questions-label {
    color: #98a2b3;
    font-size: 0.85em;
    margin-bottom: 6px;
    font-weight: 500;
}
.related-question-link {
    display: block;
    color: #475467;
    text-decoration: none;
    cursor: pointer;
    font-size: 0.92em;
    line-height: 1.5;
    margin: 4px 0;
    padding: 3px 0;
    border-bottom: 1px dotted transparent;
    transition: color 0.15s, border-color 0.15s;
}
.related-question-link:hover {
    color: #2563eb;
    border-bottom-color: #93c5fd;
}
.settings-list-item:last-child {
    border-bottom: none;
}
.settings-list-item:hover,
.settings-list-item:focus-visible {
    background: #f7f8fa;
    outline: none;
}
.settings-list-item:active {
    background: #eef0f4;
}

/* 行内アイコン (左): SVG をそのまま中央配置、背景なしでフラットに */
.settings-list-item-icon {
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text-sub);
}
.settings-list-item-icon svg {
    display: block;
}

/* ラベル: 1 行、標準ウェイト */
.settings-list-item-label {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 15px;
    font-weight: 500;
    color: var(--text);
    line-height: 1.3;
}

/* 右の chevron: 薄め */
.settings-list-item-arrow {
    flex: 0 0 auto;
    color: var(--text-sub);
    line-height: 0;
    opacity: 0.6;
}
.settings-list-item-arrow svg {
    display: block;
}

/* 詳細パネル (中身は固有のフォーム等) */
/* ★ 履歴パネル: 一覧 (cards) + 詳細 (panel within panel) */
.settings-history-toolbar {
    padding: 4px 0 12px;
    border-bottom: 1px solid var(--border, #eee);
    margin-bottom: 12px;
}
.settings-history-type {
    font-size: 13px;
    color: #6e6e73;
    font-weight: 600;
}
.settings-history-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.settings-history-loading,
.settings-history-empty {
    padding: 16px;
    text-align: center;
    color: #6e6e73;
    font-size: 14px;
}
.settings-history-item {
    background: #fff;
    border: 1px solid var(--border, #eee);
    border-radius: 8px;
    padding: 12px 14px;
    cursor: pointer;
    transition: background 100ms ease, border-color 100ms ease;
}
.settings-history-item:hover {
    background: #f5f5f7;
    border-color: #d1d1d6;
}
.settings-history-item-meta {
    font-size: 11px;
    color: #6e6e73;
    margin-bottom: 6px;
}
.settings-history-item-date {
    font-size: 11px;
    color: #6e6e73;
    margin-bottom: 4px;
}
.settings-history-item-pills,
.settings-history-detail-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 8px;
}
.settings-history-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 10px;
    background: #f0f3f7;
    color: #1d1d1f;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 500;
}
/* メーカーピルは色付きで識別しやすく */
.settings-history-pill-maker {
    background: #0060a8;
    color: #fff;
}
.settings-history-item-q {
    font-size: 14px;
    color: #1d1d1f;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.settings-history-item-hits {
    margin-top: 6px;
    font-size: 11px;
    color: #0060a8;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-history-detail {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 4px 0;
}
.settings-history-back {
    align-self: flex-start;
    background: none;
    border: none;
    color: #0060a8;
    font-size: 13px;
    cursor: pointer;
    padding: 4px 0;
}
.settings-history-back:hover { text-decoration: underline; }
.settings-history-detail-meta {
    font-size: 12px;
    color: #6e6e73;
}
.settings-history-detail-q,
.settings-history-detail-a,
.settings-history-detail-hits {
    font-size: 14px;
    line-height: 1.6;
    word-break: break-word;
}
.settings-history-detail-q strong,
.settings-history-detail-a strong,
.settings-history-detail-hits strong {
    display: block;
    font-size: 12px;
    color: #6e6e73;
    margin-bottom: 4px;
}
.settings-history-detail-a {
    background: #f5f5f7;
    padding: 12px 14px;
    border-radius: 8px;
    /* テーブル等が幅をはみ出す時の保険 (テーブル自体は .table-scroll で横スクロール) */
    overflow-x: hidden;
}
.settings-history-detail-a .answer-body {
    /* 履歴詳細内の markdown レンダリング: チャット側と同じスタイルを継承しつつ、
       履歴 UI の文字サイズに合わせて微調整 */
    font-size: 14px;
    line-height: 1.6;
}
/* 履歴詳細内のテーブルは幅 100% に収め、はみ出す時だけ横スクロール */
.settings-history-detail-a .answer-body table {
    width: 100%;
    max-width: 100%;
}
.settings-history-detail-a .answer-body .table-scroll {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.settings-history-detail-a .answer-body .table-scroll::-webkit-scrollbar { display: none; }
.settings-history-detail-a .answer-body p:first-child {
    margin-top: 0;
}
.settings-history-detail-a .answer-body p:last-child {
    margin-bottom: 0;
}
.settings-history-detail-hits {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    color: #0060a8;
}
.settings-detail-panel {
    display: none;
}
.settings-detail-panel.active {
    display: block;
}

/* -------------------------------------------------------------------------
 * 表示パネル / Phase 6
 * フォントサイズ切替 (将来「テーマ」等もここに追加)。
 * --user-font-scale を body にぶら下げて、chat 内 calc に乗算される設計。
 * 既存の --chat-zoom (ピンチズーム) と独立、両者は乗算で重なる。
 * ------------------------------------------------------------------------- */

/* フォントサイズ変数 (デフォルト = 中) */
body {
    --user-font-scale: 1;
}
body.font-size-small  { --user-font-scale: 0.9; }
body.font-size-large  { --user-font-scale: 1.25; }

/* 表示パネル本体 */
#settingsPanelDisplay .display-section {
    margin: 4px 0 16px;
}
#settingsPanelDisplay .display-section-label {
    font-size: 11px;
    color: var(--text-sub);
    margin-bottom: 8px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

/* iOS segmented control 風のセグメント */
#settingsPanelDisplay .display-segmented {
    display: flex;
    width: 100%;
    background: #f1f3f6;
    border-radius: 10px;
    padding: 3px;
    gap: 0;
}
#settingsPanelDisplay .display-segmented-btn {
    flex: 1 1 0;
    padding: 9px 12px;
    background: transparent;
    border: none;
    border-radius: 8px;
    font-size: 13px;
    color: var(--text-sub);
    cursor: pointer;
    font-family: inherit;
    transition: background-color 120ms ease, color 120ms ease,
                font-weight 120ms ease, box-shadow 120ms ease;
    -webkit-tap-highlight-color: transparent;
}
#settingsPanelDisplay .display-segmented-btn:hover {
    color: var(--text);
}
#settingsPanelDisplay .display-segmented-btn.is-active {
    background: #fff;
    color: var(--text);
    font-weight: 600;
    box-shadow: 0 1px 2px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04);
}

/* 機種・型式カードのテキスト: 中・大時はベースを 15px → 17px に上げる
   (PC・スマホ共通。--user-font-scale で連動して大はさらに大きくなる) */
body.font-size-medium .select-card .card-title,
body.font-size-large  .select-card .card-title,
body.font-size-medium .model-card-name,
body.font-size-large  .model-card-name {
    font-size: calc(17px * var(--user-font-scale, 1));
}

/* スマホ幅 (≤640px) でのレイアウト調整:
   - 型式 .model-group-grid: 中・大 → 1 列 / 小 → デフォルトの 2 列
   - 機種 .select-grid:        大 → 1 列    / 中・小 → デフォルトの 2 列 */
@media (max-width: 640px) {
    body.font-size-medium .model-group-grid,
    body.font-size-large  .model-group-grid {
        grid-template-columns: 1fr;
    }
    body.font-size-large .select-grid {
        grid-template-columns: 1fr;
    }
}

/* -------------------------------------------------------------------------
 * 利用状況パネル / Phase 6 (rev2: スコープ厳格化 + 洗練)
 * すべてのセレクタを .usage-panel 配下に閉じ込めて、他に影響しない設計。
 * 状態クラス (.is-warn / .is-blocked) は .usage-panel 自体に付ける。
 * ------------------------------------------------------------------------- */
.usage-panel {
    /* 状態色を CSS 変数で集中管理 (default = brand 青) */
    --usage-accent: var(--brand, #0060a8);
    --usage-accent-soft: var(--brand-100, #e2eef7);
    --usage-track: #eef0f4;
}
.usage-panel.is-warn {
    --usage-accent: #e89400;        /* オレンジ */
    --usage-accent-soft: #fff7e6;
}
.usage-panel.is-blocked {
    --usage-accent: #d93025;        /* 赤 */
    --usage-accent-soft: #fde7e9;
}

/* ヘッド (ラベル + 大きめ数字) */
.usage-panel .usage-head {
    margin: 4px 0 14px;
}
.usage-panel .usage-head-label {
    font-size: 11px;
    color: var(--text-sub);
    letter-spacing: 0.04em;
    margin-bottom: 6px;
    text-transform: uppercase;
}
.usage-panel .usage-head-numbers {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    color: var(--text);
    line-height: 1.1;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0 4px;
}
.usage-panel .usage-head-used {
    font-size: 28px;
    font-weight: 700;
    color: var(--usage-accent);
    transition: color 120ms ease;
}
.usage-panel .usage-head-sep {
    font-size: 18px;
    color: var(--text-sub);
    font-weight: 400;
    margin: 0 2px;
}
.usage-panel .usage-head-limit {
    font-size: 18px;
    color: var(--text-sub);
    font-weight: 500;
}
.usage-panel .usage-head-unit {
    font-size: 12px;
    color: var(--text-sub);
    font-family: inherit;
    margin-left: 2px;
}

/* 進捗バー (枠 + 塗り + 右端パーセント) */
.usage-panel .usage-bar-wrap {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 18px;
}
.usage-panel .usage-bar-track {
    flex: 1 1 auto;
    height: 10px;
    background: var(--usage-track);
    border-radius: 999px;
    overflow: hidden;
    /* バーが「ない」状態でもうっすら枠線で見えるように */
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);
}
.usage-panel .usage-bar-fill {
    height: 100%;
    width: 0%;
    background: var(--usage-accent);
    border-radius: 999px;
    transition: width 240ms ease, background-color 160ms ease;
}
.usage-panel .usage-bar-percent {
    flex: 0 0 auto;
    min-width: 44px;
    text-align: right;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 13px;
    font-weight: 600;
    color: var(--usage-accent);
    transition: color 120ms ease;
}

/* メタ情報 (残り / 対象期間) */
.usage-panel .usage-meta {
    margin: 0;
    padding: 0;
    border-top: 1px solid var(--border, #eee);
}
.usage-panel .usage-meta-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid var(--border, #eee);
    gap: 12px;
}
.usage-panel .usage-meta-row:last-child {
    border-bottom: none;
}
.usage-panel .usage-meta-label {
    font-size: 12px;
    color: var(--text-sub);
    margin: 0;
}
.usage-panel .usage-meta-value {
    font-size: 13px;
    color: var(--text);
    margin: 0;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    text-align: right;
}

/* 警告メッセージ (warn / blocked 時のみ) */
.usage-panel .usage-warn-msg {
    margin: 14px 0 0;
    padding: 10px 12px;
    border-radius: 8px;
    font-size: 12px;
    line-height: 1.5;
    background: var(--usage-accent-soft);
    color: var(--usage-accent);
    border: 1px solid var(--usage-accent);
    /* 高コントラストにしたいので文字色は accent そのまま、背景は soft */
}

/* -------------------------------------------------------------------------
 * バージョン情報パネル (案 C2: 区切り線型) / Phase 6 Stage C
 * ------------------------------------------------------------------------- */
.version-info-row {
    padding: 12px 0;
    border-bottom: 1px solid var(--border, #eee);
}
.version-info-row:last-child {
    border-bottom: none;
}
.version-info-label {
    font-size: 11px;
    color: var(--text-sub);
    margin-bottom: 4px;
    line-height: 1.3;
}
.version-info-value {
    font-size: 14px;
    color: var(--text);
    line-height: 1.4;
    /* バージョン番号や日付は等幅で読みやすく */
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.version-info-notes {
    font-size: 13px;
    color: var(--text);
    line-height: 1.5;
    /* リリースノートは改行を保持して表示 */
    white-space: pre-wrap;
    word-break: break-word;
}

/* =========================================================================
 * 画面共通: select 系 (機種選択・型式選択用)
 * ========================================================================= */
/* 機種選択 / 型式選択画面の本体ラッパー (元 .container-select 互換) */
.select-wrap {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior-x: none;
    padding: 0 20px 48px;
    /* スクロールバー非表示 */
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.select-wrap::-webkit-scrollbar { display: none; }
.select-header {
    margin-top: 40px;
    margin-bottom: 24px;
    position: relative;
}
.select-header h2 {
    font-size: calc(26px * var(--user-font-scale, 1));
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
    letter-spacing: -0.01em;
}
.select-header .select-sub,
.select-header .sub {
    color: var(--text-sub);
    font-size: calc(14px * var(--user-font-scale, 1));
}
.select-back {
    background: #e5e7eb;
    border: 1px solid #d1d5db;
    color: #374151;
    padding: 6px 14px;
    border-radius: var(--r-pill);
    font-size: 12px;
    cursor: pointer;
    margin-bottom: 14px;
    font-family: inherit;
    transition: background .15s, color .15s, border-color .15s;
}
.select-back:hover {
    background: var(--bg-soft);
    color: var(--brand);
    border-color: var(--brand);
}
.select-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}
.select-card {
    /* Glass デザイン (パーツ検索と統一) */
    background: color-mix(in srgb, #fff 80%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--text) 8%, transparent);
    border-radius: 18px;
    padding: 18px 16px;
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
    font-family: inherit;
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
    /* 機種ボタンは縦横中央揃え */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: var(--text);
}
.select-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 28px rgba(16, 24, 40, 0.10);
    border-color: color-mix(in srgb, var(--brand) 30%, transparent);
}
.select-card .card-title {
    font-weight: 600;
    color: var(--text);
    font-size: calc(15px * var(--user-font-scale, 1));
    margin-bottom: 2px;
}
.select-card .card-sub {
    font-size: calc(12px * var(--user-font-scale, 1));
    color: var(--text-sub);
}
.select-loading,
.select-empty {
    text-align: center;
    padding: 40px 20px;
    color: var(--text-mute);
    font-size: 14px;
}

/* S1: スケルトンカード (機種・型式 読み込み中) */
.skeleton-card {
    background: linear-gradient(90deg,
        var(--bg-soft) 0%,
        var(--border-strong) 50%,
        var(--bg-soft) 100%);
    background-size: 200% 100%;
    border-radius: 12px;
    animation: skeleton-shimmer 1.4s ease-in-out infinite;
}
.select-grid .skeleton-card {
    height: 64px;
}
.select-grid .skeleton-card:nth-child(2) { animation-delay: 0.08s; }
.select-grid .skeleton-card:nth-child(3) { animation-delay: 0.16s; }
.select-grid .skeleton-card:nth-child(4) { animation-delay: 0.24s; }
.select-grid .skeleton-card:nth-child(5) { animation-delay: 0.32s; }
.select-grid .skeleton-card:nth-child(6) { animation-delay: 0.40s; }
.select-grid .skeleton-card:nth-child(7) { animation-delay: 0.48s; }
.select-grid .skeleton-card:nth-child(8) { animation-delay: 0.56s; }

.skeleton-model-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.skeleton-group-header {
    height: 18px;
    width: 90px;
    background: var(--brand-100, #e2eef7);
    border-radius: 4px;
    animation: skeleton-fade 1.6s ease-in-out infinite;
}
.skeleton-model-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
    gap: 10px;
}
.skeleton-model-grid .skeleton-card {
    height: 56px;
    border-radius: var(--r-md, 8px);
}
.skeleton-model-grid .skeleton-card:nth-child(2) { animation-delay: 0.08s; }
.skeleton-model-grid .skeleton-card:nth-child(3) { animation-delay: 0.16s; }
.skeleton-model-grid .skeleton-card:nth-child(4) { animation-delay: 0.24s; }
.skeleton-model-grid .skeleton-card:nth-child(5) { animation-delay: 0.32s; }
.skeleton-model-grid .skeleton-card:nth-child(6) { animation-delay: 0.40s; }
.skeleton-model-grid .skeleton-card:nth-child(7) { animation-delay: 0.48s; }
.skeleton-model-grid .skeleton-card:nth-child(8) { animation-delay: 0.56s; }
@media (max-width: 600px) {
    .skeleton-model-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
    .skeleton-model-grid .skeleton-card { height: 48px; }
}
@keyframes skeleton-shimmer {
    0%, 100% { background-position: 200% 0; }
    50%      { background-position: -200% 0; }
}
@keyframes skeleton-fade {
    0%, 100% { opacity: 0.4; }
    50%      { opacity: 1; }
}

/* =========================================================================
 * 型式選択画面 (グループ化レイアウト)
 * ========================================================================= */
.model-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 10px;
    margin: 0 -20px 18px -20px;
    padding: 12px 20px;
    position: sticky;
    top: 0;
    background: var(--bg);
    z-index: 20;
    border-bottom: 1px solid var(--border);
}
.model-toolbar .model-search { min-width: 0; }
.model-search {
    position: relative;
    flex: 1;
    display: flex;
    align-items: center;
    background: var(--bg);
    border: 1px solid var(--border-strong);
    border-radius: var(--r-pill);
    padding: 0 14px;
    min-height: 42px;
    box-shadow: var(--shadow-sm);
    transition: border-color 0.15s, box-shadow 0.15s;
}
.model-search:focus-within {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px var(--brand-100);
}
.model-search-icon {
    color: var(--text-mute);
    flex-shrink: 0;
    margin-right: 10px;
}
.model-search input {
    flex: 1;
    background: transparent;
    border: none;
    outline: none;
    font-size: 15px;
    font-family: inherit;
    color: var(--text);
    padding: 8px 0;
    min-width: 0;
    /* iOS Safari の入力欄ネイティブスタイル (角丸 + 内側シャドウ) を無効化。
       これがあると親 .model-search のピル形と二重に見える */
    -webkit-appearance: none;
    appearance: none;
    border-radius: 0;
    box-shadow: none;
    -webkit-box-shadow: none;
}
.model-search input::placeholder { color: var(--text-mute); }
.model-search-clear {
    background: var(--bg-soft);
    border: none;
    color: var(--text-sub);
    width: 24px; height: 24px;
    border-radius: 50%;
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    transition: background 0.12s;
}
.model-search-clear:hover { background: var(--border-strong); }
.model-count {
    color: var(--text-sub);
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    text-align: right;
    flex-shrink: 0;
}
.model-count .matched {
    color: var(--brand);
    font-weight: 700;
}

.model-list {
    display: flex;
    flex-direction: column;
    gap: 22px;
}
.model-list .select-loading,
.model-list .select-empty {
    padding: 32px;
    text-align: center;
    color: var(--text-mute);
    font-size: 14px;
}
.model-list .select-empty { color: #c03; }
.model-list .no-match {
    padding: 40px;
    text-align: center;
    color: var(--text-mute);
    font-size: 14px;
    background: var(--bg-soft);
    border-radius: var(--r-md);
    border: 1px dashed var(--border-strong);
}
.model-list .no-match strong {
    color: var(--text);
    display: block;
    margin-bottom: 6px;
    font-size: 15px;
}

.model-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.model-group-header {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: calc(12px * var(--user-font-scale, 1));
    font-weight: 700;
    color: var(--text-sub);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.model-group-header .prefix-label {
    background: var(--brand-50);
    color: var(--brand-dark);
    border: 1px solid var(--brand-200);
    background: color-mix(in srgb, var(--brand) 8%, #fff);
    color:      color-mix(in srgb, var(--brand) 80%, #000);
    border: 1px solid color-mix(in srgb, var(--brand) 25%, #fff);
    padding: 3px 10px;
    border-radius: var(--r-pill);
    font-size: calc(11px * var(--user-font-scale, 1));
    letter-spacing: 0.05em;
}
.model-group-header .count {
    color: var(--text-mute);
    font-weight: 500;
}
.model-group-header .divider {
    flex: 1;
    height: 1px;
    background: var(--border);
}

.model-group-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
    gap: 10px;
}
.model-card {
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--r-md);
    padding: 12px 14px;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s, transform 0.1s, box-shadow 0.15s;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 56px;
    font-family: inherit;
    color: var(--text);
    /* グリッドセルから絶対にはみ出さないため (型式名は flex-shrink:0 のため、長い名前 + バッジで膨れがち) */
    overflow: hidden;
    min-width: 0;
}
.model-card:hover {
    border-color: var(--brand);
    background: var(--brand-50);
    background: color-mix(in srgb, var(--brand) 6%, #fff);
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}
.model-card:active { transform: translateY(0); }
.model-card-name {
    font-size: calc(15px * var(--user-font-scale, 1));
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.01em;
    flex-shrink: 0;
    white-space: nowrap;
}
.model-card-name .hl {
    background: linear-gradient(transparent 55%, #ffe779 55%);
    font-weight: 800;
    padding: 0 1px;
}
.model-card:hover .model-card-name {
    color: var(--brand-dark);
}
.model-card-badges {
    display: flex;
    gap: 4px;
    flex-shrink: 1;
    overflow: hidden;
    min-width: 0;
}
.model-card-badges .card-badge {
    /* メーカー色から自動でバッジ色を生成 (color-mix 対応ブラウザ)
       未対応の場合は --brand-100 等にフォールバック */
    background: var(--brand-100);
    color: var(--brand-dark);
    border: 1px solid var(--brand-200);
    background: color-mix(in srgb, var(--brand) 14%, #fff);
    color:      color-mix(in srgb, var(--brand) 80%, #000);
    border: 1px solid color-mix(in srgb, var(--brand) 32%, #fff);
    padding: 2px 7px;
    border-radius: var(--r-pill);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.02em;
    flex-shrink: 0;
}

@media (max-width: 640px) {
    .model-toolbar {
        gap: 8px;
        top: 0;
        margin: 0 -14px 14px -14px;
        padding: 10px 14px;
    }
    .model-count { font-size: calc(12px * var(--user-font-scale, 1)); }
    .model-group-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
    .model-card { padding: 10px 12px; min-height: 48px; }
    .model-card-name { font-size: calc(13px * var(--user-font-scale, 1)); }
}

/* =========================================================================
 * トークンメーター (リング型)
 * ========================================================================= */
.token-meter {
    display: none;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}
.token-meter.visible { display: inline-flex; }
.token-meter-bars {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    position: relative;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: conic-gradient(
        var(--tkm-fill, #16a34a) 0 var(--fill-angle, 0deg),
        rgba(16, 24, 40, 0.10) var(--fill-angle, 0deg) 360deg
    );
    overflow: hidden;
    transition: background 0.3s ease;
}
.token-meter-bars::before {
    content: '';
    position: absolute;
    inset: 5px;
    background: var(--bg);
    border-radius: 50%;
    z-index: 1;
}
.token-meter-bars::after {
    content: attr(data-pct);
    position: absolute;
    inset: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 7px;
    font-weight: 500;
    color: var(--tkm-fill, #0060a8);
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.04em;
    line-height: 1;
    z-index: 2;
}
.token-meter-label {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-sub);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
}
.token-meter.warn .token-meter-label { color: #b45309; font-weight: 600; }
.token-meter.blocked .token-meter-label { color: #b91c1c; font-weight: 700; }

/* =========================================================================
 * 消費トークン バッジ (回答下に表示)
 * ========================================================================= */
.token-usage {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 10px;
    color: #bbb;
    margin-top: 8px;
    cursor: default;
    user-select: none;
}
.token-usage svg {
    width: 12px;
    height: 12px;
    fill: none;
    stroke: #ccc;
    stroke-width: 1.5;
}

/* =========================================================================
 * 更新バナー
 * ========================================================================= */
.update-banner {
    display: none;
    position: fixed;
    bottom: 0; left: 0; right: 0;
    background: var(--brand);
    color: #fff;
    padding: 12px 20px;
    z-index: 100;
    box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.1);
    justify-content: center;
    align-items: center;
    gap: 14px;
    font-size: 14px;
}
.update-banner.visible { display: flex; }
.update-btn-apply, .update-btn-dismiss {
    padding: 6px 14px;
    border-radius: var(--r-pill);
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    border: 1px solid rgba(255, 255, 255, 0.5);
}
.update-btn-apply {
    background: #fff;
    color: var(--brand);
}
.update-btn-dismiss {
    background: transparent;
    color: #fff;
}

/* =========================================================================
 * チャット画面 (Phase B - Step A1: 最小チャット機能)
 * ========================================================================= */
#screenChat {
    align-items: stretch;
}
#screenChat .chat-screen-inner {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    max-width: 780px;
    width: 100%;
    margin: 0 auto;
    padding: 0 20px;
}
.chat-area {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    padding: 24px 0 12px;
    scroll-behavior: smooth;
    /* スクロールバー非表示 */
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.chat-area::-webkit-scrollbar { display: none; }
.chat-content {
    display: flex;
    flex-direction: column;
    gap: 22px;
    /* iPad/タブレット用: 2 本指ピンチで --chat-zoom を更新 → 画像とテキストが追従 */
    zoom: var(--chat-zoom, 1);
}
/* テキストは calc() で明示的にスケール (iOS Safari の zoom はテキスト不変の仕様) */
.chat-content .message {
    font-size: calc(15px * var(--chat-zoom, 1) * var(--user-font-scale, 1));
}
.chat-content .answer-body h1 { font-size: calc(20px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .answer-body h2 { font-size: calc(17px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .answer-body h3 { font-size: calc(15px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .answer-body h4 { font-size: calc(14px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .answer-body table { font-size: calc(13px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .answer-body a.inline-page-ref { font-size: calc(12px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .answer-body a.inline-page-ref svg {
    width: calc(12px * var(--chat-zoom, 1) * var(--user-font-scale, 1));
    height: calc(12px * var(--chat-zoom, 1) * var(--user-font-scale, 1));
}
.chat-content .message-sources { font-size: calc(12px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .page-thumb-label { font-size: calc(9px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .clarify-question { font-size: calc(14px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }
.chat-content .clarify-option { font-size: calc(14px * var(--chat-zoom, 1) * var(--user-font-scale, 1)); }

/* メッセージ吹き出し */
.message {
    line-height: 1.75;
    font-size: 15px;
    color: var(--text);
    display: flex;
    gap: 12px;
    align-items: flex-start;
}
.message-user {
    flex-direction: row-reverse;
    text-align: left;
    gap: 10px;
}
.message-user .user-text {
    background: var(--brand-50);
    background: color-mix(in srgb, var(--brand) 10%, #fff);
    border: 1px solid var(--brand-100);
    border: 1px solid color-mix(in srgb, var(--brand) 22%, #fff);
    color: var(--text);
    padding: 10px 16px;
    border-radius: 18px;
    border-top-right-radius: 6px;
    white-space: pre-wrap;
    word-wrap: break-word;
    max-width: 80%;
}
.message-ai::before {
    content: 'AI';
    flex-shrink: 0;
    width: 28px; height: 28px;
    border-radius: 50%;
    background: var(--brand);
    color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 12px;
    font-weight: 700;
    margin-top: 2px;
}
.message-ai .message-body {
    flex: 1;
    min-width: 0;
    line-height: 1.75;
}

/* AI 回答内 Markdown */
.answer-body h1,
.answer-body h2,
.answer-body h3,
.answer-body h4 {
    margin-top: 18px;
    margin-bottom: 8px;
    font-weight: 700;
    color: var(--text);
    line-height: 1.35;
    letter-spacing: -0.005em;
}
.answer-body h1 { font-size: 20px; }
.answer-body h2 { font-size: 17px; }
.answer-body h3 { font-size: 15px; }
.answer-body h4 { font-size: 14px; color: var(--text-sub); }
.answer-body h1:first-child,
.answer-body h2:first-child,
.answer-body h3:first-child { margin-top: 0; }
.answer-body p { margin: 10px 0; }
.answer-body p:first-child { margin-top: 0; }
.answer-body p:last-child { margin-bottom: 0; }
.answer-body ul,
.answer-body ol {
    padding-left: 22px;
    margin: 8px 0;
}
.answer-body li { margin: 4px 0; }
.answer-body strong { font-weight: 700; }
.answer-body em { font-style: italic; }
.answer-body code {
    background: var(--bg-soft);
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 0.92em;
    font-family: 'SF Mono', Menlo, monospace;
}

/* AI 回答内テーブル (v5 と完全互換: T1-E スタイル) */
.answer-body {
    padding-right: 2px;
    overflow-wrap: break-word;
}
.answer-body table {
    border-collapse: separate;
    border-spacing: 0;
    border: 1px solid var(--border-strong);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
    width: 100%;
    max-width: 100%;
    margin: 12px 1px 12px 0;
    font-size: 13px;
}
.answer-body th {
    background: var(--bg-soft);
    color: var(--brand);
    font-size: 0.82em;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 700;
    border: none;
    padding: 10px 14px;
    text-align: left;
    word-break: break-word;
}
.answer-body td {
    border: none;
    border-bottom: 1px solid rgba(16, 24, 40, 0.04);
    padding: 10px 14px;
    text-align: left;
    word-break: break-word;
}
.answer-body tr:last-child td { border-bottom: none; }
/* ゼブラストライプ */
.answer-body tbody tr:nth-child(even) td {
    background: var(--bg-soft);
}
.answer-body tr:hover td {
    background: rgba(0, 96, 168, 0.02);
}
/* 横スクロールラッパー */
.answer-body .table-scroll {
    width: 100%;
    overflow-x: auto;
    margin: 14px 0;
    -webkit-overflow-scrolling: touch;
    border-radius: 10px;
}
.answer-body .table-scroll table {
    margin: 0;
}

/* 表のセルでフォントサイズが揺れないようにする
   - <code> はデフォルトで 0.92em 縮小されるため、表内ではインライン要素間で
     大小がチラつき「途中から急に大きくなる」ように見えた → セル内は inherit に統一
   - <p> / <span> も親 (table) の 13px を継承させる
   - 背景 / パディング等の見た目はそのまま維持 (font-size のみ揃える) */
.answer-body th code,
.answer-body td code {
    font-size: inherit;
}
.answer-body th p,
.answer-body td p,
.answer-body th span,
.answer-body td span {
    font-size: inherit;
    margin: 0;
}

/* =========================================================================
 * 関連ページ サムネイル (v5 と同じ)
 * ========================================================================= */
.message-sources {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--border);
    font-size: 12px;
    color: var(--text-sub);
}
.page-thumbs {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}
.page-thumb {
    width: 64px;
    height: 84px;
    border: 1px solid var(--border);
    border-radius: var(--r-sm);
    overflow: hidden;
    cursor: pointer;
    background: var(--bg-soft);
    position: relative;
    transition: transform .15s, box-shadow .15s, border-color .15s;
}
.page-thumb:hover {
    transform: scale(1.06);
    border-color: var(--brand);
    box-shadow: var(--shadow-md);
}
.page-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.page-thumb-label {
    position: absolute;
    bottom: 0;
    left: 0; right: 0;
    background: color-mix(in srgb, var(--brand) 88%, transparent);
    color: white;
    font-size: 9px;
    padding: 1px 2px;
    text-align: center;
    line-height: 1.2;
}

/* スマホ: 関連ページサムネは 1 行 5 個固定 (利用可能幅にあわせて自動スケール)。
   PC / タブレットでは固定 64×84 のままで横幅が広くても並びすぎない。 */
@media (max-width: 640px) {
    .page-thumbs {
        display: grid;
        grid-template-columns: repeat(5, 1fr);
        gap: 6px;
    }
    .page-thumb {
        width: auto;
        height: auto;
        aspect-ratio: 64 / 84;
    }
    .page-thumb-label { font-size: 8px; }
}

/* =========================================================================
 * 部品コード価格 hover ツールチップ (v5 と同じ)
 * ========================================================================= */
.answer-body code {
    background: var(--bg-soft);
    padding: 2px 6px;
    border-radius: 4px;
    font-family: 'SF Mono', 'Menlo', 'Monaco', 'Courier New', monospace;
    font-size: 0.88em;
    color: var(--brand-dark);
    border: 1px solid var(--border);
}
.part-code-priced {
    background: var(--brand-50) !important;
    background: color-mix(in srgb, var(--brand) 10%, #fff) !important;
    border-color: var(--brand-200) !important;
    border-color: color-mix(in srgb, var(--brand) 25%, #fff) !important;
    color: var(--brand-dark) !important;
    color: color-mix(in srgb, var(--brand) 75%, #000) !important;
    cursor: help;
    position: relative;
    transition: background 0.15s, border-color 0.15s;
}
.part-code-priced:hover {
    background: var(--brand-100) !important;
    background: color-mix(in srgb, var(--brand) 18%, #fff) !important;
    border-color: var(--brand) !important;
}
.part-code-priced::after {
    content: '¥';
    margin-left: 4px;
    font-size: 0.85em;
    color: var(--brand);
    font-weight: 700;
}
.part-code-priced.is-active {
    background: var(--brand) !important;
    color: white !important;
    border-color: var(--brand-dark) !important;
}
.part-code-priced.is-active::after { color: white; }
.price-tooltip {
    position: absolute;
    z-index: 200;
    background: var(--text);
    color: white;
    padding: 10px 14px;
    border-radius: var(--r-md);
    font-size: 13px;
    line-height: 1.55;
    box-shadow: var(--shadow-lg);
    max-width: 320px;
    min-width: 220px;
    pointer-events: none;
    animation: pt-fade-in .12s ease;
}
.price-tooltip .pt-name { font-weight: 700; margin-bottom: 4px; }
.price-tooltip .pt-code {
    font-family: 'SF Mono', monospace;
    font-size: 11px;
    color: #c5c5c5;
    margin-bottom: 6px;
}
.price-tooltip .pt-price {
    font-size: 16px;
    font-weight: 700;
    color: #ffd87a;
}
.price-tooltip .pt-label {
    font-size: 11px;
    color: #c5c5c5;
    margin-top: 2px;
}
.price-tooltip .pt-retail {
    font-size: 12px;
    color: #aabbcc;
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid rgba(255, 255, 255, 0.15);
}
.price-tooltip .pt-alt {
    font-size: 11px;
    color: #ffb86c;
    margin-top: 4px;
}
@keyframes pt-fade-in {
    from { opacity: 0; transform: translateY(2px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* =========================================================================
 * インライン参照画像ボタン (v5 と同じ REF 9 + 書類アイコン)
 * ========================================================================= */
.answer-body a.inline-page-ref {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--brand-100);
    background: color-mix(in srgb, var(--brand) 18%, #fff);
    color: var(--brand-dark);
    color: color-mix(in srgb, var(--brand) 80%, #000);
    border: none;
    border-radius: 4px;
    padding: 2px 8px;
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;
    margin: 0 2px;
    cursor: pointer;
    transition: background .15s, color .15s;
    vertical-align: baseline;
}
.answer-body a.inline-page-ref svg {
    width: 12px; height: 12px;
    opacity: 0.75;
    flex-shrink: 0;
    transition: opacity .15s;
}
.answer-body a.inline-page-ref:hover {
    background: color-mix(in srgb, var(--brand) 32%, #fff);
}
.answer-body a.inline-page-ref:hover svg { opacity: 1; }
/* 段落ごとにまとめた参考画像バー */
.answer-body .page-refs-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin: 8px 0 4px;
    padding: 8px 10px;
    background: color-mix(in srgb, var(--brand) 5%, transparent);
    border-left: 3px solid color-mix(in srgb, var(--brand) 35%, transparent);
    border-radius: 4px 8px 8px 4px;
}
.answer-body .page-refs-bar-label {
    font-size: 11px;
    font-weight: 600;
    color: var(--text-mute);
    margin-right: 2px;
    flex-shrink: 0;
}
.answer-body .page-refs-bar a.inline-page-ref {
    /* バー内ではマージン無し (gap で揃える) */
    margin: 0;
}
.answer-body code:has(> a.inline-page-ref) {
    background: transparent;
    padding: 0;
    border: 0;
    border-radius: 0;
    font-family: inherit;
    font-size: inherit;
    color: inherit;
}

/* =========================================================================
 * 訂正機能 (フローティングボタン + モーダル + トースト) v5 互換
 * ========================================================================= */
.correction-toast {
    position: fixed;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--text);
    color: white;
    padding: 12px 22px;
    border-radius: var(--r-pill);
    font-size: 13px;
    box-shadow: var(--shadow-lg);
    z-index: 1100;
    opacity: 0;
    transition: opacity 0.3s;
    pointer-events: none;
}
.correction-toast.show { opacity: 1; }

/* 画像モーダル (v5 完全互換: 拡大 + ページ移動 + スワイプ) */
.image-modal {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.92);
    z-index: 1000;
    align-items: center;
    justify-content: center;
    padding: 0;
}
.image-modal.open { display: flex; }
.image-modal-content {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.image-modal-scroll {
    overflow: hidden;       /* 通常時はスクロールバー出さない */
    -webkit-overflow-scrolling: touch;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.image-modal-scroll.zoomed {
    overflow: auto;         /* ズーム時のみスクロールバー有効 */
    align-items: flex-start;
    justify-content: flex-start;
}
/* スクロールバーを薄くする (Webkit) */
.image-modal-scroll::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}
.image-modal-scroll::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.4);
    border-radius: 4px;
}
.image-modal-scroll::-webkit-scrollbar-track {
    background: transparent;
}
.image-modal img {
    background: white;
    max-width: 100%;
    max-height: 100vh;
    max-height: 100dvh;
    transition: max-width 0.2s, max-height 0.2s;
    display: block;
}
.image-modal img.zoomed {
    max-width: none;
    max-height: none;
    width: 200%;
    cursor: grab;
}
.image-modal-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(255, 255, 255, 0.95);
    border: none;
    width: 52px; height: 52px;
    border-radius: 50%;
    font-size: 28px;
    color: var(--text);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-lg);
    transition: background 0.15s, transform 0.1s;
    z-index: 5;
    user-select: none;
    font-family: inherit;
}
.image-modal-arrow:hover:not(:disabled) {
    background: white;
    transform: translateY(-50%) scale(1.05);
}
.image-modal-arrow:active:not(:disabled) {
    transform: translateY(-50%) scale(0.95);
}
.image-modal-arrow:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}
.image-modal-arrow.prev { left: 16px; }
.image-modal-arrow.next { right: 16px; }
.image-modal-loading {
    position: absolute;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.45);
    pointer-events: none;
    z-index: 4;
}
.image-modal-content.is-loading .image-modal-loading {
    display: flex;
}
.image-modal-spinner {
    width: 56px; height: 56px;
    border: 5px solid rgba(255, 255, 255, 0.25);
    border-top-color: white;
    border-radius: 50%;
    animation: modalSpin 0.85s linear infinite;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.35);
}
.image-modal-loading-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
}
@keyframes modalSpin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}
@media (max-width: 640px) {
    .image-modal-arrow {
        width: 40px; height: 40px;
        font-size: 20px;
        opacity: 0.7;
    }
    .image-modal-arrow.prev { left: 4px; }
    .image-modal-arrow.next { right: 4px; }
}
.image-modal-close {
    position: fixed;
    top: 12px; right: 12px;
    background: rgba(255, 255, 255, 0.9);
    border: none;
    width: 36px; height: 36px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-md);
    z-index: 10;
    font-family: inherit;
    /* × 文字を完全中央に配置 (フォント依存の上下余白を排除) */
    font-size: 0;
    padding: 0;
    line-height: 0;
    color: var(--text);
}
.image-modal-close::before {
    content: '×';
    font-size: 22px;
    line-height: 1;
    /* × グリフは見た目で 1〜2px 上方寄りなので微調整 */
    transform: translateY(-1px);
}
.image-modal-close:hover { background: white; }

/* ローディングアニメーション (L16: 思考バブル) */
.loading {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--text-sub);
    font-size: 13px;
}
.loading-bubble {
    background: var(--bg-soft, #f7f7f8);
    border: 1px solid var(--border, #f1f5f9);
    border-radius: 14px 14px 14px 4px;
    padding: 7px 12px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    line-height: 0;
}
.loading-bubble span {
    width: 5px;
    height: 5px;
    background: var(--brand, #0060a8);
    border-radius: 50%;
    animation: loading-bubble-blink 1.2s ease-in-out infinite;
}
.loading-bubble span:nth-child(2) { animation-delay: 0.15s; }
.loading-bubble span:nth-child(3) { animation-delay: 0.3s; }
@keyframes loading-bubble-blink {
    0%, 60%, 100% { opacity: 0.3; transform: translateY(0); }
    30%           { opacity: 1;   transform: translateY(-2px); }
}

/* 入力エリア (v5 と同じ) */
.input-area {
    display: flex;
    gap: 0;
    padding: 12px 0 22px 0;
    flex-shrink: 0;
    background: var(--bg);
    box-shadow: 0 -12px 16px -12px rgba(0, 0, 0, 0.06);
    z-index: 10;
}
.input-wrapper {
    flex: 1;
    display: flex;
    align-items: center;
    /* Glass デザイン (パーツ検索バーと統一) */
    background: color-mix(in srgb, #fff 80%, transparent);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--text) 8%, transparent);
    border-radius: 26px;
    padding: 6px 6px 6px 20px;
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.06);
    transition: border-color .15s, box-shadow .15s;
}
.input-wrapper:focus-within {
    border-color: color-mix(in srgb, var(--brand) 30%, transparent);
    box-shadow: 0 8px 22px rgba(16, 24, 40, 0.08);
}
/* 2026-06-01: iOS Safari でチャット画面初回ロード時、 backdrop-filter:blur の
   composition バグで入力欄の右端がダブって見える事故対策。
   タッチデバイス (iPhone/iPad) では backdrop-filter を無効化、 不透明 background。
   デスクトップでは Glass デザインを維持。 */
@media (hover: none) and (pointer: coarse) {
    .input-wrapper {
        -webkit-backdrop-filter: none;
        backdrop-filter: none;
        background: #fff;
    }
}
.input-area input {
    flex: 1;
    padding: 10px 6px;
    border: none;
    background: transparent;
    font-size: 15px;
    outline: none;
    font-family: inherit;
    color: var(--text);
    min-width: 0;
}
.input-area input::placeholder { color: var(--text-mute); }
.input-area input:disabled {
    background: #f0f0f0;
    cursor: not-allowed;
    opacity: 0.7;
}

/* 共通ボタン (mic + send) */
.input-area button {
    width: 36px;
    height: 36px;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    flex-shrink: 0;
    transition: background .15s, transform .1s, box-shadow .15s, border-color .15s;
    font-family: inherit;
    font-size: 0;
}

/* 送信ボタン (青、白い上矢印) */
#sendBtn {
    background: var(--brand);
    color: #fff;
}
#sendBtn::after {
    content: '';
    display: block;
    width: 14px; height: 14px;
    background: #fff;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 2 L8 14 M8 2 L3 7 M8 2 L13 7' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>") center/contain no-repeat;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 2 L8 14 M8 2 L3 7 M8 2 L13 7' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>") center/contain no-repeat;
}
#sendBtn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--brand) 88%, #000);
    transform: scale(1.04);
}
#sendBtn:disabled {
    background: var(--border-strong);
    cursor: not-allowed;
    transform: none;
}

/* マイクボタン (薄青背景 + 青枠 + 青マイクアイコン) */
#micBtn {
    background: color-mix(in srgb, var(--brand) 8%, #fff);
    border: 2px solid var(--brand);
    margin-right: 6px;
    flex-shrink: 0;
}
#micBtn::after {
    content: '';
    display: block;
    width: 18px; height: 18px;
    background: var(--brand);
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 1a4 4 0 0 0-4 4v6a4 4 0 0 0 8 0V5a4 4 0 0 0-4-4z' fill='currentColor'/><path d='M19 10v1a7 7 0 0 1-14 0v-1M12 18.5V23M8 23h8' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' fill='none'/></svg>") center/contain no-repeat;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 1a4 4 0 0 0-4 4v6a4 4 0 0 0 8 0V5a4 4 0 0 0-4-4z' fill='currentColor'/><path d='M19 10v1a7 7 0 0 1-14 0v-1M12 18.5V23M8 23h8' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' fill='none'/></svg>") center/contain no-repeat;
}
#micBtn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--brand) 15%, #fff);
}
#micBtn.recording {
    background: #fee2e2;
    border-color: #ef4444;
    animation: mic-pulse 1.2s ease-in-out infinite;
}
#micBtn.recording::after {
    background: #ef4444;
}
#micBtn:disabled {
    background: var(--bg) !important;
    border-color: var(--border-strong) !important;
    animation: none !important;
}
#micBtn:disabled::after {
    background: var(--border-strong) !important;
}
@keyframes mic-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); }
    50%      { box-shadow: 0 0 0 8px rgba(239, 68, 68, 0); }
}

/* 旧プレースホルダ (Phase A1 互換用、将来削除可) */
.chat-welcome { display: none; }

/* 初期選択肢 (clarify-block / clarify-options / clarify-option) */
.clarify-block {
    background: transparent;
    border: none;
    border-radius: 0;
    padding: 0;
    margin: 14px 0 6px 0;
}
.clarify-block:first-child { margin-top: 0; }
.clarify-question {
    font-size: 14px;
    color: var(--text-sub);
    margin-bottom: 8px;
}
.clarify-options {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
/* G8 スタイル: グレー背景 + メーカー色の縦バー */
.clarify-option {
    background: #f4f4f5;
    color: #3f3f46;
    border: none;
    border-radius: 8px;
    padding: 12px 16px;
    font-size: 14px;
    text-align: left;
    cursor: pointer;
    transition: background .15s, color .15s;
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: inherit;
    line-height: 1.5;
}
.clarify-option::before {
    content: '';
    width: 3px;
    height: 16px;
    border-radius: 2px;
    background: var(--brand);
    flex-shrink: 0;
    transition: background .15s, height .15s;
}
.clarify-option:hover:not(:disabled) {
    background: #e4e4e7;
    color: #18181b;
}
.clarify-option:hover:not(:disabled)::before {
    height: 22px;
}
.clarify-option:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* TOC (目次) 一覧 — フォントは --user-font-scale で乗算 */
.toc-loading {
    padding: 12px 4px;
    color: var(--text-mute);
    font-size: calc(13px * var(--user-font-scale, 1));
}
.toc-error {
    padding: 10px 12px;
    margin: 10px 0;
    background: #fde8e8;
    color: #9b2c2c;
    border-radius: var(--r-sm);
    font-size: calc(13px * var(--user-font-scale, 1));
}
.toc-list-wrap {
    margin-top: 10px;
    padding: 12px;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--r-md);
}
.toc-list-title {
    font-weight: 600;
    font-size: calc(15px * var(--user-font-scale, 1));
    margin-bottom: 8px;
    color: var(--text);
}
.toc-notice {
    font-size: calc(12px * var(--user-font-scale, 1));
    color: var(--text-mute);
    padding: 6px 0 10px;
    line-height: 1.5;
}
.toc-search-wrap { margin: 4px 0 8px 0; }
.toc-search {
    width: 100%;
    box-sizing: border-box;
    padding: 8px 10px;
    border: 1px solid var(--border-strong);
    border-radius: var(--r-sm);
    font-size: 13px;
    font-family: inherit;
    background: #fff;
    color: var(--text);
    transition: border-color .12s;
}
.toc-search:focus {
    outline: none;
    border-color: var(--brand);
}
.toc-count {
    font-size: calc(12px * var(--user-font-scale, 1));
    color: var(--text-mute);
    margin-bottom: 6px;
}
.toc-empty {
    padding: 8px 2px;
    color: var(--text-mute);
    font-size: calc(13px * var(--user-font-scale, 1));
}
.toc-list {
    list-style: none;
    padding: 0;
    margin: 0;
    max-height: 50vh;
    overflow-y: auto;
}
.toc-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: var(--r-sm);
    cursor: pointer;
    font-size: calc(13px * var(--user-font-scale, 1));
    border-bottom: 1px solid var(--border);
    transition: background .12s, color .12s;
}
.toc-item:last-child { border-bottom: none; }
.toc-item:hover {
    background: color-mix(in srgb, var(--brand) 6%, #fff);
    color: color-mix(in srgb, var(--brand) 80%, #000);
}
.toc-item-title {
    flex: 1;
    line-height: 1.4;
}
.toc-badge {
    flex-shrink: 0;
    display: inline-block;
    min-width: 34px;
    text-align: center;
    padding: 2px 6px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    color: #fff;
    background: #7280a0;
}
.toc-badge-wm { background: #2563eb; }
.toc-badge-to { background: #0891b2; }
.toc-badge-common { background: #db924a; }

/* =========================================================================
 * レスポンシブ
 * ========================================================================= */
@media (max-width: 640px) {
    .header { padding: 10px 16px; }
    .header-title { font-size: 15px; }
    .header-maker-label { font-size: 12px; padding-left: 8px; }
    /* スマホ: container padding を 14px に詰める (v5 互換) */
    .container { padding: 0 14px; }
    .maker-grid { grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: 8px; }
    .select-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
    .select-card { padding: 14px 12px; }
    /* 型式画面: 2 カラム固定 (v5 と同じ)、検索バーの margin を container 14px に合わせる */
    .model-group-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 8px;
    }
    /* model-toolbar: 1 行に維持 (検索バー + 件数を横並び) */
    .model-toolbar {
        flex-direction: row;
        align-items: center;
        flex-wrap: nowrap;
        margin: 0 -14px 14px -14px;
        padding: 10px 14px;
        gap: 8px;
    }
    .model-toolbar .model-search { flex: 1 1 auto; min-width: 0; }
    .model-toolbar .model-count {
        flex: 0 0 auto;
        font-size: calc(11px * var(--user-font-scale, 1));
        white-space: nowrap;
    }

    /* スマホ: トークンメーター ラベル「今週 残り xK / xK」は非表示
       (リング (data-pct 表示) は残してパーセントだけ見せる) */
    .token-meter-label { display: none !important; }

    /* スマホ: AI アバターを float にして、本文をアバター下まで全幅で使う
       (アバターの直下にできていた左の空白を消す) */
    .message-ai {
        display: block;
        padding: 0;
    }
    .message-ai::before {
        float: left;
        display: flex !important;
        width: 24px; height: 24px;
        font-size: 11px;
        margin: 2px 8px 4px 0;
    }
    .message-ai .message-body {
        display: block;
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }
    /* clearfix: float がはみ出さないように */
    .message-ai::after {
        content: '';
        display: block;
        clear: both;
    }
    .message { gap: 6px; }

    /* スマホ: 表のみ横スクロール許可 (v5 と同じ仕様) */
    .answer-body .table-scroll {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .answer-body .table-scroll table {
        min-width: max-content;
        width: auto;
    }
}

/* === エンジン選択モーダル (パーツ検索: chassis に複数 engine catalog がある時) === */
.parts-engine-modal { z-index: 8700; }  /* settings-modal 9000 未満、figModal より上 */
.parts-engine-modal[aria-hidden="false"] { display: flex; }
.parts-engine-modal-box.parts-glass {
    position: relative;
    width: min(560px, calc(100vw - 32px));
    height: auto;  /* .parts-modal-box の height: 96vh を上書き (コンテンツ高で fit) */
    max-height: calc(100vh - 64px);
    background: rgba(255, 255, 255, 0.7);
    -webkit-backdrop-filter: blur(20px) saturate(1.5);
    backdrop-filter: blur(20px) saturate(1.5);
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 24px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.18), 0 8px 24px rgba(0, 0, 0, 0.08);
    padding: 28px 24px 20px;
    overflow: auto;
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.parts-engine-header {
    display: flex; align-items: center; justify-content: center;
}
.parts-engine-modal .parts-modal-title {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: var(--parts-text, #1a1a1a);
    text-align: center;
}
.parts-engine-body { display: flex; flex-direction: column; }
.parts-engine-list {
    display: flex;
    flex-direction: column;  /* PC でも 1 行 1 列 (要望) */
    gap: 10px;
}
.parts-engine-radio {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 12px 14px;
    border-radius: 14px;
    border: 1px solid rgba(255, 255, 255, 0.5);
    background: rgba(255, 255, 255, 0.55);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
    line-height: 1.45;
}
.parts-engine-radio:hover {
    background: rgba(255, 255, 255, 0.75);
    border-color: color-mix(in srgb, var(--parts-brand, #0060a8) 30%, #fff);
}
.parts-engine-radio.checked {
    background: color-mix(in srgb, var(--parts-brand, #0060a8) 14%, rgba(255, 255, 255, 0.75));
    border-color: var(--parts-brand, #0060a8);
}
.parts-engine-radio input[type=radio] {
    flex-shrink: 0;
    accent-color: var(--parts-brand, #0060a8);
    cursor: pointer;
}
.parts-engine-radio-label {
    font-size: 14px;
    color: var(--parts-text, #1a1a1a);
    word-break: break-word;
    font-weight: 500;
}
.parts-engine-modal-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding-top: 8px;
}
.parts-secondary-btn {
    background: rgba(255, 255, 255, 0.5);
    color: var(--parts-text, #1a1a1a);
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 10px;
    padding: 10px 22px;
    font-size: 13.5px;
    font-weight: 500;
    cursor: pointer;
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    transition: background 0.12s ease, border-color 0.12s ease;
}
.parts-secondary-btn:hover {
    background: rgba(255, 255, 255, 0.85);
    border-color: rgba(0, 0, 0, 0.2);
}
.parts-primary-btn {
    background: var(--parts-brand, #0060a8);
    color: #fff;
    border: none;
    border-radius: 10px;
    padding: 10px 24px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-width: 180px;
    transition: background 0.12s ease, opacity 0.12s ease;
}
.parts-primary-btn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--parts-brand, #0060a8) 88%, #000);
}
.parts-primary-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

/* ============================================================
   Phase 3: フィードバックモーダル (1.0.5) — section + search 共通
   ============================================================ */
.parts-modal.parts-feedback-modal { z-index: 8650; }

.parts-feedback-modal-box.parts-glass {
    position: relative;
    width: min(560px, calc(100vw - 32px));
    height: auto;  /* .parts-modal-box の height: 96vh を上書き (コンテンツ高で fit) */
    max-height: calc(100vh - 64px);
    background: rgba(255, 255, 255, 0.7);
    -webkit-backdrop-filter: blur(20px) saturate(1.5);
    backdrop-filter: blur(20px) saturate(1.5);
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 24px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.18), 0 8px 24px rgba(0, 0, 0, 0.08);
    padding: 28px 24px 24px;
    overflow: auto;
}
.parts-feedback-header {
    display: flex; align-items: center; justify-content: center;
    margin-bottom: 16px;
}
.parts-feedback-title {
    margin: 0; font-size: 16px; font-weight: 600;
    color: var(--parts-text, #1a1a1a); text-align: center;
}
.parts-feedback-body {
    display: flex; flex-direction: column; gap: 16px;
}
.parts-feedback-fig {
    font-size: 14px; font-weight: 500;
    color: #1a1a1a; text-align: center;
}
.parts-feedback-current {
    display: flex; align-items: center; justify-content: center; gap: 8px;
}
.parts-feedback-label {
    font-size: 12px; color: #6e6e73;
}
.parts-feedback-current-pill {
    padding: 4px 14px; font-size: 13px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 999px; color: #1a1a1a;
}
.parts-feedback-question {
    font-size: 13px; color: #6e6e73; text-align: center; margin-top: 4px;
}
.parts-feedback-section-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}
@media (max-width: 480px) {
    .parts-feedback-section-grid { grid-template-columns: repeat(2, 1fr); }
}
.parts-feedback-section-pill {
    appearance: none;
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.55);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
    padding: 12px 8px;
    font-size: 13px; font-weight: 500;
    color: #1a1a1a; cursor: pointer;
    transition: all 0.15s ease;
}
.parts-feedback-section-pill:hover {
    background: color-mix(in srgb, var(--parts-brand, #0060a8) 12%, rgba(255, 255, 255, 0.7));
    border-color: var(--parts-brand, #0060a8);
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(0, 96, 168, 0.15);
}
.parts-feedback-section-pill:active { transform: translateY(0); }
.parts-feedback-section-pill:disabled { opacity: 0.5; cursor: wait; }
.parts-feedback-query-label {
    font-size: 12px; color: #6e6e73; text-align: center;
}
.parts-feedback-query-chip {
    padding: 10px 16px; font-size: 14px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(0, 0, 0, 0.06);
    border-radius: 12px; color: #1a1a1a;
    text-align: center; word-break: break-word;
}
.parts-feedback-rating {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px; margin-top: 8px;
}
.parts-feedback-rating-btn {
    appearance: none;
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.6);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
    padding: 14px 6px 10px;
    cursor: pointer;
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    transition: all 0.15s ease;
}
.parts-feedback-rating-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
    background: color-mix(in srgb, var(--parts-brand, #0060a8) 10%, rgba(255, 255, 255, 0.75));
    border-color: var(--parts-brand, #0060a8);
}
.parts-feedback-rating-btn:active { transform: translateY(0); }
.parts-feedback-rating-btn:disabled { opacity: 0.5; cursor: wait; }
.parts-feedback-rating-btn .rating-num {
    font-size: 22px; font-weight: 700;
    color: var(--parts-brand, #0060a8);
}
.parts-feedback-rating-btn .rating-label {
    font-size: 12px; color: #6e6e73; font-weight: 500;
}

/* カード右下のフィードバックボタン */
.parts-card-feedback-btn {
    position: absolute;
    right: 8px; bottom: 8px;
    appearance: none;
    border: 1px solid rgba(0, 0, 0, 0.08);
    background: rgba(255, 255, 255, 0.85);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    border-radius: 50%;
    width: 24px;
    height: 24px;
    padding: 0;
    font-size: 14px;
    font-weight: 700;
    line-height: 1;
    color: #6e6e73;
    cursor: pointer;
    z-index: 2;
    transition: all 0.15s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.parts-card-feedback-btn:hover {
    color: var(--parts-brand, #0060a8);
    border-color: var(--parts-brand, #0060a8);
    background: rgba(255, 255, 255, 0.95);
}
.parts-card-feedback-btn.is-reported {
    color: #34c759;
    border-color: rgba(52, 199, 89, 0.4);
    background: rgba(232, 248, 235, 0.85);
    cursor: default;
}
