/* ============================================================================
 * FVJAPAN CRM — デザイントークン（素の CSS 版）
 *
 * 出典は web/app/globals.css（Tailwind v4 版の実体）。**値は1つも変えていない。**
 * 定義と根拠は docs/DESIGN.md §5 / §6。値を変えるときは DESIGN.md も同じ変更で直すこと
 * （ドリフト防止・DESIGN.md §3 ガバナンス）。コントラスト比の注記はすべて globals.css の実測値の写し。
 *
 * **生の色値（#hex / rgb / hsl / oklch）を書いてよいのは、このファイルだけ。**
 * base.css / layout.css / components.css は var(--...) でのみ参照する。
 *
 * 構成（globals.css の節と対応させてある）:
 *   §A  トークン（@theme の中身を :root へ）
 *   §B  密度・行間・シェルの寸法（globals.css §B と同じ）
 *   §C  shadcn/ui 互換の別名のうち、components.css が参照するものだけ
 *   §E  Tailwind のユーティリティが暗黙に持っていた既定値（globals.css には無い。下に理由）
 *
 * **globals.css の §A にあった「既定パレットを消す」（--color-*: initial）は移していない。**
 * 素の CSS にはユーティリティの生成が無いので、消す対象がそもそも存在しない。
 * ========================================================================== */

/* ==========================================================================
 * §A トークン
 * ========================================================================== */
:root {
  /* スペーシングは基準値方式（globals.css §A の --spacing: 4px）。
     部品 CSS では calc(var(--spacing) * N) で参照する。N は Tailwind の p-N と同じ数。
     使ってよい N は docs/DESIGN.md §5-D:
       画面を組む余白 … 1 / 2 / 3 / 4 / 6 / 8 / 12 / 16 / 24 / 32
       コントロールの寸法に限る端数 … 0.5 / 1.5 / 2.5 / 3.5 / 5 / 7 / 9 */
  --spacing: 4px;

  /* 常に必要な特殊値 */
  --color-transparent: transparent;
  --color-current: currentColor;
  --color-white: #ffffff;

  /* ---- グレー9段（色相215°・彩度あり。真のグレーは使わない） ---- */
  --color-gray-50: #f9fafb;   /* 白比 1.05  ページ背景・テーブルヘッダー */
  --color-gray-100: #f0f2f5;  /* 白比 1.12  行ホバー・無効な面 */
  --color-gray-200: #e4e7ec;  /* 白比 1.24  罫線・区切り線 */
  --color-gray-300: #d3d8de;  /* 白比 1.43  入力欄の枠線 */
  --color-gray-400: #9ea7b3;  /* 白比 2.43  本文・プレースホルダ不可（2.43 は §10 の 4.5 を割る。移行計画 D21） */
  --color-gray-500: #778292;  /* 白比 3.89  アイコン・装飾（本文テキスト不可） */
  --color-gray-600: #596473;  /* 白比 6.01  補助テキストの既定 */
  --color-gray-700: #3c4553;  /* 白比 9.69  見出し以外の本文 */
  --color-gray-900: #1d232b;  /* 白比15.82  本文・見出しの既定 */

  /* ---- プライマリ（teal・色相175°）---- */
  --color-teal-50: #effaf9;
  --color-teal-100: #d9f2f0;
  --color-teal-200: #aee0dc;
  --color-teal-400: #2baba1;  /* 白文字 2.82  ✕ 文字不可 */
  --color-teal-600: #0e958a;  /* 白文字 3.69  ✕ 文字不可 / ○ 非テキスト3:1 */
  --color-teal-700: #097169;  /* 白文字 5.87  ○ AA */
  --color-teal-900: #07403c;  /* 白文字11.62  ○ AAA */

  /* ---- セマンティック（fg は白背景・-bg 上どちらでも AA）---- */
  --color-danger-fg: #b41d1d;
  --color-danger-bg: #fef1f1;
  --color-danger-border: #f4c2c2;
  --color-warning-fg: #985910;
  --color-warning-bg: #fef8f1;
  --color-warning-border: #f4ddc2;
  --color-success-fg: #16794b;
  --color-success-bg: #f1fef8;
  --color-success-border: #c2f4dd;
  --color-info-fg: #1657c0;
  --color-info-bg: #f1f6fe;
  --color-info-border: #c2d5f4;
  --color-ai-fg: #5d20c5;
  --color-ai-bg: #f6f1fe;
  --color-ai-border: #d5c2f4;

  /* ---- 商材色10種（docs/DESIGN.md §5-B2。全ペア実測済み・すべて AA 合格）---- */
  --color-product-elec-fg: #92400e;   --color-product-elec-bg: #fef3c7;   /* 6.37 */
  --color-product-gas-fg: #9a3412;    --color-product-gas-bg: #ffedd5;    /* 6.38 */
  --color-product-mobile-fg: #166534; --color-product-mobile-bg: #dcfce7; /* 6.49 */
  --color-product-net-fg: #1e40af;    --color-product-net-bg: #dbeafe;    /* 7.15 */
  --color-product-wifi-fg: #075985;   --color-product-wifi-bg: #e0f2fe;   /* 6.59 */
  --color-product-ws-fg: #155e75;     --color-product-ws-bg: #cffafe;     /* 6.49 */
  --color-product-check-fg: #57534e;  --color-product-check-bg: #f5f5f4;  /* 6.99 */
  --color-product-ins-fg: #6b21a8;    --color-product-ins-bg: #f3e8ff;    /* 7.39 */
  --color-product-tv-fg: #9f1239;     --color-product-tv-bg: #ffe4e6;     /* 6.68 */
  --color-product-estate-fg: #3730a3; --color-product-estate-bg: #e0e7ff; /* 8.06 */

  /* ---- 申込ステータスの段（§5-B2）。段階を読み分けるため段ごとに色を維持する ----
     キー・ラベルは api/domain/contracts/status.py の EntryStatus / LABELS、
     語の並びは legacy_status.all_labels()（GET /api/crm/entry-statuses/ が配る並び）に一致させる。
     **数詞を書かない** —— 2026-09-01 に 6→7、2026-09-17 に 7→8（W-7 でキャンセルが2段になった）と
     二度動いており、数を書くと次に増えた日に古い数だけが残る。 */
  --color-entry-applied-fg: #1d4ed8;  --color-entry-applied-bg: #eff6ff;  /* 6.16 */
  --color-entry-callfail-fg: #b91c1c; --color-entry-callfail-bg: #fef2f2; /* 5.91 */
  --color-entry-calldone-fg: #0e7490; --color-entry-calldone-bg: #ecfeff; /* 5.15 */
  --color-entry-entered-fg: #15803d;  --color-entry-entered-bg: #f0fdf4;  /* 4.79 */
  /* 工事日確定。既存6色に無い色相（琥珀）。緑（エントリー完了）と teal（開通）に挟まれる段 */
  --color-entry-workdate-fg: #92400e;  --color-entry-workdate-bg: #fef3c7; /* 6.37 */
  --color-entry-opened-fg: #0b7268;   --color-entry-opened-bg: #e6f4f2;   /* 5.13 */
  /* キャンセル申請中（代理店の記録）。2026-09-17 追加（W-7 / 判断モック D17）。
     確定（CXL）は無彩色のグレーなので、**まだ人の手が要る申請中は有彩色**にして読み分ける。
     確認電話落ちの赤（#b91c1c・色相 0°）とは色相が 336° で離れている。商材タグの「映像」と
     近い色相だが列が異なる（商材列とステータス列。工事日確定＝電気と同じ先例・§5-B2）。 */
  --color-entry-cxlreq-fg: #9d174d;   --color-entry-cxlreq-bg: #fdf2f8;   /* 7.22 */
  /* CXL はモックの #6B7280/#F3F4F6 が 4.39 で AA 未達だったため是正 */
  --color-entry-cxl-fg: #596473;      --color-entry-cxl-bg: #f0f2f5;      /* 5.36 */

  /* ---- 顧客状態5種（白背景上のテキスト色・§5-B2）---- */
  --color-cstatus-active: #0b7268;      /* 契約中     5.80 */
  --color-cstatus-negotiating: #2563eb; /* 商談中     5.17 */
  --color-cstatus-prospect: #a16207;    /* 見込み     4.92 */
  /* アンタッチ・解約はモックの #9CA3AF が 2.54 で AA 未達だったため gray-600 に是正 */
  --color-cstatus-untouched: #596473;   /* アンタッチ  6.01 */
  --color-cstatus-cancelled: #596473;   /* 解約 ＋取り消し線 6.01 */

  /* ---- 役割トークン（画面側はこちらを参照する）---- */
  --color-bg: var(--color-gray-50);
  --color-surface: #ffffff;
  --color-border-input: var(--color-gray-300);
  --color-text: var(--color-gray-900);
  --color-text-muted: var(--color-gray-600);
  --color-text-disabled: var(--color-gray-400);
  /* プレースホルダの文字色。**--color-text-muted 以上**（移行計画 D21。DESIGN §5-A の gray-400 割り当ては
     白地 2.43:1 で §10 の AA 4.5:1 に反するので §10 を優先した。§5-A の文面の直しは文書担当）。
     gray-600 は白地 6.01:1（上の表）／フリーワード欄の実測 5.75:1（a11y 監査） */
  --color-text-placeholder: var(--color-text-muted);
  --color-primary-hover: var(--color-teal-900);
  --color-primary-soft: var(--color-teal-50);
  --color-focus: var(--color-teal-700);
  /* 非テキスト専用（アイコン・ステッパー・罫線アクセント）。白文字を載せない。
     shadcn の --accent（ホバー面）と衝突するため名前を分けている。 */
  --color-accent-nontext: var(--color-teal-600);

  /* ---- タイポグラフィ ---- */
  --font-ui: "Hiragino Kaku Gothic ProN", "Hiragino Sans", "BIZ UDPGothic",
    "Yu Gothic", "Noto Sans JP", sans-serif;
  --font-num: ui-monospace, "SF Mono", Menlo, Consolas, monospace;

  --text-2xs: 10px;   /* バッジ・商材タグ */
  --text-xs: 11px;    /* 表の注釈 */
  --text-sm: 12px;    /* テーブルセル・フォームラベル */
  --text-base: 13px;  /* 本文の既定 */
  --text-md: 14px;    /* カード見出し */
  --text-lg: 16px;    /* 画面タイトル */
  --text-xl: 20px;    /* KPI 数値 */

  /* ---- 角丸3段（§5-D）----
     globals.css にある shadcn 由来の別名（xl / 2xl / 3xl / 4xl）は移していない。
     「存在しないクラスは無言で角丸ゼロ」の事故は Tailwind のクラス生成に固有で、
     素の CSS では部品側が3段を直接参照するため。Badge が使っていた 4xl は sm（4px）に読み替えた。 */
  --radius-sm: 4px;  /* バッジ・チップ */
  --radius-md: 6px;  /* ボタン・入力欄 */
  --radius-lg: 10px; /* カード・モーダル */

  /* ---- 影5段（elevation）---- */
  --shadow-none: none;
  --shadow-1: 0 1px 2px rgb(29 35 43 / 0.06);
  --shadow-2: 0 2px 6px rgb(29 35 43 / 0.08);
  --shadow-3: 0 6px 16px rgb(29 35 43 / 0.1);
  --shadow-4: 0 16px 40px rgb(29 35 43 / 0.16);
}

/* ==========================================================================
 * §B 密度・行間（docs/DESIGN.md §6）
 * ========================================================================== */
:root {
  /* アプリシェルの寸法（docs/DESIGN.md §6）。スケール外。出典はモック v0.5.1 の実測値。 */
  --sidebar-w: 216px;
  --topbar-h: 52px;
  --popover-w: 320px; /* トップバーの通知・ヘルプ */

  --row-h-compact: 32px;
  --row-h-standard: 40px;
  --control-h-compact: 32px;
  --control-h-standard: 36px;

  --leading-body: 1.6;
  --leading-cell: 1.4;
  --leading-head: 1.3;

  /* 字間（Tailwind `tracking-wider`）。区分名などの小さな大文字寄りの見出しに使う */
  --tracking-wide: 0.05em;

  /* 中身の最大幅（`max-w-md` / `max-w-6xl` は Tailwind の値そのもの）。**画面の骨格には使わない**
     （骨格は最小想定幅 1280px・§6。ここはフォーム・エラーの枠・見本ページの幅）。
     `@media` の閾値（40rem / 48rem / 80rem）は CSS の仕様上 `var()` を使えないので layout.css に直値で残す */
  --width-form: 28rem;     /* max-w-md … ログインの枠・フォームの見本 */
  --width-prose: 40rem;    /* シェル無しのエラー画面の枠（Tailwind の段には無い値。第2段の土台で決めた） */
  --width-showcase: 72rem; /* max-w-6xl … /design の見本ページ */
}

/* ==========================================================================
 * §C shadcn/ui 互換の別名（components.css が参照する分だけ）
 *
 * globals.css §C のうち、Button / Input の移植で実際に参照している名前だけを残した。
 * --card / --popover / --chart-* / --sidebar-* は部品 CSS から参照していないので移していない。
 * ========================================================================== */
:root {
  --background: var(--color-bg);
  --foreground: var(--color-text);

  /* 主ボタン。白文字とのコントラスト 5.87:1（AA 合格） */
  --primary: var(--color-teal-700);
  --primary-foreground: var(--color-white);

  --secondary: var(--color-gray-100);
  --secondary-foreground: var(--color-gray-900);
  --muted: var(--color-gray-100);
  --muted-foreground: var(--color-gray-600);

  --destructive: var(--color-danger-fg);
  --border: var(--color-gray-200);
  --input: var(--color-gray-300);
  --ring: var(--color-focus);
}

/* ==========================================================================
 * §E Tailwind のユーティリティが暗黙に持っていた既定値
 *
 * **globals.css には無い。** Tailwind 版では `border`（=1px）・`ring-2`（=2px）・
 * `transition-colors`（=150ms / cubic-bezier(0.4,0,0.2,1)）のようにクラス名の中に
 * 値が隠れていた。素の CSS では部品側に数値を書くしかなくなるので、
 * 部品 CSS に px を直書きしないためにここへ名前を付けて集めた。
 * **新しいデザイン値ではない**（描画結果は Tailwind 版と同じ）。
 * ========================================================================== */
:root {
  --border-w: 1px;             /* Tailwind `border` / `border-t` 等の既定幅 */
  --ring-w: 2px;               /* Tailwind `ring-2` */
  --focus-outline-w: 2px;      /* globals.css §D の :focus-visible { outline: 2px solid } */
  --focus-outline-offset: 1px; /* 同 outline-offset: 1px */
  --press-offset: 1px;         /* Tailwind `translate-y-px`（ボタン押下時の沈み） */
  --stripe-w: 2px;             /* globals.css §D .stripe-cxl の縞の幅 */

  --duration-colors: 150ms;                        /* Tailwind `transition-colors` の既定 */
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);   /* 同 */
}
